Mae’r cleient yn cael cyfeiriad, mae’r gweinydd yn ateb pingiau, ac mae pob tudalen yn dal i amseru allan. Mae’r rhan fwyaf o bobl yn dechrau golygu proffil y cleient ar y pwynt hwn, sy’n wastraff ymdrech fel arfer: unwaith y bydd y twnnel i fyny, rhaid i’r gweinydd ymddwyn fel llwybrydd. Rhaid i dri amod fod yn wir ar unwaith cyn i becyn adael ac ateb ddod yn ôl, ac mae’r symptom yr un fath pa un bynnag sydd ar goll.

Pam nad oes gan dwnnel sy’n gweithio lwybr allan o hyd

Rhaid i’r cnewyllyn anfon pecynnau ymlaen rhwng rhyngwynebau, sydd i ffwrdd yn ddiofyn ar y rhan fwyaf o ddosbarthiadau Linux. Rhaid cyfieithu’r traffig i gyfeiriad y gall y byd allanol ateb arno, oni bai bod pob llwybrydd uwchraddol eisoes yn gwybod y llwybr yn ôl i is-rwyd y twnnel. Rhaid i lwybr anfon ymlaen y mur tân ganiatáu traffig y ddau gyfeiriad, gan gynnwys yr atebion.

Gellir trwsio pob un o’r rhain ar wahân, a dyna’r fagl. Mae troi anfon ymlaen ymlaen heb reol gyfieithu yn gadael pecynnau’n gadael gyda ffynhonnell breifat a heb lwybr dychwelyd. Mae ychwanegu cyfieithu heb reol anfon ymlaen yn gadael y cnewyllyn yn gollwng y pecyn un cam yn ddiweddarach.

Felly profwch y tair haen yn hytrach na’r cleient, a newidiwch un ar y tro fel bod y canlyniad yn golygu rhywbeth.

Mae anfon ymlaen yn swits cnewyllyn y mae’n rhaid i chi ei gadw’n barhaol

Gwiriwch y gwerth cyfredol cyn ei newid, yna ei osod a chadarnhau bod y newid wedi cymryd effaith.

sysctl net.ipv4.ip_forward
sysctl -w net.ipv4.ip_forward=1
sysctl net.ipv4.ip_forward

Mae’r gorchymyn cyntaf yn adrodd y gwerth cyfredol, yr ail yn ei osod ar amser rhedeg, a’r trydydd yn profi bod yr ysgrifennu wedi gweithio. Mae’r gwerth amser rhedeg yn diflannu ar yr ailgychwyn nesaf, a dyna pam y gall sesiwn sy’n gweithio dorri ar ôl cynnal a chadw heb unrhyw newid ffurfweddu.

Gwnewch ef yn barhaol mewn ffeil o dan /etc/sysctl.d/, yna cymhwyswch y ffeil honno yn hytrach nag ailgychwyn i ddarganfod. Ar FreeBSD y cyfateb yw net.inet.ip.forwarding, gyda gateway_enable=YES yn rc.conf ar gyfer parhad. Mae offeryn sy’n adrodd bod anfon ymlaen wedi’i analluogi yn esbonio dosbarth cyfan o adroddiadau „mae pecynnau’n cyrraedd ac nid oes unrhyw beth yn dod yn ôl”. Gwiriwch y gosodiad ar ôl pob uwchraddiad hefyd, oherwydd gall cnewyllyn ailadeiladu neu ddelwedd offeryn a ddisodlwyd ei ailosod heb ddweud wrth neb.

Dewiswch masquerade neu un cyfeiriad cyfieithu sefydlog

Gyda chyfeiriad allanol deinamig, masquerading yw’r ffurf gywir symlaf. Enwch is-rwyd y twnnel fel ffynhonnell a’r rhyngwyneb allanol fel allanfa.

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

Gyda chyfeiriad cyhoeddus statig, mae cyfieithu ffynhonnell i’r union gyfeiriad hwnnw’n fwy rhagweladwy ac yn haws i’w archwilio.

iptables -t nat -A POSTROUTING -s 10.9.0.0/24 -j SNAT --to-source 198.51.100.10

