Сиздин VPN лабораторияңыз канча механизмге татыктуу экенин чечүү керек. Эки VirtualBox сегментинин ортосундагы маршрутталган шлюз VM дарек которуусун, кайтуу жолун жана чыныгы кардардын артында отурган firewall ордун кайра жаратат. Бир гана хост үчүн сегмент сизге бир көзөмөлдөнгөн эшик берет, башка эч нерсе жок. Шлюз версиясы үч конокту жана сиз кармаган маршруттоо таблицасын талап кылат; хост үчүн гана версия бир конокту жана бир саясатты талап кылат. Аларды үч суроо ажыратат, үчүнчүсү сиздин тестиңиздин таптакыр өтө аларын чечет.

Бир нерсени клондоодон мурун үч суроого жооп бериңиз

VPN сервери эмнени байкоосу керек экенинен баштаңыз. Эгер сервер тест коногунун эмес баштапкы дарегин көрүүсү керек болсо, алардын ортосунда бир нерсе которушу керек, жана ал бир нерсе сиз көзөмөлдөгөн маршрутизатор болушу тийиш. Хост үчүн гана тармак хостко коноктун сегментинде адаптер берет, котормочу эмес. Андан кийин конок сыртка чыгышы керек болгондо, сиз NAT адаптерин туташтырасыз, ал эми VirtualBoxтун өз NAT кыймылдаткычы сизден сурабастан булакты кайра жазат.

Андан кийин конок туннелден башка нерсеге жете алабы деп сураңыз. Бул жооп ички же хост үчүн гана тандоону жасайт, жана ушул суроону лабораториялык жазуулардын көбү өткөрүп жиберет. Акырында туннел кулаганда эмне болушу керектигин сураңыз, анткени ал топологияны эмес, саясатты чечет, ал эми бактылуу жолду гана далилдеген лаборатория дээрлик эч нерсени текшерген жок.

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

Үч ролду ички тармактар менен туташтырыңыз

Үч конок жана эки аталган сегмент колдонуңуз, шлюз экөөндө тең адаптери бар жалгыз машина болсун:

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

Ички тармак үчүн өзүнчө түзүү кадамы жок. --intnet1 ичиндеги сап — сегменттин өзү: эки машина аны ысымы так дал келгенде гана бөлүшөт, ал эми хосттогу эч нерсе ага туташкан эмес. Ушул акыркы касиет лабораториянын таза кайталанышынын себеби, анткени хосттун маршруттары, анын өз VPN кардары жана firewall кокустан конокторго жете албайт. Ички сегментте DHCP сервери да жок, эгер сиз кошпосоңуз, ошондуктан статикалык даректер эң кыска жол.

Кардарга анын WAN дарегин гана бериңиз, демейки шлюз шлюздун WAN дарегине шилтесин. Сервер LAN дарегин алат жана шлюздун LAN дарегин өзүнүн демейки шлюзу катары колдонот. Бир сегментте эки даректи кармаган же башка сегментке адашкан маршруту бар конок маршрутизаторду айланып өтүүчү жолго ээ, жана төмөнкү тесттер сизге жалган айтат.

Мен VM аттарынын жанында төрт дарек жана эки сегмент аты бар тексттик файл кармайм жана аны ар бир shellге чаптайм. Жумалар өткөндөн кийин, профиль өзгөрүүсү бир нерсени бузганда, ал файл профилди оңдоо менен өз эсимди оңдоонун ортосундагы айырма болот.

Агып кетпеши керек сегмент үчүн ички же хост үчүн гана тандагыла

Хост үчүн гана режим хосттун өзүндө виртуалдык адаптер түзөт, адатта vboxnet0, жана хостко коноктун сегментинде дарек берет. Бул администрлөө үчүн ыңгайлуу жана обочолонуу тести үчүн өлүмгө алып келет, анткени хост эми конокко түз жете алат жана хост тараптагы ар бир кызмат мүмкүн болгон жолго айланат. Ички режимде хост адаптери такыр жок. Эки режимди тармак жөндөөлөрү панелинде чаташтыруу оңой, ошондуктан белгини эмес, документтелген айырманы текшериңиз (VirtualBox тармак деталдары баракчасын караңыз).

Туннелди сөзсүз колдонууга тийиш конок үчүн ички режим коопсуз демейки болуп саналат, шлюз — жалгыз чыгуу жолу. Эгер хост үчүн гана режимди кармасаңыз, хост адаптерин башкаруу жолу катары караңыз жана муну үнүңүздү чыгарып айтыңыз: хост конокко жете алат, ал эми конок хостту чыгуу катары колдоно албашы керек.

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

