AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1819292
Accepted
cruunnerr
cruunnerr
Asked: 2023-12-04 19:56:52 +0800 CST2023-12-04 19:56:52 +0800 CST 2023-12-04 19:56:52 +0800 CST

Wireguard no Nginx Proxy Manager e VPS - Roteamento correto

  • 772

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:

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
vpn
  • 1 1 respostas
  • 90 Views

1 respostas

  • Voted
  1. Best Answer
    Tom Yan
    2023-12-05T19:46:27+08:002023-12-05T19:46:27+08:00
    32764:  from all lookup main suppress_prefixlength 0
    32765:  not from all fwmark 0xca6c lookup 51820
    32766:  from all lookup main
    

    Primeiro de tudo você precisa entender o significado das regras de IP aqui, especialmente a primeira. Quando você usa AllowedIPs = 0.0.0.0/0, o wg-quick não faz exatamente com que seu sistema roteie todos os tráfegos não encapsulados pelo WG para fora da interface wg. A regra principal aqui significa efetivamente que todas as rotas, exceto a defaultrota na sua maintabela, ainda serão usadas, já que é a única rota que tem comprimento de prefixo igual ou menor que 0. ( defaulté basicamente um apelido de 0.0.0.0/0.)

    Normalmente um host teria rotas específicas, nomeadamente as "rotas de prefixo", para a(s) sua(s) "rede(s) local(is)". No entanto, no seu caso, aparentemente o que você quer dizer com "rede local" é na verdade uma rede "remota" ao host NPM.

    Não vou me aprofundar em como definimos se uma rede é "local" ou "remota" aqui, e de qualquer maneira, não é a causa raiz do problema aqui, mas resulta mais ou menos na causa raiz, ou seja, sua maintabela não possui rota específica/não- defaultrota que cubra essa "rede local" de interesse (ou seja, 10.0.0.0/8). O resultado é que os tráfegos com um destino que pertence à sub-rede serão roteados para o túnel em vez de para 172.16.0.1encaminhamento adicional, uma vez que a defaultrota na maintabela é efetivamente substituída por aquela na 51820tabela (com os tráfegos encapsulados em WG marcados sendo a exceção).

    Portanto, IMHO, a solução mais simples é adicionar uma rota específica à 10.0.0.0/8mesa main(e não mexer com Table=você ip rulemesmo). Isso pressupõe que você não precisa acessar o NPM de outro 10.0.0.0/8(que não seja o NAT/IP de origem mascarado em nenhum ponto) no lado do VPS. (Por exemplo, digamos que você tenha vários VPSes que pertencem à mesma rede que faz uso 10.0.0.0/8ou a um subconjunto dela.)

    FWIW, se esta "rede local" não tiver realmente um comprimento de prefixo de /8(mas, por exemplo, apenas alguns /24sendo 10o primeiro octeto), é melhor rotear mais especificamente.

    • 0

relate perguntas

  • Por que Little Snitch negou uma conexão de entrada para openvpn de vpn.btguard.com?

  • Cisco anyconnect continua desconectando e reconectando

  • Ignorar 802.1X/prevenção de falsificação de MAC

  • OpenVPN em qualquer dispositivo - apenas encaminhar DNS

  • O OpenVPN pode conectar, o tráfego funciona, mas não estou na rede local

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Vickel O Firefox não permite mais colar no WhatsApp web? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve