WireGuard安装
一个组网工具
2.1. Ubuntu
Section titled “2.1. Ubuntu”apt install wireguardcd /etc/wiregurdwg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey #生成密钥3. Windows
Section titled “3. Windows”下载安装 WireGuard
- 虚拟网卡配置
[Interface]Address = 10.0.0.1/24ListenPort = 51820PrivateKey = $peer1_privatekeyPostUp = 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
[Peer]PublicKey = $peer2_publickeyEndpoint = 1.2.3.4:51820 #公网的连接地址AllowedIPs = 10.0.0.0/24,192.168.2/24 #出站时基于目标地址选择对应的peer,入站时基于源地址选择是否放行PersistentKeepalive = 25- 开启端口转发配置
net.ipv4.ip_forward=1
systctl -p #进行配置生效注意该配置不是必须的,如果需要进行不同的端口(网卡转化)则需要开启该选项
wg #可以查看当前的连接信息systemctl start wg-quick@wg0systemctl status wg-quick@wg0systemctl stop wg-quick@wg0systemctl restart wg-quick@wg06.1. 内网穿透/直连场景
Section titled “6.1. 内网穿透/直连场景”该场景实现 B(内网)、C(内网)设备上的服务可以通过 A(公网)进行公开访问
- B 虚拟网卡配置
[Interface]Address = 10.0.0.2/24PrivateKey = $peerB_privatekey
[Peer]PublicKey = $peerA_publickeyEndpoint = 1.2.3.4:51820 #公网的连接地址AllowedIPs = 10.0.0.0/24 #此处填写的是网段,也可以填写10.0.0.1/32PersistentKeepalive = 25C 设备与 B 设备配置结构相同,但是需要注意配置内的变量信息需要替换
- A 虚拟网卡配置
[Interface]Address = 10.0.0.1/24ListenPort = 51820PrivateKey = $peerA_privatekey
# B设备[Peer]PublicKey = $peerB_publickeyAllowedIPs = 10.0.0.2/32 #注意:此处填写10.0.0.2/32PersistentKeepalive = 25- 关闭端口转发
net.ipv4.ip_forward=0
systctl -p #进行配置生效此处是控制 B 与 C 是否可以通过 10.0.0.0/24 网域互相访问的核心步骤。1 代表可以访问,0 代表不可以访问
- 测试
# B/C不互通A ping B/C 通B ping A 通B ping C 不通C ping A 通C ping B 不通# B/C 互通在A/B/C上任意一台设备上ping 另外两个设备都通6.2. 中转方案
Section titled “6.2. 中转方案”该场景实现 B(内网 192.168.2.0/24)、C(内网 192.168.1.0/24)内网内服务(对应局域网内的所有设备)可以通过 A(公网)进行公开访问
- B 虚拟网卡配置
[Interface]Address = 10.0.0.2/24PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEPostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADEPrivateKey = $peerB_privatekey
[Peer]PublicKey = $peerA_publickeyEndpoint = 1.2.3.4:51820 #公网的连接地址AllowedIPs = 10.0.0.0/24,192.168.1.0/24 #192用于访问C内的局域网PersistentKeepalive = 25- C 虚拟网卡配置
[Interface]Address = 10.0.0.3/24PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEPostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADEPrivateKey = $peerC_privatekey
[Peer]PublicKey = $peerA_publickeyEndpoint = 1.2.3.4:51820 #公网的连接地址AllowedIPs = 10.0.0.0/24,192.168.2.0/24 #192用于访问B内的局域网PersistentKeepalive = 25- A 虚拟网卡配置
[Interface]Address = 10.0.0.1/24ListenPort = 51820PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEPostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADEPrivateKey = $peerA_privatekey
# B设备[Peer]PublicKey = $peerB_publickeyAllowedIPs = 10.0.0.2/32,192.168.2.0/24 #注意:此处填写10.0.0.2/32PersistentKeepalive = 25
# C设备[Peer]PublicKey = $peerC_publickeyAllowedIPs = 10.0.0.3/32,192.168.1.0/24 #注意:此处填写10.0.0.2/32PersistentKeepalive = 25- 开启端口转发
net.ipv4.ip_forward=1
systctl -p #进行配置生效7. 拓展信息
Section titled “7. 拓展信息”7.1. 与内网穿透区别
Section titled “7.1. 与内网穿透区别”- 不需要端口进行一一映射,直接映射出的是 ip 地址