Усмерите мимо 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 правила поврх.