WireGuard rokas sasveicināšanās darbojas, bet biroja apakštīkls neatbild
WireGuard ir ieslēgts un pingē serveri, taču nekas tā LAN tīklā neatbild. Pārbaudiet klienta prefiksu, servera pārsūtīšanu un atbildes ceļu.
Rokas sasveicināšanās pabeidzas, wg show ziņo par nesenu pārsūtīšanu, un servera tuneļa adrese atbild uz ping. Servera LAN tīklā esošais resursdators neatbild. Trim nosacījumiem jāizpildās vienlaikus: klientam jāmaršrutē LAN prefikss tunelī, serverim jāpārsūta paketes, un atbildei vajag ceļu atpakaļ. Ja trūkst kāda no trim, simptoms ir tāds pats.
AllowedIPs ir gan piekļuves saraksts, gan maršrutēšanas tabula
Klientā saraksts AllowedIPs nosaka gan to, ko drīkst sūtīt šim partnerim, gan to, kādus maršrutus WireGuard instalē. Partnera ieraksts, kurā uzskaitīta tikai servera tuneļa adrese, instalē vienu resursdatora maršrutu, tāpēc LAN galamērķi nekad neiekļūst tunelī. LAN prefiksa pievienošana ir pirmā lieta, kas jāpārbauda, un tā ir arī izmaiņa, kas visbiežāk trūkst pēc nokopētas konfigurācijas. Partneris, kas paplašināts līdz noklusējuma maršrutam, ir cits dizains, un tas pārvietos arī klienta interneta trafiku.
Turiet resursdatora maršrutu un LAN prefiksu kā atsevišķus ierakstus. Ja birojā ir divi apakštīkli, abi pieder sarakstam, un trūkstošais otrais prefikss rada kļūmi, kas izskatās selektīva, nevis pilnīga.
[Peer] PublicKey = <server public key> Endpoint = vpn.example.net:51820 AllowedIPs = 10.66.0.1/32, 192.168.50.0/24
Pārsūtīšana un tulkošana pieder serverim
Serverim vajag iespējotu IP pārsūtīšanu, pārsūtīšanas noteikumu, kas pieņem no tuneļa nākošo trafiku, un tulkošanas noteikumu pret tā LAN saskarni. Tieši tulkošana ļauj dizainam darboties, neaiztiekot katru biroja tīkla resursdatoru. Tad atbildes atgriežas serverī, nevis adresē, par kuru LAN nekad nav dzirdējis. Bez tās katram resursdatoram vajag maršrutu uz tuneļa apakštīklu un ugunsmūra noteikumu, kas to atļauj, un tas reti ir pieņemami tīklā, ko pārvalda kāds cits.
sysctl -w net.ipv4.ip_forward=1 iptables -A FORWARD -i wg0 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Ar roku pievienotie noteikumi pazūd pārstartēšanas laikā, tāpēc piesaistiet tos saskarnei ar servera konfigurācijas hook komandām. Noteikumu kopums, kas pārdzīvo savu saskarni, ir veids, kā iekārta galu galā tulko trafiku tunelim, kas vairs neeksistē.
Kad LAN pārcēlās, bet noteikums ne
Maršrutētāja nomaiņa, kas pārnumurē biroja apakštīklu, ir klasiskā šīs kļūmes versija. Tunelis paliek ieslēgts, rokas sasveicināšanās paliek svaiga, un nekas aiz servera neatbild, jo tulkošanas noteikums joprojām nosauc veco adresi. Instalēšanas skripti bieži iekļauj servera LAN adresi POSTROUTING noteikumā, un pēc pārnumurēšanas šī adrese neeksistē nevienā saskarnē. Tad paketes tiek pārrakstītas uz galamērķi, kas nevar atbildēt.
iptables -t nat -n -L POSTROUTING ip -br addr show
Salīdziniet abas izejas. Tulkošanas mērķis, kas neparādās saskarņu sarakstā, ir kļūda, un tās labošana ir vienas rindas izmaiņa, tiklīdz to esat redzējis. Noteikums var dzīvot ģenerētā unit, nevis WireGuard konfigurācijā, tāpēc pēc rediģēšanas pārlādējiet šo unit un pārliecinieties, ka nākamā palaišana nepārraksta jūsu izmaiņu.
Divām vietām aiz NAT vajag satikšanās vietu
Kad neviena puse nepieņem ienākošos savienojumus, praktiskā atbilde ir mazs resursdators ar publisku adresi un divām WireGuard saskarnēm. Katra vieta savienojas uz āru, vidējais resursdators katra partnera LAN savā AllowedIPs, citiem vārdiem, savā sarakstā, iekļauj, un pārsūtīšana pārvieto paketes starp abiem tuneļiem. Nekas nevienas vietas ugunsmūrī nav jāmaina, tāpēc šis dizains viegli izplatās.
Maršrutēšana starp vietām saglabā sākotnējās avota adreses un tādējādi saglabā jēgpilnu reģistrēšanu katram resursdatoram. Tulkošana vidējā resursdatorā ir vienkāršāka, kad divi LAN pārklājas, bet uz avota identitātes zaudēšanas rēķina žurnālos. Izlemiet, kura īpašība ir svarīga, pirms izvēlaties.
Atdaliet slāņus ar četrām pārbaudēm
Veiciet vienu pārbaudi katram slānim, nevis mainiet trīs lietas un ceriet. Pirmā parāda rokas sasveicināšanās vecumu un skaitītājus katram partnerim. Otrā parāda, vai klients tiešām maršrutē šo galamērķi tunelī. Trešā un ceturtā pasaka, vai pieprasījums ieradās un vai kāda politika to izmeta pēc ierašanās.
wg show ip route get 192.168.50.20 tcpdump -ni wg0 icmp iptables -vnL FORWARD --line-numbers
Pieprasījums, kas ierodas un neizraisa atbildi, norāda uz atbildes ceļu vai LAN resursdatoru. Pieprasījums, kas nekad neierodas, norāda uz AllowedIPs vai klienta maršrutu. Šiem diviem iznākumiem vajadzīgi atšķirīgi labojumi, un tieši ieraksts tos atšķir.