Помощник на сървъра OpenVPN: мрежа плюс маска, никога CIDR
Помощникът на сървъра IPv4 приема подравнена мрежа и точкова маска, а не наставка CIDR. Проверете обхвата, потвърдете пула в журнала, след което променете размера безопасно.
Ред на сървъра, който смесва наставка CIDR с точкова маска, спира демона, преди той изобщо да отвори порт. Помощникът server за IPv4 иска два отделни аргумента: подравнен мрежов адрес, след това маската в точкова форма. Всичко останало на този ред е предположение, а предположението е мястото, където размерите на пула и маските на клиентите се объркват.
Двата аргумента, които помощникът приема
Напишете първо мрежата и след това маската, без нищо да е прилепено към адреса:
server 10.72.16.0 255.255.240.0Това е формата за /20. Редът по-долу е грешката и тя се проваля при разбора на опциите, а не по време на изпълнение:
server 10.72.16.0/20 255.255.240.0Дръжте двете идеи отделно, когато отстранявате това. Дължината на префикса и точковата маска описват един и същ обхват, но помощникът не приема и двете наведнъж, а отхвърленият ред дава грешка в опциите, която назовава директивата, а не аритметиката.
Подравнете мрежата, преди да въведете маската
Първият адрес е мрежовият адрес на обхвата, а не удобен клиентски адрес вътре в него. За /20 обхватът върви от 10.72.16.0 до 10.72.31.255 и само първият от тях е валиден мрежов аргумент. /21 използва 255.255.248.0 и обхваща 10.72.16.0 до 10.72.23.255, така че неговият ред е server 10.72.16.0 255.255.248.0.
Смяната на префикса променя обхвата и нищо друго. Тя не променя колко адреса получава един клиент, защото това е свойство на топологията, а не на маската на този ред.
Потвърдете пула от страната на сървъра
Стартирайте инстанцията на преден план с подробно журналиране и прочетете редовете, които помощникът извежда. Пулът, който е изградил, се отпечатва при стартиране, което е по-надеждно от това да смятате аритметиката на ръка:
openvpn --config /etc/openvpn/server.conf --verb 4 --dev tun9 --port 1195Търсете обобщението на пула близо до горната част на изхода. То изброява обхвата, който помощникът е резервирал, и ако този обхват не съвпада с намерението ви, аргументите на реда са грешни, независимо какво казва аритметиката на маската.
След това свържете един клиент и намерете реда, който записва адреса, който му е даден. Този един адрес, до обхвата на пула, ви казва дали клиентът е попаднал в резервирания блок, или някъде, където не сте очаквали. Ако двете не съвпадат, поправете аргументите, а не клиента. Ако съвпадат и клиентът все още не може да достигне нищо, пулът никога не е бил проблемът.
Четете маската на клиента с оглед на топологията
Клиент, който показва /30 на тунелния си интерфейс, не е доказателство за счупен пул. При адресиране точка-точка всеки клиент получава малък блок и маската на интерфейса му описва този блок, докато пулът на сървъра покрива съвкупността. При топология на подмрежа маската на клиента вместо това съвпада с маската на пула. Следователно само маската ви казва коя топология е в действие, а не дали пулът е написан правилно.
Проверете конфигурираната топология и зададения адрес заедно, преди да правите заключение:
ip -4 addr show tun0Ако адресът е вътре в пула и маската е по-тясна от пула, това е топологията, която си върши работата. Ако адресът е извън пула, пулът е грешен и никакво инспектиране от страна на клиента няма да го поправи.
Промяна на работещ пул
Изберете обхват, който не се припокрива с текущия пул, LAN или какъвто и да е маршрут, вече изпратен към клиентите. Припокриването е отказът, който преживява рестарт и след дни се появява като един сайт, недостъпен от една посока.
Променете реда, рестартирайте и прочетете отново пула при стартиране, преди да пуснете потребителите обратно. Ако новият обхват се сблъска с нещо, същият изход при стартиране го показва веднага, а връщането назад е редакция на един ред плюс още един рестарт.
Запазете стария обхват резервиран известно време след промяната. Клиентите, които се свързват късно, все още могат да държат адрес от предишния пул, а нов обхват, който използва повторно тези адреси, създава дублирани назначения, които изглеждат като маршрутна повреда. Ръководството на OpenVPN 2.6 документира аргументите на помощника и неговото разширяване, което си струва да прочетете, преди да приемете, че дадена директива използва същата нотация като съседната.