WireGuard 实现客户端之间内网其他网段的互通

Mr.Bai 2,858 浏览 0

需求

客户端1的内网网段有192.168.1.0和172.16.1.0 ,WireGuard网段为10.10.10.0,要实现客户端2可以访问客户端1的192.168.1.0网段。

在服务器上配置WireGuard

  1. 为客户端1和客户端2分别创建一个密钥对(公钥和私钥)。
  2.  将客户端1的公钥添加到服务器的WireGuard配置文件中,并为客户端1配置IP地址  10.10.10.2  和路由规则 192.168.1.0/24,172.16.1.0/24 via 10.10.10.3
  3.  将客户端2的公钥添加到服务器的WireGuard配置文件中,并为客户端2配置IP地址 10.10.10.3

服务器端配置文件示例

[Interface]
PrivateKey = SERVER_PRIVATE_KEY
Address = 10.10.10.1/24
ListenPort = 51820

[Peer]
PublicKey = CLIENT1_PUBLIC_KEY
AllowedIPs = 192.168.1.0/24,172.16.1.0/24

[Peer]
PublicKey = CLIENT2_PUBLIC_KEY
AllowedIPs = 10.10.10.3/32

其中,SERVER_PRIVATE_KEY是服务器的私钥,CLIENT1_PUBLIC_KEYCLIENT2_PUBLIC_KEY分别是客户端1和客户端2的公钥。

在客户端1上配置WireGuard

  1. 将服务器的公钥添加到客户端1的WireGuard配置文件中,并为客户端1配置IP地址 192.168.1.1,路由规则 10.10.10.0/24 via 10.10.10.2 和防火墙规则允许来自10.10.10.0/24的入站流量。
  2. 启动WireGuard服务。

客户端1配置文件示例

[Interface]
PrivateKey = CLIENT1_PRIVATE_KEY
Address = 10.10.10.2/24

[Peer]
PublicKey = SERVER_PUBLIC_KEY
AllowedIPs = 10.10.10.1/32,192.168.1.0/24
Endpoint = SERVER_IP:51820
# Windows 则不需要下面这两条
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

其中,CLIENT1_PRIVATE_KEY是客户端1的私钥,SERVER_PUBLIC_KEY是服务器的公钥,SERVER_IP是服务器的公网IP地址。

在客户端2上配置WireGuard

  1. 将服务器的公钥添加到客户端2的WireGuard配置文件中,并为客户端2配置IP地址 10.10.10.4 和路由规则 192.168.1.0/24 via 10.10.10.2` 和 `172.16.1.0/24 via 10.10.10.2
  2.  启动WireGuard服务。

客户端2配置文件示例

[Interface]
PrivateKey = CLIENT2_PRIVATE_KEY
Address = 10.10.10.3/24

[Peer]
PublicKey = SERVER_PUBLIC_KEY
AllowedIPs = 10.10.10.1/32,192.168.1.0/24,172.16.1.0/24
Endpoint = SERVER_IP:51820

其中,CLIENT2_PRIVATE_KEY是客户端2的私钥,SERVER_PUBLIC_KEY是服务器的公钥,SERVER_IP是服务器的公网IP地址。

温馨提示

请注意,在实际使用时,您需要将上面的示例配置文件中的密钥和IP地址替换为您自己的值,并根据实际情况进行调整。

这样,当客户端2尝试访问192.168.1.0/24网段的时候,数据包将首先被加密并转发到服务器(通过IP地址10.10.10.3),然后解密并被发送到客户端1(通过IP地址192.168.1.1)。客户端1将响应数据包并将其返回给客户端2,这些数据包同样会经过服务器的中转。

Windows 设置路由

要在Windows操作系统上配置路由,以使得WireGuard客户端之间的内网能够互通,可以使用以下步骤:

1. 打开命令提示符(cmd)。
2. 输入以下命令来查看当前的路由表:

route print

3. 查找到WireGuard VPN接口,并记下其接口索引号。
4. 使用以下命令添加路由规则,以便将数据包路由到WireGuard VPN接口:

route add 目标网络地址 MASK 子网掩码 WireGuard接口索引号

其中,目标网络地址子网掩码是要访问的目标内网的IP地址段和子网掩码,WireGuard接口索引号是WireGuard VPN接口的索引号。
例如,如果要使得客户端2能够访问客户端1的192.168.1.0/24网段,假设WireGuard VPN接口的索引号为11,可以使用以下命令添加路由规则:

route add 192.168.1.0 mask 255.255.255.0 11

5. 使用以下命令检查路由表,确保新的路由规则已经添加成功:

route print

6. 测试内网互通是否正常。在客户端2上尝试ping客户端1的192.168.1.x地址,如果ping通,则表示内网互通已经成功建立。

请注意,在实际使用中,可能需要添加多个路由规则以实现完整的内网互通。同时,为了防止因路径不同而导致网络访问速度变慢,建议将数据包路由到离目标网络最近的WireGuard VPN接口。

参考文档

Github:https://github.com/WireGuard

安装文档:https://www.wireguard.com/install/

使用文档:https://www.wireguard.com/quickstart/

 

发表评论 取消回复
表情 图片 链接 代码

分享
请选择语言