异地组网,内网穿透,WireGuard让你全世界的服务器秒变局域网 超详细教程
有没有遇到过「手机连家里电脑、连公司电脑」「家里电脑想远程连公司文件」总之各种互联但「向日葵又是广告又慢」的烦恼?
今天给大家分享一个宝藏工具——WireGuard,关键是低成本就能搞定全设备部署,全程手把手教学,从服务器购买到电脑、手机、公司电脑多端配置,新手也能跟着做
如果只是想各种设备组局域网互通,现在好多云服务器几十块一年,(想想向日葵,花生壳一年会员多少钱,我以前都是花300多开一年的会员
!)。
本文命令以「Ubuntu 24.04 LTS」为例;
这一步是重点,全程在服务器上操作,推荐直接用阿里云自带的「远程连接」功能,省得去找远程软件,也可以用Xshell,免费且简单),每一步都复制命令执行,不用懂代码!
打开Xshell(或云服务自带的远程连接),输入服务器「公网IP」,一般端口默认22,点击连接;
用户名输入「root」,密码输入你刚才重置的服务器密码,登录成功(界面出现root@xxx开头,就是登录成功了)。

Ubuntu 24.04及以上版本内核已内置WireGuard支持,直接执行以下命令即可,每输完一条按回车,等待执行完成再输下一条:
更新软件包索引:
sudo apt update
安装WireGuard及管理工具:
sudo apt install -y wireguard wireguard-tools
验证安装是否成功:wg --version(出现版本号,就是安装成功)

WireGuard基于公私钥加密,服务器和每个客户端都需要一对密钥,密钥不能泄露,按以下步骤操作:
#创建WireGuard配置目录:sudo mkdir -p /etc/wireguard;#进入配置目录:cd /etc/wireguard;#设置权限(防止密钥泄露):umask 077;#生成服务器密钥对(一行命令搞定):wg genkey | sudo tee server_privatekey | wg pubkey | sudo tee server_publickey;#查看密钥(记下来,后续配置要用): #查看服务器私钥:cat server_privatekey;#查看服务器公钥:cat server_publickey;
先查看服务器网卡名称(后续配置需要):
ip route show default | awk '{print $5}';#(通常是eth0、ens33等,记下来)
创建配置文件:
sudo vim /etc/wireguard/wg0.conf;
输入字母i开始编辑。
复制以下内容到配置文件中,去掉括号的说明文字,替换网卡名称:
[Interface]PrivateKey = (服务器私钥,刚才查看的server_privatekey内容)Address =10.0.0.1/24(VPN内网网段,不用改,固定这个即可)ListenPort = 51820(默认端口,不用改,后续要开放这个端口)# PostUp = iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o 【网卡名称】 -j MASQUERADE;iptables -A FORWARD -i wg0 -o wg0 -j ACCEPTPostDown = iptables -t nat -D POSTROUTING -s 10.0.0.0/24 -o 【网卡名称】 -j MASQUERADE;iptables -D FORWARD -i wg0 -o wg0 -j ACCEPT以下配置供参考,按需添加笔记本[Peer]PublicKey = (笔记本的WireGuard的公钥)AllowedIPs = 10.0.0.2/32# 家里电脑[Peer]PublicKey = (家里电脑的WireGuard的公钥)AllowedIPs = 10.0.0.3/32#公司电脑[Peer]PublicKey = (公司电脑的WireGuard的公钥)AllowedIPs = 10.0.0.4/32# 手机[Peer]PublicKey = (手机的WireGuard公钥)AllowedIPs = 10.0.0.5/32
保存并退出:按esc退出编辑模式,按冒号「:」输入wq保存退出。

开启IP转发(让服务器能转发客户端流量):
#临时开启(立即生效):sudo sysctl -w net.ipv4.ip_forward=1;#永久开启(重启服务器也生效):echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf;#生效配置:sudo sysctl -p;
开放WireGuard默认端口(51820,UDP协议):
执行命令:
firewall-cmd --permanent --add-port=51820/udp;firewall-cmd --reload;
云服务器一般有个网页管理界面,也有个防火墙设置,也加一下

启动WireGuard:
sudo wg-quick up wg0;
设置开机自启(避免服务器重启后需要手动启动):
sudo systemctl enable wg-quick@wg0;
查看运行状态:sudo wg(出现wg0接口信息,就是启动成功)

