Índice: Contexto; Excertos de pares wg0.conf; Excertos do servidor wg0.conf; saída do sniffer de pacotes tshark.
Contexto: Peer é um host de LAN sem periféricos que configuro/controlo via SSH do meu Mac na mesma LAN; servidor está em um VPS na nuvem, portanto também configurado/controlado via SSH. A finalidade do peer é encaminhar a entrada de outro host de LAN (apenas um por enquanto) para o túnel e retornar os resultados do túnel. O servidor deve receber a saída do túnel, fazer NAT, enviá-la para seu destino WAN e retornar respostas por meio do túnel.
Conteúdo do peer wg0.conf, editado para resumir:
[Interface]
PrivateKey = ...
Address = 10.4.0.2/24
Table = 248 # wg-quick to use PBR for its default route based on:
PostUp = ip rule add not to 192.168.1.0/24 table 248 # not to local subnet
PostUp = ufw route allow in on enp1s0 out on %i
PostUp = ufw route allow in on %i out on enp1s0
PreDown = (*PreDowns omitted for brevity*)
[Peer]
PublicKey = ...
PersistentKeepalive = 25
AllowedIPs = 0.0.0.0/0
Endpoint = [IP of VPS]:51820
Nota: a regra da tabela 48 é manter o tráfego SSH fora do túnel.
Conteúdo do servidor wg0.conf, editado para resumir:
[Interface]
PrivateKey = ...
Address = 10.4.0.1/24
ListenPort = 51820
PostUp = ufw route allow in on wg0 out on enp1s0
Table = 248 # wg-quick to use PBR for its default route, i.e.:
# default dev wg0 table 248 scope link
PostUp = ip rule add to 10.4.0.0/24 table 248
PostUp = iptables -t nat -I POSTROUTING -o enp1s0 -j MASQUERADE
(PreDowns omitted for brevity)
[Peer]
PublicKey = ...
AllowedIPs = 0.0.0.0/0
Quanto ao peer, aqui o PBR é manter o tráfego SSH fora do túnel. Não tenho certeza se esta é a maneira de fazê-lo.
Logo após o peer ser ativado, a resposta do servidor é sudo wg
exibida transfer: 148 B received, 92 B sent
e permanece inalterada. O par mostra transfer: 92 B received, 11.43 KiB sent
e o número "enviado" aumenta com o tempo. tshark mostra isso para interface de peer wg0:
1 0.000000000 10.4.0.2 → [IP of VPS] WireGuard 176 Handshake Initiation, sender=0xBC9317D6
2 5.376117117 10.4.0.2 → [IP of VPS] WireGuard 176 Handshake Initiation, sender=0x6B160407
com uma linha adicional, idêntica após o carimbo de data/hora até o ID do remetente, a cada 5,4 segundos. No servidor, o tshark não mostra nenhum tráfego para wg0.
Não tenho experiência com WireGuard nem tshark. Tem sido uma luta chegar ao ponto em que eu poderia obter os dois lados sem SSH pendurado em um ou outro durante wg-quick up
a saída. O fato de eu ter omitido o contexto que você precisa, ou ter cometido um tipo de erro tipo tapa na cabeça, não me surpreenderia em nada. Obrigado por qualquer ajuda para que o servidor ouça e dê um aperto de mão com o par.
Se você insiste em mexer com rotas e regras de ip (por quem sabe por qual motivo), você pode tentar algo assim:
Você pode substituir todos os
51820
essencialmente por qualquer número que desejar (por exemplo248
, ), contanto que não entre em conflito com nenhum número especial embutido ou qualquer número existente usado no contexto correspondente em seu sistema.Isso essencialmente imita o que o wg-quick faz imediatamente
AllowedIPs=0.0.0.0/0
semTable=
set. Não é garantido que funcione, poiswg-quick
também adiciona certas regras de firewall (que são IMHO um tanto obscuras) que talvez resolvam certos problemas em potencial. Consulte o conteúdo dewg-quick
se você deseja adicioná-los manualmente (novamente, por quem sabe por qual motivo).Add-on -- um desenho feio que explica um pouco sobre o fluxo de tráfego do WireGuard: