Mae tudalen yn llwytho, mae galwad API fach yn dychwelyd, ac yna mae llwytho ffeil i fyny yn hongian nes bod y cleient yn rhoi’r gorau iddi. Nid oes unrhyw beth yn log y gweinydd yn egluro hyn, oherwydd gollyngwyd y pecynnau yng nghanol y llwybr heb anfon ateb defnyddiol yn ôl. Mae’r patrwm hwnnw’n dwll du MTU: cyswllt yn gulach nag y mae’r anfonwr yn ei dybio, ynghyd â gwrthodiad tawel i ddweud hynny. Mae’r maint sy’n methu yn ailadroddus, a dyna sy’n ei wneud yn ddiagnosadwy.

Beth sy’n gwneud y twll yn ddu

Mae gan bob cyswllt uned drosglwyddo fwyaf, a rhaid naill ai darnio pecyn sy’n fwy na therfyn y naid nesaf, neu ei wrthod gyda neges ICMP sy’n dweud hynny. Mae darganfod MTU y llwybr yn dibynnu ar i’r neges honno gyrraedd a chael ei pharchu. Mae hidlo neu anwybyddu yn gadael yr anfonwr i ailadrodd pecyn na all fyth ffitio.

Mae amgáu’n gwneud hyn yn gyffredin o amgylch VPN, oherwydd mae twnnel yn ychwanegu pennawd allanol at becyn a oedd eisoes wedi’i faintio ar gyfer y cyswllt ffisegol. Mae’r pecyn mewnol yn gyfreithlon ar 1500 beit ac nid yw’r un amgaeedig, felly mae’n marw ar y ffin tra bod pecynnau bach yn hwylio drwodd. Nid yw ysgwyd llaw cyflawn a thudalen fewngofnodi sy’n gweithio yn profi dim ond bod pecynnau bach yn gweithio. Y pecyn mwyaf y mae’r rhaglen yn ceisio’i anfon yw’r un sy’n bwysig.

Chwiliwch am y maint lle mae’n torri

Chwiliwch yn ddeuaidd am faint y llwyth gyda phrawf peidio â darnio, o westeiwr ar un ochr i’r twnnel i westeiwr ar yr ochr arall. Y llwyth mwyaf sy’n llwyddo yw eich MTU llwybr defnyddiadwy heb y gorbenion pennawd.

ping -M do -s 1400 -c 2 192.0.2.20
ping -M do -s 1200 -c 2 192.0.2.20
ping -f -l 1372 192.0.2.20

Mae llwyth o 1472 beit yn llwyddo ar lwybr Ethernet glân o 1500 beit unwaith ychwanegir y 28 beit o benawdau IPv4 ac ICMP. Pan fo’r un prawf yn llwyddo dim ond gyda llwyth llai unwaith y bydd y twnnel i fyny, y gwahaniaeth yw gorbenion yr amgáu, a ffin y twnnel yw’r lle y dylai’r neges wrthod fod wedi’i chynhyrchu. Cofnodwch y ddau rif, cyn ac ar ôl cysylltu, oherwydd y pâr hwnnw yw’r prawf. Ailadroddwch y prawf ar gyfer IPv6 pan fydd’r rhaglen yn ei ddefnyddio, gan fod y pennawd yn fwy a’r trothwy methiant yn symud.

Darllenwch y dystiolaeth cyn beio’r twnnel

Mae gwallau rhaglenni pen draw, tagfeydd a cholled cyffredin hefyd yn stondio llwythi i fyny, felly nid yw un trosglwyddiad aflwyddiannus yn adnabod twll du. Yr hyn sy’n eu gwahanu yw’r berthynas maint: llwyddiant ailadroddus ar 1200 beit a stondiad ailadroddus ar 1400 beit, yn yr un cyfeiriad, trwy’r un pwynt terfynol.

Mae cipolwg ar y ddau ben yn dangos y pecynnau mawr yn gadael ac yn peidio â chyrraedd, heb unrhyw wrthodiad rhyngddynt. Dyma’r adeg i edrych ar y ddyfais ffin yn lle’r gweinydd, sy’n ateb pob cais y mae’n ei gael mewn gwirionedd. Mae tagfeydd hefyd yn stondio, ond mae’n stondio gwahanol feintiau ar wahanol adegau, sy’n arwydd gwahanol.

Gwiriwch yr atgyweiriad ar y ddau drafnidiaeth

Yr atgyweiriad a gefnogir yw gadael i’r ffin adrodd y terfyn go iawn, neu glampio maint mwyaf segment TCP yno fel na cheisir unrhyw segment rhy fawr. Mae gostwng pob MTU ar y rhwydwaith, neu analluogi’r mur tân, yn cuddio’r symptom ac yn gadael cyfluniad na all neb resymu amdano’n ddiweddarach.

ip link show dev tun0
sudo nft list ruleset | grep -i -E 'mtu|mss'
sysctl net.ipv4.tcp_mtu_probing
ping -M do -s 1400 -c 2 192.0.2.20

Gwiriwch gyda’r un prawf maint, yna gyda’r rhaglen a fethodd, a gwiriwch ail brotocol, oherwydd nid yw rhaglenni UDP byth yn cael cywiriad maint segment TCP. Cadwch y gwerthoedd gwreiddiol yn y tocyn, gan fod atgyweiriad na ellir ei wrthdroi yn ail broblem sy’n aros i ddigwydd. Os yw’r prawf maint yn llwyddo ac mae’r llwyth i fyny yn dal i stondio, nid y twll du oedd yr achos, a dylai’r ymchwiliad barhau yn hytrach na lledaenu’r newid.

Erthyglau cysylltiedig