OpenVPN lori GCE: ṣafikun alias IP ṣaaju ki o to push awọn ipa-ọna
Ipa-ọna tí a ti push kò sọ VM di next hop. Ṣafikun ààyè alias IP, mu u bá pool server mu kí o sì ṣẹ̀dá ipa-ọna ìpadà ní VPC ṣaaju ki o to dán àwọn oníbàárà wò.
Oníbàárà kan pe server OpenVPN lori VM Compute Engine, window ipò sọ pé ó so pọ̀, ṣùgbọ́n ping sí host kan nínú VPC kò tíì dé ibi kankan. Ìmọ̀lára ni pé kí a fi ìlà push mìíràn kún, ìyẹn kò sì tún un ṣe láé. Compute Engine ń pinnu ibi tí àwọn packet ń lọ nípasẹ̀ table route tirẹ̀ àti àwọn àdírẹ́sì tí interface VM ń gbà gan-an, nítorí náà pool tunnel tí VM kò ní ni pool tí kò sí ẹni tí ń gbé dé.
Tẹ̀lé packet tí ń kùnà dípò fáìlì ìṣètò, àwọn apá tí ó ṣẹ̀ yóò sì farahàn ní tẹ̀léntẹ̀lẹ̀.
Bẹ̀rẹ̀ láti packet tí ń kú
SYN fi oníbàárà sílẹ̀, wọ inú tunnel ó sì dé VM gẹ́gẹ́ bí packet tí a fi pa mọ́ fún ibi àfojúsùn nínú VPC. OpenVPN ń tú u kí ó sì gbìyànjú láti gbé e jáde nípasẹ̀ eth0, níbi tí fabric ti béèrè ìbéèrè kan ṣaaju ohunkóhun mìíràn: ṣé instance yìí ní àdírẹ́sì àfojúsùn náà. Pool tunnel tí a gé láti subnet ẹlòmíràn kùnà nínú ìbéèrè yẹn, a sì ń sọ packet náà nù ṣaaju kí a wo route tàbí òfin firewall kankan.
Nítorí náà ìtọ́sọ́nà láti oníbàárà sí VPC ní àwọn ìbéèrè méjì ọ̀tọ̀ọ̀tọ̀, kò sì sí ọ̀kankan tí í ṣe àṣẹ push. VM nílò ààyè alias tí ó bo pool tunnel, ìyẹn ni ó sì ń sọ ọ́ di olówó tí ó tọ́ sí àwọn àdírẹ́sì wọ̀nyẹn. VPC nílò route tí ó ń dárúkọ VM gẹ́gẹ́ bí next hop fún gbogbo prefix tí a dáàbò bò. Tí ọ̀kan bá ṣẹ̀, packet yóò kú ní ibòmíràn, nígbà tí oníbàárà yóò rí ìdákẹ́jẹ́ kanna.
Ka ìkùnà náà ní tẹ̀léntẹ̀lẹ̀ yẹn, nítorí láti ẹ̀gbẹ́ oníbàárà àwọn ipò méjèèjì dàbí bákan náà. Tunnel tí ó ń sọ pé ó so pọ̀ nígbà tí kò sí ohun tí ń dáhùn jẹ́ àmì ìṣòro topology, kì í ṣe cipher búburú.
Ṣé instance ní pool tunnel náà
Fún VM ní ààyè kejì nínú subnet tirẹ̀, lẹ́yìn náà jẹ́ kí OpenVPN pín àwọn àdírẹ́sì láti inú ààyè yẹn gan-an. Lori instance tí àdírẹ́sì àkọ́kọ́ rẹ̀ jẹ́ 10.156.0.10/20, alias /28 ń ya pool yà kúrò lára àwọn àdírẹ́sì tí àwọn instance mìíràn ti ní:
gcloud compute instances network-interfaces update openvpn-vm \
--zone=europe-west1-b \
--aliases=eth0:10.156.1.0/28Lẹ́yìn náà ìtọ́sọ́nà server gbọ́dọ̀ ṣàpèjúwe block kanna. Àdírẹ́sì àkọ́kọ́ rẹ̀ di gateway tunnel, àwọn àdírẹ́sì tó kù sì ni a ń pín fún àwọn oníbàárà. Níbí, nọ́mbà méjì ń ṣàpèjúwe block kan, nẹ́tíwọ́kì kan àti netmask kan, ìyẹn sì ni sintaksi pool tí OpenVPN ṣì ń retí.
server 10.156.1.0 255.255.255.240Jẹ́rìí pé àdírẹ́sì náà dé lórí interface gan-an kì í ṣe kìkì nínú ìṣètò OpenVPN. Fabric ń gbé ohun tí NIC ń ròyìn jáde, kì í ṣe ohun tí daemon gbà gbọ́. Àṣẹ kan ń pinnu rẹ̀:
ip -4 addr show dev eth0Àdírẹ́sì kejì tí kò dé eth0 láé, tàbí pool tí ó ń borí subnet mìíràn, yóò farahàn lẹ́yìn náà gẹ́gẹ́ bí àdánù lẹ́ẹ̀kọ̀ọ̀kan kì í ṣe gẹ́gẹ́ bí àṣìṣe ìbẹ̀rẹ̀. Daemon ń bẹ̀rẹ̀, àwọn oníbàárà ń so pọ̀, àwọn ibi àfojúsùn kan ṣoṣo sì ń hùwà lọ́nà tí kò tọ́. Jẹ́ kí ààyè alias kéré kí ó lè rọrùn láti dá pool mọ̀ nínú table route. Má ṣe gé e láti subnet tí instance mìíràn ti ń lò rí.
Fún traffic ìpadà ní next hop
Ìdáhùn láti host kan nínú VPC ni a ń darí sí àdírẹ́sì oníbàárà nínú pool tunnel, tí kò jẹ́ ti subnet kankan tí VPC mọ̀. Láìsí route fún pool yẹn, ìdáhùn náà dúró ní hop àkọ́kọ́ tí kò ní ìbámu, ìbéèrè náà sì lè ti yọrísí ní ẹ̀gbẹ́ kejì.
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=800Route kanna ni a nílò fún gbogbo prefix tí ó wà lẹ́yìn oníbàárà dípò nínú VPC. Àwọn prefix wọ̀nyẹn tún nílò àkọsílẹ̀ iroute nínú fáìlì ccd oníbàárà yẹn. Àkọsílẹ̀ yẹn jẹ́ ìṣirò ní ẹ̀gbẹ́ server: ó ń sọ fún server kí ni oníbàárà tí ó ní prefix náà, kò sì fi ohunkóhun sórí oníbàárà fúnra rẹ̀.
Pa àkójọ push mọ́ fún ẹ̀gbẹ́ oníbàárà ti ìfọ̀rọ̀wérọ̀ náà, nítorí ó ń fi àwọn route kún ẹ̀rọ tí ń so pọ̀ nìkan. Ìlà push fún subnet VPC àti route VPC tí ó padà sí pool jẹ́ ìdajì méjì ti ọ̀nà kan náà, ìdajì kọ̀ọ̀kan ló ń dá tunnel tí ń gbé ìbéèrè ṣùgbọ́n kì í gbé ìdáhùn.
Firewall, gbígbé jáde àti àwọn hop tí ó wà láàárín
Firewall VPC ń ṣàyẹ̀wò packet tí a ti tú, nítorí náà òfin ingress gbọ́dọ̀ gbà pool tunnel àti gbogbo prefix ojú-ìwé tí ó dé VM ní ọ̀nà yẹn. Ìfarahàn default-deny kùnà ní ìdákẹ́jẹ́ níbí: a ń sọ packet náà nù lẹ́yìn títú, log OpenVPN sì ń fi session aláyọ̀ hàn.
Lori gbogbo host Linux tí ń gbé jáde dípò kí ó parí, ṣàyẹ̀wò pé net.ipv4.ip_forward ti ṣí. Òfin ohun-ìní tún kan níbẹ̀: ẹ̀rọ tí ń gbé jáde fún subnet tí kò ní yóò sọ packet náà nù gẹ́gẹ́ bí VM ìbá ṣe. Ka iye náà ṣaaju kí o to da tunnel lẹ́bi.
Nígbà tí prefix kan pàtó bá kùnà
Ìkùnà apá kan ni ọ̀ràn tí ó rọrùn jù láti kà, nítorí gbogbo ohun mìíràn lórí ọ̀nà ti jẹ́rìí tẹ́lẹ̀. Bẹ̀rẹ̀ pẹ̀lú àkójọ route kí o ka ààyè àfojúsùn àti next hop àkọsílẹ̀ tí ó yẹ kí ó bo prefix náà, lẹ́yìn náà ka àpèjúwe instance kí o sì fi ààyè alias rẹ̀ wé pool tí server ń pín.
gcloud compute routes list --filter=destination-range~10.164.0.0
gcloud compute instances describe openvpn-vm --format=get(networkInterfaces[0].aliasIpRanges)Route tí ó ṣẹ̀ ń fi ara rẹ̀ hàn gẹ́gẹ́ bí kò sí next hop fún prefix náà, nígbà tí alias tí ó ṣẹ̀ ń fi ara rẹ̀ hàn gẹ́gẹ́ bí packet tí a sọ nù ní interface; láti ọ̀dọ̀ oníbàárà àwọn méjèèjì dàbí bákan náà àti nínú àwọn ìjáde méjì yẹn wọ́n yàtọ̀ pátápátá. Tí àwọn méjèèjì bá wà, ẹni tí a fẹ̀sùn kàn tí ó kù ni iroute ccd ti oníbàárà tí ń béèrè prefix náà.
Kọ àwọn iye mẹ́rin lẹ́gbẹ̀ẹ́ tunnel: ààyè alias, pool server, àwọn prefix tí a push, àwọn route VPC. Alias àtijọ́ ń ba gbogbo àdírẹ́sì pool jẹ́, route àtijọ́ ń ba ìtọ́sọ́nà kan jẹ́, push tí ó ṣẹ̀ ń fi prefix pamọ́ fún oníbàárà, iroute tí kò tọ́ sì ń fi prefix ránṣẹ́ sí peer tí kò tọ́. Ẹni tí yóò fi subnet kún lẹ́yìn náà nílò gbogbo mẹ́rẹ̀ẹ̀rin ní ibi kan, àkọsílẹ̀ yẹn sì kóre ju alẹ́ lọ.