Mae’r mewngofnodi yn gweithio, mae PWD yn gweithio, ac yna mae LIST yn hongian nes bod y cleient yn rhoi’r gorau iddi neu’n newid i fodd data arall. Y rhaniad hwnnw yw’r arwydd: mae’r cysylltiad rheoli i borth 21 yn iach, tra mae’r cysylltiad data yn cael ei adeiladu o gyfeiriad neu borth na all yr ochr bell gyrraedd. Y tu ôl i borth VPN sy’n gwneud NAT hefyd, y drwgdybiaeth arferol yw gorchymyn FTP y mae ei lwyth yn enwi cyfeiriad tiwnel fel 10.8.0.6. Nid yw cyfieithu penawdau byth yn cyffwrdd â’r gwerth hwnnw.

Yr hyn sy’n dilyn yw o ble mae’r gwerth hwnnw’n dod, a pha flwch sy’n cael ei newid.

Y llwyth sy’n torri, nid y tiwnel

Mae FTP yn rhoi pwynt diwedd y data y tu mewn i’r ffrwd reoli. Yn y modd gweithredol mae’r cleient yn anfon PORT gyda’i gyfeiriad a’i borth ei hun, ac mae’r gweinydd yn galw’n ôl i’r pâr hwnnw. Yn y modd goddefol mae’r gweinydd yn ateb 227 gyda phâr, ac mae’r cleient yn galw hwnnw yn lle hynny.

Mae’r ddau ffurf yn cario’r un math o ddatganiad: cysyllta â’r cyfeiriad hwn, ar y porth hwn. Mae dyfais sy’n ailysgrifennu penawdau IP a TCP yn unig yn gadael y datganiad yn llonydd, felly mae un pen yn dal i geisio cyrraedd cyfeiriad nad yw’n bodoli ond ar ochr arall tiwnel. Mae’r cysylltiad data yn stopio ar ôl i’r cysylltiad rheoli gael ei ddatgan yn iach eisoes.

Tri modd, tri llwyth

Mae’r tabl isod yn dangos pa ochr sy’n cael ei threfnu i alw, a beth all NAT sy’n ailysgrifennu penawdau yn unig ei wneud am hynny.

Darllenwch y golofn olaf fel y peth sy’n methu gyntaf. Yn y modd gweithredol y gweinydd sy’n galw i gyfeiriad preifat; yn y modd goddefol y cleient sydd; gyda FTPS y llwyth yw testun sifr a does gan y blwch canol lai fyth i weithio ag ef.

ModeValue in the control streamWho dials whomHeader-only NAT leaves
Active (PORT)client address and portserver dials the clienta server dialing an unreachable tunnel address
Passive (227)server address and portclient dials the servera client dialing an address it cannot route to
FTPSthe same values, inside TLSas aboveciphertext, so no rewrite happens at all

Rhowch y cynorthwyydd lle mae’r cyfieithu’n digwydd

Ar Linux y cynorthwyydd nf_conntrack_ftp sy’n ailysgrifennu’r llwyth. Mae’n gwylio’r cysylltiad rheoli, yn dysgu’r porth a drafodwyd, yn creu disgwyliad ar gyfer y ffrwd ddata, ac ar flwch NAT mae’n ailysgrifennu’r cyfeiriad a’r porth y tu mewn i’r llwyth. Dim ond ar y ddyfais sy’n cyfieithu cyfeiriad y cleient y mae’n helpu. Mae ei lwytho ar y cleient, neu ar lwybrydd sy’n anfon y ffrwd ymlaen yn unig, yn newid dim am y sesiwn.

Mae’r tri gorchymyn hyn yn dangos a yw’r modiwl yn bresennol, a yw’n gysylltiedig, ac a oes disgwyliad tra mae sesiwn ar agor:

modprobe nf_conntrack_ftp
lsmod | grep nf_conntrack_ftp
conntrack -L expect | grep ftp

Nid yw llwytho’r modiwl yr un peth ag ymlynu wrtho. Mae creiddiau o 4.7 ymlaen yn dod gyda net.netfilter.nf_conntrack_helper=0, felly mae’r cynorthwyydd yn aros am reol amlwg, er enghraifft iptables -t raw -A PREROUTING -p tcp --dport 21 -j CT --helper ftp. Os yw’r rhestr ddisgwyliadau’n aros yn wag tra ceisir trosglwyddiad, yr ymlyniad sydd i’w wirio, nid y modiwl.

Modd goddefol: dywedwch wrth y gweinydd beth i’w hysbysebu

Mae’r modd goddefol yn haws ei wneud yn benderfyniadol oherwydd gellir dweud wrth y gweinydd beth i’w roi yn ateb 227. Yn vsftpd hwnnw yw pasv_address, ynghyd â pasv_min_port a pasv_max_port; mae ProFTPD yn defnyddio MasqueradeAddress a PassivePorts. Gosodwch y rheini’n gyntaf, oherwydd mae cyfeiriad hysbysebwyd cywir yn dileu’r angen i ailysgrifennu dim ar yr ochr honno.

Yna gadewch i’r amrediad porthladdoedd hwnnw’n union fynd drwy’r porth, er enghraifft -A FORWARD -i tun0 -p tcp --dport 30000:30100 -j ACCEPT, fel bod y rheol yn cyd-fynd â’r hyn y mae’r gweinydd yn ei hysbysebu.

Rhaid i’r ddau osodiad gytuno. Mae gweinydd y dywedir wrtho i hysbysebu 30000-30100 tra mae’r porth yn caniatáu 40000-40100 yn methu yn y modd lleiaf defnyddiol: mae’r sgwrs reoli’n edrych yn iach ac mae pob cysylltiad data’n marw. Cymharwch y rhifau cyn dadfygio unrhyw beth arall.

Dau arwydd methiant, a’r hyn y mae FTPS yn ei ddileu

Mae hongian ar LIST yn cyfeirio at gysylltiad data cyntaf y sesiwn, lle mae’n rhaid i ailysgrifennu cyfeiriad a’r disgwyliad weithio ill dau. Mae hongian ar RETR ar ôl LIST sy’n gweithio yn cyfeirio at y trosglwyddiad ei hun, sef yr amrediad goddefol neu MTU y tiwnel. Nid yw’r ail arwydd hwnnw’n broblem llwyth, ac ni fydd gosodiadau’r cynorthwyydd yn ei drwsio.

Mae FTP dros TLS yn dileu’r llwyth y mae’r cynorthwyydd yn ei ddarllen. Ni all blwch canol ailysgrifennu gwerth PORT neu PASV na all ei ddadgryptio, felly’r dewisiadau sy’n weddill yw dirprwy sy’n terfynu TLS, gweinydd sy’n hysbysebu cyfeiriad cyraeddadwy o fewn amrediad cyfyngedig, neu brotocol trosglwyddo gwahanol.

Trefn fer o wiriadau

Gweithiwch allan o’r symptom. Cadarnhewch fod LIST yn methu tra mae PWD yn llwyddo, dal y cyfeiriad y tu mewn i lwyth PORT neu 227, a gofynnwch pa ddyfais sy’n cyfieithu’r cyfeiriad hwnnw. Cysylltwch y cynorthwyydd yno, gwyliwch y rhestr ddisgwyliadau yn ystod un trosglwyddiad, yna trwsiwch y modd goddefol ar y gweinydd a drychwch yr amrediad yn rheol y porth.

Cadwch fethiant y llwybr data ar wahân i fethiant y trosglwyddiad swmp, oherwydd maent yn eich anfon at osodiadau gwahanol.

Erthyglau cysylltiedig