Започнувате VPN-клиент преку SSH? Прво прикачете ја сопствената рута
Клиент со полн тунел ја препишува табелата што го носи вашиот SSH одговор. Прикачете една рута до домаќинот низ старата порта или стартувајте го клиентот во сопствениот именски простор.
Преку SSH влегувате на домаќин за градење, го стартувате VPN-клиентот на него, и сесијата престанува да одговара. Ништо не се сруши, и ништо не изгледа погрешно конфигурирано во очигледната смисла. Клиентот инсталираше стандардна рута, па одговорите до вашата работна станица сега излегуваат низ тунелот, каде адресата на вашата работна станица не е рутирачка. Интересното е што овој исход беше предвидлив, а поправката е една рута запишана пред клиентот да стартува. Да претпоставиме сервер со една мрежна карта, порта 192.0.2.254 и администратор што се поврзува од 203.0.113.9.
Запишете ја патеката пред да почнете
ip route show default ја именува тековната порта и интерфејсот, додека ip route get 203.0.113.9 покажува кој интерфејс и изворна адреса јадрото би ги користело за вашата сесија. Зачувајте ги двата излези. Откако тунелот ќе се крене, тие две команди уште треба да ја опишуваат физичката патека, а ако наместо тоа го опишуваат тунелот, сесијата веќе живее на позајмено време.
Важна е веќе воспоставената врска, затоа не проверувајте само со ново најавување. Новата сесија може кратко да успее преку состојба што старата веќе ја нема.
Прикачете ја адресата во сопствената конфигурација на клиентот
Рачно додадената рута исчезнува при престартување и се натпреварува со сопствените ажурирања на табелата на клиентот, затоа ставете го исклучокот таму каде табелата се управува. Во OpenVPN клучната реч net_gateway се разрешува во портата што постоела пред тунелот, па route 203.0.113.9 255.255.255.255 net_gateway задржува точно една адреса надвор од неа. WireGuard бара поинаков пристап бидејќи wg-quick сам управува со рутите: поставете Table = off и додајте го исклучокот во PostUp, со соодветен PostDown што го отстранува. Двете форми ја изразуваат истата намера и двете го ограничуваат исклучокот на една адреса наместо да го ослабат тунелот за сите.
За IPv6 истата идеја зема префикс на еден домаќин, а случајот со завиткан транспорт вреди да се запамети: ако надворешната врска на самиот тунел живее на фиксна адреса, таа адреса мора да остане надвор од тунелот што го носи, инаку клиентот го рутира сопствениот транспорт во себе.
Или извадете ја главната табела од равенката
Кога неколку служби на домаќинот мора да ја задржат нормалната патека, престанете да ја уредувате главната табела и дајте му на клиентот своја. Мрежен именски простор со veth-пар тоа го прави чисто: стандардната рута на клиентот живее во друг стек и само процесите стартувани внатре во него го користат тунелот. Политичкото рутирање стигнува до слично место за една дестинација, испраќајќи го соодветниот сообраќај во посебна табела чиј стандард уште покажува кон физичката порта. Секој од пристапите ја остава главната табела на домаќинот без нова стандардна рута, и токму тоа својство го одржува SSH да одговара.
Двете се повеќе механизам од една рута до домаќин, и двете вредат кога повеќе од едно нешто на машината мора да го преживее тунелот.
Претпоставете дека прикачувањето може да не успее
Рута врзана за вашата тековна јавна адреса се крши во моментот кога вашиот давател повторно ќе ја додели. Тогаш на оддалечениот сервер му треба патека што не зависи од таа адреса: конзола, втор интерфејс за управување или скокачки домаќин што останува надвор од тунелот.
Двете заштитни мерки чинат десет минути. Чувар што го запира клиентот ако во неколку минути не се појави потврдно најавување го претвора заклучувањето во доцнење, а втората SSH-сесија држена отворена за време на промената докажува дека исклучокот работи додека тунелот е кренат. Само keepalive не помагаат тука, бидејќи патеката ја нема наместо да е неактивна; тие само ја олеснуваат забележливоста на смртта.
Проверете по редоследот што е важен
Поврзете го тунелот, потврдете дека рутата до вашата адреса уште излегува низ физичката порта, потоа отворете нова сесија. Ако новата сесија работи, а старата сепак умира, причината е следење на врски или stateful firewall, а не рутирање, што е друга поправка.
Запишете ја прикачената адреса и командата што го докажа во записот за промени. Следниот човек што ќе стартува клиент на тој домаќин ќе му требаат двете, а адресата можеби веќе се сменила дотогаш.