Pam na all nc -uz brofi bod gweinydd OpenVPN yn barod
Mae archwiliad UDP netcat yn adrodd llwyddiant pan nad oes dim yn gwrando, felly ni all brofi bod gweinydd OpenVPN yn barod. Gwiriwch y broses, y log, y gwrandäwr a chleient go iawn.
Mae rhedeg nc -uz yn erbyn gweinydd OpenVPN bron yn mesur dim, ac mae llawlyfr OpenBSD yn dweud hynny yn ei rybuddion: mae sganiau UDP yn y modd hwnnw yn adrodd llwyddiant p'un a oes rhywbeth yn gwrando ai peidio. Mae'r statws allanfa yn adlewyrchu'r anfon lleol, nid y cyflwr pell, felly mae goruchwyliwr sy'n ymddiried ynddo yn cadw gweinydd marw wedi'i farcio'n iach cyhyd ag y mae'r tabl prosesau'n edrych yn gredadwy. Mae disodli yn dechrau drwy benderfynu pa gwestiwn y dylai'r gwiriad ei ateb, oherwydd mae proses, gwrandäwr, dilysu a chyrhaeddiad y cymhwysiad yn bedwar arsylwad gwahanol. Mae archwiliad sy'n enwi un ohonynt yn ddefnyddiol; mae archwiliad sy'n awgrymu'r pedwar yn faich.
Beth all archwiliad UDP ei arsylwi a beth na all
nc -uz yn anfon datagram ac yn gadael, ac mae'r statws a ddychwelir yn disgrifio'r anfon lleol. Gall porth gaeedig ateb ag ICMP port unreachable, ond nid yw ymddygiad dogfennol y modd sgan hwn yn troi hynny'n fethiant, ac nid yw porth wedi'i hidlo yn rhoi unrhyw ateb o gwbl. Felly mae distawrwydd a llwyddiant yn golygu'r un peth i'r galwr.
Mae hynny'n gwneud yr archwiliad yn brawf o'r pentwr lleol, nid o'r gweinydd. Nid yw'n sefydlu bod y gwesteiwr yn gyrhaeddadwy, bod y porth wedi'i rwymo, bod proses OpenVPN yn rhedeg, na bod cleient yn gallu dilysu. Mae prawf cysylltiad TCP yn gryfach oherwydd bod yr ysgwyd llaw yn rhoi ateb pendant, ond dim ond pan fo'r defnyddiad mewn gwirionedd yn gwrando ar TCP. Mae newid yr archwiliad i TCP ar yr un rhif yn profi gwrandäwr nad yw efallai'n bodoli, ac yn erbyn gweinydd UDP yn unig bydd yn methu gwasanaeth iach.
Daw paru'r archwiliad â'r cludiant cyfluniedig cyn ymddiried yn y naill ganlyniad neu'r llall. Mae defnyddiad UDP angen signal gwahanol, nid protocol gwahanol.
Tri galwr, tri chwestiwn gwahanol
Mae parodrwydd yn dibynnu ar bwy sy'n gofyn. Mae angen i reolwr gwasanaeth sy'n ailgychwyn proses wedi chwalu wybod bod y fersiwn wedi cychwyn ac wedi rhwymo ei wrandäwr. Mae angen i gydbwyswr llwyth wybod y byddai cleient sy'n cyrraedd nawr yn cael ei dderbyn. Mae angen i system fonitro wybod bod y llwybr o rwydwaith go iawn yn dal i gludo sesiwn i adnodd a ganiateir.
Nid yw'r rhain yr un gwiriad, ac ni all un archwiliad orchuddio'r tri yn onest. Dewiswch y galwr yn gyntaf, yna'r dystiolaeth.
Adeiladwch yr archwiliad o'r fersiwn gyfredol
Mae OpenVPN yn ysgrifennu llinell gychwyn pan fydd fersiwn yn gorffen cychwyn, ac mae'r llinell honno'n dystiolaeth ddefnyddiol am gychwyn lleol. Darllenwch hi o'r cychwyn cyfredol yn hytrach nag o gynffon ffeil a atodwyd, oherwydd mae llwyddiant yr wythnos diwethaf yn darllen yn union fel llwyddiant o funud yn ôl. Gall gweinydd hefyd orffen cychwyn cyn i unrhyw gleient gysylltu erioed, felly nid yw'r llinell yn dweud dim am ddilysu.
Ar gyfer gwiriad cychwyn, parwch gyflwr y broses â thystiolaeth log gyfredol a gwrandäwr sy'n cyfateb i'r cludiant cyfluniedig. Dylai'r gwiriad fethu pan fo'r broses yn rhedeg ond heb orffen cychwyn, sy'n golygu bod yn rhaid i'r ymholiad log gael ei gyfyngu i'r cychwyn hwn a'r uned hon.
systemctl is-active openvpn@server
sudo journalctl -u openvpn@server -b --no-pager | grep "Initialization Sequence Completed"
ss -lunp | grep 1194
Tri allbwn, tri haeriad: mae'r uned yn weithredol, cynhyrchodd y cychwyn hwn y llinell gychwyn, ac mae rhywbeth yn dal y porth UDP. Nid yw'r un ohonynt yn dweud y gall cleient gysylltu. Cadwch nhw ar wahân ar y dudalen statws fel nad yw digwyddiad yn cwympo i un smotyn gwyrdd.
Torrwch ef yn fwriadol a gwyliwch yr archwiliad
Nid yw archwiliad yn ddibynadwy nes eich bod wedi'i weld yn methu. Stopiwch y gweinydd, rhedegwch yr archwiliad, a chadarnhewch y canlyniad rydych yn ei ddisgwyl. Yna cychwynnwch ef eto a chadarnhau bod yr archwiliad yn gwella heb unrhyw newid arall.
sudo systemctl stop openvpn@server
nc -uz 203.0.113.10 1194; echo "exit=$?"
ss -lunp | grep 1194
sudo systemctl start openvpn@server
ss -lunp | grep 1194
Darllenwch y bloc linell wrth linell. Mae'r gorchymyn netcat yn argraffu exit=0 tra nad oes dim wedi'i rwymo, a dyna'r broblem gyfan mewn un linell. Nid yw'r cyntaf ss yn argraffu dim, mae'r ailgychwyn yn llwyddo, ac mae'r ail ss yn dangos y gwrandäwr eto. Os yw eich archwiliad yn pasio yn erbyn y gweinydd stopiedig, mae'n mesur y pentwr lleol a dim arall.
Mae'r methiant cyferbyniol yn bwysig hefyd. Mae archwiliad sy'n methu yn erbyn gweinydd iach yn achosi ailgychwyniadau nad oedd eu hangen, ac mae dolen ailgychwyn yn fethiant ynddo'i hun. Profwch y ddau gyfeiriad cyn i chi gysylltu'r archwiliad ag unrhyw beth a all weithredu arno.
Beth ddylai'r llinell statws ei ddweud
Cofnodwch ba ffin y mae pob gwiriad yn ei chwmpasu: proses, gwrandäwr, dilysu neu gymhwysiad. Anaml y mae un gwiriad yn cwmpasu mwy nag un, ac mae tudalen statws sy'n eu cywasgu i “up” yn cuddio'r gwahaniaeth sy'n bwysig yn ystod digwyddiad. Ar gyfer y llwybr rhwydwaith, defnyddiwch gleient go iawn ag hunaniaeth bwrpasol, gadewch iddo gwblhau'r ysgwyd llaw ac un gweithrediad diniwed a ganiateir, yna datgysylltwch. Mae hynny'n arfer y sianel reoli, y polisi dilysu a'r gwrandäwr mewn un cam.
Cadwch yr hunaniaeth honno ar wahân i ddefnyddwyr go iawn a rhowch iddi'r isafswm caniatâd y mae'r gwiriad ei angen. Mae archwiliad parodrwydd â mynediad eang yn arwynebedd ymosod newydd a ychwanegwyd er hwylustod. Cylchdrwch ei gymwysterau fel unrhyw gyfrif arall, oherwydd mae archwiliad sy'n stopio dilysu yn edrych yn union fel gweinydd sydd wedi stopio derbyn cleientiaid.
Enwch y ffin yn nhestun y rhybudd, fel bod yr ymatebydd cyntaf yn gwybod a ddylai edrych ar yr uned, y soced, y dystysgrif neu'r llwybr. Bydd archwiliad na all ddweud beth a brofodd yn cael ei ymddiried am y rheswm anghywir, a dyna sut y goroesodd y gwiriad netcat yn y lle cyntaf.