skip to content
Logo 三七の小站

通过 wireguard 打通局域网

/ 4 min read

[[toc]]

1、Windows 10上开启路由转发及添加路由

注意:实验环境下主机B两个接口没有网关

操作步骤

一、主机B 开启 win10 转发功能

1、进入CMD

2、执行命令

reg add HKLM\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters /v IPEnableRouter /D 1 /f

3、进入注册表
HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\IPEnableRoute设为1

4、启动Routing服务

Routing and Remote Access 服务的启动类型更改为自动并启动服务

在这里插入图片描述

5、进入CMD执行命令

sc config RemoteAccess start= auto
sc start RemoteAccess
在这里插入图片描述

二、主机A添加路由

Terminal window
Route add 192.168.114.0 mask 255.255.255.0 192.168.49.99

完成之后,ping测试即可。

2、通过WireGuard 访问节点所在局域网

方案一:wg-easy 作为服务器(docker)

总体思路:处于局域网的节点 A(开启 IP 转发及 NAT),wg 服务器设置(局域网网段走节点 A,开启 IP 转发及 NAT),局域网外的节点 B(局域网网段走 wg)

Terminal window
docker run -d --name=wg-easy3 -e LANG=chs -e WG_HOST=sanqiz.de -e PASSWORD=Zzh125475 -e PORT=37105 -e WG_DEFAULT_ADDRESS=10.0.2.x -e WG_DEFAULT_DNS=114.114.114.114 -e WG_PERSISTENT_KEEPALIVE=30 -e WG_PORT=37106 -e WG_ALLOWED_IPS=10.0.2.0/24,192.168.16.0/24 -e WG_PRE_UP="echo WireGuard PreUp" -e WG_POST_UP="iptables -I FORWARD -i wg0 -j ACCEPT; iptables -I FORWARD -o wg0 -j ACCEPT; iptables -I INPUT -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE" -e WG_PRE_DOWN="echo WireGuard PreDown" -e WG_POST_DOWN="iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -D INPUT -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE" -v D:/docker/wg-easy3:/etc/wireguard -p 37105:37105 -p 37106:51820/udp --cap-add=NET_ADMIN --cap-add=SYS_MODULE --sysctl="net.ipv4.conf.all.src_valid_mark=1" --sysctl="net.ipv4.ip_forward=1" --restart unless-stopped weejewel/wg-easy |

1、先启动容器(配置设置只读后,无法启动容器) ,在 web 上添加所有的节点

2、docker exec -it wg-easy

3、修改 wg0.conf 配置文件,将局域网网段添加到对应节点 A 的配置中 (vi /etc/wireguard/wg0.conf)

4、wg-quick down wg0

5、wg-quick up wg0

6、将 wg0.conf 设置为只读(wg-easy,在 web 上添加节点,会重置配置文件导致第 3 步失效),设置为只读保证稳定性

7、将对应局域网节点 A 设置 IP 转发及 NAT

a、如果节点 A 为 linux:

1)允许来自 wg0 的转发流量

iptables -I FORWARD -i wg0 -j ACCEPT iptables -I FORWARD -o wg0 -j ACCEPT

2)确保从 WireGuard 到局域网的流量被允许

iptables -I FORWARD -i wg0 -s 10.0.2.0/24 -d 192.168.16.0/24 -j ACCEPT iptables -I FORWARD -o wg0 -d 10.0.2.0/24 -s 192.168.16.0/24 -j ACCEPT

3)启用 NAT,使得流量能正确转发到本地网络

iptables -t nat -A POSTROUTING -s 10.0.2.0/24 -d 192.168.16.0/24 -j MASQUERADE

b、如果节点 A 为 windows:

1)注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 中 IPEnableRoute 设为 1

Terminal window
reg add HKLM\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters /v IPEnableRouter /D 1 /f

参考文章https://blog.csdn.net/weixin_44647835/article/details/109616688

2)在网卡控制面版中,开启物理网卡的共享,给 wg 网卡

方案二:windows 作为服务器(目前方案):

1、使用 wg-gen-web 生成配置

Terminal window
docker run -d -v D:/docker/wg-gen-web/data:/data -p 37100:8080 -e "WG_CONF_DIR=/data" vx3r/wg-gen-web:latest

在web中进行设置

Interface configuration hooks 设置:

echo WireGuard PreUp
iptables -I FORWARD -i wg0 -j ACCEPT; iptables -I FORWARD -o wg0 -j ACCEPT; iptables -I INPUT -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo WireGuard PreDown
iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -D INPUT -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

2、wireguard 应用程序 导入配置

3、修改 wg0.conf 配置文件,将局域网网段添加到节点 A 的配置中

4、节点 A 设置 IP 转发及 NAT