Am un server lanserver rulează în LAN-ul meu privat care este conectat la un server public publicserver folosind Wireguard. publicserver transmite conexiunile TCP către anumite porturi către lanserver prin conexiunea Wireguard folosind un iptables DNAT regulă.
Pe lanserver, Wireguard este configurat ca o conexiune NetworkManager. Acesta direcționează tot traficul de internet prin Wireguard folosind AllowedIPs = 0.0.0.0/0, ::/0. Acest lucru face ca următoarele reguli IP să fie configurate lanserver:
[root@lanserver ~]# arată regulă ip
0: din toate căutările locale
31100: din toate căutările principale suppress_prefixlength 0
31101: nu din toate căutările fwmark 0xcb2e 52014
32766: din toate căutările principale
32767: din toate căutările implicite
[root@lanserver ~]# ip route show table 52014
default dev wg0 proto static scope link metric 50
Această configurație funcționează corect. O conexiune TCP de intrare la publicserver este redirecționat către lanserver folosind regula iptables. Răspunsul este trimis înapoi publicserver deoarece regula ip 31101 se potrivește cu el.
Există o excepție: când încerc să deschid o conexiune TCP la publicserver folosind IPv6 de pe computerul meu personal pc, care se află și în LAN-ul meu privat, nu funcționează. Problema pare să fie că ambele pc și lanserver au o adresă IPv6 în aceeași subrețea publică. publicserver transmite conexiunea către lanserver cu succes, dar răspunsul nu este redirecționat prin conexiunea Wireguard, ci direct către pc datorită regulii ip 31100.
Cum mă pot asigura că toate răspunsurile pentru conexiunile care vin prin interfața Wireguard sunt activate lanserver sunt de asemenea trimise înapoi prin interfața Wireguard, indiferent dacă IP-ul lor sursă se află într-o subrețea locală?
Mă pot gândi la soluții în următoarele direcții:
- Dezactivați IPv6 activat 
lanserver, ceea ce face ca acesta să nu fie pe aceeași subrețea ca pc. Nu este o soluție foarte bună. 
- Utilizare 
SNAT pe publicserver pentru port forward. Nu este o soluție acceptabilă, deoarece unele dintre serviciile din spatele porturilor redirecționate trebuie să cunoască adevărata IP sursă. 
- Menționați în mod explicit subrețeaua IPv6 locală în 
IP-uri permise de egalul Wireguard. Acest lucru nu funcționează deoarece subrețeaua IPv6 se modifică la fiecare 24 de ore. 
- Adăugați o regulă IP personalizată care se potrivește cumva cu toate conexiunile care vin 
wg0 și utilizează tabelul de rutare 52014 pentru ei. Nu sunt sigur cum să specific exact o astfel de regulă. De asemenea, problema este că numărul tabelului de rutare se modifică de fiecare dată când conexiunea Wireguard este repornită. Locul potrivit pentru a crea o astfel de regulă ar fi probabil Documenta script, dar NetworkManager nu pare să permită specificarea unuia.