Клиентот одбива да стартува и се жали дека не може да врзе локална адреса, а очигледното решение изгледа како да се упати кон адресата на тунелот што ја очекува. Тоа не може да работи, а причината вреди да се разбере: пред да постои тунелот нема внатрешна адреса, а сокетот што контактира со серверот мора да постои прв. Вклучени се две различни адреси и само една од нив може да се избере локално.

Грешката при врзување именува локална адреса

Кога OpenVPN известува дека не може да врзе локална адреса, зборува за транспортниот сокет: крајната точка UDP или TCP што ја носи шифрираната врска до партнерот.

Експлицитната local директива бара од демонот да го врзе тој сокет за одредена локална адреса. Адресата мора да постои во мрежниот именски простор каде што работи процесот и мора да може да ѝ се додели во моментот кога клиентот стартува.

Јавната адреса преведена на рутер или на работ на облакот не е локална адреса што демонот може да ја врзе, иако е адресата што ја гледа серверот. Таа разлика објаснува зошто еден профил работи дома, а паѓа на облачна инстанца. Таа исто така објаснува зошто додавањето на јавната адреса на loopback интерфејс не помага, бидејќи транспортот тогаш би излегувал од адреса на која мрежата не може да врати одговор. Прочитајте ја листата на интерфејси пред да го уредите профилот.

Што всушност избираат local и remote

remote ја именува партнерската страна со која треба да се контактира. local го врзува блискиот крај на истиот сокет. nobind му дозволува на оперативниот систем да ги избере и локалната адреса и портата, поради што клиентите зад домашни рутери обично работат без ниту една од двете директиви.

Ниту една од директивите нема никаква врска со адресата внатре во тунелот.

Во контејнер или мрежен именски простор важи истото правило со потесни граници: адресите на домаќинот не се присутни внатре, па линијата local копирана од конфигурацијата на домаќинот паѓа од сосема друга причина отколку погрешна адреса.

ip -brief address show
ip route get 203.0.113.10

Внатрешната адреса доаѓа од серверот

Адресата внатре во тунелот се договара или се доделува откако ќе се воспостави контролниот канал. Со динамичен базен серверот одлучува за неа при поврзувањето, а со конфигурација специфична за клиентот таа може да биде фиксна по идентитет.

Пишувањето local со внатрешна адреса не бара од серверот да ја додели таа адреса. Во најдобар случај врзувањето паѓа; во најлош случај клиентот наоѓа неповрзана адреса на домаќин со истата вредност и почнува да ја користи за транспортот.

И интерфејсите што треба да се читаат се различни. Параметрите на ifconfig и конфигурацијата на базенот го опишуваат внатрешното, додека remote, local, proto и nobind го опишуваат надворешното. Одвојувањето на двете листи објаснува речиси секој збунувачки пример што ќе го најдете на форум. Прирачникот за OpenVPN 2.6 ги документира во одделни секции токму поради таа причина.

Стапицата: полн тунел што го фаќа сопствениот транспорт

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

Ако го закачите транспортот за одредена локална адреса и потоа го смените патот што го користи таа адреса, надворешната врска може да се загуби, додека внатрешното останува конфигурирано. Тунелот продолжува да известува дека е поврзан бидејќи внатрешното е во ред. Само транспортот е расипан, и затоа логовите се читаат како противречности.

Симптомите тогаш изгледаат како тунел што се поврзува и замрзнува, или како тунел што во циклус повторно се поврзува без корисна грешка. Проверете ја рутата до адресата на партнерот пред да проверите нешто внатре во тунелот и потврдете дека локалната адреса што сте ја врзале припаѓа на интерфејсот што го очекувавте.

Навика што ја спречува збунетоста

Прочитајте ја секоја адреса во профилот и пред уредување одлучете на кој слој ѝ припаѓа.

Ако го именува далечниот крај на транспортот или го врзува неговиот близок крај, тоа е надворешна адреса и мора да постои пред стартувањето. Ако опишува што се случува внатре во тунелот, доаѓа од серверот или од топологијата, и ниту една локална директива не може да ја замени.

Запишете ги двете листи во белешките за распоредување до профилот. Следната сесија за решавање проблеми тогаш ќе започне со слојот, а не со претпоставка.

Поврзани статии