Три приватне LAN мреже могу се срести на једном чворишту без тога да било која локација мора да познаје унутрашњу структуру осталих, и цео дизајн почива на четири кратке конфигурационе одлуке. Оно што га чини функционалним није егзотична функција протокола, већ план адреса који нико не мора да погађа, уз руте по клијенту које говоре чворишту која огранак поседује који префикс. Ако је било шта од тога погрешно, тунел се ипак подиже, и управо то чини отказ збуњујућим.

Прођите кроз кораке по реду. Сваки зависи од плана из претходног корака, и ниједан не захтева ново сертификационо тело.

Почните планом који нико не мора да погађа

Запишите четири непреклопљена префикса пре него што додирнете конфигурациону датотеку: LAN само чворишта, LAN сваког огранка и pool који се додељује клијентима у покрету. Непреклапање је оно што све остало држи једноставним, јер преклопљени опсези претварају рутирање у загонетку најдужег поклапања коју ниједна конфигурација по клијенту не поправља. Затим потврдите која машина је подразумевани гејтвеј за сваку LAN мрежу, јер рутер огранка који није гејтвеј сопствене LAN мреже мора да инсталира удаљене руте на сасвим другом месту. На крају, утврдите аутентификована имена која идентификују сваки огранак, јер су та имена кључеви по којима се траже датотеке по клијенту.

Илустративни план држи pool далеко од три LAN мреже. Ваш ће бити другачији, и једино строго правило је да се ниједна два опсега не преклапају.

Hub LAN        172.20.0.0/24
Branch A LAN   172.21.0.0/24
Branch B LAN   172.22.0.0/24
VPN pool       10.77.0.0/24

identity branch-a owns 172.21.0.0/24
identity branch-b owns 172.22.0.0/24

Реците кернелу чворишта где су огранци

Чворишту су потребне две информације по огранку: кернел рута која шаље префикс у тунелски уређај и iroute ставка која говори OpenVPN процесу који клијент је поседује. Сама кернел рута испоручује пакете у тунел и ту се зауставља, јер демон још мора да одлучи који peer треба да их прими. Сама iroute ставка оставља те пакете у кернелу без руте коју би следили. Оба реда припадају конфигурацији коју демон заиста учитава, и то вреди проверити пре него што отклањате било шта друго.

dev tun
topology subnet
server 10.77.0.0 255.255.255.0
disable-dco

route 172.21.0.0 255.255.255.0
push "route 172.20.0.0 255.255.255.0"
client-config-dir /etc/openvpn/ccd
route 172.22.0.0 255.255.255.0

Држите client-to-client искљученим када кернел треба да буде тачка спровођења правила. Та опција преноси саобраћај између peer-ова унутар демона, што је згодно и такође значи да ваша правила прослеђивања никада не виде ток. Све у наставку претпоставља да кернел види сваки пакет између огранака.

Дајте сваком огранку руте које су му потребне

Сваком огранку су потребне руте до осталих огранака и до LAN мреже чворишта, а рута до сопствене повезане LAN мреже му није потребна. Гурајте удаљене префиксе са чворишта уместо да их лепите у сваки рутер, тако да четврта локација касније значи једну нову датотеку по клијенту уместо четири измене. Датотека по клијенту носи и ред iroute, који држи власништво и оглашавање на истом месту. Учините директоријум и његове датотеке читљивим према моделу привилегија сервера, иначе претрага не успева без поруке.

# /etc/openvpn/ccd/branch-a
iroute 172.21.0.0 255.255.255.0
push "route 172.22.0.0 255.255.255.0"

Четврта локација прати исти образац: засебно аутентификовано име, поседовани префикс, кернел рута на чворишту, iroute ставка и оглашавања само локацијама којима је дозвољено да је достигну.

Тестирајте у оба смера пре него што кажете да је готово

Укључите IPv4 прослеђивање на сва три рутера, затим потврдите да firewall дозвољава предвиђене токове у оба смера, јер једносмерни тест пролази са поквареним повратним путем чешће него што ико очекује. Између локација није потребно превођење изворне адресе, и управо очување оригиналног извора омогућава сваком огранку да примени сопствену политику на захтев.

Тестирајте са хоста на LAN мрежи једног огранка до сервиса на другој, затим окрените смер, па тестирајте из огранка до LAN мреже чворишта. Та три резултата су различити докази, и ниједан не подразумева остале. Ако рутер огранка није подразумевани гејтвеј његове LAN мреже, инсталирајте удаљене префиксе на правом гејтвеју и укључите и pool када тунелски клијенти морају да започну везе у ту LAN мрежу.

Забележите план, датотеке по клијенту и firewall правила као један документ, јер ће следеће додавање локације бити оцењено према њима.

Дизајн се држи заједно јер сваки слој има један задатак: план одржава префиксе јединственим, кернел рута премешта пакете, iroute именује власника, а firewall одлучује шта је дозвољено. Када се нешто поквари, тај списак је и редослед за проверу.

Повезани чланци