Unahitaji kuamua ni mashine ngapi maabara yako ya VPN inastahili. VM ya lango iliyoelekezwa kati ya sehemu mbili za VirtualBox huiga utafsiri wa anwani, njia ya kurudi na nafasi ya firewall ambayo mteja halisi hukaa nyuma yake. Sehemu moja ya mwenyeji pekee inakupa mlango mmoja unaodhibitiwa na hakuna kingine. Toleo la lango linagharimu wageni watatu na jedwali la uelekezaji unalotunza; toleo la mwenyeji pekee linagharimu mgeni mmoja na sera moja. Maswali matatu huwatenganisha, na la tatu huamua kama jaribio lako linaweza kufaulu hata kidogo.

Jibu maswali matatu kabla ya kunakili kitu chochote

Anza na kile seva ya VPN inapaswa kuangalia. Ikiwa seva inapaswa kuona anwani ya chanzo ambayo si ya mgeni wa jaribio, kitu lazima kitafsiri kati yao, na kitu hicho lazima kiwe kielekezaji unachodhibiti. Mtandao wa mwenyeji pekee humpa mwenyeji adapta kwenye sehemu ya mgeni, si mtafsiri. Mgeni anapohitaji kufikia kitu nje, unaunganisha adapta ya NAT, na injini ya NAT ya VirtualBox yenyewe huandika upya chanzo bila kukuuliza.

Kisha uliza ikiwa mgeni anaweza kufikia kitu kingine chochote isipokuwa kupitia handaki. Jibu hilo huchagua la ndani au la mwenyeji pekee, na hili ndilo swali ambalo maandishi mengi ya maabara huliruka. Mwishowe, uliza ni nini lazima kitokee handaki linapoanguka, kwa sababu hilo huamua sera na si topolojia, na maabara inayothibitisha njia ya furaha pekee haijajaribu karibu chochote.

What the test requiresRouted gateway VMHost-only guest
Server sees a translated source addressYes, from your own MASQUERADE ruleNo, VirtualBox NAT does it instead
The guest has exactly one egressYes, while the second adapter faces the tunnelOnly until a NAT adapter is attached
Policy is testable during a tunnel failureRules live in one placeRules live on each guest

Unganisha majukumu matatu kwa mitandao ya ndani

Tumia wageni watatu na sehemu mbili zenye majina, na lango liwe mashine pekee iliyo na adapta kwa zote mbili:

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

Hakuna hatua tofauti ya kuunda mtandao wa ndani. Kamba iliyo ndani ya --intnet1 ndiyo sehemu yenyewe: mashine mbili huishiriki tu ikiwa jina linalingana kabisa, na hakuna kitu kwenye mwenyeji kilichounganishwa nayo. Sifa hii ya mwisho ndiyo sababu maabara hujirudia kwa usafi, kwa sababu njia za mwenyeji, mteja wake wa VPN na firewall yake haziwezi kuwafikia wageni kwa bahati mbaya. Sehemu ya ndani pia haina seva ya DHCP isipokuwa uongeze moja, kwa hiyo anwani zisizobadilika ndiyo njia fupi zaidi.

Mpe mteja anwani yake ya WAN pekee, na lango la msingi lielekee anwani ya WAN ya lango. Seva hupokea anwani ya LAN na hutumia anwani ya LAN ya lango kama lango lake la msingi. Mgeni anayehifadhi anwani mbili kwenye sehemu moja, au ana njia iliyopotea kuelekea sehemu nyingine, ana njia ya kuzunguka kielekezaji, na majaribio ya chini yatakudanganya.

Mimi huweka faili ya maandishi kando ya majina ya VM yenye anwani nne na majina mawili ya sehemu, na kuibandika kwenye kila shell. Wiki kadhaa baadaye, mabadiliko ya wasifu yanapovunja kitu, faili hiyo ndiyo tofauti kati ya kurekebisha wasifu na kurekebisha kumbukumbu yangu mwenyewe.

Chagua la ndani au la mwenyeji pekee kwa sehemu ambayo haipaswi kuvuja

Hali ya mwenyeji pekee huunda adapta ya mtandaoni kwenye mwenyeji mwenyewe, kwa kawaida vboxnet0, na humpa mwenyeji anwani kwenye sehemu ya mgeni. Hiyo ni rahisi kwa utawala na mbaya kwa jaribio la kutenganisha, kwa sababu mwenyeji sasa anaweza kumfikia mgeni moja kwa moja na kila huduma upande wa mwenyeji inakuwa njia inayowezekana. Hali ya ndani haina adapta ya mwenyeji kabisa. Hali hizo mbili huchanganywa kwa urahisi kwenye paneli ya mipangilio ya mtandao, kwa hiyo angalia tofauti iliyoandikwa na si lebo (tazama ukurasa wa maelezo ya mtandao ya VirtualBox).

Kwa mgeni ambaye lazima atumie handaki, la ndani ndilo chaguo-msingi salama zaidi, na lango ndilo njia pekee ya kutoka. Ikiwa unabakiza la mwenyeji pekee, chukulia adapta ya mwenyeji kama njia ya usimamizi na sema hivyo kwa sauti: mwenyeji anaweza kumfikia mgeni, na mgeni hapaswi kuweza kutumia mwenyeji kama njia ya kutoka.

