Wedi cysylltu â OpenVPN ond dim yn llwytho: taith o amgylch y cleient
Mae'r twnnel i fyny ac mae'r porwr yn dal i droelli. Gweithiwch allan o'r cleient: dau gipiad, un switsh yn y cnewyllyn, y rhyngwyneb allanfa go iawn, yna DNS.
Mae ffenestr y cleient yn dweud Connected, mae cyfeiriad y twnnel yno, ac mae'r porwr yn dal i droelli. Mae'r cyfuniad hwnnw'n normal, oherwydd dim ond bod y twnnel wedi'i adeiladu mae handshake llwyddiannus yn ei brofi; nid yw'n dweud dim am ba un a fydd y gweinydd yn anfon eich pecynnau ymlaen, yn ailysgrifennu eu ffynhonnell, neu'n ateb eich ymholiadau DNS. Y camgymeriad mae'r rhan fwyaf o bobl yn ei wneud yw agor cyfluniad y gweinydd yn gyntaf. Gweithiwch allan o'r cleient yn lle hynny, oherwydd mae pob cam isod yn dweud wrthych a yw'r nesaf hyd yn oed yn werth ei wirio.
Dechreuwch ar y cleient a gweithio allan
Rhedwch dair prawf yn y drefn hon ac ysgrifennwch ble mae'r gyntaf yn methu. Pingiwch gyfeiriad twnnel y gweinydd, sy'n profi bod y twnnel ei hun yn cario traffig. Pingiwch gyfeiriad cyhoeddus yn ôl rhif, sy'n profi anfon ymlaen a chyfieithu heb gynnwys datrys enwau. Yna ceisiwch ddatrys enw gwesteiwr, sef yr unig brawf sy'n defnyddio DNS. Mae pob canlyniad yn tynnu haen gyfan o amheuaeth.
Peidiwch â neidio i'r trydydd prawf oherwydd bod y porwr yn teimlo'n gyflymach. Mae llwytho tudalen wedi methu yn cwmpasu'r tair haen ar unwaith, a dyna sut mae pobl yn dechrau ac yna'n ailadeiladu twnnel sy'n gweithio. Nid yw tudalen sy'n methu yn dweud wrthych pa un o'r tri a dorodd.
Mae dau gipiad yn dangos ble mae'r pecynnau'n stopio
Gyda phing i gyfeiriad cyhoeddus yn rhedeg o'r cleient, cymerwch un cipiad ar ryngwyneb y twnnel ac un ar y cyswllt uchelfrynt sydd i fod i gyrraedd y rhyngrwyd. Rhedwch y ddau ar yr un pryd fel bod y stampiau amser yn cyd-fynd.
sudo tcpdump -ni tun0 -c 20 icmp
sudo tcpdump -ni enp1s0 -c 20 icmp
Os yw'r ceisiadau'n ymddangos ar y twnnel ac byth ar y cyswllt uchelfrynt, mae'r gweinydd wedi'u gollwng rhwng y twnnel a'r wifren, a'r achos yw anfon ymlaen neu bolisi wal dân yr anfon ymlaen, nid NAT. Os ydyn nhw'n ymddangos ar y ddau, mae'r gweinydd wedi gwneud ei ran ac mae'r ateb ar goll ymhellach allan, sy'n awgrymu cyfieithu, hidlydd uwchfrynt neu gyfyngiad gan y darparwr.
Cymerwch enw'r cyswllt uchelfrynt o'r tabl llwybro, nid o diwtorial. Anaml y mae delweddau cwmwl ac addaswyr wedi'u hailenwi yn cyd-fynd â'r rhyngwyneb enghreifftiol mewn canllaw, ac mae cipiad ar y ddyfais anghywir yn edrych yn union fel gweinydd nad yw'n anfon ymlaen:
ip -4 route get 9.9.9.9
Maes dev yn yr allbwn hwnnw yw'r enw y bydd y rheol NAT ei angen yn nes ymlaen, felly cadwch ef.
Mae anfon ymlaen yn switsh cnewyllyn ac yn bolisi wal dân
Rhaid i'r cnewyllyn gytuno i anfon ymlaen o gwbl. Darllenwch y gwerth presennol, yna gwnewch y gosodiad yn barhaol yn lle ei ysgrifennu i'r cnewyllyn sy'n rhedeg yn unig:
sysctl net.ipv4.ip_forward
printf 'net.ipv4.ip_forward=1\n' > /etc/sysctl.d/70-vpn-forward.conf
sysctl --system
Dim ond hanner y gwaith yw anfon ymlaen. Ar westeiwr sy'n defnyddio UFW, gosodir y polisi anfon ymlaen yn /etc/default/ufw a rhaid iddo fod yn ACCEPT cyn i ail-lwytho ddod i rym. Mae gollwng diofyn ar y llwybr anfon ymlaen yn gadael yr handshake yn berffaith iach tra'n taflu bob pecyn sy'n ceisio gadael drwy'r twnnel yn dawel, sef yn union y symptom y gwnaethoch ddechrau ag ef.
Mae gwesteiwyr sy'n rheoli nftables yn uniongyrchol yn cael yr un cwestiwn mewn cystrawen wahanol. Edrychwch ar y cyfrifwyr ar y gadwyn anfon ymlaen tra bo prawf cleient yn rhedeg, oherwydd mae cadwyn ymgynghorir a chadwyn sy'n gollwng yn edrych yn unfath mewn ffeil ffurfweddu.
Enwch y rhyngwyneb allanfa go iawn yn y rheol NAT
Mae cyfieithu ffynhonnell yn perthyn i'r rhyngwyneb sy'n gadael y gwesteiwr mewn gwirionedd, gyda'r pwll y mae'r gweinydd yn ei ddosbarthu. Rhaid i ddwy hanner y rheol honno ddisgrifio realiti, ac nid yw'r naill na'r llall yn ddewisol.
iptables -t nat -A POSTROUTING -s 10.44.0.0/24 -o enp1s0 -j MASQUERADE
Y methiant clasurol yw rheol a gopïwyd o ganllaw sy'n dweud -o eth0 ar beiriant y mae ei addasydd yn cael ei alw'n rhywbeth arall. Mae'r rheol yn gosod heb rybudd, yn cyfateb i ddim, ac mae'r cleient yn dal heb ryngrwyd. Y pwll yw hanner arall yr un camgymeriad: os yw'r gweinydd yn dosbarthu 10.44.0.0/24 ac mae'r rheol yn cwmpasu 10.8.0.0/24, ni fydd dim yn cyfateb byth.
Gwyliwch y cyfrifwyr yn hytrach na choelio testun y rheol. Mae'r rhestr yn adrodd pecynnau fesul rheol, ac mae rheol nad yw byth yn cyfateb yn aros ar sero waeth pa mor gywir y mae'n edrych. Rhowch funud o draffig cleient go iawn iddi cyn darllen unrhyw beth i mewn i'r rhif hwnnw:
iptables -t nat -L POSTROUTING -v -n
Mae cyfrif pecynnau sero ar ôl prawf cleient go iawn yn golygu bod y cyfatebiaeth yn anghywir, nid bod y twnnel wedi torri. Unwaith y bydd yn cyfateb, arbedwch y set rheolau fel ei bod yn goroesi ailgychwyn; mae atgyweiriad sy'n byw yn hanes eich cragen yn unig yn diflannu ar yr ailgychwyn cyntaf.
Os yw'r gweinydd hefyd yn enghraifft NAT cwmwl, mae gan y platfform lais hefyd. Mae enghraifft sy'n cyfieithu cyfeiriadau fel arfer angen ei gwiriad ffynhonnell a chyrchfan wedi'i analluogi lle mae'r darparwr yn cynnig y gosodiad hwnnw, a rhaid i'r porth VPN ei hun fod yn gyrraeddadwy o'r tu allan.
DNS yw'r ail fethiant y tu ôl i'r gyntaf
Mae ping yn ôl cyfeiriad yn gweithio tra bo enwau'n methu yn broblem datryswr, ac mae ganddi ei hachos ei hun. Mae cleient sy'n cadw ei ddatryswr lleol yn anfon yr ymholiadau hynny i mewn i dwnnel llawn ac yn aros am ateb na ddaw byth, oherwydd mae'r datryswr lleol nawr ar yr ochr anghywir i'r llwybr.
Gwthiwch ddatryswr o'r gweinydd fel bod y cleient yn dysgu ble i ofyn. Mae dau gofnod yn rhoi cefnlen i'r cleient os yw'r cyntaf yn anghyrraeddadwy, a dylai'r ddau fod yn ddatryswyr y mae'r twnnel yn eu caniatáu mewn gwirionedd.
push "dhcp-option DNS 9.9.9.9"
push "dhcp-option DNS 149.112.112.112"
Gall cleientiaid Windows wedyn ddisgyn yn ôl i'r datryswr lleol beth bynnag, sef yr hyn y mae block-outside-dns yn bodoli i'w atal, ar gost colli enwau nad yw ond y rhwydwaith lleol yn gallu eu datrys. Mae cleientiaid Linux sy'n defnyddio systemd-resolved yn aml yn anwybyddu datryswr a wthiwyd oni bai bod sgript yn ei osod, felly gwiriwch resolvectl status ar gyfer dyfais y twnnel cyn dod i'r casgliad bod y gwthiad wedi'i anwybyddu.
Gorffennwch y daith fel mae defnyddiwr yn ei phrofi. Llwythwch dudalen go iawn o'r cleient, cadarnhewch y cyfeiriad y mae'n gadael ohono, ailgychwynnwch y gweinydd, ailgysylltwch, ac ailadroddwch y tri phrawf. Yr ail bas hwnnw yw'r unig un sy'n profi bod y rheolau wedi'u cadw, y polisi wal dân a'r datryswr a wthiwyd i gyd wedi goroesi gyda'i gilydd.