Услуга објављена кроз пролаз ради са већине интернета, а не ради из једне канцеларије. Неко провери тунел, види да захтев стиже и закључи да одговор мора да иде истим путем назад. Linux не ради тако и никакво прегледање тунела то неће променити. Одговор се усмерава према одредишту, а тај један неуспели позивалац налази се у подмрежи до које домаћин већ долази директно.

Шта заправо одлучује о одлазном пакету

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

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

Зашто побеђује локална подмрежа

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

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

Покривеност партнера није исто што и инсталиране руте

На страни тунела, дозвољени опсези партнера описују шта се сме слати у тунел и који се извори из њега прихватају. Они не говоре ништа о томе куда ће локална табела усмеравања послати пакет.

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

Изаберите табелу према адреси извора

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

ip -6 route add default dev wg0 table 200
ip -6 rule add priority 32000 from 2001:db8:aa::20/128 lookup 200
ip -6 rule add priority 32001 from 2001:db8:aa::20/128 unreachable

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

Потврдите пут, затим услугу

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

ip -6 route get 2001:db8:bb::30 from 2001:db8:aa::20

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

Шта ово не поправља

Оставите прослеђивање, правила ватрозида и понашање ICMPv6 на пролазу какви су били, јер рута извора не замењује ниједно од тога. Порука Packet Too Big која недостаје и даље квари велике одговоре, без обзира на то која је табела добила претрагу. Поправите то пре додавања правила усмеравања, иначе ће симптом надживети промену.

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

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

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