服务器部署完成后,就可以给家里电脑、手机、公司电脑配置客户端了,每台设备的配置逻辑一样,都是「生成客户端密钥→添加到服务器配置→客户端导入配置」,下面分设备详细说:
下载客户端:
Windows:去WireGuard官网下载Windows客户端(.exe文件),安装后打开;
macOS:去App Store搜索「WireGuard」;
生成客户端密钥(以Windows为例):
打开WireGuard客户端,见下图。


服务器添加客户端配置:
#回到服务器远程终端,输入命令:vim /etc/wireguard/wg0.conf;#在文件末尾添加以下内容(替换括号里的内容): (Peer)PublicKey = 客户端公钥(刚才生成的client_publickey)AllowedIPs = 10.0.0.2/32(客户端VPN内网IP,每台设备不一样,下一台用10.0.0.3/32,依次递增)#保存退出(:wq),重启WireGuard:sudo wg-quick down wg0 && sudo wg-quick up wg0;#具体配置后的效果,我上面服务器配置已经输出整体文件。
客户端导入配置:
打开电脑端WireGuard,点击「添加隧道」→「添加空白隧道」; 填写配置信息(替换括号内容):
(Interface)PrivateKey = 客户端私钥Address = 10.0.0.2/32(和服务器配置里的AllowedIPs一致)DNS = 1.1.1.1(公共DNS,避免解析异常)(Peer)PublicKey = 服务器公钥(之前记录的server_publickey)Endpoint = 服务器公网IP:51820(格式:xxx.xxx.xxx.xxx:51820)AllowedIPs = 0.0.0.0/0(所有流量走VPN,如需只走特定流量,可修改)PersistentKeepalive = 25
点击「保存」,然后点击隧道右侧的「连接」,显示「已连接」就是成功了!
下载客户端:
Android:应用商店搜索「WireGuard」,注意区别官方客户端,确保安全;
iOS:App Store搜索「WireGuard」,下载官方客户端;
生成客户端密钥:
打开手机端WireGuard,点击「+」→「生成密钥对」配置如下:

服务器添加客户端配置(和电脑端一样):
远程登录服务器,编辑wg0.conf文件,
添加Peer配置,见上图我服务器配置的截图
重启WireGuard;
wg-quick down wg0 && wg-quick up wg0;
客户端导入配置:
手机端填写配置信息(和电脑端一致,输入服务器公钥、服务器IP端口);
保存后,点击隧道右侧的开关,显示「已连接」,就可以用手机通过VPN上网了(公共Wi-Fi下更安全)。

还可以设置只对某些应用生效,或者排除某些应用,真方便!
公司电脑通常有防火墙限制,可能会屏蔽UDP端口(WireGuard默认用UDP 51820),解决方法很简单:在服务器配置中,将ListenPort改为公司允许的UDP端口(比如53、8080,需确认公司防火墙开放该端口),然后重新启动WireGuard,客户端配置中的Endpoint端口也对应修改,即可正常连接。
坑点1:服务器IP转发未开启,导致客户端连接成功但无法上网(最常见!)
很多新手部署完,客户端显示已连接,但打开网页无法访问,90%是因为没开启IP转发,或者开启后未生效。
解决方法:执行以下命令,确保IP转发开启并生效:
sudo sysctl -w net.ipv4.ip_forward=1;sudo sysctl -p;
如果还是不行,检查服务器防火墙是否开放51820端口,云服务器网页防火墙也要检查。
重启WireGuard服务:
sudo wg-quick down wg0 && sudo wg-quick up wg0;
坑点2:各个机器能互相ping通,但具体业务端口就连不上。
firewalld 默认拦截了 wg0 接口上的 forward 流量(TCP),但放行了 ICMP,导致"能 ping 不能 telnet"的诡异现象。
解决方法:把 wg0 加入 trusted zone,让 firewalld 信任这个接口上的所有流量,既保留了 firewalld 对公网的防护,又让 wg 内网畅通。
firewall-cmd --permanent --zone=trusted --add-interface=wg0;firewall-cmd --permanent --zone=trusted --add-source=10.101.101.0/24;
这里帮大家找了个不错的云服务商,可以参考:
https://my.yecaoyun.com/aff.php?aff=7519
强调:把allowIPS 设置为 0.0.0.0/0 就是代理所有流量了,按需设置。
阅读原文:原文链接