OpenVPN fuq GCE: żid IP alias qabel ma tagħmel push ta' rotot
Rotta mqiegħda fil-push ma tagħmilx il-VM next hop. Żid il-firxa tal-IP alias, qabbilha mal-pool tas-server u oħloq ir-rotta tar-ritorn fil-VPC qabel ma tittestja l-klijenti.
Klijent iċempel lis-server OpenVPN fuq VM ta' Compute Engine, it-tieqa tal-istat tgħid konness, u ping lejn host fil-VPC xorta ma jasal imkien. L-istint hu li żżid linja push oħra, u dan qatt ma jsewwih. Compute Engine jiddeċiedi fejn imorru l-pakketti skont it-tabella tar-rotot tiegħu stess u skont l-indirizzi li interface tal-VM fil-fatt għandha, allura pool ta' tunnel li l-VM mhijiex propjetarja tiegħu huwa pool li ħadd ma jwassal għalih.
Segwi l-pakkett li qed ifalli minflok il-fajl tal-konfigurazzjoni, u l-biċċiet neqsin jidhru fl-ordni.
Ibda mill-pakkett li jmut
Is-SYN joħroġ mill-klijent, jidħol fit-tunnel u jasal fil-VM bħala pakkett inkapsulat għal destinazzjoni fil-VPC. OpenVPN jiddekapsulah u jipprova jgħaddih il barra minn eth0, fejn il-fabric jagħmel mistoqsija waħda qabel kull ħaġa oħra: din l-istanza għandhiex l-indirizz tad-destinazzjoni. Pool ta' tunnel maqtugħ mis-subnet ta' ħaddieħor ifalli dik il-mistoqsija, u l-pakkett jintrema qabel ma tiġi kkonsultata xi rotta jew regola tal-firewall.
Għalhekk id-direzzjoni mill-klijent għall-VPC għandha żewġ rekwiżiti separati, u l-ebda waħda mhijiex direttiva push. Il-VM teħtieġ firxa alias li tkopri l-pool tat-tunnel, u dan huwa dak li jagħmilha propjetarja leġittima ta' dawk l-indirizzi. Il-VPC teħtieġ rotta li ssemmi l-VM bħala next hop għal kull prefiss protett. Jekk jonqos wieħed, il-pakkett imut f'post ieħor, filwaqt li l-klijent jara l-istess silenzju.
Aqra l-falliment f'dik l-ordni, għax mill-ġenb tal-klijent iż-żewġ kundizzjonijiet jidhru identiċi. Tunnel li jgħid konness waqt li xejn ma jwieġeb huwa l-firma ta' problema ta' topoloġija, mhux ta' cipher ħażin.
L-istanza għandhiex il-pool tat-tunnel
Agħti lill-VM firxa sekondarja ġewwa s-subnet tagħha stess, imbagħad agħmel OpenVPN iqassam indirizzi eżattament minn dik il-firxa. Fuq istanza li l-indirizz primarju tagħha huwa 10.156.0.10/20, alias /28 iżomm il-pool separat mill-indirizzi li istanzi oħra diġà għandhom:
gcloud compute instances network-interfaces update openvpn-vm \
--zone=europe-west1-b \
--aliases=eth0:10.156.1.0/28Id-direttiva server imbagħad trid tiddeskrivi l-istess blokka. L-ewwel indirizz tagħha jsir il-gateway tat-tunnel, u l-indirizzi li jifdal jitqassmu lill-klijenti. Hawn żewġ numri jiddeskrivu blokka waħda, network u netmask, u din hija s-sintassi tal-pool li OpenVPN għadu jistenna.
server 10.156.1.0 255.255.255.240Ikkonferma li l-indirizz tassew wasal fuq l-interface u mhux biss fil-konfigurazzjoni tal-OpenVPN. Il-fabric jgħaddi skont dak li jirrapporta n-NIC, mhux skont dak li jemmen id-daemon. Kmand wieħed jiddeċidiha:
ip -4 addr show dev eth0Indirizz sekondarju li qatt ma jasal għal eth0, jew pool li jissovrapponi ma' subnet ieħor, jidher aktar tard bħala telf intermittenti minflok bħala żball fil-bidu. Id-daemon jibda, il-klijenti jikkonnettjaw, u biss xi destinazzjonijiet iġibu ruħhom ħażin. Żomm il-firxa alias żgħira biex il-pool ikun faċli li tintgħaraf f'tabella tar-rotot. Qatt ma taqtgħha minn subnet li istanza oħra diġà tuża.
Agħti next hop lit-traffiku tar-ritorn
Tweġiba minn host fil-VPC hija indirizzata lill-indirizz ta' klijent fil-pool tat-tunnel, li ma jappartjeni għal ebda subnet li l-VPC jaf biha. Mingħajr rotta għal dak il-pool, it-tweġiba tieqaf fl-ewwel hop li ma jsaibx qbil, u t-talba setgħet perfettament irnexxiet fit-tarf l-ieħor.
gcloud compute routes create openvpn-return \
--network=prod-vpc \
--destination-range=192.168.127.0/24 \
--next-hop-instance=openvpn-vm \
--next-hop-instance-zone=europe-west1-b \
--priority=800L-istess rotta hija meħtieġa għal kull prefiss li jinsab wara klijent minflok ġewwa l-VPC. Dawk il-prefissi jeħtieġu wkoll entrata iroute fil-fajl ccd ta' dak il-klijent. Dik l-entrata hija kontabilità mill-ġenb tas-server: tgħid lis-server liema klijent għandu l-prefiss, u ma tinstalla xejn fuq il-klijent innifsu.
Żomm il-lista push għall-ġenb tal-klijent tal-konversazzjoni, għax iżżid biss rotot mal-magna li tikkonnettja. Linja push għal subnet tal-VPC u rotta tal-VPC lura lejn il-pool huma żewġ nofsijiet tal-istess mogħdija, u kull nofs waħdu jipproduċi tunnel li jġorr talbiet imma mhux tweġibiet.
Firewalls, forwarding u l-hops bejniethom
Il-firewall tal-VPC jevalwa l-pakkett dekapsulat, allura regola ingress trid tammetti l-pool tat-tunnel u kull prefiss ta' sit li jasal fil-VM b'dik il-mod. Pożizzjoni ta' default-deny tfalli fis-skiet hawn: il-pakkett jintrema wara d-dekapsulament, u l-log tal-OpenVPN juri sessjoni sana.
Fuq kull host Linux li jgħaddi minflok ma jtemm, iċċekkja li net.ipv4.ip_forward huwa attivat. Ir-regola tal-propjetà tapplika hemm ukoll: magna li tgħaddi għal subnet li m'għandhiex tarmi l-pakkett bħalma tagħmel il-VM. Aqra l-valur qabel ma tagħti l-ħtija lit-tunnel.
Meta jonqos eżattament prefiss wieħed
Falliment parzjali huwa l-każ l-aktar faċli biex taqrah, għax kull ħaġa oħra fil-mogħdija diġà ġiet ippruvata. Ibda mil-lista tar-rotot u aqra l-firxa tad-destinazzjoni u n-next hop tal-entrata li suppost tkopri l-prefiss, imbagħad aqra d-deskrizzjoni tal-istanza u qabbel il-firxa alias tagħha mal-pool li jqassam is-server.
gcloud compute routes list --filter=destination-range~10.164.0.0
gcloud compute instances describe openvpn-vm --format=get(networkInterfaces[0].aliasIpRanges)Rotta nieqsa turi ruħha bħala nuqqas ta' next hop għall-prefiss, filwaqt li alias nieqes juri ruħha bħala pakkett mormi fl-interface; mill-klijent iż-żewġ affarijiet jixxiebhu u f'dawk iż-żewġ outputs huma kompletament differenti. Jekk it-tnejn huma preżenti, is-suspettat li jifdal huwa l-iroute ccd tal-klijent li jallega l-prefiss.
Ikteb l-erba valuri ħdejn it-tunnel: firxa alias, pool tas-server, prefissi mqiegħda fil-push, rotot tal-VPC. Alias skadut ikisser kull indirizz tal-pool, rotta skaduta tkisser direzzjoni waħda, push nieqes jaħbi l-prefiss mill-klijent, u iroute żbaljat jibgħat il-prefiss lill-peer żbaljat. Il-persuna li jmiss li żżid subnet għandha bżonn l-erbgħa f'post wieħed, u n-nota tiswa inqas mill-lejla.