web-dev-qa-db-fra.com

Garde-fil non complétant la poignée de main

J'ai deux systèmes de Debian GNU/Linux (Bullseye/Sid), à la fois rouler sur le port 23456, à la fois derrière Nat. Les deux gèrent une version du noyau> 5.6 (MainGuard Mainlined).

Système A est le serveur, et il met à jour de manière dynamique un "enregistrement" dédié dans le serveur de noms autoritatif pour son domaine Internet, avec l'adresse IP publique correcte de son routeur d'Internet Face à Internet A (Zywall USG 100 Pare-feu) est affecté. Cela le fait une fois chaque minute, mais l'adresse IP publique ne change effectivement que sur le redémarrage du routeur/pare-feu, qui n'arrive fondamentalement.

System B est derrière le routeur VDSL B et il agit en tant que client métallique, pointant vers le "enregistrement" et le port 33456. Routeur B. Le routeur B est un routeur VDSL de qualité de consommation et permet tout en direction sortant, ne répond que dans l'entrant.

Routeur/pare-feu A (Zywall USG 100) est configuré pour autoriser les paquets UDP sur le port 23456 à travers elle et les transmet au serveur A. Voici l'écran de configuration correspondant:

ZyWALL USG 100 wireguard-behind-NAT configuration

Voici le serveur un fichier de configuration métallurgique (clés de cet extrait dans cet extrait, malgré l'être valide, n'est pas les vrais):

[Interface]
Address = 10.31.33.100/24, fc00:31:33::1/64
ListenPort = 23456
PrivateKey = iJE/5Qy4uO55uUQg8nnDKQ/dFT1MEq+tDfFXrGNj3GY=
# PreUp = iptables -t nat -A POSTROUTING -s 10.31.33.0/24  -o enp1s0 -j MASQUERADE; ip6tables -t nat -A POSTROUTING -s fc00:31:33::/64 -o enp1s0 -j MASQUERADE
# PostDown = iptables -t nat -D POSTROUTING -s 10.31.33.0/24  -o enp1s0 -j MASQUERADE; ip6tables -t nat -D POSTROUTING -s fc00:31:33::/64 -o enp1s0 -j MASQUERADE

# Simon
[Peer]
PublicKey = QnkTJ+Qd9G5EybA2lAx2rPNRkxiQl1W6hHeEFWgJ0zc=
AllowedIPs = 10.31.33.211/32, fc00:31:33::3/128

Et voici la configuration du client B WireGuard (à nouveau, les touches et le domaine ne sont pas les vrais):

[Interface]
PrivateKey = YA9cRlF4DgfUojqz6pK89poB71UFoHPM6pdMQabWf1I=
Address = 10.31.33.211/32

[Peer]
PublicKey = p62kU3HoXLJACI4G+9jg0PyTeKAOFIIcY5eeNy31cVs=
AllowedIPs = 10.31.33.0/24, 172.31.33.0/24
Endpoint = wgsrv.example.com:33456
PersistentKeepalive = 25

Voici un diagramme sale qui décrit la situation:

Client B -> LAN B -> VDSL Router B (NAT) -> the internet -> ZyWALL (NAT) -> LAN A -> Server A

Le garde-fil de départ sur les deux systèmes n'établit pas la connexion VPN. Activer les messages de débogage sur le client et ajouter une règle de journal dans iptables, qui enregistre OUTPUT paquets, je reçois beaucoup d'entre eux:

[414414.454367] IN= OUT=wlp4s0 SRC=10.150.44.32 DST=1.2.3.4 LEN=176 TOS=0x08 PREC=0x80 TTL=64 ID=2797 PROTO=UDP SPT=36883 DPT=33456 LEN=156 
[414419.821744] wireguard: wg0-simon: Handshake for peer 3 (1.2.3.4:33456) did not complete after 5 seconds, retrying (try 2)
[414419.821786] wireguard: wg0-simon: Sending handshake initiation to peer 3 (1.2.3.4:33456)

J'ai ajouté une règle de log iptables sur le serveur, afin de diagnostiquer les problèmes de configuration du routeur.

root@wgserver ~ # iptables -t nat -I INPUT 1 -p udp --dport 23456 -j LOG

Il enregistre les paquets métalliques reçus du client (mais je ne peux pas dire s'ils sont invalides ou incomplets):

[ 1412.380826] IN=enp1s0 OUT= MAC=6c:62:6d:a6:5a:8e:d4:60:e3:e0:23:30:08:00 SRC=37.161.119.20 DST=10.150.44.188 LEN=176 TOS=0x08 PREC=0x00 TTL=48 ID=60479 PROTO=UDP SPT=8567 DPT=23456 LEN=156 
[ 1417.509702] IN=enp1s0 OUT= MAC=6c:62:6d:a6:5a:8e:d4:60:e3:e0:23:30:08:00 SRC=37.161.119.20 DST=10.150.44.188 LEN=176 TOS=0x08 PREC=0x00 TTL=48 ID=61002 PROTO=UDP SPT=8567 DPT=23456 LEN=156 

donc, je suis enclin à supposer que le routeur (Zywall USG 100) a été correctement configuré pour laisser les paquets entrer dans le réseau local du serveur. Pour confirmer cette hypothèse, j'ai même essayé de remplacer le zywall avec un autre routeur de qualité de consommation et de déplacer le serveur sur une connexion Internet différente, mais le problème est toujours là, alors je suis sûr que le problème n'est pas le pare-feu, ni sa connexion Internet.

Voici la configuration du réseau de serveurs, au cas où il importe:

auto lo
iface lo inet loopback

auto enp1s0
iface enp1s0 inet static
    address 10.150.44.188/24
    gateway 10.150.44.1

En plus de cela, d'autres tunnels viriles VPN fonctionnent correctement à l'aide du même client, le même routeur VDSL (côté client), la même connexion Internet, la configuration de serveur similaire (visualisation de différentes claviers et domaines), configuration de pare-feu similaire (côté serveur, différent. modèle de pare-feu).

2
Lucio Crusca

Cela pourrait être stupide, mais avez-vous essayé de créer de nouvelles clés de serveur, des clés clientes et de réessayer? Wireguard peut agir exactement comme celui-ci lorsque les profils sont faux.

1
Sanael