Jedna usluga hosta mora odgovarati internetu preko fizičkog uzlaznog kanala dok sve ostalo na računalu nastavlja koristiti tunel. Tri uvjeta odlučuju može li usmjeravanje zasnovano na politici nositi taj teret, i svaki je jeftino provjeriti prije pisanja pravila. Usluga mora završavati na ovom hostu, a ne iza DNAT-a ili proslijeđenog porta, vlastita pravila VPN-a moraju dopuštati iznimku, i morate uspoređivati odgovor, a ne zahtjev. Ako ijedan od tri uvjeta padne, naredbe u nastavku učitaju se bez greške, ali ne rade ništa korisno.

Provjerite tri uvjeta prije pisanja pravila

Kontejner koji objavljuje port kroz DNAT, ili poslužitelj iza prosljeđivanja porta, stvara pakete koji ne nastaju na ovom hostu. Ti se paketi prosljeđuju, pa pravilo vezano uz lokalni ulaz hosta nikada ih ne vidi i promet nastavlja ići zadanom rutom. Potvrdite gdje usluga zapravo radi prije nego nastavite, jer je to uvjet koji ljudi najčešće pogrešno shvate.

Drugi je uvjet politika, a ne mehanika. Svaka ruta koja zaobilazi tunel iznimka je od svrhe tunela, a na upravljanom hostu ta odluka pripada onome tko posjeduje politiku, a ne osobi koja otklanja grešku isteka veze.

Usporedite odgovor, a ne odredišni port klijenta

Odgovor poslužitelja koji sluša na TCP 443 napušta host s izvornim portom 443. Preglednik na istom hostu koji se spaja na udaljenu HTTPS stranicu šalje prolazni izvorni port i odredišni port 443. Oba su promet porta 443 i samo jedan od njih treba koristiti WAN tablicu, zato bi podudaranje odredišnog porta zahvatilo pogrešnu polovicu.

Smjer odgovora je ono što možete razlikovati. Usporedite izvorni port, ograničite pravilo na lokalno stvorene pakete, i pravilo pokriva vlastite odgovore usluge bez diranja u zahtjeve preglednika.

Izgradite potpunu tablicu povratka prije nego pravilo pokaže na nju

Prazna tablica znači nema rute, što izgleda kao pokvarena usluga, a ne pokvarena politika. Prvo je napunite, brojem tablice i prioritetom koje ništa drugo na hostu ne zauzima:

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

Pročitajte brojeve sa živog hosta umjesto da ih kopirate. ip -4 rule show vam kaže koji su prioriteti zauzeti, a dodavanje pravila na već postojeći prioritet tiho mijenja redoslijed dvaju pravila koja pojedinačno izgledaju ispravno.

Pravi posao ovdje rade dva birača. iif lo je način na koji jezgra prijavljuje pakete koje je host sam stvorio, pa pravilo ne može slučajno zahvatiti proslijeđeni promet koji dolazi izvana. ipproto tcp sport 443 sužava ga na jedan transport i jedan port, što je tijesno koliko zahtjev dopušta. Uklonite birač protokola i pravilo će zahvatiti i UDP 443, a to je druga usluga s drukčijim ponašanjem.

Zadržite privatne odgovore unutar tunela

Ako isti slušatelj odgovara i klijentima na privatnoj strani, zadana WAN ruta koja hvata sve u tablici 100 pokušat će te odgovore vratiti preko uzlaznog kanala. Dodajte privatne prefikse koji ne smiju slijediti zadanu WAN rutu ili im dopustite da prijeđu na sljedeće pravilo politike:

ip -4 route add table 100 throw 10.90.0.0/24

Throw ruta završava pretragu u ovoj tablici i vraća paket popisu pravila, pa sljedeća VPN politika dobiva svoju priliku. Ona sama ne usmjerava ništa u tunel, a ako nijedno kasnije pravilo nema odgovarajuću rutu, paket ipak pada; provjerite sljedeću politiku umjesto da pretpostavite da je throw rješenje.

Filtriranje obrnutog puta i pravila vatrozida hosta i dalje vrijede za pristigli zahtjev. Pogledajte njihove stvarne presude prije nego olabavite provjeru, jer iznimka u usmjeravanju ne čini da rp_filter prihvati povratni put koji smatra nemogućim.

Testirajte TCP, zatim QUIC, zatim ponovno pokretanje

Otvorite jednu vezu s ovlaštenog vanjskog klijenta i jednu s privatne strane, zatim pregledajte pretragu odgovora sa stvarnim adresama i portovima. Ako vanjski odgovor ide u tablicu 100, a privatni ne, politika radi ono što ste tražili.

HTTP/3 poslužuje se preko UDP-a i neće ga uhvatiti pravilo za TCP, pa QUIC slušatelj treba vlastiti birač ili će nastaviti koristiti tunel dok HTTPS radi. Zadržite pravila na kojima se zaustavite kod komponente koja posjeduje sučelje i potvrdite ih nakon ponovnog spajanja ili obnove DHCP-a. Kad konkurentski upravitelj ukloni rutu u radu nakon ponovnog pokretanja, to je problem vlasništva koji se rješava na izvoru, a ne razlog za dodavanje širih NAT pravila povrh.

Povezani članci