Mae’r cleient yn dweud ei fod wedi cysylltu, mae cyfeiriad y twnnel yn ateb ping, ac nid oes unrhyw beth ar LAN y swyddfa yn ymateb. Rwy’n gweld hyn ar ôl bron bob diweddariad i’r cleient, a’r reddf gyntaf yw agor y wal dân, sy’n aml yn gam anghywir: mae’r twnnel yn iawn, a’r toriad yw un o dri naid y mae’n rhaid i’r pecyn eu croesi. Cerddwch y llwybr yn y drefn y mae’r pecyn yn ei gymryd, yn gyntaf llwybr y cleient, yna anfon y gweinydd, yna’r daith yn ôl, a byddwch yn dod o hyd i berchennog y diffyg mewn ychydig funudau.

Cam un: gwyliwch benderfyniad llwybro’r cleient

Cyn cyffwrdd â’r gweinydd, profwch fod y cleient yn anfon y pecyn i’r twnnel. Gofynnwch i’r cnewyllyn pa ryngwyneb y byddai’n ei ddefnyddio ar gyfer un gwesteiwr LAN penodol, yn lle darllen y tabl cyfan:

ip route get 192.168.50.10

Os yw’r ateb yn enwi eich addasydd ffisegol a phorth y swyddfa, ni all unrhyw newid ar ochr y gweinydd helpu. Dim ond pan fydd y gweinydd yn eu gwthio y mae OpenVPN yn dosbarthu llwybrau, felly chwiliwch am push "route 192.168.50.0 255.255.255.0" yng nghyfluniad y gweinydd, ac ailgysylltwch y cleient wedyn. Mae’r rhan fwyaf o gleientiaid yn cymhwyso llwybrau gwthiedig adeg cysylltu, nid pan fyddwch yn ail-lwytho’r proffil.

Ar Windows mae gan yr un cwestiwn orchymyn gwahanol. Mae Find-NetRoute -RemoteIPAddress 192.168.50.10 yn argraffu’r rhyngwyneb a’r naid nesaf y byddai’r stac yn ei dewis, ac mae route print -4 yn dangos a yw’r rhagddodiad gwthiedig yn bodoli o gwbl.

Cam dau: cadarnhewch y bydd y gweinydd yn anfon y pecyn ymlaen

Os yw llwybr y cleient yn gywir, mae’r pecyn yn cyrraedd y gweinydd ac mae’n rhaid i’r gweinydd gytuno i’w anfon ymlaen. Switsh y cnewyllyn yw’r giât gyntaf, ac mae’n rhaid i sysctl net.ipv4.ip_forward ddychwelyd 1. Mae ei osod gyda echo 1 > /proc/sys/net/ipv4/ip_forward yn gweithio tan yr ailgychwyn nesaf, a dyna’n union pam mae’r un gŵyn yn dychwelyd wythnosau’n ddiweddarach.

Ysgrifennwch ef yn rhywle sy’n goroesi ailgychwyn:

echo 'net.ipv4.ip_forward = 1' > /etc/sysctl.d/99-openvpn-forward.conf
sysctl --system

Yr ail giât yw’r tabl hidlo. Mae gwesteiwr sydd â Docker wedi’i osod yn aml yn cario polisi FORWARD o DROP, ac mae’r twnnel yn etifeddu’r penderfyniad hwnnw. Mae iptables -L FORWARD -v -n yn dangos y polisi a’r cyfrifwyr pecynnau ill dau; os yw’r polisi yn DROP, mae angen derbyniad penodol ar gyfer cyfeiriad y twnnel tua’r LAN ac un arall ar gyfer yr ateb.

Cam tri: dilynwch y pecyn ymlaen i’r LAN a chwiliwch am yr ateb

Gwyliwch ddwy ochr y gweinydd ar yr un pryd. Cipiwch ar y twnnel ac ar ryngwyneb y LAN, wedi’i hidlo i un cleient ac un gwesteiwr fel bod yr allbwn yn parhau’n ddarllenadwy:

tcpdump -ni tun0 host 192.168.50.10
tcpdump -ni eth0 host 192.168.50.10

Mae ceisiadau sy’n ymddangos ar tun0 ac eto ar eth0 gyda ffynhonnell 10.8.0.x, ac yna distawrwydd, yn golygu bod y pecyn wedi cyrraedd a bod yr ateb wedi mynd i rywle arall. Mae gwesteiwr y LAN yn ateb ei borth rhagosodedig, nid oes gan y porth hwnnw lwybr ar gyfer pwll y VPN, ac mae’r ateb yn marw ar lwybrydd y LAN. Nid yw pingio gwesteiwr y LAN o’r gweinydd yn profi dim am y llwybr hwn, oherwydd nid yw’r traffig hwnnw byth yn croesi’r twnnel.

Cam pedwar: dewiswch rhwng cyfieithu a llwybr dychwelyd

Mae dau atgyweiriad yn cau’r twll, ac mae gan y dewisiad ganlyniadau y tu hwnt i ba un a yw ping yn gweithio. Mae cyfieithu ffynhonnell yn gwneud y gweinydd yr anfonwr ymddangosiadol:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Cyfyngwch y rheol i’r pwll ac i ryngwyneb y LAN, yna ei gwneud yn barhaol, neu bydd ail-lwytho’r wal dân nesaf yn tynnu eich atgyweiriad yn dawel. Y gost yw hunaniaeth: mae pob cleient yn edrych fel y gweinydd VPN yng nghofnodion y LAN ac yn y rheolau mynediad, a per-client policy becomes guesswork.

Mae llwybr statig ar gyfer 10.8.0.0/24 ar lwybrydd y LAN, yn pwyntio at y gweinydd VPN, yn cadw cyfeiriadau cleientiaid yn weladwy ac yn ateb tymor hir gwell pan fo’r llwybrydd hwnnw yn un i chi. Mae llawer o safleoedd yn rhedeg y ddau am gyfnod, NAT ar gyfer yr atgyweiriad ar unwaith a’r llwybr unwaith y bydd polisi’r wal dân wedi’i ysgrifennu. Os yw’r gweinydd yn bartner safle-i-safle yn hytrach na phwll, mae angen iroute ar ochr y gweinydd hefyd ar gyfer y isrwydwaith anghysbell, fel arall mae llwybr y partner yn bodoli ond ni chysylltir traffig cleientiaid ag ef byth.

Cam pump: gwiriwch o’r cleient a chofnodwch beth a newidiodd

Caewch y ddolen o’r cleient, nid o’r gweinydd. Cysylltwch â gwasanaeth go iawn ar westeiwr y LAN, yna cadarnhewch fod cyfrifwyr y cyfieithu wedi symud gyda iptables -t nat -L POSTROUTING -v -n, oherwydd rheol heb becynnau yw rheol nad yw erioed wedi cyfateb. Mae conntrack -L -s 10.8.0.5 yn dangos y llif a’i gyflwr pan fydd angen prawf arnoch fod y cyfeiriad dychwelyd yn cael ei olrhain.

Gadewch nodyn yng nghyfluniad y gweinydd: pa isrwydwaith, pa ryngwyneb, pa reol, ac a yw llwybrydd y LAN yn cario llwybr yn ôl. Y tro nesaf y bydd diweddariad cleient yn clirio llwybr gwthiedig, mae’r nodyn hwnnw’n troi sesiwn diffodd tân yn atgyweiriad un llinell.

Erthyglau cysylltiedig