OpenVPN y tu ôl i stunnel: anfonwch y lapadur, nid port 1194
Dau wrandawr, tri phorth. Edrychwch ble mae'r anfon yn glanio, ble mae'r lapadur yn rhwymo, ble mae'n cysylltu, beth a heidiodd prawf lleol, a'r ddwy hunaniaeth.
Rhowch lapadur TLS o flaen OpenVPN ac mae'r defnyddiad yn ennill ail wrandawr, na ddylai ond un ohonynt wynebu'r rhyngrwyd erioed. Pan fydd y twnnel yn gweithio o'r un peiriant ac yn methu o'r tu allan, mae'r anfon fel arfer wedi'i anelu at y naill o'r ddau sy'n anghywir. Yr hyn sy'n rhaid cyd-fynd yw cadwyn: mae'r rheol gyhoeddus yn cyrraedd y lapadur, ac mae cysylltiad cefn y lapadur ei hun yn cyrraedd y soced VPN go iawn. Mae pedwar naid yn cario'r gadwyn honno, ac mae unrhyw un ohonynt yn gallu diweddu'r ymchwiliad yn gynnar.
Dau soced, dau berchennog, un ohonynt yn gyhoeddus
Mae'r lapadur yn terfynu TLS ar gyfer y cysylltiad allanol ac yn trosglwyddo'r ffrwd beit wedi'i diargryptio i wrandawr OpenVPN TCP syml. Mae'r rhain yn socedi ar wahân gyda ffeiliau ffurfweddu ar wahân, felly mae golygu un yn gadael y llall heb ei gyffwrdd ac yn dal i ymddangos yn iach. Mae hefyd yn golygu y gall y ddau wyro oddi wrth ei gilydd pryd bynnag y newidir un heb y llall.
Mae gweithio o'r peiriant ei hun felly yn profi ychydig iawn am y llwybr cyhoeddus. Mae cysylltiad uniongyrchol â'r port brodorol yn heidio'r lapadur, mae cysylltiad â'r lapadur ar ei gyfeiriad LAN yn heidio'r cyfieithiad, a dim ond y drefn gyflawn ar ochr y cleient sy'n ymarfer yr hyn y mae defnyddiwr o'r tu allan yn ei wneud. Mae angen darllen enwau'n ofalus hefyd, oherwydd mae localhost yn golygu'r gwesteiwr sy'n rhedeg y gydran benodol honno, ac nid y gwesteiwr rydych chi'n digwydd teipio arno. Cadwch y gwahaniaeth hwnnw yn eich nodiadau, oherwydd mae prawf a gofnodwyd heb y naid a orchuddiodd yn gwahodd cymharu dau beth gwahanol.
Ble mae'r anfon yn glanio mewn gwirionedd
Mae'n haws dal y gadwyn fel pedwar naid na fel tri rhif port, oherwydd gall yr un rhif olygu gwahanol bethau ar bob pen. Darllenwch y tabl res ar ôl res: mae pob rhes yn un soced sy'n rhaid iddo dderbyn cysylltiad ac yna agor y nesaf. Pan fydd rhes wedi'i hanelu at y cymar anghywir, y symptom yn y golofn olaf yw'r hyn y mae'r defnyddiwr yn ei riportio.
| Hop | Listens on | Must reach | Symptom when it points elsewhere |
|---|---|---|---|
| Client machine | A local plaintext port | The wrapper's public TLS address | Plain text offered to a TLS endpoint |
| Router forward | Public TCP 443 | The wrapper host on its translated port | Wrapper records no connection at all |
| Wrapper, server mode | Its accepted port, 8443 here | The native VPN socket on loopback | Handshake completes, then silence |
| Native VPN listener | Loopback TCP port | Its peer, over TCP only | A UDP socket behind a byte-stream relay |
Mae rheol sy'n targedu'r port VPN brodorol yn lle'r lapadur yn heidio terfynu TLS yn gyfan gwbl, sef y fersiwn fwyaf cyffredin o'r camgymeriad hwn: mae'r cleient yn agor ysgydwad llaw gyda gwrandawr sy'n disgwyl fframio OpenVPN, felly gall y cysylltiad agor ac yna stopio. Cadarnhewch y port a gyfieithwyd yn erbyn ffeil ffurfweddu'r lapadur yn hytrach nag yn erbyn cof, oherwydd efallai bod y person nesaf i olygu'r ffeil honno wedi dewis rhif gwahanol. Mae'r ddau orchymyn isod yn dangos dwy ochr y cwestiwn hwnnw ar unwaith.
grep -nE '^[[:space:]]*(accept|connect)' /etc/stunnel/stunnel.conf
ss -lntp | grep -E ':443|:8443|:1194'
Y cyfeiriad rhwymo sy'n eich gwrthod
Mae llinell accept wedi'i rhwymo i 127.0.0.1 yn ateb y gwesteiwr ei hun yn unig, felly ni all anfon sy'n cyrraedd y cyfeiriad LAN gysylltu ac mae'r cleient yn gweld gwrthodiad sy'n swnio fel problem hidlydd pecynnau. Edrychwch ar y soced cyn cyffwrdd â'r mur tân, oherwydd y soced yw'r ateb rhatach. Naill ai rhwymwch y lapadur i'r rhyngwyneb y mae'r anfon yn targedu, neu cadwch ef ar loopback a gwnewch i'r anfon gyrraedd loopback trwy rywbeth sy'n gweithio go iawn. Dau ddyluniad yw'r rhain, ac mae angen ei reol ei hun ar bob un.
Cymysgu'r ddau yw'r ffordd y mae lapadur gweithredol yn dod yn anghyrraeddadwy o'r tu allan tra bod pob ffeil yn edrych yn gywir. Mae'r prawf isod yn un gorchymyn, ac mae'n ateb cwestiwn na all adolygiad o reolau'r mur tân ei ateb. Os yw'r allbwn yn dangos cyfeiriad loopback tra bod yr anfon yn targedu'r cyfeiriad LAN, mae'r atgyweiriad yn perthyn i'r llinell accept ac nid i'r hidlydd pecynnau.
ss -lntp '( sport = :8443 )'
Beth wnaeth y prawf lleol ei brofi mewn gwirionedd
Nid yw llwyddiant sydd wedi'i gofnodi heb y naid a orchuddiodd yn dystiolaeth am y naidau eraill. Nodwch pa gyfeiriad a ddefnyddiodd y prawf a pha broses a atebodd. Yna ailadroddwch o'r tu allan i'r rhwydwaith yn hytrach nag o ffôn ar yr un Wi-Fi, oherwydd mae ymddygiad penbwl yn amrywio rhwng llwybryddion a gall cysylltiad na adawodd y LAN erioed fodloni cleient heb i'r anfon fod yn rhan o gwbl. Dim ond yr ail ymgais honno sy'n ymarfer y llwybr y mae dieithryn yn ei gymryd.
Pan fydd yr ymgais yn methu, dilynwch un cysylltiad ar draws y ddau log: llinellau derbyn a chysylltu'r lapadur, yna log sesiwn y daemon VPN ei hun. Y ffin gyntaf nad yw'n cofnodi dim yw lle mae'r newid nesaf yn perthyn. Unwaith y bydd OpenVPN yn cymharu opsiynau cymar, bernwch y negeseuon hynny yn ôl rheolau'r gweithrediad hwnnw. Nid yw rhybudd anghysondeb link-mtu yn angheuol yn awtomatig, nid yw pinio link-mtu i 1500 yn profi bod darnio wedi stopio, ac mae trafodaeth seiffr yn perthyn i ffurfweddiad mewnol OpenVPN yn hytrach nag i anfon y llwybrydd.
nc -vz 127.0.0.1 1194
journalctl -u stunnel -n 50 --no-pager
Mae'r profion hynny'n cwmpasu soced y cefn a log y lapadur, sy'n gwahanu cefn a wrthodwyd oddi wrth ysgydwad llaw a wrthodwyd. Rhedewch nhw tra bod un ymgais ar y gweill yn hytrach nag wedyn. Stampiau amser o un ymgais sy'n gwneud y gymhariaeth yn ddibynadwy.
Dwy hunaniaeth, dau drefn fethiant
Mae'r dystysgrif allanol yn perthyn i'r lapadur ac mae'r hunaniaeth fewnol yn perthyn i OpenVPN, a gallant ddod o awdurdodau gwahanol. Mae analluogi'r naill wiriad neu'r llall i wneud llwybr yn edrych yn iach yn cyfnewid amddiffyniad go iawn am ganlyniad cosmetig. Cadwch y ddau wiriad a dadfygwch nhw yn eu trefn, oherwydd mae dilyniant y negeseuon yn enwi'r haen: mae problem tystysgrif y lapadur yn ymddangos cyn i unrhyw opsiwn VPN gael ei drafod, tra bod methiant hunaniaeth fewnol yn ymddangos dim ond unwaith y bydd y ffrwd wedi'i sefydlu.
Mae llawlyfr stunnel yn diffinio accept, connect a modd cleient yn fanwl, ac mae'r adrannau hynny'n ateb y cwestiwn soced yn gyflymach na dyfalu. Pan na allwch chi o hyd ddweud pa haen a atebodd, darllenwch y dystysgrif y mae'r port cyhoeddus yn ei chyflwyno gyda'r gorchymyn isod. Mae tystysgrif lapadur yn yr allbwn yn golygu bod yr anfon wedi cyrraedd y lapadur, ac mae distawrwydd neu wall protocol yn golygu nad oedd. Mae'r un gwahaniaeth hwnnw'n arbed mwy o amser nag unrhyw wiriad arall yma.
openssl s_client -connect vpn.example:443 -servername vpn.example </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer