Tliet hosts Linux, disinn wieħed: hub OpenVPN aċċessibbli pubblikament, laptop tal-konsumatur u magna tal-ħruġ wara router tad-dar ordinarju li ma jibgħat xejn 'il ġewwa. Il-ħruġ iċempel lill-hub hu stess. Imbagħad it-traffiku tal-internet tal-konsumatur jidħol fit-tunnel fuq il-laptop u joħroġ mill-uplink tiegħu stess tal-ħruġ. Kull ħaġa ta' stagħġib f'dan it-tqassim tiġi minn dettall wieħed: il-ħruġ beda l-konnessjoni, għalhekk il-passaġġ 'il ġewwa diġà jeżisti u m'hemmx bżonn ta' port forwarding biex tinħoloq.

Dan li ġej isegwi l-passaġġ tal-pakkett u mhux l-ordni tal-konfigurazzjoni, għax il-konfigurazzjoni għandha sens biss meta tkun taf liema komponent għandu liema deċiżjoni. Kull saff għandu eżattament deċiżjoni waħda, u l-iżbalji jinġemgħu fejn żewġ saffi jitqiesu bħala wieħed.

Żewġ sessjonijiet tat-trasport, passaġġ intern wieħed

Kull host iżomm il-konnessjoni ta' barra tiegħu mal-hub, u ħadd minn dawn il-konnessjonijiet ma jaf bl-ieħor. It-traffiku tal-konsumatur lejn l-internet huwa fluss intern separat li jiġi ġġorr ġewwa t-tunnel tal-konsumatur u mbagħad jerġa' joħroġ mit-tunnel tal-ħruġ. Dan il-fluss intern huwa dak li l-hub irid jiġġudika u huwa dak li l-ħruġ irid jibgħat 'il quddiem.

outer: consumer --TLS--> hub
outer: exit     --TLS--> hub
inner: consumer --tun--> hub --internal--> exit --tun--> uplink

Billi ż-żewġ konnessjonijiet ta' barra joħorġu mill-ġenb tal-klijent, ir-router tal-ħruġ qatt ma jara SYN tad-dħul u qatt ma jkollu bżonn regola NAT tad-destinazzjoni. Irid biss iżomm it-trasport stabbilit ħaj, li diġà jagħmel għal kull konnessjoni fit-tul. Xejn fuq l-internet pubbliku m'għandu bżonn jasal l-ewwel għand il-ħruġ, u għalhekk indirizz dinamiku fuq dak l-uplink mhuwiex problema. Ir-router xorta jrid jippermetti s-sessjoni tal-ħruġ, imma dik hija l-istess permess li diġà juża browser.

X'jinstalla iroute tassew ġewwa s-server

Il-hub huwa l-uniku apparat li jiddeċiedi liema pari għandu liema destinazzjoni, u jieħu dik id-deċiżjoni fit-tabella tal-irrotar tal-ispazju tal-utent tiegħu, mhux f'dik tal-kernel. Dħul client-config-dir għall-ħruġ bl-isem exit-node jista' jitlob il-prefiss awtomatiku hemmhekk:

# /etc/openvpn/server/ccd/exit-node
iroute 0.0.0.0 0.0.0.0

Dik il-linja tgħid lill-proċess tas-server "pakketti interni b'kwalunkwe destinazzjoni jappartjenu lil dan il-klijent". Ma żżidx rotta awtomatika mas-sistema operattiva tal-hub u ma tagħmilx il-hub gateway tal-internet. Referenza OpenVPN 2.6 iżomm l-irrotar intern speċifiku għall-klijent u l-irrotar tal-kernel bħala mekkaniżmi separati, u dan is-separazzjoni hija r-raġuni għaliex id-disinn jaħdem mingħajr ma jmiss ir-rotta awtomatika tal-hub.

Il-konsumatur għandu bżonn l-istruzzjoni mera, mogħtija bħala push, sabiex it-traffiku tiegħu jidħol fit-tunnel minflok ma joħroġ mill-gateway lokali tiegħu. Bit-topoloġija tas-subnet, il-pool hija rotta konnessa fuq l-apparat tun tal-ħruġ, għalhekk id-direzzjoni lura m'għandhiex bżonn push addizzjonali; dak li l-ħruġ m'għandux jirċievi hija r-ridirezzjoni hawn taħt, li tibgħat it-traffiku tal-uplink tiegħu stess lura fit-tunnel li qed jipprova juża. Ibgħatha biss lill-konsumatur u aqra r-rotot applikati fuq il-klijent minflok ma tafda li ntgħażel il-fajl CCD.

# /etc/openvpn/server/ccd/consumer-01
push "redirect-gateway def1"

Il-kernel tal-ħruġ jagħmel il-forwarding

