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 / unix / Perguntas / 758649
Accepted
bomben
bomben
Asked: 2023-10-11 21:02:07 +0800 CST2023-10-11 21:02:07 +0800 CST 2023-10-11 21:02:07 +0800 CST

Posso executar PIVPN com Wireguard sem MASQUERADING?

  • 772

Ao instalar pivpnno Raspberry Pi ele criará uma regra de iptables:

pi@RPi64:~ $ sudo iptables -L -t nat                                                                                                      
Chain PREROUTING (policy ACCEPT)                                                                                                                                                                                                             
target     prot opt source               destination                                                                                                                                                                                                                                                                                                                                                                                                                                      

Chain INPUT (policy ACCEPT)                                                                                                                                                                                                                  
target     prot opt source               destination                                                                                                                                                                                                                                                                                                                                                                                                                                      

Chain OUTPUT (policy ACCEPT)                                                                                                                                                                                                                 
target     prot opt source               destination                                                                                                                                                                                                                                                                                                                                                                                                                                      

Chain POSTROUTING (policy ACCEPT)                                                                                                                                                                                                            
target     prot opt source               destination                                                                                                                                                                                         
MASQUERADE  all  --  10.122.242.0/24      anywhere             /* wireguard-nat-rule */    

Acho que faz isso inserindo a regra via iptables-persistant:

pi@RPi64:~ $ cat /etc/iptables/rules.v4                                                                                                                                                                                                      
# Generated by iptables-save v1.8.7 on Fri Aug 12 08:07:21 2022                                                                                                                                                                              
*nat                                                                                                                                                                                                                                         
:PREROUTING ACCEPT [0:0]                                                                                                                                                                                                                     
:INPUT ACCEPT [0:0]                                                                                                                                                                                                                          
:OUTPUT ACCEPT [0:0]                                                                                                                                                                                                                         
:POSTROUTING ACCEPT [0:0]                                                                                                                                                                                                                    
-A POSTROUTING -s 10.122.242.0/24 -o eth0 -m comment --comment wireguard-nat-rule -j MASQUERADE                                                                                                                                              
COMMIT                                                                                                                                                                                                                                       
# Completed on Fri Aug 12 08:07:21 2022 

Isso está no lado do servidor, é claro. Se eu quiser me conectar totalmente de um cliente a este servidor, preciso adicionar mascaramento no cliente inserindo uma regra semelhante no cliente:

pi@schwarz:~ $ sudo iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  anywhere             anywhere

Eu faço assim:

pi@schwarz:~ $ sudo cat /etc/wireguard/schwarz.conf                                                                         
[Interface]                                                                                                             
PrivateKey = 
Address = 10.122.242.4/24                                                                                                
PostUp = iptables -t nat -A POSTROUTING -o schwarz -j MASQUERADE                                                        
PreDown = iptables -t nat -D POSTROUTING -o schwarz -j MASQUERADE                                                      
DNS = 9.9.9.9, 149.112.112.112                                                                                                                                                                                                                  
[Peer]                                                                                                                    
...

Em seguida, adiciono rotas estáticas em ambos os roteadores, para que o tráfego para a respectiva LAN seja roteado para o servidor wireguard ou para o cliente de outros clientes nessas LANs.

Dessa forma, posso me conectar totalmente a todos os dispositivos nas duas LANs de qualquer cliente nas duas LANs.

O problema com esta abordagem é que os clientes perdem o IP original da LAN original e, em vez disso, aparecem na outra rede com o IP do cliente wireguard (mais uma porta). É claro que isso se deve ao NAT (mascaramento).

Tudo funciona bem desta forma.

Exceto um serviço: Logitechmediaserver. Este servidor não consegue lidar com todos os clientes que vêm de uma LAN remota porque agora eles têm o mesmo IP. Para ser mais específico, o problema são apenas alguns clientes Logitech (Rádio). Os clientes se conectam bem no servidor, mas não veem o servidor respondendo. Outros clientes (Boom) conectam-se bem. Eles usam um protocolo diferente.

Isso me fez pensar por que pivpnestá mascarando os IPs. Não deveria ser suficiente ter rotas estáticas das LANs para o cliente/servidor e desses clientes/servidor para os túneis que eles criam?

Por que o mascaramento? Isso é feito para o caso do servidor Wireguard atuar também como roteador ISP para a internet? Este não é o caso aqui. O roteador está sempre em uma máquina diferente.

Para encurtar a história, eu queria saber se seria possível, em geral, remover o mascaramento com pivpn. Além disso, talvez alguém possa apontar para um erro que tenho na minha configuração.

raspberry-pi
  • 1 1 respostas
  • 37 Views

