Укључите пун тунел и свака дестинација сада припада VPN интерфејсу, укључујући и машину која га завршава. Спољни пакети који носе тунел адресирани су на ту машину, па рута на крају троши транспорт од кога зависи. Једна додатна конкретна рута то решава, а разлог вреди разумети. Без тог разлога следећа поновна изградња поново уводи квар.

Рута која једе сопствени транспорт

Инкапсулација умотава сваки пакет у друго заглавље. Спољно је адресирано од локалне физичке адресе до јавне адресе сервера и мора да пређе физичку везу пре него што икакав тунел може постојати.

Сада нека претрага те јавне адресе изабере тунел. Да би послала пакет, машина мора да га инкапсулира, што захтева руту до исте адресе, а она враћа тунел. Клијенти то решавају на један од два начина. Пажљив одбија да инсталира подразумевану руту и пријављује грешку, док мање пажљив пријављује успех и затим ништа не помера. Тихи неуспех је онај који кошта једно поподне.

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

Инсталирајте изузетак пре подразумеване руте

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

Већина клијената то ради без позива. OpenVPN тражи удаљену адресу и причвршћује је пре него што препише подразумевани гејтвеј, а његова опција route-delay постоји за платформе где се тај след трка. wg-quick иде сасвим другим путем, означавајући пакете и консултујући правило политике уместо да дода изузетак. Различити механизми, исти захтев: спољни пакет мора да побегне из тунела који сам ствара.

ip route add 203.0.113.10/32 via 192.168.1.1 dev eth0
ip route get 203.0.113.10

Излаз претраге је пријемни тест. Мора да наведе физички уређај и физички следећи скок. Тунелски уређај у том одговору значи да изузетак недостаје или је постављен после нечега што га надјачава.

Огледалска слика на серверу

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

Замислите клијента који се повеже и пошаље захтев. Одговор је адресиран на јавну адресу тог клијента, која сада одговара тунелској рути, па излази са другог интерфејса носећи извор који клијент никада није изабрао. Клијент може да прими тај пакет и ипак га одбаци, јер га ништа не везује за захтев који је послао. Пођите од одлуке о рутирању на серверу, а не од тајмаута клијента, јер само једно од тога показује стварни избор.

ip route get 198.51.100.44 from 10.90.0.1
ip rule show
sudo tcpdump -ni any host 198.51.100.44

Постоје три поправке и нису једнаке. Причвршћивање услуге за физичку адресу или превођење извора обе крију одлуку о рутирању уместо да је исправе. Слање саобраћаја са одговорима за базен тунела кроз посебну табелу исправља узрок, а друга два су прихватљива само док је дизајн рутирања замрзнут.

Изузеци које тунел стално краде

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

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

Изузетак који нико није записао је изузетак који ће следећа поновна изградња тихо испустити.

Докажите то после поновног повезивања, не пре

Тестирајте три дестинације, не једну: крајњу тачку, приватну адресу иза тунела и јавну адресу изван њега. Једна успешна претрага не говори готово ништа о друге две.

ip route get 203.0.113.10
traceroute -n 203.0.113.10
ip route get 10.90.0.5
ip route get 1.1.1.1

Затим поново покрените везу, јер клијент који при поновном повезивању обнови своју табелу одбациће руту коју сте унели ручно. Ако је укључен kill switch, проверите да је крајња тачка дозвољена, иначе тунел не може да се врати после промене мреже и симптом изгледа као прекид. Чувајте изузетак у профилу или unit датотеци, а не у историји shell-а, да га поновно повезивање поново створи уместо да га избрише.

Повезани чланци