Ġewwa l-ħruġ, pakkett mill-konsumatur jasal fl-interface tun indirizzat lil xi host tal-internet. Il-kernel jikkonsulta t-tabella tal-irrotar tiegħu, isib l-uplink reali bħala l-aħjar qbil u mbagħad japplika żewġ politiki indipendenti: jistax dan il-pakkett jiġi mgħoddi 'l quddiem xejn, u jistax joħroġ minn dak l-interface b'dak l-indirizz tas-sors. Il-forwarding huwa sysctl, u f'ħafna distribuzzjonijiet huwa mitfi awtomatikament.

Għalhekk il-ħruġ jeħtieġ forwarding IPv4 mixgħul b'mod persistenti, regola li tammetti s-sorsi tat-tunnel tal-konsumatur lejn l-uplink, u l-passaġġ tar-risposta lura mill-tun. Li tixgħel il-forwarding għall-host kollu jbiddel ukoll l-imġiba ta' kull ħaġa oħra li tiġi mgħoddija minnu, u għalhekk ir-regola għandha ssemmi s-sorsi u l-interfaces minflok ma taċċetta kollox.

Il-passaġġ lura jinxtara bit-traduzzjoni tas-sors

Host tal-internet m'għandux rotta lejn indirizz 10.90.0.x, għalhekk it-tweġibiet jitwarrbu qabel ma jaslu għand il-ħruġ. Li terġa' tikteb is-sors waqt li l-pakkett iħalli l-uplink issolvi dan, u t-trackjar tal-konnessjonijiet jaqleb il-kitba mill-ġdid fit-triq lura.

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 10.90.0.0/24 -o enp1s0 -j MASQUERADE
ip -4 route get 10.90.0.9   # run on the exit: must point at the tun

Ir-regola hawn fuq hija punt tat-tluq għal interface wieħed tal-uplink, mhux politika tal-firewall. Iċċekken is-sors għall-assenjazzjonijiet li tassew awtorizzajt, u żomm il-politika tad-dħul tal-ħruġ stess separata sabiex il-maskerament tat-traffiku tat-tunnel ma jesponix bil-kwiet servizzi lokali. Fuq host b'indirizz tal-uplink dinamiku, il-maskerament jeħlisek ukoll milli ssegwi l-indirizz bl-idejn.

Fejn il-hub jista' jinfurza u fejn le

B'client-to-client u l-passaġġ tad-data tradizzjonali tal-ispazju tal-utent, il-hub jgħaddi pakketti interni bejn il-pari ġewwa l-proċess tas-server. Qatt ma jgħaddu mill-katina FORWARD tal-kernel tal-hub, għalhekk regola tal-kernel hemmhekk ma tistax tirrestrinġi t-tranżitu bejn il-pari, kemm hi miktuba bl-attenzjoni. L-infurzar irid jgħix fil-politika stess tas-server: min jista' jikkonnettja, liema fajl CCD jirċievi, u jekk il-pussess awtomatiku tal-ħruġ jingħatax xejn.

Għalhekk iroute awtomatiku huwa deċiżjoni ta' fiduċja wiesgħa. Il-ħruġ irid jaċċetta b'mod leġittimu traffiku lura minn indirizzi tal-internet arbitrarji, u irid ikun magna li tikkontrolla, tapplika patches u tissorvelja. Li tagħti l-istess pussess lil pari li ma tafdax b'router hija l-iżball li jistieden dan id-disinn.

Is-sħubija hija l-kontroll veru. Kwalunkwe klijent li jista' jikkonfigura r-rotot tiegħu jista' jipprova juża l-ħruġ, għalhekk li tirrestrinġi min jista' jikkonnettja, jew liema pari l-ħruġ iservi, hija parti mid-disinn u mhux ħsieb ta' wara.

Naqsu b'mod sigur meta l-ħruġ jisparixxi

Itfi l-ħruġ u l-pussess awtomatiku intern jisparixxi mas-sessjoni tiegħu. Dak li m'għandux jiġri huwa li l-hub isir bil-kwiet il-ħruġ sostitut: l-ebda rotta awtomatika mill-pool VPN għall-uplink tal-hub, u l-ebda regola wiesgħa ta' maskerament fuq il-hub li togħġobha tibgħat l-istess traffiku 'l quddiem. Ipprova dak il-falliment apposta, imbagħad ipprova l-irkupru b'fluss ġdid u mhux b'paġna li kienet diġà miftuħa.

# on the consumer, with the exit up and then down
ip -4 route get 1.1.1.1
curl -sS -o /dev/null -w '%{http_code}\n' https://example.com

Jekk it-traffiku tal-konsumatur għadu jasal għall-internet wara li l-ħruġ ikun telaq, xi ħaġa oħra qed iġġorru u l-limitu li ħsibt fih ma jeżistix. Ittratta DNS u IPv6 ukoll bħala deċiżjonijiet separati: rotta IPv4 flimkien ma' maskerament ma tgħid xejn dwar traffiku AAAA, u resolver imbuttat mill-hub iwieġeb minn fejn tassew joħroġ il-mistoqsija.

Artikli relatati