Счупва ли VPN клиент на уеб сървъра ви отговорите му?
Правило за маршрутизиране по източник може да възстанови един публикуван сайт, като същевременно освободи трафик, който не сте предвиждали. Прочетете селектора, преди да разширите изключението.
Сайтът се зарежда от лаптоп в същата мрежа и изтича навсякъде другаде, а хостът също изпълнява VPN клиент за собствения си изходящ трафик. Тази комбинация дава специфична повреда: входящата връзка пристига, отговорът излиза по грешен път и клиентът отвън никога не вижда отговор. Двете половини се виждат в един и същ прехват на пакети, затова редът на събитията е частта, която си заслужава четенето.
Правило за маршрутизиране по източник често поправя симптома. То също така обикновено освобождава повече трафик от сайта, който го е предизвикал, и точно това си заслужава да се разбере, преди да запазите правилото.
Симптомът: отговаря локално, но не отвън
Вътре в мрежата отговорът не трябва да пресича тунела, затова страницата се зарежда и услугата изглежда здрава. Отвън заявката достига до хоста и отговорът се маршрутизира във VPN, където отдалеченият край няма причина да го приеме. Браузърът вижда изтичане на времето, а не отказ, което е признак за еднопосочен път, а не за затворен порт.
Потвърдете формата, преди да промените маршрутизирането: слушателят работи, локалната заявка успява, а външната заявка не дава никакъв отговор. Тези три наблюдения заедно сочат към обратния път, а не към конфигурацията на уеб сървъра. Толкова чиста асиметрия е по-полезна от всеки ред в журнала, защото изключва слушателя, преди да прочетете дори едно съобщение за грешка.
Дръжте отворен независим административен път, докато работите. Правило, което счупи собствената ви SSH сесия, превръща поправка за десет минути във физическо посещение.
Какво всъщност съпоставя селекторът по източник
При политическата маршрутизация в Linux правило като from 192.168.50.2 съпоставя пакети, чийто източник е този адрес. То не кодира факта, че пакетът продължава разговор, влязъл през домашния рутер, и не знае кой процес го е създал. Адресът в този пример е илюстративен; заменете го с адреса, който хостът ви наистина използва. Третирайте реда като твърдение за адреси и нищо повече.
Ако избраната таблица предоставя обикновен маршрут по подразбиране, всеки пакет с този източник може да вземе същото изключение. Друга услуга, вързана към същия адрес, го наследява, а приложение, което умишлено се връзва към този адрес, също го наследява. Справочникът за правилата на политиката изброява източник, дестинация, протокол, порт, маркировка и приоритет като отделни селектори, което напомня, че източникът сам по себе си е най-грубият наличен.
Приоритетът решава изхода. Търсенията вървят по ред и първата таблица, която даде резултат, може да прекрати търсенето, затова правило, поставено твърде рано, може да скрие по-конкретен маршрут, който по-късна таблица би предоставила. Прочетете целия подреден списък, а не единствения ред, който сте добавили. Правило, което никога не съвпада, не струва нищо, а това, което съвпада твърде рано, тихо променя всичко след себе си.
Проверете обратния път и трафика, който не сте предвиждали
Прочетете правилата и таблиците, после попитайте ядрото кой маршрут ще поеме конкретна двойка източник и дестинация. Тестването от самия хост не е същото като тестването отвън, затова направете и двете.
ip rule show
ip route show table 100
ip route get 203.0.113.44 from 192.168.50.2
ss -ltnp '( sport = :443 )'
След това приемете нова външна връзка и отделно заявка, която все още трябва да излезе през VPN. Ако втората сега излиза директно, изключението е по-широко от проблема, който сте решавали, и важният тест е този, който не сте възнамерявали да промените.
Проверката на публичен адрес в браузър съобщава само за заявките, които този браузър е направил. Тя не казва нищо за отговорите на уеб сървъра, за избора на източник от друго локално приложение или за това какво се случва с административния трафик след следващото пресвързване на VPN.
Решете колко тясно може да бъде изключението
Два дизайна са защитими и трябва да бъдат избрани съзнателно. Ако хостът съществува, за да публикува тази услуга, и изходящият му трафик е маловажен, отделен локален адрес с политика само за WAN е разумна уредба, при условие че приемете целия обхват. Ако трябва да се класират само определени входящи връзки, изборът на адрес е твърде груб и пред него принадлежи дизайн, който отчита връзките.
Запишете договора, на който разчитате: публичното съпоставяне, адреса на хоста, на който се доставя заявката, и пътя, който отговорът трябва да поеме. Входяща услуга, публикувана през VPN доставчик, е различен договор от такава, публикувана през домашен рутер, и изключение, копирано от един пример, често е грешно за другия.
Съхранявайте политиката в компонента, който притежава маршрутизирането, вместо да поставяте команда в стартов файл. Редът на правилата, почистването след промяна на мрежата и повторното прилагане след рестарт трябва да оцелеят, а нетестван стартов файл обикновено се проваля в момента, в който не гледате. Завършете с резултат от приемане, който можете да защитите: един публикуван сайт възстановен и един несвързан поток непроменен.