我家里有一个 ISP,可以为我提供 CGNAT。
所以我有一个 VPS 作为 Wireguard 服务器并运行。在我的家庭实验室中,我有一个安装了 Ubuntu 和 Nginx 代理管理器的虚拟机。在此虚拟机上,我还安装了wireguard 以连接到VPS。
拓扑图:
在我的 LAN 中,NginxProxyManager (NPM) GUI 可在 172.16.0.9:81 上使用
路由按预期工作。如果我通过子域连接到公共 VPS,我会看到我的网络服务器。所以效果很好。但我必须在 NPMwireguard 配置上使用“AllowedIPs=0.0.0.0/0”。任何其他配置都不起作用。
就我打开wireguard隧道而言,我根本无法通过本地网络连接到我的NPM。但它有互联网连接。它与AllowedIPs 配置有关。
我访问https://www.procustodibus.com/blog/2021/03/wireguard-allowedips-calculator/ 并尝试了许多不同的配置,禁止本地地址范围等......但没有任何效果。我可以通过 VPS 的公共 IP 访问我的网络服务器,也可以在本地访问我的 NPM,但不能同时访问。
到目前为止,这是我的配置:
VPS配置:
[Interface]
PrivateKey = ****
ListenPort = 51999
Address = 192.168.200.1/24
PostUp = iptables -t nat -A PREROUTING -p tcp -i ens192 '!' --dport 22 -j DNAT --to-destination 192.168.200.2
PostUp = iptables -t nat -A POSTROUTING -o ens192 -j SNAT --to-source z.z.z.z
PostUp = iptables -t nat -A PREROUTING -p udp -i ens192 '!' --dport 51999 -j DNAT --to-destination 192.168.200.2
PostUp = iptables -A FORWARD -i wg0 -o ens192 -j ACCEPT
PostUp = iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT
PostDown = iptables -t nat -F
PostDown = iptables -F FORWARD;
[Peer]
PublicKey = *****
AllowedIPs = 192.168.200.2/32
NPM 配置:
[Interface]
PrivateKey = ****
Address = 192.168.200.2/24
[Peer]
PublicKey = ****
AllowedIPs = 0.0.0.0/0
Endpoint = z.z.z.z:51999
PersistentKeepalive = 25
编辑: 在 NPM 线卫上,在我打开隧道之前,我得到了:
IP路由:
default via 172.16.0.1 dev ens18 proto static
172.16.0.0/24 dev ens18 proto kernel scope link src 172.16.0.9
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
172.18.0.0/16 dev br-00d63081655a proto kernel scope link src 172.18.0.1
ip规则:
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
打开隧道后:
IP路由:
default via 172.16.0.1 dev ens18 proto static
172.16.0.0/24 dev ens18 proto kernel scope link src 172.16.0.9
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
172.18.0.0/16 dev br-00d63081655a proto kernel scope link src 172.18.0.1
192.168.200.0/24 dev wg0 proto kernel scope link src 192.168.200.2
ip规则:
0: from all lookup local
32764: from all lookup main suppress_prefixlength 0
32765: not from all fwmark 0xca6c lookup 51820
32766: from all lookup main
32767: from all lookup default