Kọ́ńtẹ́nà rẹ ṣì ń dáhùn lórí àgbélébùú ìṣàkóso rẹ̀, ṣùgbọ́n gbogbo pákẹ́tì tó ń jáde máa ń gba macvlan ọ́fíìsì jáde. Kò sí ohun tó kùnà. Ìsopọ̀ méjì kọ̀ọ̀kan ń fún ní gétiwèè tirẹ̀, ọ̀nà àkọ́kọ́ kan ṣoṣo sì lọ sí nẹ́tíwọ́kì tí o kò pète fún, nítorí náà iṣẹ́ náà ń bá a lọ níṣẹ́ nígbà tí ìrìnàjò rẹ̀ ń gba ọ̀nà tó gùn. Nígbà tí ẹnìkan bá kíyè sí i, ẹ̀rí ni tábìlì ìtọ́sọ́nà, kì í ṣe ìfiránṣẹ́ àṣìṣe.

Àlàyé tó wọ́pọ̀ ni pé Docker yan nẹ́tíwọ́kì náà láìrò. Ní ìṣe, ìpinnu àtijọ́ ń tẹ̀lé ìlàlẹ̀ álífábẹ́ẹ̀tì àwọn orúkọ nẹ́tíwọ́kì tí wọ́n so mọ́, èyí sì sọ ìtọ́sọ́nà di àbájáde ẹ̀gbẹ́ kan ti àmì. gw_priority fi nọ́mbà tí o mọ̀ọ́mọ̀ yàn rókèrò náà, àti gbígba rẹ̀ gba nǹkan bí ìṣẹ́jú kan tí wọ́n bá ti kọ àwòrán náà sílẹ̀.

Ìdí tí ọ̀nà àkọ́kọ́ fi ń bọ́ sórí nẹ́tíwọ́kì tí kò tọ́

Gbogbo nẹ́tíwọ́kì tí iṣẹ́ kan bá darapọ̀ mọ́ lè pèsè gétiwèè tirẹ̀, ṣùgbọ́n kọ́ńtẹ́nà ṣì ní ọ̀nà àkọ́kọ́ kan ṣoṣo gan-an. Ṣáájú Compose 2.33.1, wọ́n yanjú ìdọ́gba nípa títò orúkọ nẹ́tíwọ́kì, nítorí náà àmì bí control tí ó wá ṣáájú office ni ó ń pinnu ibi tí ìrìnàjò yóò lọ. Kò sí ohun tó ń kọ àkọsílẹ̀ nínú kọ́ńtẹ́nà pé ìpinnu náà jẹ́ àìlẹ́gbẹ́, ìdí nìyẹn tí ó fi ń kọjá àyẹ̀wò kóòdù tí ó sì ń farahàn nígbà tó ń bọ̀ gẹ́gẹ́ bí ọ̀nà àjèjì. Fífi ìlànà sínú fáìlì compose ni ọ̀nà kan ṣoṣo láti jẹ́ kí ìyàn náà lè ṣàyẹ̀wò.

Nǹkan méjì ní ń yí ipinnu padà ní ti gidi pé irú nẹ́tíwọ́kì wo ni yóò borí: àwọn iye gw_priority tí o yàn, àti àwọn nẹ́tíwọ́kì tí wọ́n so mọ́ pátápátá. Fi nẹ́tíwọ́kì kẹta kún un, ẹgbẹ́ olùdíje yóò pọ̀ sí i; yọ macvlan kúrò, kò sí ohun tó kù láti bá àgbélébùú díje. Kò sí èyí nínú àwọn méjèèjì tó farahàn nínú àkọsílẹ̀ ohun èlò, nítorí ọ̀nà àkọ́kọ́ tí kò tọ́ kì í sábà já ẹ̀mí ìsopọ̀ pátápátá. Ó kàn ń jẹ́ kí àwọn ìdáhùn wá láti àdírẹ́sì tí ẹ̀gbẹ́ kejì lè má retí.

Di gétiwèè náà mú pẹ̀lú gw_priority

Compose ń fi gw_priority hàn lórí gbogbo ìsopọ̀ iṣẹ́-sí-nẹ́tíwọ́kì láti ẹ̀yà 2.33.1, nọ́mbà tó tóbi jù ni yóò borí. Kò sí kọ́kọ́rọ́ gétiwèè fún iṣẹ́ kọ̀ọ̀kan, nítorí náà iye náà wà lábẹ́ blọ́ọ̀kì networks iṣẹ́ náà. Àpẹẹrẹ tó wà nísàlẹ̀ ń fi ọ̀nà àkọ́kọ́ fún control nígbà tí office yóò ṣì wà lárọ̀wọ́tó fún LAN tí ó so mọ́ ẹ̀ tààrà.

