我在设置 wireguard 时遇到问题。设置完成后,我可以连接到我的设备。握手正常,但我无法访问互联网和局域网。
设备: 树莓派 4b 8gb 内存 操作系统:Ubuntu 服务器 ARM x64 20.04 LTS
我的 wg0.conf 文件内容
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = (hidden)
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = oqL4CC4Y572iOvVtpDbASiajjgJPAjJhDODffMezcxA=
PresharedKey = (hidden)
AllowedIPs = 10.0.0.2/32
[Peer]
PublicKey = a6z779DYdezo/TMLbC7AJuenHpseaIqUr/gRx97D4Rw=
PresharedKey = (hidden)
AllowedIPs = 10.0.0.3/32
[Peer]
PublicKey = Fe4Nv3Ef8T5bc1p7sDCfNkLO/pTv5cIgHMJ0XCMa8Gg=
PresharedKey = (hidden)
AllowedIPs = 10.0.0.4/32
[Peer]
PublicKey = IdKkIYDctdHYwMx+ULlgntVllaBkIP8G8eIRxEQ9QWQ=
PresharedKey = (hidden)
AllowedIPs = 10.0.0.5/32
[Peer]
PublicKey = qdpWjwlnUuwVxqKnCfta+W/B4XyxZT868aOPtmSOek8=
PresharedKey = (hidden)
AllowedIPs = 10.0.0.6/32
第一个客户端配置文件:
[Interface]
Address = 10.0.0.2/24
ListenPort = 51820
PrivateKey = OPgCJeBSPevFR+oleTbDqVCNyn+7G0mhSA0QRHqnklg=
[Peer]
PublicKey = W6B77KxgOpshDLX7gc0Jz10Z/WfUl4zVCLrIL/luoR4=
PresharedKey = tI3YFvK195G257yQBAYx+bS9S1j2qkZZOgsdoN3/yPI=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = {my_external_ip_address}:51820
我的路由器设置说明。我有一个 UPC Connect Box 设备,其 IP 为:192.168.0.1。UPC Connect Box 是我的网关。我已将另一个路由器连接到此 UPC Connect Box。IP 地址:192.168.1.1。我可以从所有路由器访问其他子网。我还可以访问任何子网中局域网内的所有计算机。我还可以从安装了 wireguard 的设备访问我的网络和子网上的所有内容,但当我作为客户端连接时它不起作用。
在我的 upc 连接盒上,端口转发设置正确,端口为 51820,连接到我的另一个路由器 192.168.1.1,并从此设备连接到我的 raspberry pi ubuntu 设备,内部 ip 为:192.168.1.12。
我做了什么?使用以下方法允许 IPv4 端口转发:
sudo sysctl -w net.ipv4.ip_forward=1
还做了:
sudo ufw allow 51820/tcp
sudo ufw allow 51820/udp
sudo ufw allow in on wg0 to any
sudo ufw allow out on wg0 to any
ufw 状态:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
51820 ALLOW Anywhere
51820/tcp ALLOW Anywhere
51820/udp ALLOW Anywhere
OpenSSH ALLOW Anywhere
51821/udp ALLOW Anywhere
51821/tcp ALLOW Anywhere
446/tcp ALLOW Anywhere
993/tcp ALLOW Anywhere
8080/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
5900/tcp ALLOW Anywhere
Anywhere on wg0 ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
51820 (v6) ALLOW Anywhere (v6)
51820/tcp (v6) ALLOW Anywhere (v6)
51820/udp (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
51821/udp (v6) ALLOW Anywhere (v6)
51821/tcp (v6) ALLOW Anywhere (v6)
446/tcp (v6) ALLOW Anywhere (v6)
993/tcp (v6) ALLOW Anywhere (v6)
8080/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
5900/tcp (v6) ALLOW Anywhere (v6)
Anywhere (v6) on wg0 ALLOW Anywhere (v6)
22/tcp ALLOW OUT Anywhere
Anywhere ALLOW OUT Anywhere on wg0
22/tcp (v6) ALLOW OUT Anywhere (v6)
Anywhere (v6) ALLOW OUT Anywhere (v6) on wg0
我可以从我的 iOS、Android 或 macOS 设备连接,但无法访问互联网和局域网。成功连接后我无法 ping 通任何东西。甚至无法 ping 通子网和当前网络上的设备。无法 ping 通任何外部设备,例如:8.8.8.8 或 1.1.1.1 一切似乎都很好 - 握手正常。请告诉我错误在哪里。
我需要通过 wireguard VPN 访问 LAN 和互联网。
答案1
解决了!这似乎不正确。将“%i”替换为“wg0”解决了问题。
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
应该:
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
LAN 访问正常。 Internet 访问正常!
感谢这个视频中的这个人: https://www.youtube.com/watch?v=bVKNSf1p1d0
答案2
确保您也使用文本编辑器创建以下文件:vim /etc/sysctl.d/10-wireguard.conf
添加以下文本:`
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
Reload all changes and turn on NAT routing:
sysctl -p /etc/sysctl.d/10-wireguard.conf
systemctl restart [email protected]
`