Listen, Bind in BindSame v Tinyproxy: kateri naslov zmaga
Listen izbere naslov, ki sprejema odjemalce, Bind izbere vir odhodnih povezav. Nobena ne namesti poti, zato pot preverite ločeno.
Posrednik odgovori, zahteva se zaključi, in vendar cilj še vedno zabeleži naslov iz lokalnega omrežja. Nič v dnevniku posrednika ni videti narobe, in vrstica, ki ste jo spremenili, je prav tista, ki jo je dokumentacija naročila spremeniti. Na gostitelju z naslovom v lokalnem omrežju in naslovom predora tri direktive odločajo, kateri naslov se kje pojavi, in samo ena od njih zadeva odhodno stran. Če jih berete v napačnem vrstnem redu, brez razloga pristanete v usmerjevalni tabeli.
Simptom: cilj vidi naslov iz lokalnega omrežja
Odjemalec se poveže s posrednikom na naslovu v lokalnem omrežju, posrednik pa odpre svojo povezavo do cilja. Ta druga povezava izbere izvorni naslov po pravilih jedra, in privzeto je to tisti, ki ga izbere iskanje poti. Zato cilj zabeleži primarni naslov gostitelja, čeprav je vsak bajt šel skozi posrednika. Glede posredovanja ni nič pokvarjeno, in zato dnevnik posrednika o tem nima kaj povedati.
Zrcalna slika te napake je lažje opazna: pripnite odhodni vir na naslov predora in odjemalci iz lokalnega omrežja sploh ne dosežejo poslušalca. Ta različica se sama naznani, prva pa se skriva za delujočo zahtevo. Obe izhajata iz tega, da eno direktivo obravnavamo, kot da odgovarja na obe vprašanji.
Tri direktive, tri različni naslovi
Listen poimenuje lokalni naslov, ki sprejema odjemalce posrednika. Bind zagotovi izvorni naslov za povezave, ki jih posrednik vzpostavi navzven, BindSame pa mu ukaže, naj znova uporabi lokalni naslov pravkar sprejete povezave. To so tri ločena vprašanja in ena vrstica odgovori le na eno. Njihovo mešanje je običajen razlog, da se sprememba zdi brez učinka.
| 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 |
Preberite komentirano konfiguracijo, ki je priložena nameščeni različici, ker se privzete vrednosti in sprejeta sintaksa med izdajami spreminjajo. Primer konfiguracije projekta dokumentira vsako direktivo ob drugih. Primerjajte to datoteko s tisto na disku, ne z vodnikom, napisanim za drugo distribucijo.
Nastavite poslušalec in odhodni vir neodvisno
Vzemite gostitelja z naslovom v lokalnem omrežju 192.168.50.10 in naslovom predora 10.90.0.3. Če morajo odjemalci iz lokalnega omrežja doseči posrednika, njihove zahteve pa izhajati skozi predor, sta to dve neodvisni odločitvi in obe je treba zapisati. Spodnji odlomek izraža natanko to in nič drugega.
Listen 192.168.50.10
Bind 10.90.0.3
BindSame noTo ni popolna konfiguracija, zato ohranite odobrena vrata, preverjanje pristnosti, nadzor dostopa odjemalcev in omejitve ciljev. Oba naslova morata pripadati temu gostitelju znotraj imenskega prostora omrežja Tinyproxy, ker vrednost Bind, ki je proces ne more imeti, spodleti pri povezovanju, ne pri zagonu. BindSame yes opisuje drugo politiko, kjer lokalni naslov sprejete povezave postane odhodni vir. V trenutnih izdajah ima ta veja prednost pred seznamom Bind, in tako se nastavljeni vir izgubi brez napake.
Preverite pot, ki jo vir predpostavlja
Izbira izvornega naslova ne ustvari poti, zato vprašajte jedro, kaj bi storilo s tem virom in tem ciljem. Iskanje, ki poimenuje vmesnik predora, je minimalni dokaz, tisto, ki poimenuje vmesnik lokalnega omrežja, pa pomeni, da vir ne more delovati tako, kot je zapisan. Iskanje je kontekstualno: ocenjuje pravila politike in tabelo, ki veljata za ta imenski prostor. Ni povezava in ne pove ničesar o tem, kaj bo NAT naprej predstavil storitvi.
ip -4 route get 203.0.113.25 from 10.90.0.3V primeru uporabite dokumentacijski naslov in ga nadomestite s storitvijo, ki jo smete preizkusiti. Iskanje izvajajte znotraj imenskega prostora posrednika, ko posrednik teče v vsebniku, ker pravila gostitelja niso pravila, ki jih vidi proces. Ko predvidene poti skozi predor ni, naj jo popravi lastnik omrežja, namesto da na gostitelja posrednika dodajate pravila, specifična za cilj. Ne čistite poti gostitelja in ne onemogočajte poti, ki jih potiska strežnik, da bi iskanje uspelo, tudi če je starejši vodnik to počel, ker takšne spremembe premaknejo celotno odobreno vedenje VPN gostitelja, da bi popravili eno pot posrednika.
Potrdite vir na cilju
Izvorni naslov berite tam, kam zahteva prispe, ne tam, od koder odide. Dnevnik aplikacije na cilju ali robna naprava pred njim zabeleži naslov, ki ga je resnično videla, medtem ko vam posrednik lahko pove le, kaj je nameraval. Po spremembi pošljite eno novo zahtevo skozi predvideni poslušalec, ker predpomnjena povezava ne dokazuje ničesar o novi vezavi. Nato primerjajte zabeleženi naslov s tistim, ki ste ga nastavili.
ss -ltnp | grep tinyproxy
curl -x http://192.168.50.10:8888 https://example.com -o /dev/null -sScurl je le generator prometa; naslov, ki si zasluži preverjanje, je tisti, ki ga je zabeležila oddaljena stran, ne pa nasprotna stran, s katero se je curl slučajno povezal. Če se oba ne ujemata, ugotovite, ali razlika izhaja iz izbire vira ali iz prevoda naprej na poti, ker se to popravlja na različnih mestih. Načrtujte spremembe naslovov in ponovne zagone posrednika skupaj, ker vezava naslova, ki ga predor nima več, po ponovni povezavi tiho spodleti. Vedenje DNS in IPv6 opredelite prav tako ločeno, ker odlomek IPv4 zgoraj ne dokazuje ničesar o nobenem od njiju.