VBoxManage modifyvm lab-client --nic1 hostonly --hostonlyadapter1 vboxnet0

Kutenganisha unakoweza kuthibitisha ndiko kutenganisha uliyosanidi. Mgeni aliye na adapta moja ya ndani, njia ya msingi kwenye lango na bila adapta ya NAT hana njia inayopita lango. Mgeni aliye na adapta ya mwenyeji pekee na adapta ya NAT ana njia mbili, na moja tu kati yao ndiyo uliyokusudia kujaribu.

Elekeza na tafsiri kwenye lango, kisha lifanye lishindwe likiwa limefungwa

VirtualBox haipitishi kati ya sehemu; mgeni hufanya hivyo. VM ya seva ya VPN ikiwa nyuma ya lango, washa upitishaji na tafsiri trafiki ya mteja inapotoka kuelekea seva:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Kwa kanuni hiyo seva huona anwani ya LAN ya lango badala ya ya mteja, na hivyo mteja halisi aliye nyuma ya NAT ya mtoa huduma huonekana kwa kichwa cha mtandao. Hifadhi thamani ya sysctl ndani ya /etc/sysctl.d/ na kanuni katika huduma ya firewall ambayo usambazaji hutumia, vinginevyo kuwasha upya kutairudisha maabara kimyakimya kwenye hali iliyoelekezwa lakini isiyotafsiriwa.

Upitishaji si idhini. Chini ya sera ya msingi ya FORWARD yenye thamani ya ACCEPT, mgeni ambaye njia yake ya msingi inaelekea lango hutoka kupitia kiolesura ambacho jedwali la uelekezaji huchagua, liwe na handaki au la. Ikiwa lango pia lina adapta ya NAT kwa usakinishaji wa vifurushi, adapta hiyo ni njia ya kutoka isiyosimbwa inayofanya kazi wakati handaki linapoanguka, na jaribio lako la VPN pekee halikuwa kamwe jaribio la VPN pekee.

Seva inapokuwa mbali na lango lenyewe linamaliza handaki, uamuzi huo huo huelekea kiolesura cha handaki, si NIC inayofikia intaneti:

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

Weka usafiri wa nje wa handaki lenyewe na njia ya usimamizi ya nje ya mkondo kando na trafiki inayopitishwa. Ikiwa njia pekee ya kurekebisha lango ni kupitia handaki unalotatua, maabara inakuwa mazoezi ya kujifungia nje. Koni ya mfululizo, adapta ya usimamizi ya mwenyeji pekee, au picha ya hali nzuri inayojulikana ni nafuu kuliko kurejesha kielekezaji kilichovunjika kwa mkono.

Thibitisha njia kutoka kwa mgeni, si kutoka kwa mwenyeji

Fanya kazi kuelekea nje. Thibitisha kwamba mteja anafikia anwani ya WAN ya lango, kisha seva kupitia lango, kisha kwamba muunganisho wa lango la VPN unatoka na kurudi. Unasaji kwenye violesura vyote viwili vya lango huonyesha kama jibu linafika na linatupwa kwenye njia ya kurudi, jambo ambalo unasaji kwa mteja pekee hauwezi kutofautisha:

tcpdump -ni eth0 udp port 1194
tcpdump -ni tun0 udp port 1194

Kisha thibitisha njia ya kutoka. Uliza kutoka kwa mgeni huduma ya kuakisi anwani ni chanzo gani inaona na linganisha na anwani ya kutoka ya lango lenyewe; ikiwa jibu linalingana na anwani ya mwenyeji, kuna njia ya kuzunguka handaki. Angalia ni kitatuzi kipi mgeni hutumia kwa kweli, na angalia IPv6 kivyake, kwa sababu sehemu ambayo IPv6 imewashwa wakati handaki linabeba IPv4 pekee huvuja kwa muundo na si kwa bahati.

Mwishowe, ivunje kwa makusudi. Simamisha handaki, au zuia lango lake la nje, na fungua muunganisho mpya kutoka kwa mgeni. Lazima ushindwe, na sababu lazima iwe ile unayoweza kuitaja: hakuna njia, kuna kanuni ya kukataa, au kitatuzi kimekufa. Anzisha upya handaki na thibitisha kwamba mgeni anapona bila kujenga upya mtandao. Ikiwa mesh VPN kama Hamachi au ZeroTier inashiriki maabara, kumbuka kwamba adapta iliyofungwa daraja hufuata jina la adapta, si mesh, kwa hiyo daraja lazima lielekezwe upya baada ya mteja kusakinisha adapta yake ya mtandaoni.

VBoxManage list bridgedifs
VBoxManage modifyvm lab-client --bridgeadapter1 <mesh-adapter-name>

Kushiriki handaki la mgeni na mwenyeji huakisi tatizo. Kuelekeza njia ya msingi ya mwenyeji kwa mgeni hufanya kazi, na proksi ndani ya mgeni pia; NAT kupitia mwenyeji haibebi handaki la mgeni kwa trafiki ambayo mwenyeji alianzisha. Hifadhi majina ya sehemu na kanuni za firewall mahali pamoja, piga picha ya hali inayofanya kazi, na andika anwani ya chanzo ambayo seva iliona. Kisha mabadiliko ya wasifu yajayo yatagharimu mbio moja ya script badala ya maabara iliyojengwa upya.

Makala zinazohusiana