Пренасочете само една локална веб-услуга околу VPN-от според портата
Одлучете дали правило за изворна порта може да испрати една услуга на хостот преку WAN додека остатокот од хостот продолжува да го користи VPN-от, и колку тоа чини.
Една услуга на хостот мора да одговара на интернет преку физичката нагорна врска додека сѐ друго на машината продолжува да го користи тунелот. Три услови одлучуваат дали рутирањето засновано на политика може да го поднесе тој товар, и секој од нив е ефтин за проверка пред да напишете правило. Услугата мора да заврши на овој хост, а не зад DNAT или пренасочена порта, сопствените правила на VPN-от мора да го дозволуваат исклучокот, и треба да го совпаѓате одговорот, а не барањето. Ако не успее било кој од трите, командите подолу се вчитуваат без грешки, но не прават ништо корисно.
Проверете ги трите услови пред да напишете правило
Контејнер што објавува порта преку DNAT, или сервер зад пренасочување на порта, создава пакети што не настануваат на овој хост. Тие пакети се препраќаат, затоа правило засновано на локален влез на хостот никогаш не ги гледа и сообраќајот продолжува да ја користи стандардната рута. Потврдете каде услугата навистина работи пред да продолжите, бидејќи тоа е условот што луѓето најчесто го погрешуваат.
Вториот услов е политика, а не механика. Секоја рута што го заобиколува тунелот е исклучок од целта на тунелот, а на управуван хост таа одлука му припаѓа на сопственикот на политиката, не на лицето што отстранува грешка со истекување време.
Совпаѓајте го одговорот, не целната порта на клиентот
Одговорот од сервер што слуша на TCP 443 ја напушта машината со изворна порта 443. Прелистувач на истиот хост што се поврзува со далечна HTTPS страница испраќа привремена изворна порта и целна порта 443. Двете се сообраќај на порта 443 и само едно од нив треба да ја користи табелата на WAN, затоа совпаѓање на целната порта би ја фатило погрешната половина.
Насоката на одговорот е она што можете да го разликувате. Совпаѓајте ја изворната порта, ограничете го правилото на локално создадени пакети, и правилото ги покрива сопствените одговори на услугата без да ги допира барањата на прелистувачот.
Изградете целосна табела за враќање пред правилото да покаже на неа
Празна табела значи нема рута, што изгледа како расипана услуга, а не расипана политика. Прво наполнете ја, со број на табела и приоритет што ништо друго на хостот не ги бара:
ip -4 route add table 100 192.0.2.0/24 dev eth0
ip -4 route add table 100 default via 192.0.2.1 dev eth0
ip -4 rule add priority 1000 iif lo ipproto tcp sport 443 lookup 100
Читајте ги броевите од живиот хост наместо да ги копирате. ip -4 rule show ви кажува кои приоритети се зафатени, а додавањето правило на веќе постоечки приоритет тивко го менува редоследот на две правила што одделно изгледаат исправно.
Вистинската работа овде ја вршат два селектори. iif lo е начинот на кој јадрото пријавува пакети што самиот хост ги создал, така што правилото не може случајно да фати препратен сообраќај што доаѓа однадвор. ipproto tcp sport 443 го стеснува на еден транспорт и една порта, што е колку што дозволува барањето. Отстранете го селекторот за протокол и правилото ќе фати и UDP 443, што е друга услуга со друго однесување.
Задржете ги приватните одговори внатре во тунелот
Ако истиот слушач одговара и на клиенти од приватната страна, стандардна рута на WAN што фаќа сѐ во табела 100 ќе се обиде тие одговори да ги врати преку нагорната врска. Додајте ги приватните префикси што не смеат да ја следат стандардната WAN рута, или дозволете им да преминат на следното правило за политика:
ip -4 route add table 100 throw 10.90.0.0/24
Throw рутата го завршува пребарувањето во оваа табела и му го враќа пакетот на списокот правила, така што следната VPN политика ја добива својата шанса. Самата таа не рутира ништо во тунелот, и ако ниедно подоцнежно правило нема соодветна рута, пакетот сепак не успева; проверете ја следната политика наместо да претпоставите дека throw е поправка.
Филтрирањето на обратна патека и правилата на огнениот ѕид на хостот сѐ уште важат за барањето што пристигнува. Погледнете ги нивните вистински пресуди пред да го олабавите валидирањето, затоа што рутирачки исклучок не прави rp_filter да прифати повратна патека што ја смета за невозможна.
Тестирајте TCP, потоа QUIC, потоа рестартирање
Отворете една врска од овластен надворешен клиент и една од приватната страна, потоа проверете го пребарувањето на одговорот со вистинските адреси и порти. Ако надворешниот одговор ја користи табелата 100, а приватниот не, политиката го прави тоа што го баравте.
HTTP/3 се служи преку UDP и нема да биде совпаднат со TCP правило, затоа на QUIC слушачот му треба свој селектор, инаку ќе продолжи да го користи тунелот додека HTTPS работи. Зачувајте ги правилата на кои ќе се задржите кај компонентата што го поседува интерфејсот, и потврдете ги по повторно поврзување или обновување на DHCP. Кога конкурентен менаџер ќе отстрани рута во време на извршување по рестартирање, тоа е проблем на сопственост што треба да се реши во изворот, а не причина да се додадат пошироки NAT правила врз него.