Wireguard VPN 无法访问互联网和 LAN

Wireguard VPN 无法访问互联网和 LAN

我有一台运行 Ubuntu 20.04 和 wireguard 1.0.20200513-1~20.04.2 的服务器。我在手机(Android Samsung S20+)上安装了 wireguard 应用程序,禁用了 WIFI 并连接到 4G。当 VPN 处于活动状态时,我可以访问服务器,但无法访问家庭网络(192.168.1.X)或互联网上的其他任何内容。服务器有一个 10.0.0.1(VPN)和 192.168.1.171(LAN)接口。手机有一个 10.0.0.2 接口。我想我需要设置一条路由。服务器防火墙(ufw 状态)处于非活动状态。任何帮助都将不胜感激。

/etc/wireguard/wg0.conf

[Interface]
Address = 10.0.0.1/24
Address = <MAC>::1/64
SaveConfig = true    
ListenPort = 51820
PrivateKey = <SERVER_KEY>

[Peer]
PublicKey = <CELL_PUB_KEY>
AllowedIPs = 10.0.0.2/32, 
Endpoint = <EXTERNAL_IP>:8598

客户端配置

Cellphone config
[Interface]
PrivateKey =<CELL_KEY>
Address = 10.0.0.2/24
DNS = 1.1.1.1, 1.0.0.1

[Peer]
PublicKey = <SERVER_PUB_KEY>
AllowedIPs = 10.0.0.0/24, 192.168.1.0/24
Endpoint = <EXTERNAL_IP>:51820

/etc/sysctl.conf

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

路线-n

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 enp2s0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 wg0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 enp2s0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp2s0

在服务器上

ip route get from 10.0.0.2 iif wg0 192.168.1.1
192.168.1.1 from 10.0.0.2 dev enp2s0
    cache iif wg0

编辑-解决方案-需要 wireguard.conf 中的 PostUp 和 PostDown 行:

[Interface]
Address = 10.0.0.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o enp2s0 -j MASQUERADE
ListenPort = 51820
PrivateKey = <MY_KEY>

[Peer]
PublicKey = <MY_PUB_KEY>
AllowedIPs = 10.0.0.2/32

答案1

wireguard.conf 中需要的 PostUp 和 PostDown 行:

[Interface]
Address = 10.0.0.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o enp2s0 -j MASQUERADE
ListenPort = 51820
PrivateKey = <MY_KEY>

[Peer]
PublicKey = <MY_PUB_KEY>
AllowedIPs = 10.0.0.2/32

答案2

我不确定,但对我来说效果很好,试试吧

PostUp = iptables -A FORWARD -iWG0-j 接受; iptables -A 转发 -oWG0-j 接受; iptables -t nat -A POSTROUTING -oenp2s0-j 化装舞会;

PostDown = iptables -D FORWARD -iWG0-j 接受; iptables -D 转发 -oWG0-j 接受; iptables -t nat -D POSTROUTING -oenp2s0-j MASQUERADE;侦听端口 = 51820

[Interface]
Address = 10.0.0.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE;
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp2s0 -j MASQUERADE;
ListenPort = 51820
PrivateKey = <MY_KEY>
    
[Peer]
PublicKey = <MY_PUB_KEY>
AllowedIPs = 10.0.0.2/32

相关内容