Две нагорни врски, еден тунел, и сообраќајот излегува преку онаа што не сте ја избрале. Приватните подмрежи се достапни, дневникот пријавува успешна врска, и токму измерената врска го пренесува. Ништо во излезот на OpenVPN не спомнува порта, бидејќи клиентот никогаш не избрал ниту една. Отворил сокет кон далечна адреса и му го препуштил на јадрото да одлучи како да ја достигне таа адреса.

Адресата на тунелот не е крајната точка

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

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

Најдете ја адресата на која клиентот навистина се јавил

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

ss -tunp | grep -i openvpn
journalctl -u openvpn-client@work --no-pager | grep -i "Peer Connection Initiated"

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

Проверете го и семејството на адреси. Профил со двоен стек може да се поврзе преку IPv6, додека вашиот исклучок покрива само IPv4, и тогаш сообраќајот следи друго правило од она што сте го напишале. Истото важи за прокси што одговара во името на крајната точка. Двата случаи даваат тунел што работи додека вашата рута не прави ништо.

Закачете ја крајната точка и прочитајте го редот на политиката

Рутата до домаќин е поспецифична од која било стандардна рута. Затоа /32 за адресата на партнерот победува во табелата што ја содржи. Вообичаената форма изречно ги наведува портата и уредот:

ip route add 203.0.113.40/32 via 192.168.10.1 dev eth0

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

ip rule show
ip route get 203.0.113.40

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

Кога крајната точка се поместува

Име на домаќин што се решава на повеќе адреси ја поништува постојаната /32 веднаш штом одговорот се промени. Профилот со повеќе remote линии го има истиот проблем, бидејќи клиентот може да слета на која било од нив. Освежувајте ја рутата од сопствените куки за животен циклус на клиентот наместо да ја додавате рачно. up скрипта што го чита договорениот партнер и ја инсталира рутата до домаќин го држи исклучокот усогласен со реалноста, а соодветна down скрипта го отстранува.

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

Држете ја внатрешната политика одделно

Поместувањето на надворешната патека не дава пристап до нова приватна подмрежа и не менува кои дестинации серверот ги турка во тунелот. Рутата на долниот слој го избира кабелот; турканите рути избираат што влегува во тунелот. Токму одвојувањето на тие две одлуки ја прави поделбата предвидлива.

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

Потврдете го резултатот со две независни набљудувања: локалната адреса и уредот на сокетот, и рутата во која се решава приватната дестинација. Кога двете се совпаѓаат со вашата намера, поделбата е вистинска. Прирачникот за OpenVPN 2.6 ги покрива опциите remote и локално прицврстување што одлучуваат на која адреса клиентот се јавува.

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