Relái VPN yn stopio derbyn SSH: terfynau disgrifydd ffeil
Mae traffig y twnnel yn dal i lifo tra bod y relái socat y tu ôl iddo yn gwrthod sesiynau newydd. Dilynwch y llwybr, yna darllenwch y terfyn a etifeddwyd ar y PID byw.
Mae handshake WireGuard yn dal i gwblhau, mae’r peer yn dal i ddangos diwedd-bwynt diweddar, ac eto mae sesiwn SSH newydd drwy’r relái y tu ôl iddo yn hongian heb faner. Mae’r cyfuniad hwn yn pwyntio oddi wrth y twnnel tuag at y broses sy’n derbyn y soced. Mae relái fel socat yn eistedd yn llwybr y rhaglen gyda’i gyllideb ddisgrifydd ei hun, ei blant ei hun a’i derfynau etifeddol ei hun. Mae’r daith isod yn dechrau wrth y cleient ac yn stopio wrth y gydran gyntaf na all agor soced arall.
Dilynwch y llwybr cyn newid rhif
Dilynwch un cais sy’n methu yn lle rhesymu am y twnnel yn gyfan. Mae’r cleient yn ysgrifennu i’r twnnel, mae’r daemon VPN yn dadgryptio ac yn llwybro, ac mae’r relái yn derbyn ar yr ochr bellaf. Mae pob cam yn bwyta disgrifwyr, a’r un sy’n rhedeg allan fel arfer yw’r olaf.
Dechreuwch gyda chais y gallwch ei ailgynhyrchu a mesurwch ei amser. Os yw handshake TCP yn cwblhau ond nid oes baner rhaglen yn cyrraedd, mae’r relái wedi cymryd y soced ac yna wedi tagu mewn plentyn neu ar ei goes lanlif. Os nad yw’r handshake ei hun byth yn cwblhau, y rheswm yw llwybro, mur tan neu gyflwr y gwrandäwr, nid nenfwd disgrifwyr. Cofnodwch pa un o’r ddau ffurf a welsoch, oherwydd maent yn pwyntio at brosesau gwahanol.
Cyfrwch y camau sy’n dyblygu gwaith hefyd. Mae gwrandäwr sy’n fforchio yn rhoi pob soced a dderbynnir i blentyn sy’n cadw ei gopi ei hun, felly mae’r cyfanswm go iawn yn briodoledd o’r goeden gyfan, nid o’r rhiant yn unig.
Darllenwch y terfyn a etifeddodd y relái
Yr unig derfyn sy’n bwysig yw eiddo’r broses sy’n rhedeg, ac fe’i gosodwyd gan beth bynnag a lansiodd y broses honno. Mae teipio ulimit -n mewn plisgyn yn disgrifio’r plisgyn. Gofynnwch i reolwr y gwasanaeth beth a gymhwyswyd, yna cadarnhewch ar y PID.
systemctl show -p MainPID -p LimitNOFILE vpn-relay.service
cat /proc/$(systemctl show -p MainPID --value vpn-relay.service)/limits
Mae’r ffeil limits yn argraffu’r nenfydau meddal a chaled fel y mae’r broses yn eu gweld. Mae gwerth meddal isel o dan werth caled hael yn golygu bod y daemon yn cael codi ei nenfwd ei hun, ac mae rhai yn gwneud hynny wrth gychwyn; mae gwerthoedd meddal isel cyfartal yn golygu mai’r ffeil uned yw’r ffynhonnell.
Mae drop-in yn llwytho mewn trefn eiriadurol ac mae ffeiliau diweddarach yn ennill, felly systemctl cat vpn-relay.service yw’r olwg awdurdodol ar yr hyn sy’n gymwys. Golygu ffeil nad yw’r rheolwr byth yn ei darllen yw’r rheswm mwyaf cyffredin pam nad oes effaith gan rif wedi’i godi.
Gwahanwch gydamseriad sefydlog oddi wrth gyflwr a gedwir
Gall dau broses daro’r un nenfwd am resymau di-gysylltiad, ac mae’r meddyginiaethau’n wahanol. Mae galw sy’n olrhain sesiynau cyfochrog defnyddiol yn gwestiwn capasiti. Mae twf sy’n parhau ar ôl i’r gwaith ddod i ben yn ollwng neu’n set o sesiynau na chaeodd neb.
Mesurwch wrth segur, ar eich brig arferol, ac eto ychydig funudau ar ôl i’r llwyth stopio. Mae cyfrif cofnodion agored gyda ls /proc/PID/fd | wc -l yn erbyn y terfyn meddal yn dweud y bwlch wrthych, ac mae cyfrif un neu ddau o dan y nenfwd yn stop caled yn hytrach na llwybr araf.
Pan fo’r cyfrif yn gwrthod syrthio, edrychwch ar gyflyrau soced yn hytrach na chyfansymiau. Mae disgrifwyr yn eistedd yn CLOSE_WAIT yn golygu bod y peer wedi cau ac nad yw’ch ochr chi erioed wedi gwneud, sy’n ddiffyg cylch bywyd rhaglen nad yw terfyn mwy yn ei ohirio’n unig. Cyfyngwch y model plentyn hefyd: mae relái fforchio heb gap ar blant cyfochrog yn gwacáu disgrifwyr, slotiau proses a chof gyda’i gilydd.
Gwiriwch y gwerth newydd ar y broses fyw
Ar ôl golygu’r uned, ail-lwythwch y rheolwr ac ailgychwynnwch y gwasanaeth, gan nad yw ail-lwytho ar ei ben ei hun byth yn disodli terfynau a etifeddwyd eisoes gan broses sy’n rhedeg. Gwiriwch ar y broses sy’n gwasanaethu traffig mewn gwirionedd.
systemctl daemon-reload
systemctl restart vpn-relay.service
awk '/Max open files/ {print}' /proc/$(systemctl show -p MainPID --value vpn-relay.service)/limits
ss -tnp state established '( sport = :2222 )' | wc -l
Mae llinell awk yn dychwelyd y pâr newydd; os yw’n dal i ddangos yr hen un, nid y drop-in a olygwyd gennych yw’r un sy’n cael ei lwytho. Cyfrif ss yw’ch gwiriad llwyth, felly agorwch y nifer o sesiynau rydych yn eu disgwyl a gwyliwch ef yn dringo. Mae cyfrif sy’n dal i godi ar ôl i’r sesiynau hynny gau yn golygu nad y terfyn oedd yr holl broblem erioed.
Mae un rhybudd yn perthyn i unrhyw gynnydd mawr. Ni all rhaglenni sy’n pleidleisio gyda select() wylio disgrifwyr uwchlaw FD_SETSIZE, sef 1024 ar adeiladwaith nodweddiadol, felly gall nenfwd a godir y tu hwnt i hynny gynhyrchu methiannau sy’n edrych yn ddi-gysylltiad. Mae cyfeirlyfr gweithredu systemd yn cario’r un rhybudd ar gyfer y gwasanaethau y mae’n eu cychwyn.
Cadwch yr ailgychwyn draw oddi wrth argaeledd y twnnel
Mae ailgychwyn y relái yn gollwng ei sesiynau gweithredol, ac mae hynny’n ddigwyddiad ar wahân i’r VPN fynd i lawr. Trefnwch y newid fel bod y twnnel yn aros i fyny tra bo’r relái yn cylchu, a rhybuddiwch unrhyw un y mae ei sesiwn hir yn ei chroesi.
Adfer yw’r ffeil uned flaenorol ynghyd ag ailgychwyn arall, ac mae’r ffeil honno’n aros yn ei lle nes bod y gwerth newydd wedi goroesi diwrnod gwaith. Yna caewch y ddolen gyda’r cais a fethodd yn wreiddiol: un sesiwn SSH newydd drwy’r relái, un trosglwyddiad yn ddigon hir i fod o bwys, a chyfrif disgrifwyr sy’n dychwelyd i’w lefel segur.