VPN Wireguard - 握手成功但无法访问互联网和局域网

VPN Wireguard - 握手成功但无法访问互联网和局域网

我在设置 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]

`

相关内容