Mae’r ail ffurf yn cario magl cynnal a chadw: mae cyfeiriad a galedgodwyd sy’n newid yn ddiweddarach yn cadw’r twnnel yn gweithio tra bo mynediad rhyngrwyd yn stopio’n dawel. Naill ai defnyddiwch masquerade neu diweddarwch y rheol pryd bynnag y bydd y darparwr yn eich symud. Mae’r rhyngwyneb yn bwysig hefyd, oherwydd rhaid i lwybrydd sy’n rhannu ei dwnnel uwchraddol ei hun gyfieithu allan drwy’r twnnel hwnnw yn hytrach na thrwy’r WAN corfforol.

Y tabl hidlo yw’r drydedd giât

Gall anfon ymlaen a chyfieithu fod yn gywir ill dau tra bo’r pecyn yn marw yn y tabl hidlo o hyd. Mae ufw yn droseddwr mynych: mae ei bolisi anfon ymlaen yn dod fel DROP, a gall gweddill y gosodiad edrych yn hollol gywir tra bo’r un gosodiad hwnnw’n lladd y traffig. Mae ei godi’n benderfyniad diogelwch bwriadol yn hytrach na blwch ticio.

iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Mae’r rheol gyntaf yn caniatáu traffig newydd o’r twnnel tua’r tu allan, a’r ail yn caniatáu atebion yn ôl yn unig. Culhewch y ddwy i is-rwyd y twnnel a’r gyrchfan a fwriadwyd, oherwydd mae caniatâd gorchuddiol ar ryngwyneb y twnnel yn troi’r VPN yn bwynt allan agored i unrhyw un sy’n gallu dilysu.

Mae twnnel pontiedig angen ateb gwahanol. Mae’r cyfeiriad yn perthyn i’r bont, nid i’r porth corfforol, felly mae caethiwo’r rhyngwyneb yn tynnu’r cyfeiriad a oedd ganddo o’r blaen ac mae’r gwesteiwr yn edrych yn anghyraeddadwy nes bod y bont ei hun yn cael un, y gall dhclient br0 ei ddarparu. Mae’r methiant hwnnw’n edrych fel problem VPN ac mae’n broblem haen dau. Gwiriwch gyfeiriad y bont ei hun cyn i chi gyffwrdd â’r mur tân, oherwydd ni all newid hidlo drwsio gwesteiwr nad oes ganddo gyfeiriad i anfon ohono mwyach.

Ble i edrych pan nad yw tudalen byth yn llwytho

Pingiwch gyfeiriad twnnel y gweinydd i brofi bod y twnnel yn bodoli. Yna rhedwch traceroute o’r cleient i gyfeiriad cyhoeddus a darllenwch ble mae’n stopio: yn y gweinydd mae’r pecyn yn cyrraedd ond nid yw’n cael ei anfon ymlaen nac yn cael ei gyfieithu; y tu hwnt i’r gweinydd mae’r broblem yn uwchraddol ac allan o’ch dwylo.

ping -c 3 10.9.0.1
traceroute -n 198.51.100.10

Mae’r gorchymyn cyntaf yn profi bod y twnnel yn cario traffig i’r gweinydd ei hun, a’r ail yn dangos pa mor bell y mae pecyn yn cyrraedd tuag allan. Mae ôl yn gorffen ar gyfeiriad y twnnel yn cyfeirio at anfon ymlaen neu gyfieithu ar y gweinydd, tra bo ôl yn stopio un naid yn ddiweddarach yn cyfeirio at y darparwr neu lwybr dychwelyd y llwybrydd uwchraddol.

Ar y gweinydd, gwyliwch y rhyngwyneb allanol tra bo cleient yn llwytho tudalen. Mae traffig yn gadael gyda chyfeiriad ffynhonnell breifat yn golygu bod cyfieithu ar goll, ac nid oes ateb o gwbl yn golygu bod y llwybr anfon ymlaen neu’r llwybr dychwelyd uwchraddol yn ei ollwng.

Os oes rhaid i gleientiaid o bell gyrraedd gwesteiwyr ar LAN y gweinydd hefyd, cofiwch fod angen llwybr dychwelyd i is-rwyd y twnnel ar y LAN. Llwybro yw hyn yn hytrach na chyfieithu, a dyma’r cam a anghofir amlaf ar ôl i’r llwybr rhyngrwyd weithio o’r diwedd.

Erthyglau cysylltiedig