services:
  vpn:
    networks:
      control:
        gw_priority: 1
      office:
        gw_priority: 0

networks:
  control:
    driver: bridge
    ipam:
      config:
        - subnet: 172.30.50.0/24
  office:
    driver: macvlan
    driver_opts:
      parent: eno1.120
      macvlan_mode: bridge
    ipam:
      config:
        - subnet: 192.168.120.0/24
          ip_range: 192.168.120.192/27
          gateway: 192.168.120.1

Ka blọ́ọ̀kì náà gẹ́gẹ́ bí ìṣàkóso méjì ọ̀tọ̀ọ̀tọ̀: gw_priority ń pinnu ọ̀nà àkọ́kọ́, ẹ̀ka ipam ń pinnu àdírẹ́sì. Yíyí subnet nìkan padà ń fi ìyàn ojú-ọ̀nà sílẹ̀ láìfọwọ́ kàn, ìyẹn sì ni ọ̀nà tó wọ́pọ̀ jù láti fi àtúnṣe yìí ṣiṣẹ́ ní ìdajì. Tọ́jú àwọn ipò àkọ́kọ́ lẹ́gbẹ̀ẹ́ nẹ́tíwọ́kì tí wọ́n ń ṣàkóso kí ònkàwé tó kàn má bàa wá ìpinnu náà.

Má ṣe dà gw_priority pọ̀ mọ́ ẹ̀yà priority lasan tó wà lẹ́gbẹ̀ẹ́ rẹ̀. Ìyẹn ń tò bíbí ìsopọ̀, kò sì sọ nǹkan kan nípa ìtọ́sọ́nà, nítorí náà kò lè yan gétiwèè àkọ́kọ́, kò sì ń tún orúkọ ojú-ìsopọ̀ ṣe. Bí ẹnìkan bá gbà ọ́ níyànjú láti gbé priority sókè kí ó lè darí ìrìnàjò, ìmọ̀ràn náà kò tọ́ bí ìlàlẹ̀ tó jáde tilẹ̀ dàbí ẹni tó tọ́ láìrò.

Ṣàyẹ̀wò irú nẹ́tíwọ́kì tó ń gbé ọ̀nà àkọ́kọ́ ní ti gidi

Ṣàyẹ̀wò nínú kọ́ńtẹ́nà tó ń ṣiṣẹ́, nítorí tábìlì ìtọ́sọ́nà ọ̀gá ilé ń ṣàpèjúwe ọ̀gá ilé, kì í ṣe àyè orúkọ tí iṣẹ́ ń lò. Kọ́kọ́ ṣe àyẹ̀wò ìṣètò kí àṣìṣe títẹ̀ lè kùnà kí wọ́n tó tún un ṣe, lẹ́yìn náà ka ọ̀nà tí kọ́ńtẹ́nà ti fi sílẹ̀ ní ti gidi.

docker compose config --quiet
docker exec vpn ip -4 route show default
docker exec vpn cat /proc/net/route

Àbájáde tó tọ́ ń dárúkọ ẹ̀rọ àgbélébùú àti 172.30.50.1; èyí tí kò tọ́ ń dárúkọ 192.168.120.1 àti ẹ̀rọ macvlan. Bí àwòrán kò bá ní àpò iproute2, fáìlì /proc ṣì ń ròyìn ọ̀nà àkọ́kọ́, pẹ̀lú ibi-ìdí 00000000 àti àwọn báìtì gétiwèè ti wọ́n yí padà. Fi ìlà ojú-ìsopọ̀ wé docker inspect nígbà tí orúkọ àwọn ẹ̀rọ kò bá yé.

Macvlan jẹ́ ibùdókọ̀ ara, kì í ṣe àdàkọ àgbélébùú

