Hvers vegna FTP-listar hanga á bak við VPN-gátt sem gerir NAT
Innskráning og PWD ganga, en LIST og RETR stöðvast þegar NAT endurskirfar aðeins hausa. Sjáðu hvar FTP-aðstoðarmaðurinn á að vera og hvernig á að laga óvirka stillingu.
Innskráningin virkar, PWD virkar, og þá hangir LIST þangað til biðlarinn gefst upp eða fer yfir í aðra gagnastillingu. Þessi skipting er einkennið: stýrisambandið við port 21 er heilbrigt, en gagnasambandið er byggt frá vistfangi eða porti sem hin hliðin kemst ekki að. Á bak við VPN-gátt sem gerir líka NAT er venjulegi sökudólgurinn FTP-skipun sem farmurinn nefnir gönguvistfang eins og 10.8.0.6. Þýðing hausa snertir aldrei það gildi.
Það sem fer á eftir er hvaðan það gildi kemur og hvaða kassi má breyta því.
Það sem brotnar er farmurinn, ekki göngin
FTP setur endapunkt gagnanna inni í stýristrauminn. Í virkri stillingu sendir biðlarinn PORT með eigin vistfangi og porti, og netþjónninn hringir aftur í það par. Í óvirkri stillingu svarar netþjónninn 227 með pari, og biðlarinn hringir í það í staðinn.
Báðar myndir bera sömu tegund fullyrðingar: tengstu þessu vistfangi, á þessu porti. Tæki sem endurskirfar aðeins IP- og TCP-hausa lætur fullyrðinguna í friði, svo önnur hliðin heldur áfram að reyna að ná vistfangi sem er aðeins til hinum megin við göng. Gagnasambandið stöðvast eftir að stýrisambandið hefur þegar verið lýst heilbrigt.
Þrjár stillingar, þrír farmar
Taflan hér fyrir neðan sýnir hvorri hliðinni er sagt að hringja, og hvað NAT sem endurskirfar aðeins hausa getur gert í málinu.
Lestu síðasta dálkinn sem það sem bregst fyrst. Í virkri stillingu er það netþjónninn sem hringir í einkavistfang; í óvirkri stillingu er það biðlarinn; með FTPS er farmurinn dulkóðaður texti og millikassinn hefur enn minna til að vinna með.
| Mode | Value in the control stream | Who dials whom | Header-only NAT leaves |
|---|---|---|---|
| Active (PORT) | client address and port | server dials the client | a server dialing an unreachable tunnel address |
| Passive (227) | server address and port | client dials the server | a client dialing an address it cannot route to |
| FTPS | the same values, inside TLS | as above | ciphertext, so no rewrite happens at all |
Settu aðstoðarmanninn þar sem þýðingin fer fram
Á Linux sér aðstoðarmaðurinn nf_conntrack_ftp um endurskrift farmsins. Hann fylgist með stýrisambandinu, lærir portið sem samið var um, býr til væntingu fyrir gagnastreyminu og á NAT-kassa endurskirfar hann vistfangið og portið inni í farminum. Hann gagnar aðeins á tækinu sem þýðir vistfang biðlarans. Að hlaða honum á biðlarann, eða á beini sem aðeins sendir strauminn áfram, breytir engu um setuna.
Þessar þrjár skipanir sýna hvort módúllinn er til staðar, hvort hann er tengdur og hvort vænting er til meðan seta er opin:
modprobe nf_conntrack_ftp
lsmod | grep nf_conntrack_ftp
conntrack -L expect | grep ftp
Að hlaða módúlnum er ekki það sama og að tengja hann. Kjarnar frá 4.7 og síðar koma með net.netfilter.nf_conntrack_helper=0, svo aðstoðarmaðurinn bíður skýrrar reglu, til dæmis iptables -t raw -A PREROUTING -p tcp --dport 21 -j CT --helper ftp. Ef væntingalistinn helst tómur meðan reynt er að flytja, er það tengingin sem á að skoða, ekki módúllinn.
Óvirk stilling: segðu netþjóninum hvað á að auglýsa
Auðveldara er að gera óvirka stillingu fyrirsjáanlega því hægt er að segja netþjóninum hvað á að setja í 227-svarið. Í vsftpd er það pasv_address, ásamt pasv_min_port og pasv_max_port; ProFTPD notar MasqueradeAddress og PassivePorts. Stilltu þau fyrst, því rétt auglýst vistfang fjarlægir þörfina á að endurskrifa nokkuð þeim megin.
Leyfðu þá nákvæmlega því portbili í gegnum gáttina, til dæmis -A FORWARD -i tun0 -p tcp --dport 30000:30100 -j ACCEPT, svo reglan passi við það sem netþjónninn auglýsir.
Stillingarnar tvær verða að stemma. Netþjónn sem sagt er að auglýsa 30000-30100 meðan gáttin leyfir 40000-40100 bregst á sem minnst hjálpsaman hátt: stýrisamtalið virðist heilbrigt og hvert gagnasamband deyr. Berðu saman tölurnar áður en þú kembir eitthvað annað.
Tvö bilanatákn, og hvað FTPS fjarlægir
Hang á LIST bendir á fyrsta gagnasamband setunnar, þar sem bæði endurskrift vistfangs og væntingin verða að virka. Hang á RETR eftir virkt LIST bendir á flutninginn sjálfan, það er hið óvirka bil eða MTU ganganna. Það seinna tákn er ekki farmvandamál, og stillingar aðstoðarmannsins laga það ekki.
FTP yfir TLS fjarlægir farminn sem aðstoðarmaðurinn les. Millikassi getur ekki endurskrifað PORT- eða PASV-gildi sem hann getur ekki afkóðað, svo eftir standa umboðsþjónn sem lýkur TLS, netþjónn sem auglýsir aðgengilegt vistfang innan takmarkaðs bils, eða önnur flutningssamskiptaregla.
Stutt röð athugana
Vinnu út frá einkenninu. Staðfestu að LIST bregst meðan PWD gengur, gríptu vistfangið inni í PORT- eða 227-farminum, og spurðu hvaða tæki þýðir það vistfang. Tengdu aðstoðarmanninn þar, fylgstu með væntingalistanum í einum flutningi, lagaðu svo óvirka stillingu á netþjóninum og speglaðu bilið í reglu gáttarinnar.
Haltu bilaninni á gagnaleiðinni aðskildri frá bilun við magnflutning, því þær leiða þig að mismunandi stillingum.