Yàrá ìdánwò VPN VirtualBox: VM ẹnubodè tàbí nẹ́tíwọ́kì olùgbàlejò nìkan
Yan láàárín VM ẹnubodè tí a ṣe ọ̀nà àti ẹ̀ka olùgbàlejò nìkan fún yàrá ìdánwò VPN VirtualBox, kí o sì jẹ́ kí àlejò kùnà ní ìdí nígbà tí ojú-ọ̀nà bá ṣubú.
O gbọdọ̀ pinnu iye ẹ̀rọ tí yàrá ìdánwò VPN rẹ yẹ. VM ẹnubodè tí a ṣe ọ̀nà láàárín ẹ̀ka VirtualBox méjì ń tún ìtumọ̀ àdírẹ́sì, ọ̀nà ìpadà àti ipò firewall tí alábàáṣepọ̀ gidi jókòó sẹ́yìn rẹ̀ ṣe. Ẹ̀ka olùgbàlejò nìkan kan fún ọ ní ilẹ̀kùn kan tí a ń ṣàkóso àti kò sí ohunkóhun mìíràn. Ẹ̀yà pẹ̀lú ẹnubodè nílò àlejò mẹ́ta àti tábìlì ọ̀nà tí ìwọ ń tọ́jú; ẹ̀yà olùgbàlejò nìkan nílò àlejò kan àti ìlànà kan. Àwọn ìbéèrè mẹ́ta yà wọ́n sọ́tọ̀, ìkẹta sì pinnu bóyá ìdánwò rẹ lè kọjá rárá.
Dáhùn àwọn ìbéèrè mẹ́ta kí o tó ṣe àdàkọ ohunkóhun
Bẹ̀rẹ̀ pẹ̀lú ohun tí server VPN gbọdọ̀ kíyèsí. Tí server bá ní láti rí àdírẹ́sì orísun tí kì í ṣe ti àlejò ìdánwò, ohun kan gbọdọ̀ túmọ̀ láàárín wọn, ohun yẹn sì gbọdọ̀ jẹ́ router tí ìwọ ń ṣàkóso. Nẹ́tíwọ́kì olùgbàlejò nìkan fún olùgbàlejò ní adapter lórí ẹ̀ka àlejò, kì í ṣe olùtúmọ̀. Nígbà tí àlejò bá ní láti dé ohun kan níta, ìwọ so adapter NAT mọ́, engine NAT ti VirtualBox fúnra rẹ̀ sì tún orísun kọ láìbèèrè lọ́wọ́ rẹ.
Lẹ́yìn náà béèrè bóyá àlejò lè dé ohunkóhun mìíràn yàtọ̀ sí ojú-ọ̀nà. Ìdáhùn yẹn yan inú tàbí olùgbàlejò nìkan, èyí sì ni ìbéèrè tí ọ̀pọ̀lọpọ̀ àpilẹ̀kọ yàrá ìdánwò ń fò ó. Ní ìparí, béèrè ohun tí ó gbọdọ̀ ṣẹlẹ̀ nígbà tí ojú-ọ̀nà bá ṣubú, nítorí èyí ń pinnu ìlànà kì í ṣe ẹ̀kọ́ ìṣètò, yàrá ìdánwò tí ń fi ọ̀nà ayọ̀ nìkan hàn kò ti dán ohunkóhun wò.
| What the test requires | Routed gateway VM | Host-only guest |
|---|---|---|
| Server sees a translated source address | Yes, from your own MASQUERADE rule | No, VirtualBox NAT does it instead |
| The guest has exactly one egress | Yes, while the second adapter faces the tunnel | Only until a NAT adapter is attached |
| Policy is testable during a tunnel failure | Rules live in one place | Rules live on each guest |
So àwọn ipa mẹ́ta pọ̀ pẹ̀lú nẹ́tíwọ́kì inú
Lo àlejò mẹ́ta àti ẹ̀ka méjì tí a sọ orúkọ, ẹnubodè ni ẹ̀rọ kan ṣoṣo tí ó ní adapter lórí méjèèjì:
VBoxManage modifyvm lab-client --nic1 intnet --intnet1 WAN
VBoxManage modifyvm lab-server --nic1 intnet --intnet1 LAN
VBoxManage modifyvm lab-gw --nic1 intnet --intnet1 WAN --nic2 intnet --intnet2 LAN
Kò sí ìgbésẹ̀ ṣíṣe ọ̀tọ̀ fún nẹ́tíwọ́kì inú. Okùn tí ó wà nínú --intnet1 ni ẹ̀ka náà fúnra rẹ̀: ẹ̀rọ méjì ń pín in nìkan tí orúkọ bá bára mu pátápátá, kò sì sí ohunkóhun lórí olùgbàlejò tí ó so mọ́ ọn. Ànímọ́ ìkẹyìn yìí ni ìdí tí yàrá ìdánwò fi ń tún ara rẹ̀ ṣe ní mímọ́, nítorí àwọn ọ̀nà olùgbàlejò, alábàáṣepọ̀ VPN tirẹ̀ àti firewall rẹ̀ kò lè dé ọ̀dọ̀ àwọn àlejò láìròtẹ́lẹ̀. Ẹ̀ka inú kò ní server DHCP pẹ̀lú àyàfi tí o bá fi ọ̀kan kún un, nítorí náà àwọn àdírẹ́sì dúró ṣinṣin ni ọ̀nà tí ó kúrú jù.
Fún alábàáṣepọ̀ ní àdírẹ́sì WAN tirẹ̀ nìkan, ẹnubodè àkọ́kọ́ yóò tọ́ka sí àdírẹ́sì WAN ẹnubodè. Server gba àdírẹ́sì LAN ó sì lo àdírẹ́sì LAN ẹnubodè gẹ́gẹ́ bí ẹnubodè àkọ́kọ́ tirẹ̀. Àlejò tí ó di àdírẹ́sì méjì mú lórí ẹ̀ka kan, tàbí tí ó ní ọ̀nà tí ó sọnù sí ẹ̀ka kejì, ní ọ̀nà tí ó yí router ká, àwọn ìdánwò tí ó wà nísàlẹ̀ yóò sì parọ́ fún ọ.
Mo máa ń tọ́jú fáìlì ọ̀rọ̀ lẹ́gbẹ̀ẹ́ orúkọ VM pẹ̀lú àdírẹ́sì mẹ́rin àti orúkọ ẹ̀ka méjì, mo sì máa ń lẹ̀ ẹ́ sínú gbogbo shell. Ní ọ̀sẹ̀ díẹ̀ lẹ́yìn náà, nígbà tí ìyípadà profáìlì bá ba ohun kan jẹ́, fáìlì yẹn ni ìyàtọ̀ láàárín díbọ́ọ̀gì profáìlì àti díbọ́ọ̀gì ìrántí mi fúnra mi.
Yan inú tàbí olùgbàlejò nìkan fún ẹ̀ka tí kò gbọdọ̀ jo
Ipò olùgbàlejò nìkan ń dá adapter àròtẹ́lẹ̀ lórí olùgbàlejò fúnra rẹ̀, ní ọ̀pọ̀ ìgbà vboxnet0, ó sì fún olùgbàlejò ní àdírẹ́sì lórí ẹ̀ka àlejò. Ìyẹn rọrùn fún ìṣàkóso ṣùgbọ́n ó léwu fún ìdánwò ìyàsọ́tọ̀, nítorí olùgbàlejò lè dé ọ̀dọ̀ àlejò ní tààrà báyìí, gbogbo iṣẹ́ ní ẹ̀gbẹ́ olùgbàlejò sì di ọ̀nà tí ó ṣeé ṣe. Ipò inú kò ní adapter olùgbàlejò rárá. Àwọn ipò méjèèjì ń dàrú ní pẹnlẹ́tì ètò nẹ́tíwọ́kì, nítorí náà ṣàyẹ̀wò ìyàtọ̀ tí a kọ sílẹ̀ dípò àmì (wo ojú-ìwé àlàyé nẹ́tíwọ́kì VirtualBox).
Fún àlejò tí ó gbọdọ̀ lo ojú-ọ̀nà, inú ni àkọ́kọ́ tí ó ní ààbò jù, ẹnubodè sì ni àbájáde kan ṣoṣo. Tí o bá pa olùgbàlejò nìkan mọ́, ka adapter olùgbàlejò gẹ́gẹ́ bí ọ̀nà ìṣàkóso kí o sì sọ ọ́ ní àrójẹ́: olùgbàlejò lè dé ọ̀dọ̀ àlejò, àlejò kò sì gbọdọ̀ lè lo olùgbàlejò gẹ́gẹ́ bí àbájáde.
VBoxManage modifyvm lab-client --nic1 hostonly --hostonlyadapter1 vboxnet0
Ìyàsọ́tọ̀ tí o lè fi hàn ni ìyàsọ́tọ̀ tí o ti ṣètò. Àlejò tí ó ní adapter inú kan, ọ̀nà àkọ́kọ́ ní ẹnubodè àti kò ní adapter NAT kò ní ọ̀nà tí ó yí ẹnubodè ká. Àlejò tí ó ní adapter olùgbàlejò nìkan àti adapter NAT ní ọ̀nà méjì, ọ̀kan nìkan nínú wọn sì ni ọ̀nà tí o fẹ́ dán wò.
Ṣe ọ̀nà àti ìtumọ̀ ní ẹnubodè, lẹ́yìn náà jẹ́ kí ó kùnà ní ìdí
VirtualBox kì í gbé ọ̀rọ̀ kọjá láàárín àwọn ẹ̀ka; àlejò ni ó ń ṣe bẹ́ẹ̀. Nígbà tí VM server VPN wà sẹ́yìn ẹnubodè, tan ìgbékọjá ṣíṣẹ́ kí o sì túmọ̀ ìrìn àjò alábàáṣepọ̀ bí ó ti ń jáde lọ sọ́dọ̀ server:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Pẹ̀lú ìlànà yẹn server rí àdírẹ́sì LAN ẹnubodè dípò ti alábàáṣepọ̀, bẹ́ẹ̀ sì ni alábàáṣepọ̀ gidi sẹ́yìn NAT oníṣẹ́ ń hàn sí orí nẹ́tíwọ́kì. Fi iye sysctl pamọ́ sínú /etc/sysctl.d/ àti ìlànà náà sínú iṣẹ́ firewall tí ìpín náà ń lò, bí bẹ́ẹ̀ kọ́ ìtúnbẹ̀rẹ̀ yóò dá yàrá ìdánwò padà ní ìdákẹ́jẹ́ sí ipò tí a ti ṣe ọ̀nà ṣùgbọ́n tí a kò tíì túmọ̀.
Ìgbékọjá kì í ṣe àṣẹ. Lábẹ́ ìlànà FORWARD àkọ́kọ́ pẹ̀lú iye ACCEPT, àlejò tí ọ̀nà àkọ́kọ́ rẹ̀ tọ́ka sí ẹnubodè yóò jáde nípasẹ̀ adapter tí tábìlì ọ̀nà yàn, yálà ó ní ojú-ọ̀nà tàbí kò ní. Tí ẹnubodè bá tún ní adapter NAT fún fífi àwọn àpò sínú, adapter yẹn jẹ́ àbájáde tí kò ní ìkọ̀kọ̀ tí ó ń ṣiṣẹ́ ní àkókò tí ojú-ọ̀nà ṣubú, ìdánwò VPN-nìkan rẹ kò sì tíì jẹ́ ìdánwò VPN-nìkan rí.
Nígbà tí server wà ní ọ̀nà jíjìn tí ẹnubodè fúnra rẹ̀ sì parí ojú-ọ̀nà, ìpinnu kan náà tọ́ka sí adapter ojú-ọ̀nà, kì í ṣe NIC tí ó dé íńtánẹ́ẹ̀tì:
iptables -P FORWARD DROP
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Pa ìrìn àjò òde ti ojú-ọ̀nà fúnra rẹ̀ àti ọ̀nà ìṣàkóso tí ó wà níta ìlẹ̀ mọ́ ọ̀tọ̀ sí ìrìn àjò tí a ń gbé kọjá. Tí ọ̀nà kan ṣoṣo láti tún ẹnubodè ṣe bá jẹ́ nípasẹ̀ ojú-ọ̀nà tí ìwọ ń díbọ́ọ̀gì, yàrá ìdánwò yóò di ìdánwò títìpa ara ẹni mọ́ ẹ̀yìn. Console serial, adapter ìṣàkóso olùgbàlejò nìkan tàbí àwòrán ipò rere tí a mọ̀ máa ń din owó ju fífi ọwọ́ gba router tí ó ti bà jẹ́ padà.
Ṣàyẹ̀wò ọ̀nà láti ọ̀dọ̀ àlejò, kì í ṣe láti ọ̀dọ̀ olùgbàlejò
Ṣiṣẹ́ jáde. Jẹ́rìí pé alábàáṣepọ̀ dé àdírẹ́sì WAN ẹnubodè, lẹ́yìn náà dé server nípasẹ̀ ẹnubodè, lẹ́yìn náà pé ìsopọ̀ sí ibùdó VPN jáde ó sì padà. Gbígbà lórí adapter méjèèjì ẹnubodè fi hàn bóyá ìdáhùn dé àti bóyá a kó o nù ní ọ̀nà ìpadà, èyí tí gbígbà lórí alábàáṣepọ̀ nìkan kò lè yà sọ́tọ̀:
tcpdump -ni eth0 udp port 1194
tcpdump -ni tun0 udp port 1194
Lẹ́yìn náà fi àbájáde hàn. Béèrè lọ́wọ́ iṣẹ́ ìfihàn àdírẹ́sì láti ọ̀dọ̀ àlejò irú orísun tí ó rí kí o sì fi wé àdírẹ́sì àbájáde ẹnubodè fúnra rẹ̀; tí ìdáhùn bá bára mu pẹ̀lú àdírẹ́sì olùgbàlejò, ọ̀nà tí ó yí ojú-ọ̀nà ká wà. Ṣàyẹ̀wò irú olùyọjáde tí àlejò ń lò ní ti gidi, kí o sì ṣàyẹ̀wò IPv6 lọ́tọ̀, nítorí ẹ̀ka tí IPv6 ti ṣí sílẹ̀ nígbà tí ojú-ọ̀nà ń gbé IPv4 nìkan ń jo nípasẹ̀ àpẹẹrẹ kì í ṣe ní àìròtẹ́lẹ̀.
Ní ìparí, fi ìmọ̀ọ́mọ̀ ba a jẹ́. Dúró ojú-ọ̀nà, tàbí dènà ibùdó òde rẹ̀, kí o sì ṣí ìsopọ̀ tuntun láti ọ̀dọ̀ àlejò. Ó gbọdọ̀ kùnà, ìdí sì gbọdọ̀ jẹ́ èyí tí o lè dárúkọ: kò sí ọ̀nà, ìlànà ìkọ̀sílẹ̀ wà, tàbí olùyọjáde ti kú. Tún ojú-ọ̀nà bẹ̀rẹ̀ kí o sì jẹ́rìí pé àlejò ń sàn láìtún nẹ́tíwọ́kì kọ́. Tí mesh VPN bíi Hamachi tàbí ZeroTier bá ń pín yàrá ìdánwò, rántí pé adapter afárá ń tẹ̀lé orúkọ adapter, kì í ṣe mesh, nítorí náà a gbọdọ̀ tún afárá tọ́ka lẹ́yìn tí alábàáṣepọ̀ ti fi adapter àròtẹ́lẹ̀ tirẹ̀ sínú.
VBoxManage list bridgedifs
VBoxManage modifyvm lab-client --bridgeadapter1 <mesh-adapter-name>
Pínpín ojú-ọ̀nà àlejò pẹ̀lú olùgbàlejò ń ṣàfihàn ìṣòro náà. Títọ́ka ọ̀nà àkọ́kọ́ olùgbàlejò sí àlejò ń ṣiṣẹ́, proxy nínú àlejò pẹ̀lú ń ṣiṣẹ́; NAT nípasẹ̀ olùgbàlejò kò gbé ojú-ọ̀nà àlejò fún ìrìn àjò tí olùgbàlejò bẹ̀rẹ̀. Fi orúkọ ẹ̀ka àti ìlànà firewall pamọ́ sí ibi kan, ya àwòrán ipò tí ń ṣiṣẹ́, kí o sì kọ àdírẹ́sì orísun tí server kíyèsí. Nígbà náà ìyípadà profáìlì tí ó kàn yóò náwó ìgbésẹ̀ script kan dípò yàrá ìdánwò tí a tún kọ́.