Vienas nešiojamasis kompiuteris laiko tunelį, likusi namų dalis nori tos pačios prieigos, o pirmas bandymas – nukreipti viską į prijungtą mašiną. Tai nepavyksta dėl priežasčių, neturinčių nieko bendra su VPN: priimantis hostas turi persiųsti paketą, perrašyti jo šaltinį ir užtikrinti, kad atsakymai rastų kelią atgal. Praleiskite bent vieną iš trijų – prijungtas nešiojamasis kompiuteris veiks toliau, o visi kiti įrenginiai nesulauks atsakymo. Sprendimas yra maršrutizavimo projektas, o ne kliento nustatymas.

Kodėl įrenginių nukreipimas į hostą nepavyksta

Hostas, kuris gauna paketą, adresuotą nuotoliniam tinklui, tam momentui tampa maršrutizatoriumi – nesvarbu, ar kas nors jį taip sukonfigūravo. Persiuntimas Linux ir Windows sistemose išjungtas pagal numatytuosius nustatymus, nebent jį įjungia kokia nors funkcija. Adresų vertimas svarbus todėl, kad nuotolinė pusė turi žinoti, kur siųsti atsakymus, o privatus LAN adresas jai nieko nereiškia. Grįžimo maršrutas yra trečioji dalis, ir būtent jį žmonės pamiršta, kai pirmasis ping atrodo sėkmingas.

Diagnozuokite tokia tvarka, o ne atsitiktinai junginėkite nustatymus. Kiekvienos trūkstamos dalies simptomas šiek tiek skiriasi.

Įjunkite persiuntimą ir adresų vertimą hoste

Du pakeitimai prijungtame hoste apima pirmąsias dvi dalis: įjunkite IPv4 persiuntimą ir išverskite LAN srautą į tunelio sąsają.

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

Išsaugokite sysctl reikšmę faile, esančiame /etc/sysctl.d, ir po perkrovimo dar kartą patikrinkite masquerade taisyklę, nes ugniasienės priekinės dalys gali išvalyti pasirinktines grandines. Windows sistemoje bendrinimo funkcija atlieka abu veiksmus, tačiau ji taip pat iš naujo adresuoja LAN adapterį į fiksuotą potinklį ir ištrina jo šliuzą, o tai sugriauna statinį adresavimą ir prievadų persiuntimą. Atkurkite maršrutizatoriaus kelią į hostą naujuoju adresu, prieš darydami išvadą, kad bendrinimas nepavyko. Tada stebėkite, kaip taisyklės skaitikliai didėja, kol antras įrenginys siunčia srautą.

Suteikite LAN tinklui kelią, kuris išlieka po perkrovimų

Kitiems įrenginiams reikia maršruto į nuotolinį prefiksą, o du būdai jį suteikti skiriasi poveikio mastu.

ip route add 10.8.0.0/24 via 192.168.1.20 dev eth0

Nukreipus kliento numatytąjį šliuzą į hostą, visas jo srautas eina per hostą, įskaitant vietinį spausdinimą ir failų bendrinimą, todėl nesusiję dalykai sustoja, kai hostas užmiega. Pridėjus konkretų maršrutą maršrutizatoriuje nuotoliniam prefiksui yra siauriau: tik paskirties vietos už tunelio eina į prijungtą mašiną, o likusi LAN dalis veikia toliau. Aukščiau nurodyti potinkliai yra pavyzdžiai, todėl pakeiskite juos savo LAN ir tunelio diapazonais. Bet kuriuo atveju išbandykite iš antro įrenginio, kai tunelis įjungtas, o paskui išjungtas.

Stebėkite MTU, prieš kaltindami tunelį

Tuneliai sumažina naudingą paketo dydį, o antras įrenginys apie tai net nenutuokia. Dideli perdavimai ir TLS rankos paspaudimai stringa, o mažos užklausos pavyksta.

ping -M do -s 1400 10.8.0.5

Atsakymas įrodo, kad toks dydis kerta kelią nesufragmentuotas; skirtasis laikas reiškia, kad įkapsuliavimo antkainis stūmė paketą už tunelio MTU. Sumažinkite MTU bendrinimo sąsajoje arba apribokite didžiausią segmento dydį persiuntėjuje, tada pakartokite tą pačią patikrą. Pirmiausia išbandykite tą patį dydį LAN pusėje, nes vietinė klaida rodo į LAN, o ne į tunelį. Užsirašykite veikiantį dydį, nes vėlesnis tiekėjo ar tunelio pakeitimas gali jį pakeisti.

Vienam papildomam įrenginiui pakanka bendrinimo iš hosto. Namų ūkiui maršrutą dėkite į maršrutizatorių. Kai prieiga turi išlikti, kai nešiojamasis kompiuteris išvyksta kartu su jumis, pats tunelis turėtų būti skirtame šliuze.

Susiję straipsniai