Em casa tenho um ISP que me dá CGNAT.
Portanto, tenho um VPS como servidor wireguard instalado e funcionando. No meu homelab tenho uma VM com Ubuntu e Nginx Proxy Manager instalados. Nesta VM também instalei o wireguard para conectar ao VPS.
Imagem de topologia:
Na minha LAN, a GUI NginxProxyManager (NPM) está disponível em 172.16.0.9:81
O roteamento funciona conforme o esperado. Se eu me conectar ao VPS público através dos meus subdomínios, vejo meus servidores web. Então isso funciona muito bem. Mas tenho que usar "AllowedIPs=0.0.0.0/0" na configuração do NPM wireguard. Qualquer outra configuração não funciona.
No que diz respeito ao túnel wireguard, não consigo me conectar ao meu NPM via rede local. Mas tem conexão com a internet. Tem algo a ver com a configuração AllowedIPs.
Eu visito https://www.procustodibus.com/blog/2021/03/wireguard-allowedips-calculator/ e tentei muitas configurações diferentes com a proibição de intervalos de endereços locais, etc.... Mas nada funciona. Posso acessar meus servidores web através do IP público do VPS ou posso acessar meu NPM localmente, mas não simultaneamente.
Aqui estão minhas configurações até agora:
Configuração 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
Configuração 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
EDIT: No NPM wireguard, antes de abrir o túnel, obtive:
rota 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
regra de IP:
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
depois de abrir o túnel:
rota 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
regra de 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