Antes de tudo, sou meio noob nisso, então por favor seja gentil.
Estou tentando fazer uma VPN Wireguard rodar em um VPS para poder acessar um ambiente de desenvolvimento de qualquer lugar. Então essa é a versão de teste. O que tenho atualmente é um container Wireguard rodando em um VPS, que possui uma rede externa que tento tornar visível ao host e a outros containers.
Esse container e os outros estão em uma rede Captain-Overlay-Network, porque estou usando Captain Rover para a maioria dos outros containers, mas não para o Wireguard.
Brinquei com rotas e iptables para conectar algumas coisas, então aqui está o que consegui até agora.
Consigo acessar um webserver de um peer para outro
Consigo fazer ping dos peers para o gateway do wireguard e outros containers
Consigo fazer ping do host para os containers dentro da rede captain-overlay e os peers
Consigo fazer ping de outros containers para o gateway do wireguard e o host, mas mais importante, NÃO para os peers, que é o que quero.
O que quero é poder apontar o proxy reverso nginx para o webserver em um dos containers, mas ainda não consegui essa cadeia de conexão.
Há alguma forma de você me ajudar? Não sei quanto dos logs e configurações posso compartilhar, mas estou disposto a editar este post, comentar ou enviar pm com as informações se você estiver disposto a ajudar, e seria muito apreciado.
EDIT: Já pago por um VPS, que é o host no diagrama, e usando Tailscale consegui o que queria de forma bem fácil, sem até precisar do wireguard, o que é legal, mas realmente quero saber quais regras eu estava faltando.
Estive na mesma situação com WireGuard, um VPS e CGNAT e quero apenas te poupar tempo. Use Tailscale. Ou Headscale se quiser mais privacidade, ou qualquer outro software de VPN em malha.
Contornar o NAT de grau de operadora simplesmente não vale a pena pelo transtorno que você está passando.
Configurar as portas 443 e 80 para encaminhar do VPS ao servidor local no arquivo de configuração do Wireguard (iptables).
Configurar nginx como proxy reverso para cada serviço desejado no servidor local; como Jellyfin, Nextcloud, Home Assistant.
Então, isso significa que preciso pagar tanto pela taxa de domínio quanto pelo VPS.
Consigo (tentei e consegui) evitar a taxa do VPS usando túnel Cloudflare.
Posso pagar nenhuma dessas taxas configurando uma LAN Tailscale ou Zerotier, mas isso exige que meus dispositivos portáteis executem aplicativos VPN o tempo todo, o que não gosto.
Fiz coisas semelhantes quando meu ISP tinha CGNAT.
Mas então li sobre IPv6 e entendi que ele é sempre único e público.
Então, eu apenas apontei o registro AAAA na minha provedora de domínio para o endereço IPv6 da minha máquina.
Funcionou muito bem
Use apenas Tailscale ou Twingate.
Algumas pessoas também podem sugerir cloudflared, mas isso não suporta UDP, então o Wireguard não funciona. Talvez OpenVPN funcione. Mas economize a dor de cabeça - use apenas Tailscale.
Estou tentando entender sua configuração, mas está bem confuso, para ser honesto. Você está falando de um VPS, mas como também está falando de contornar CG-NAT, acho que não é um VPS de verdade, mas uma VM que você está rodando em casa, é isso mesmo?
E o que você quer dizer quando diz que consegue acessar um webserver “de um peer para o outro”? Onde está o webserver? No peer XAMPP? Ou em um container na VM? É esse o mesmo webserver que você quer apontar para o nginx?
E, quando diz “host”, você está se referindo à VM ou à máquina física que roda a VM?
Consegue fazer ping de um cliente para o container do nginx, e do container do nginx para o webserver? Contanto que consiga fazer isso, você deve estar preparado.
Você precisa encaminhar o tráfego do seu VPS para o Wireguard (porta 80 e 443)
Agora você pode acessar facilmente seu servidor e listar apenas as coisas que quer expor na Internet no Proxy Reverso.
(É necessário configurar seu DNS)
Obrigado pela sugestão, vou pesquisar sobre isso, mas acho que vou tentar amanhã se acabar falhando miseravelmente, é um dia de festa no meu país, então há isso.
Desculpe se expliquei de forma estranha, deixe-me tentar reformular:
Tenho um VPS pelo qual estou pagando atualmente, mas tenho dois computadores em casa e quero disponibilizar alguns serviços para o mundo exterior, só que meu ISP não fornece IPv6 e só IPv4 com CGNAT.
Um dos computadores de casa tem XAMPP e atualmente é um peer na rede Wireguard. O outro não roda nenhum serviço agora, mas vai rodar no futuro.
O VPS tem o container nginx e o container Wireguard.
Consigo fazer ping do peer para o container nginx, mas não o contrário.
Mmh, parece que você está faltando uma regra para permitir que a rede dentro do VPS saia se não for iniciada de fora, ao que parece.
Uso um VPS com Wireguard para acessar meu laboratório doméstico e segui este guia: How to Use WireGuard With Nftables | Pro Custodibus pois uso nftables para crowdsec. Mas há o mesmo com ufw ou firewalld também.