Para acessar meu servidor web (atrás do CGNAT no meu PC doméstico), estabeleci um túnel wireguard entre meu PC doméstico (wireguard IP 10.8.0.3
) e um VPS (wireguard IP 10.8.0.1
e IP público 11.22.33.44
). Também tenho um domínio (meu.domínio) associado ao IP público do VPS.
Configuração Wireguard no VPS
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
[Peer]
## my home pc
PublicKey = QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
AllowedIPs = 10.8.0.3/32
Wireguard conf no meu pc doméstico
[Interface]
PrivateKey = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Address = 10.8.0.3/32
[Peer]
PublicKey = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
AllowedIPs = 0.0.0.0/0
Endpoint = 11.22.33.44:51820
PersistentKeepalive = 25
Também tenho o UFW instalado no VPS (sem firewall no meu pc doméstico), com o qual estou encaminhando a porta 80 da Internet para o meu pc doméstico.
To Action From
-- ------ ----
[ 1] Anywhere ALLOW IN 10.8.0.0/24
[ 2] 51820/udp ALLOW IN Anywhere
[ 3] 51820/udp (v6) ALLOW IN Anywhere (v6)
/etc/ufw/before.rules
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.8.0.3:80
-A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 10.8.0.3:443
-A OUTPUT -o lo -p tcp --dport 80 -j DNAT --to-destination 10.8.0.3:80
-A OUTPUT -o lo -p tcp --dport 443 -j DNAT --to-destination 10.8.0.3:443
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT
Usando essas configurações, consigo acessar meu site usando meu domínio da internet (navegador do meu telefone com rede diferente) e meu vps (testado via curl -4 -v my.domain
). No entanto, quando executo curl -4 -v my.domain
no meu PC doméstico (10.8.0.3), recebo o seguinte erro:
root@home-pc:~# curl -4 -v my.domain
* Trying 11.22.33.44:80...
* connect to 11.22.33.44 port 80 failed: Connection refused
* Failed to connect to my.domain port 80 after 25 ms: Couldn't connect to server
* Closing connection 0
curl: (7) Failed to connect to my.domain port 80 after 25 ms: Couldn't connect to server
Sei que posso me conectar diretamente ao meu site a partir do meu PC doméstico usando localhost (ou 192.168.50.2), mas não consigo descobrir por que não consigo me conectar ao meu PC doméstico por meio da VPN. Eu gostaria de fazer isso porque quero me conectar ao host local usando my.domain. Como posso conseguir isso? Agradecemos antecipadamente por qualquer pista.
Eu consertei adicionando rotas estáticas (exceções) à configuração do wireguard no meu PC doméstico, da seguinte maneira:
Uma ressalva é que agora não poderei me conectar ao meu servidor web diretamente do VPS, mas isso não é um requisito para mim agora.