Сиз далилдей алган обочолонуу — сиз конфигурациялаган обочолонуу. Бир ички адаптери, шлюзде демейки маршруту бар жана NAT адаптери жок коноктун шлюзду айланып өтүүчү жолу жок. Хост үчүн гана адаптери жана NAT адаптери бар коноктун эки жолу бар, жана алардын бирөө гана сиз текшерүүнү көздөгөн жол.

Шлюзде маршруттаңыз жана которуңуз, андан кийин аны жабык түрдө ишке жарамсыз кылыңыз

VirtualBox сегменттердин ортосунда өткөрбөйт; муну конок жасайт. VPN серверинин VM шлюздун артында турганда, өткөрүүнү иштетиңиз жана кардардын трафигин серверге карай чыкканда которуңуз:

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

Бул эреже менен сервер кардардын ордуна шлюздун LAN дарегин көрөт, жана оператордун NAT артындагы чыныгы кардар тармак башына дал ушундай көрүнөт. sysctl маанисин /etc/sysctl.d/ ичинде, эрежени дистрибутив колдонгон firewall кызматында сактаңыз, болбосо кайра жүктөө лабораторияны үнсүз түрдө маршрутталган, бирок которулбаган абалга кайтарат.

Өткөрүү — авторизация эмес. ACCEPT демейки FORWARD саясаты боюнча демейки маршруту шлюзге шилтеген конок маршруттоо таблицасы тандаган интерфейстен чыгат, туннел болсун же болбосун. Эгер шлюзде пакеттерди орнотуу үчүн NAT адаптери да болсо, ал адаптер туннел кулаган учурда иштеген шифрленбеген чыгуу жолу, ал эми сиздин VPN гана тестиңиз эч качан VPN гана тести болгон эмес.

Сервер алыс болуп, туннелди шлюз өзү бүткөндө, ошол эле чечим интернетке жеткен NICке эмес, туннел интерфейсине шилтейт:

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

Туннелдин өз сырткы ташуусун жана тилкенин сыртындагы башкаруу маршрутун өткөрүлүүчү трафиктен өзүнчө кармаңыз. Эгер шлюзду оңдоонун жалгыз жолу сиз оңдоп жаткан туннел болсо, лаборатория кулпулануу көнүгүүсүнө айланат. Сериялык консоль, хост үчүн гана башкаруу адаптери же белгилүү жакшы абалдын сүрөтү бузулган маршрутизаторду кол менен калыбына келтирүүдөн арзан.

Жолду хосттон эмес, коноктон текшериңиз

Сыртка карай иштеңиз. Кардар шлюздун WAN дарегине жете аларын, андан кийин шлюз аркылуу серверге жете аларын, андан кийин VPN портуна туташуу чыгып, кайтарын ырастаңыз. Шлюздун эки интерфейсинде тең кармоо жооп келерин жана кайтуу жолунда ыргытыларын көрсөтөт, муну тек кардарда кармоо ажырата албайт:

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

Андан кийин чыгууну далилдеңиз. Коноктон даректерди чагылдыруу кызматынан кайсы булакты көрөрүн сурап, аны шлюздун өзүнүн чыгуу дареги менен салыштырыңыз; эгер жооп хосттун дарегине дал келсе, туннелди айланып өтүүчү жол бар. Конок иш жүзүндө кайсы resolverди колдонорун текшериңиз жана IPv6ны өзүнчө текшериңиз, анткени IPv6 иштетилген, ал эми туннел тек IPv4 ташыган сегмент кокустан эмес, долбоор боюнча агат.

Акырында аны атайылап бузуңуз. Туннелди токтотуңуз же анын сырткы портун тосколуңуз жана коноктон жаңы туташуу ачыңыз. Ал ишке жарамсыз болушу керек, жана себеби сиз атай ала турган болушу тийиш: маршрут жок, баш тартуу эрежеси бар же resolver өлүк. Туннелди кайра иштетиңиз жана конок тармакты кайра курууга жумшабастан калыбына келерин ырастаңыз. Эгер Hamachi же ZeroTier сыяктуу mesh VPN лабораторияны бөлүшсө, көпүрөлөнгөн адаптер meshке эмес, адаптердин атына багынарын унутпаңыз, ошондуктан кардар өзүнүн виртуалдык адаптерин орноткондон кийин көпүрөнү кайра багыттоо керек.

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

Коноктун туннелин хост менен бөлүшүү маселени чагылдырат. Хосттун демейки маршрутун конокко багыттоо иштейт, коноктун ичиндеги proxy да иштейт; хост аркылуу NAT хост баштаган трафик үчүн коноктун туннелин ташыбайт. Сегмент аттарын жана firewall эрежелерин бир жерде сактаңыз, иштеп турган абалдын сүрөтүн тартыңыз жана сервер байкаган булак дарегин жазып алыңыз. Ошондо кийинки профиль өзгөрүүсү кайра курулган лабораториянын ордуна бир скрипт иштетүүгө турат.

Тектеш макалалар