1 respostas

  • Voted
  1. Best Answer
    Justin Ludwig
    2023-10-15T05:57:56+08:002023-10-15T05:57:56+08:00

    O mascaramento em geral é usado para acesso a uma rede a partir de uma segunda rede, onde a primeira rede não está configurada para rotear respostas de volta para a segunda. Você aplica o mascaramento aos pacotes que saem do gateway para a primeira rede (reescrevendo o endereço de origem dos pacotes para usar o endereço do gateway), para que outros hosts nessa rede respondam de volta ao gateway (o que traduzirá o destino dos pacotes de resposta de volta para o endereço de origem original).

    Você não precisa de mascaramento se estiver conectando duas LANs e cada LAN estiver configurada para rotear a outra por meio de seu próprio gateway WireGuard (a configuração clássica do WireGuard site a site).

    Você precisa de mascaramento se estiver conectando uma LAN (ou rede WireGuard) à Internet (ou seja, roteamento para a Internet, não apenas túnel através da Internet).

    Com uma conexão site a site, se o roteador LAN em cada LAN também for o gateway WireGuard, você normalmente não usaria o mascaramento; normalmente você apenas configuraria a interface WireGuard em cada roteador LAN com uma rota (e AllowedIPsconfiguração apropriada) para a outra LAN e adicionaria regras de firewall aos roteadores que permitem o acesso apropriado de um site para outro.

    No seu caso, onde parece que você tem um gateway (seu Pis) em cada site que é diferente do roteador LAN, você pode eliminar a necessidade de mascaramento 1) adicionando a rota para o outro site a cada roteador LAN (ou alternativamente para cada dispositivo individual que precisa acessar o outro site) e 2) adicionar a rede LAN do outro site à AllowedIPsconfiguração no gateway WireGuard.

    Parece que você já deve ter feito isso; mas para dar um exemplo concreto, se você estiver conectando duas LANs, 10.100.100.0/24 e 10.200.200.0/24, e o gateway WireGuard na LAN 1 for 10.100.100.123 e o gateway WireGuard na LAN 2 for 10.200.200.234, você adicionaria uma rota ao roteador LAN (ou dispositivos individuais) na LAN 1 como a seguir (usando a interface conectada à LAN apropriada para o roteador ou dispositivo, como eth1):

    10.200.200.0/24 via 10.100.100.123 dev eth1
    

    E uma rota correspondente para o roteador LAN (ou dispositivos individuais) na LAN 2 como a seguir:

    10.100.100.0/24 via 10.200.200.234 dev eth1
    

    Na configuração do WireGuard para LAN 1, você incluiria a rede do outro site na AllowedIPsconfiguração do outro site:

    [Interface]
    Address = 10.122.242.1/24
    ...
    
    [Peer]
    AllowedIPs = 10.122.242.2, 10.200.200.0/24
    ...
    

    E correspondentemente, na configuração do WireGuard para LAN 2, você incluiria a rede da LAN 1 na AllowedIPsconfiguração da LAN 1:

    [Interface]
    Address = 10.122.242.2/24
    ...
    
    [Peer]
    AllowedIPs = 10.122.242.1, 10.100.100.0/24
    ...
    

    Com essa configuração implementada, você pode remover com segurança as regras de mascaramento de seus gateways WireGuard e o tráfego pode ser roteado de um site para outro e vice-versa sem qualquer NAT.

    Se você ainda quiser usar um dos gateways WireGuard como gateway para a Internet, poderá manter a regra de mascaramento, mas simplesmente criar uma exceção para pacotes destinados à própria LAN do gateway; por exemplo, assim no gateway WireGuard para LAN 2:

    iptables -t nat -A POSTROUTING ! -d 10.200.200.0/24 -o eth0 -J MASQUERADE
    

    Um detalhe menor e não relacionado sobre a configuração do WireGuard que você postou: você quase nunca deseja incluir a DNSconfiguração em uma configuração site a site. Normalmente, você usaria apenas a DNSconfiguração no lado "ponto" de uma configuração ponto a site, com a finalidade de usar um resolvedor DNS diferente no endpoint quando sua interface WireGuard estiver ativa e quando estiver inativa.

    • 1

relate perguntas

  • Raspberry: inicializando a partir de uma pen USB em vez de um cartão SD

  • vwdial Sequência de inicialização inválida no RPI [fechado]

  • Como alguém atualiza automaticamente o Route53 de um servidor raspberry pi em casa?

  • O /etc/init.d/hostname.sh ainda é uma opção para o alongamento do debian?

  • "pacman -Syu" 'provavelmente' quebrou meu sistema, porque a inicialização não foi montada

Sidebar

Stats

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

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

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