Mae cleientiaid VPN yn cysylltu ond heb ryngrwyd: tri darn ar goll
Mae twnnel sy’n ateb pingiau yn dal i fod angen anfon ymlaen, cyfieithu a rheol anfon ymlaen. Darganfyddwch pa un o’r tri sydd ar goll cyn golygu’r cleient eto.
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_forwardMae’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 MASQUERADEGyda 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.10Mae’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 ACCEPTMae’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.10Mae’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.