Ìdí tí kọ̀ǹtẹ́nà macvlan kò fi lè dáhùn fún alábàáṣepọ̀ VPN
Kọ̀ǹtẹ́nà macvlan kò lè bá olùgbani ilé tirẹ̀ sọ̀rọ̀, àwọn ìdáhùn rẹ̀ sì lè jáde nípasẹ̀ ẹnu-ọ̀nà tí kò tọ́. Fi ipa-ọ̀nà shim kún ní ẹ̀gbẹ́ olùgbani ilé, kí o sì yan àwòṣe orísun.
Ronú nípa olùgbani ilé Linux kan tí ó parí VPN tí ó sì ń darí kọ̀ǹtẹ́nà kan lórí nẹ́tíwọ́kì macvlan ní àkókò kan náà. LAN jẹ́ 192.168.60.0/24, kọ̀ǹtẹ́nà náà ni 192.168.60.210, àwọn alábàásọ̀ VPN sì ń wá láti 10.95.0.0/24. Alábàásọ̀ náà dé ibi iṣẹ́, ìdáhùn kò padà wá rárá, gbogbo òfin odi iná lórí olùgbani ilé sì dàbí ẹni tí ó tọ́. Àwọn ìdíwọ́ méjì ọ̀tọ̀ọ̀tọ̀ ló ń dá àmì yìí, àti pé fífi ọ̀kan tọ́ ń fi èkejì sí ipò rẹ̀.
Ìdíwọ́ méjì, àmì kan
Ìdíwọ́ àkọ́kọ́ ni ìyàsọ́tọ̀: aṣàkóso macvlan ti Docker kò gbà kọ̀ǹtẹ́nà láàyè láti bá olùgbani ilé tirẹ̀ sọ̀rọ̀ nípasẹ̀ ẹnu-ọ̀nà obi. Ìrìnàjò láàárín àkópọ̀ olùgbani ilé àti kọ̀ǹtẹ́nà kò ní ọ̀nà, bí wọ́n ti kọ àwọn ipa-ọ̀nà lórí olùgbani ilé.
Ìdíwọ́ kejì ni ọ̀nà ìpadà. Ẹnu-ọ̀nà àkọ́kọ́ ti kọ̀ǹtẹ́nà sábà jẹ́ ẹ̀rọ ìtọ́sọ́nà LAN, nítorí náà ìdáhùn tí a fi ránṣẹ́ sí alábàásọ̀ VPN ń jáde nípasẹ̀ ẹ̀rọ ìtọ́sọ́nà yẹn. Bí ẹ̀rọ ìtọ́sọ́nà kò bá ní ipa-ọ̀nà padà sí àkópọ̀ VPN, a ń sọ ìdáhùn nù níbìkan ní àárín.
Àwọn ìkùnà méjì yìí dàbí ẹni kan náà láti ojú alábàásọ̀: ìbéèrè tí ó dé àti ìdáhùn tí kò dé rárá. Wọ́n nílò àtúnṣe ọ̀tọ̀ọ̀tọ̀, òfin masquerade gbígbòòrò sì lè fi pamọ́ èwo nínú wọn tí ó ṣì ti bàjẹ́. Ìdí nìyẹn tí ìdánwò àkọ́kọ́ fi jẹ́ gbígbà pátákó ní ẹ̀gbẹ́ kọ̀ǹtẹ́nà dípò ìyípadà odi iná mìíràn. Bí ìbéèrè kò bá farahàn níbẹ̀ rárá, ìdíwọ́ ìyàsọ́tọ̀ ni ó ń ṣiṣẹ́.
Kọ́ shim ẹ̀gbẹ́ olùgbani ilé, ní dídúró ṣinṣin
Ẹnu-ọ̀nà macvlan kejì lórí olùgbani ilé, tí a so mọ́ obi kan náà ní ipò afárá, ń fún àkópọ̀ olùgbani ilé ní ìdánimọ̀ tirẹ̀ lórí ẹ̀ka LAN yẹn. Fi àdírẹ́sì kan pamọ́ fún un ní ìta àkópọ̀ DHCP àti ní ìta ìwọ̀n kọ̀ǹtẹ́nà, kí o sì jẹ́ kí kọ̀ǹtẹ́nà nìkan gba ibẹ̀ kọjá.
ip link add macvlan-vpn link eth0 type macvlan mode bridge ip address add 192.168.60.250/32 dev macvlan-vpn ip link set macvlan-vpn up ip route add 192.168.60.210/32 dev macvlan-vpn src 192.168.60.250
Àṣẹ àkọ́kọ́ ń dá ẹnu-ọ̀nà ní ipò afárá, èyí tí ó jẹ́ àìdásí tí a kọ sílẹ̀ fún aṣàkóso yìí àti ipò tí o fẹ́ fún ìrìnàjò láàárín olùgbani ilé àti kọ̀ǹtẹ́nà. Èkejì ń fi /32 fún un kí àdírẹ́sì má bàa kọlù ìpilẹ̀ LAN, ẹ̀kẹrin sì ń rán àdírẹ́sì kọ̀ǹtẹ́nà nìkan nípasẹ̀ shim.
Má ṣe darí gbogbo LAN nípasẹ̀ ẹnu-ọ̀nà tuntun. Ipa-ọ̀nà ìsopọ̀ déédéé wà bí ó ti wà, ipa-ọ̀nà olùgbani ilé sì dúró ṣinṣin ní àtọ̀nà kí kọ̀ǹtẹ́nà kan lè rí ọ̀nà láì jẹ́ kí ìyókù ẹ̀ka náà yí ìhùwàsí rẹ̀ padà. Ipa-ọ̀nà àìdásí tí ó tọ́ka sí shim yóò jẹ́ àwòṣe mìíràn pẹ̀lú àbájáde mìíràn. Jẹ́ kí ó ṣe pàtó, ìwọ̀n ìbàjẹ́ yóò sì kéré.
Àwọn àṣẹ wọ̀nyí ń yí ètò nẹ́tíwọ́kì padà lórí olùgbani ilé tí ń ṣiṣẹ́. Lórí ẹ̀rọ tàbí pẹpẹ tí a ń bójú tó, lo ọ̀nà ìtòlẹ́sẹẹsẹ tí pẹpẹ yẹn ń gbà, nítorí ìyípadà àjọṣepọ̀ nínú root shell lè máà wà lẹ́yìn ìgbéga.
Pinnu bí a ṣe ń pa orísun mọ́
Pẹ̀lú shim ní ipò rẹ̀, kọ̀ǹtẹ́nà lè dé ibi olùgbani ilé, ìbéèrè sì di èwo àdírẹ́sì orísun tí ìdáhùn gbé. Pípa orísun VPN àkọ́kọ́ mọ́ ni àwòṣe tí ó mọ́: kọ̀ǹtẹ́nà rí àdírẹ́sì gidi alábàásọ̀, àwọn àkọsílẹ̀ àti òfin ìwọlé iṣẹ́ sì lè lò ó.
Kí ìyẹn lè ṣiṣẹ́, ètò nẹ́tíwọ́kì kọ̀ǹtẹ́nà gbọ́dọ̀ rán ìrìnàjò fún 10.95.0.0/24 sí 192.168.60.250 gẹ́gẹ́ bí ẹnu-ọ̀nà rẹ̀ fún ọ̀nà yìí. Èyí jẹ́ ètò ipa-ọ̀nà tàbí ẹnu-ọ̀nà tí a gbà nínú ètò kọ̀ǹtẹ́nà fúnra rẹ̀, kì í ṣe ọ̀gbọ́n ní ẹ̀gbẹ́ olùgbani ilé. Fi ìdánilójú rẹ̀ láti inú kọ̀ǹtẹ́nà dípò kí o rò pé ètò náà ti wọlé. Ẹnu-ọ̀nà àìdásí tí ó ṣì tọ́ka sí ẹ̀rọ ìtọ́sọ́nà LAN yóò máa rán àwọn ìdáhùn sínú ihò kan náà.
Bí àwòṣe tí a fọwọ́ sí bá ń fi àwọn orísun VPN pamọ́ dípò, dín ìtumọ̀ náà kù ní pàtó: àkópọ̀ VPN gidi, shim gẹ́gẹ́ bí ẹnu-ọ̀nà jáde, àti kọ̀ǹtẹ́nà àti iṣẹ́ pàtó.
iptables -t nat -A POSTROUTING -s 10.95.0.0/24 -o macvlan-vpn -j SNAT --to-source 192.168.60.250
Bá shim mu gẹ́gẹ́ bí ẹnu-ọ̀nà jáde, kì í ṣe ọ̀nà abẹ́lẹ̀. Òfin tí ó pe ọ̀nà abẹ́lẹ̀ ní ẹnu-ọ̀nà jáde kò ní bá pátákó tí ó ń lọ sí ọ̀nà kọ̀ǹtẹ́nà mu, ìkùnà yẹn sì ni ó sábà wà nínú irú ètò bẹ́ẹ̀. Jẹ́ kí òfin náà dín bí gbólóhùn lókè, kí o sì tún un wò nígbà tí àkópọ̀ náà bá yí padà.
Dánilójú láti ọ̀dọ̀ alábàásọ̀, kì í ṣe láti ọ̀dọ̀ olùgbani ilé
Ìbéèrè láti ọ̀dọ̀ olùgbani ilé fúnra rẹ̀, tí a so mọ́ àdírẹ́sì shim, ń fi hàn pé shim lè dé ibi kọ̀ǹtẹ́nà. Kò fi hàn pé kọ̀ǹtẹ́nà lè rán ìrìnàjò padà sí orísun 10.95.0.x tí a pa mọ́, nítorí àdírẹ́sì orísun nínú ìdánwò yẹn jẹ́ ti shim fúnra rẹ̀.
curl -sS --interface 192.168.60.250 -o /dev/null -w '%{http_code}\n' http://192.168.60.210:8080/health
sudo tcpdump -ni macvlan-vpn host 192.168.60.210Àṣẹ àkọ́kọ́ ń dán ẹ̀ka láti olùgbani ilé dé kọ̀ǹtẹ́nà wò, èkejì sì ń fi hàn kí ni ó ń kọjá shim ní ti gidi nígbà tí alábàásọ̀ VPN gidi ń ṣe ìbéèrè. Wo àdírẹ́sì orísun ní ọ̀nà ìwọlé àti bóyá ìdáhùn yóò farahàn pẹ̀lú ṣíṣàn kan náà.
A gbọ́dọ̀ mú ìránṣẹ́-ṣíwájú ṣiṣẹ́ lórí olùgbani ilé, ọ̀nà ìránṣẹ́-ṣíwájú sì nílò àṣẹ fún àkópọ̀ VPN sí shim lórí ẹnu-ọ̀nà iṣẹ́ pẹ̀lú àwọn ìdáhùn tí a ti fìdí rẹ̀ múlẹ̀. Òfin INPUT lórí olùgbani ilé kò gbà ìrìnàjò tí a ń rán ṣíwájú, ìdí tí ó sábà jẹ́ tí a fi sọ pátákó nù lẹ́yìn tí ìtọ́sọ́nà dàbí ẹni tí ó tọ́.
Ṣe ohun èlò gidi pẹ̀lú ẹ̀rí ìdánimọ̀ gidi, lẹ́yìn náà ṣàyẹ̀wò pé iṣẹ́ kejì, tí kò ní í ṣe pẹ̀lú rẹ̀, lórí kọ̀ǹtẹ́nà kan náà ṣì ń kọ̀ ọ́. Bí ọ̀nà kan ṣoṣo láti mú kí ó ṣiṣẹ́ bá jẹ́ ṣíṣí gbogbo òfin ìránṣẹ́-ṣíwájú, àwòṣe náà kò tíì parí. Akiyesi àdírẹ́sì orísun tí iṣẹ́ náà kọ sílẹ̀ pẹ̀lú, nítorí ìyẹn ni àwọn òfin ìwọlé tirẹ̀ yóò lò láti ìsinsìnyí.