Пун тунел је убио вашу SSH сесију: причврстите повратну руту
Пун тунел пресреће одговоре за вашу сопствену SSH сесију. Причврстите руту ка хосту за своју административну адресу кроз стари гејтвеј и поново је инсталирајте при поновном повезивању.
Покрените OpenVPN клијент на машини на којој радите преко SSH, и усред команде сесија се замрзне. Тунел пријављује да је повезан, хост може да достигне интернет кроз њега, а ваши притисци на тастатуру и даље стижу док ништа не долази назад. Оно што се променило није тунел: то је повратна путања за пакете упућене вама, која сада одговара новој подразумеваној рути и улази у тунел који удаљени гејтвеј неће користити да достигне ваш сто.
Шта redirect-gateway заправо инсталира
У свом облику def1, redirect-gateway додаје 0.0.0.0/1 и 128.0.0.0/1 уместо да препише подразумевану руту. Те две половине покривају цео адресни простор, а обе остају дужи префикси од 0.0.0.0/0, па свако одредиште без конкретнијег поклапања сада иде у тунел. То је механизам који треба упамтити, јер сваки поправак испод ради тако што инсталира конкретније поклапање.
Ваша административна адреса је једно од тих одредишта.
VPN сервер прослеђује саобраћај својих клијената ка интернету. Он нема руту за јавну адресу са које се повезујете, нити разлог да те пакете третира другачије него као саобраћај који долази од клијента, па их одбацује. У међувремену је захтев који сте послали ипак стигао до хоста, због чега сесија изгледа жива само са једне стране.
ip route show table main | head -n 20
ip route get 198.51.100.23Нађите своју изворну адресу и путању пре тунела
На серверу излистајте успостављену SSH везу и забележите адресу партнера са које је дошла. Та адреса је оно што ваша повратна рута мора покрити, а то није увек оно што мислите: скокачки хост, NAT гејтвеј или оператеров преводилац адреса може да подметне други извор.
Затим нађите физички гејтвеј и интерфејс који су носили саобраћај пре него што је тунел покренут. У распореду def1 подразумевана рута је и даље присутна испод полуподразумеваних рута, па су информације доступне, иако читање дугачке табеле рута на око позива на грешке.
Запишите обе вредности и име интерфејса заједно, јер рути коју ћете додати требају све три. Ако је хост користио правило рутирања по политици да изабере своју улазну везу, обична рута можда уопште неће бити размотрена, а та могућност мења поправак.
Причврстите руту ка хосту која надјачава полуподразумеване руте
Рута /32 је дужа од било које полуподразумеване руте, па одговори на вашу адресу користе њу уместо тунела. Следећи скок је гејтвеј који је постојао пре тунела, а уређај је физички интерфејс, што задржава пакет на путањи коју је користио пре него што је тунел настао.
ip route add 198.51.100.23/32 via 203.0.113.1 dev eth0Проверите претрагом, а не прегледањем табеле: одговор мора да наведе eth0 и гејтвеј, никада tun0.
OpenVPN већ додаје руту ка хосту за сопствену адресу VPN сервера из истог разлога, па је образац познат, а административна адреса је једноставно још један изузетак. Не посежите за route-nopull да то поправите, јер он одбацује гурнуте руте које тунел тражи, укључујући удаљену мрежу и DNS опције.
Учините да то преживи поновно повезивање
Рута додата ручно нестаје када се клијент поново повеже и инсталира своје, што поправак претвара у понављајући прекид. Прикачите команду на нешто што се извршава након инсталирања рута.
Скрипта route-up или pre-up кука мрежног менаџера обе раде, а поуздана провера је поновно повезивање праћено истом претрагом.
На Windows-у је еквивалент трајна рута додата са -p, која преживљава рестартовања, али и даље мора да показује на исправан гејтвеј после промене мреже. Која год платформа била, напишите разлог поред руте: следећи администратор треба да зна да она постоји да заштити сесију управљања, а не зато што је мрежни дизајн то захтевао.
Када причвршћена рута још није довољна
Филтрирање повратне путање може да одбаци пакет који стиже на једном интерфејсу а одлази на другом, што је управо оно што причвршћена рута ствара. Проверите ефективну вредност rp_filter пре него што било шта глобално искључите, и радије поправите асиметрију него што искључујете проверу. Примењује се подешавање по интерфејсу, а лабави режим често само бележи асиметрију уместо да одбаци пакет. Прочитајте оба пре него што закључите да је филтер крив.
Хостови са рутирањем по политици траже и правило и руту, јер база правила бира табелу пре него што се рута у њој размотри. Рута у главној табели је невидљива за ток који се поклапа са правилом које упућује на другу табелу. Прочитајте правила пре него што било шта додате у main. Ако правило већ покрива саобраћај управљања, изузетак припада табели тог правила.
Држите отворену ванпојасну конзолу док тестирате и проверите поново са друге пријаве пре него што искључите ону коју користите. Рута која шаље ваш сопствени саобраћај управљања у тунел прекида везу кроз коју је поправљате. Враћање тада значи серијску конзолу или спасилачко подизање система, што је лоша размена за прескочен корак провере.