„Listen“, „Bind“ ir „BindSame“ Tinyproxy: kuri adresė laimi
Listen parenka adresę, kuri priima klientus, Bind parenka išeinančių jungčių šaltinį. Nė viena nenustato maršruto, todėl kelią tikrinkite atskirai.
Tarpinė paslauga atsako, užklausa įvykdoma, ir vis dėlto paskirties taškas vis dar įrašo LAN adresę. Tarpinės paslaugos žurnale niekas neatrodo klaidingai, o eilutė, kurią pakeitėte, yra būtent ta, kurią dokumentacija liepė pakeisti. Hoste, turinčiame ir LAN, ir tunelio adresę, trys direktyvos sprendžia, kuri adresė kur atsiras, ir tik viena jų susijusi su išeinančia puse. Perskaičius neteisinga tvarka, be priežasties patenkate į maršrutų lentelę.
Simptomas: paskirties taškas mato LAN adresę
Klientas jungiasi prie tarpinės paslaugos LAN adresu, o ši atidaro savo paties jungtį į paskirties tašką. Ta antroji jungtis pasirenka šaltinio adresę pagal branduolio taisykles, o pagal nutylėjimą tai ta, kurią parenka maršruto paieška. Todėl paskirties taškas įrašo pagrindinį hosto adresą, nors kiekvienas baitas ėjo per tarpinę paslaugą. Persiuntimo prasme niekas nesugriuvo, ir todėl žurnalas neturi ką apie tai pasakyti.
Atvirkštinė šios klaidos pusė pastebima lengviau: prisekite išeinantį šaltinį prie tunelio adresės ir LAN klientai visiškai nebepasieks klausytojo. Ta versija pati save praneša, o pirmoji slepiasi už veikiančios užklausos. Abi kyla iš to, kad viena direktyva laikoma atsakančia į abu klausimus.
Trys direktyvos, trys skirtingi adresai
Listen įvardija vietinį adresą, kuris priima tarpinės paslaugos klientus. Bind pateikia šaltinio adresę jungtims, kurias tarpinė paslauga atidaro į išorę, o BindSame liepia naudoti iš naujo ką tik priimtos jungties vietinį adresą. Tai trys atskiri klausimai, ir viena eilutė atsako tik į vieną. Jų painiojimas yra įprasta priežastis, kodėl pakeitimas atrodo nieko nedarantis.
| What you observe | Check first |
|---|---|
| A client cannot connect at all | Listen: the local address the listener binds |
| The request works but the far side logs the LAN address | Bind: the outgoing source is not being applied |
| A configured Bind appears to have no effect | BindSame yes: the accepted local address overrides the Bind list |
| The lookup names the LAN interface | The route, not the proxy: the source cannot reach that destination |
Skaitykite komentuojamą konfigūraciją, pateikiamą su įdiegta versija, nes numatytosios reikšmės ir priimama sintaksė keičiasi tarp leidimų. Projekto pavyzdinė konfigūracija dokumentuoja kiekvieną direktyvą šalia kitų. Palyginkite tą failą su esančiu diske, o ne su vadovu, parašytu kitai distribucijai.
Nustatykite klausytoją ir išeinantį šaltinį atskirai
Paimkite hostą, kurio LAN adresė yra 192.168.50.10, o tunelio adresė 10.90.0.3. Jei LAN klientai turi pasiekti tarpinę paslaugą, o jų užklausos išeiti per tunelį, tai du nepriklausomi sprendimai ir abu turi būti užrašyti. Toliau pateiktas fragmentas išreiškia būtent tai ir nieko daugiau.
Listen 192.168.50.10
Bind 10.90.0.3
BindSame noTai nėra visa konfigūracija, todėl palikite patvirtintą prievadą, autentifikavimą, klientų prieigos kontrolę ir paskirties apribojimus. Abi adresės turi priklausyti šiam hostui Tinyproxy tinklo vardų erdvėje, nes Bind reikšmė, kurios procesas negali turėti, nepavyksta jungiantis, o ne paleidžiant. BindSame yes aprašo kitą politiką, kai priimtos jungties vietinis adresas tampa išeinančiu šaltiniu. Dabartiniuose leidimuose ta šaka turi pirmenybę prieš Bind sąrašą, ir taip sukonfigūruotas šaltinis dingsta be klaidos.
Patikrinkite maršrutą, kurį numato šaltinis
Šaltinio adresės pasirinkimas nesukuria kelio, todėl paklauskite branduolio, ką jis darytų su tuo šaltiniu ir tuo paskirties tašku. Paieška, įvardijanti tunelio sąsają, yra minimalus įrodymas, o įvardijanti LAN sąsają reiškia, kad šaltinis negali veikti taip, kaip parašyta. Paieška yra kontekstinė: ji įvertina politikos taisykles ir lentelę, galiojančias tai vardų erdvei. Tai ne jungtis ir nieko nesako apie tai, ką pasroviui esantis NAT pateiks paslaugai.
ip -4 route get 203.0.113.25 from 10.90.0.3Pavyzdyje naudokite dokumentacijos adresą ir pakeiskite jį paslauga, kurią turite teisę testuoti. Vykdykite paiešką tarpinės paslaugos vardų erdvėje, kai tarpinė paslauga veikia konteineryje, nes hosto taisyklės nėra tos taisyklės, kurias mato procesas. Kai numatyto tunelio maršruto nėra, tegul tinklo savininkas jį sutvarko, o ne pridėkite paskirties taškui būdingas taisykles tarpinės paslaugos hoste. Nevalykite hosto maršrutų ir neišjunkite serverio siunčiamų maršrutų, kad paieška pavyktų, net jei senesnis vadovas taip darė, nes tokie pakeitimai perkelia visą patvirtintą hosto VPN elgseną, kad sutvarkytų vieną tarpinės paslaugos kelią.
Patvirtinkite šaltinį paskirties taške
Šaltinį skaitykite ten, kur užklausa atvyksta, o ne ten, iš kur ji išeina. Paskirties taško programos žurnalas arba priešais esantis krašto įrenginys įrašo adresę, kurią jis tikrai matė, o tarpinė paslauga gali pasakyti tik savo ketinimą. Po pakeitimo atlikite vieną naują užklausą per numatytą klausytoją, nes podėlyje esanti jungtis nieko neįrodo apie naują susiejimą. Tada palyginkite įrašytą adresę su nustatytąja.
ss -ltnp | grep tinyproxy
curl -x http://192.168.50.10:8888 https://example.com -o /dev/null -sScurl yra tik srauto generatorius; adresė, kurią verta tikrinti, yra ta, kurią įrašė tolimoji pusė, o ne partneris, su kuriuo curl atsitiktinai susijungė. Jei abi nesutampa, nuspręskite, ar skirtumas kyla iš šaltinio pasirinkimo, ar iš tolesnio vertimo, nes tai taisoma skirtingose vietose. Adresų pakeitimus ir tarpinės paslaugos perkrovimus planuokite kartu, nes adresės, kurios tunelis nebeturi, susiejimas po pakartotinio prisijungimo tyliai nepavyksta. Atskirai apibrėžkite ir DNS bei IPv6 elgseną, nes aukščiau pateiktas IPv4 fragmentas nieko neįrodo apie nė vieną iš jų.