Macvlan ń fún kọ́ńtẹ́nà ní ìdánimọ̀ kejì lórí okùn, ìyẹn ni ó sì ń jẹ́ kí àwọn ẹ̀rọ àdúgbò lè wọlé. Ó tún túmọ̀ sí pé ibùdókọ̀ swítsì àti hypervisor gbọ́dọ̀ gba àdírẹ́sì MAC àfikún, ọ̀pọ̀ nẹ́tíwọ́kì sánmà sì ń kọ̀ ọ́ ní ìdákẹ́jẹ́. Dán kọ́ńtẹ́nà kan wò kí o tó pète fún ẹgbẹ́ kan, nítorí MAC tí wọ́n kọ̀ sábà farahàn gẹ́gẹ́ bí ìsopọ̀ tó wà lórí ṣùgbọ́n tí kò gbé nǹkan kọjá.

Ìṣètò macvlan_mode: bridge jẹ́ ipò kan ti awakọ̀ macvlan, kì í ṣe àgbélébùú sọ́fítíwèà Docker, passthru sì jẹ́ ipò àkànṣe ọ̀tọ̀ọ̀tọ̀ kì í ṣe àkọ́kọ́. Linux tún ń dí kọ́ńtẹ́nà macvlan láti dé ọ̀gá ilé rẹ̀ fúnra rẹ̀ nípasẹ̀ obí kan náà, ìdí nìyẹn tí wọ́n fi ń pa àgbélébùú ìṣàkóso mọ́ dípò retí pé ìsopọ̀ kan yóò ṣe iṣẹ́ méjèèjì.

Dárúkọ obí VLAN kí Compose tó rí i

Docker ń ka obí tó ní kíki gẹ́gẹ́ bí eno1.120 sí abẹ́-ojú-ìsopọ̀ 802.1Q, ó sì ń dá ẹ̀rọ VLAN fúnra rẹ̀. Ìrọ̀rùn yẹn ní ààlà: orúkọ tó jáde gbára lé orúkọ ojú-ìsopọ̀ ti ara, orúkọ gígùn sì lè ti èsì náà kọjá ohun tí àwọn irinṣẹ́ àyíká ń retí. Dídá ojú-ìsopọ̀ VLAN tó ní orúkọ nínú ìṣètò nẹ́tíwọ́kì ọ̀gá ilé àti dída parent sí i ń jẹ́ kí ìpẹ̀kun méjèèjì wà ní àfojúsùn.

Rántí pé kọ́kọ́rọ́ lábẹ́ networks jẹ́ orúkọ Compose, kì í ṣe ẹ̀rọ Linux. Wíwá ojú-ìsopọ̀ tí wọ́n ń pè ní office lórí ọ̀gá ilé yóò kùnà, nítorí kẹ́nẹ́lì kàn ń rí ojú-ìsopọ̀ obí àti ẹgbẹ́ veth tó wà lẹ́yìn kọ́ńtẹ́nà.

Ṣí ààyè fún VPN lókè

Olùbánisọ̀rọ̀ VPN ń sopọ̀ lẹ́yìn tí àwọn nẹ́tíwọ́kì wọ̀nyí ti wà, nítorí náà ó lè fi àwọn ọ̀nà tó ṣe pàtó jù, ìlànà ìṣèlú àti àwọn àlẹ̀mọ́ kún un láìka gw_priority. Ṣètò àwọn àkọ́sọ́nà jíjìnnà sí àwọn subnet àdúgbò méjèèjì, pẹ̀lú àwọn ìdáhùn tí ọ̀nà ìṣàkóso nílò. Nígbà tí àkọ́sọ́nà jíjìnnà bá forí gbá LAN ọ́fíìsì, tún ètò àdírẹ́sì ṣe dípò yíyọ gbogbo ibùdó aládàáni kúrò nínú ihò.

Ṣàyẹ̀wò àwọn àdírẹ́sì, ọ̀nà àti ipa-ọ̀nà iṣẹ́ lẹ́ẹ̀kan sí i lẹ́yìn tí VPN bá bẹ̀rẹ̀ àti lẹ́ẹ̀kan sí i lẹ́yìn tí ó bá tún sopọ̀, nítorí ní àkókò títún-sopọ̀ ni ọ̀nà tí a fi ọwọ́ kún máa ń pòórá. Kọ tábìlì tí a retí sílẹ̀ kí ìdánwò àkọ́kọ́ tó wáyé kí ìfiwéra lẹ́yìn náà lè jẹ́ diff kì í ṣe ìdánrawò ìrántí. Tọ́jú ẹ̀tọ́-ìní nẹ́tíwọ́kì tó dúró ṣinṣin nínú Compose kí ìṣètò VPN sì ní tirẹ̀ nìkan.

Àwọn àpilẹ̀kọ tó jọra