Jedna usluga hosta mora da odgovara internetu preko fizičkog uzlaznog kanala dok sve ostalo na računaru nastavlja da koristi tunel. Tri uslova odlučuju da li usmeravanje zasnovano na politici može da nosi taj teret, i svaki je jeftin za proveru pre pisanja pravila. Usluga mora da se završi na ovom hostu, a ne iza DNAT-a ili prosleđenog porta, sopstvena pravila VPN-a moraju da dozvole izuzetak, i morate da upoređujete odgovor, a ne zahtev. Ako padne bilo koji od tri, naredbe ispod se učitavaju bez greške, ali ne rade ništa korisno.

Proverite tri uslova pre pisanja pravila

Kontejner koji objavljuje port kroz DNAT, ili server iza prosleđivanja porta, stvara pakete koji ne nastaju na ovom hostu. Ti paketi se prosleđuju, pa pravilo vezano za lokalni ulaz hosta nikada ih ne vidi i saobraćaj nastavlja da ide podrazumevanom rutom. Potvrdite gde usluga zaista radi pre nego što nastavite, jer je to uslov u kojem ljudi najčešće greše.

Drugi uslov je politika, a ne mehanika. Svaka ruta koja zaobilazi tunel je izuzetak od svrhe tunela, a na upravljanom hostu ta odluka pripada onome ko poseduje politiku, a ne osobi koja otklanja grešku isteka veze.

Uporedite odgovor, a ne odredišni port klijenta

Odgovor servera koji sluša na TCP 443 napušta host sa izvornim portom 443. Pregledač na istom hostu koji se povezuje na udaljeni HTTPS sajt šalje prolazni izvorni port i odredišni port 443. Oba su saobraćaj porta 443 i samo jedan od njih treba da koristi WAN tabelu, zato bi podudaranje odredišnog porta zahvatilo pogrešnu polovinu.

Smer odgovora je ono što možete da razlikujete. Uporedite izvorni port, ograničite pravilo na lokalno stvorene pakete, i pravilo pokriva sopstvene odgovore usluge bez diranja u zahteve pregledača.

Izgradite potpunu tabelu povratka pre nego što pravilo pokaže na nju

Prazna tabela znači nema rute, što izgleda kao pokvarena usluga, a ne pokvarena politika. Prvo je napunite brojem tabele 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 umesto da ih kopirate. ip -4 rule show vam kaže koji su prioriteti zauzeti, a dodavanje pravila na već postojeći prioritet tiho menja redosled dva pravila koja pojedinačno izgledaju ispravno.

Pravi posao ovde rade dva birača. iif lo je način na koji jezgro prijavljuje pakete koje je host sam stvorio, pa pravilo ne može slučajno da zahvati prosleđeni saobraćaj koji dolazi spolja. ipproto tcp sport 443 sužava ga na jedan transport i jedan port, što je tesno koliko zahtev dozvoljava. Uklonite birač protokola i pravilo će zahvatiti i UDP 443, a to je druga usluga sa drugačijim ponašanjem.

Zadržite privatne odgovore unutar tunela

Ako isti slušalac odgovara i klijentima na privatnoj strani, podrazumevana WAN ruta koja hvata sve u tabeli 100 pokušaće te odgovore da vrati preko uzlaznog kanala. Dodajte privatne prefikse koji ne smeju da prate podrazumevanu WAN rutu, ili im dozvolite da pređu na sledeće pravilo politike:

ip -4 route add table 100 throw 10.90.0.0/24

Throw ruta završava pretragu u ovoj tabeli i vraća paket listi pravila, pa sledeća VPN politika dobija svoju priliku. Ona sama ne usmerava ništa u tunel, a ako nijedno kasnije pravilo nema odgovarajuću rutu, paket ipak pada; proverite sledeću politiku umesto da pretpostavite da je throw rešenje.

Filtriranje obrnutog puta i pravila vatrozida hosta i dalje važe za zahtev koji pristiže. Pogledajte njihove stvarne presude pre nego što olabavite proveru, jer izuzetak u usmeravanju ne čini da rp_filter prihvati povratni put koji smatra nemogućim.

Testirajte TCP, zatim QUIC, zatim ponovno pokretanje

Otvorite jednu vezu sa ovlašćenog spoljnog klijenta i jednu sa privatne strane, zatim pregledajte pretragu odgovora sa stvarnim adresama i portovima. Ako spoljni odgovor ide u tabelu 100, a privatni ne, politika radi ono što ste tražili.

HTTP/3 se servira preko UDP-a i neće ga uhvatiti pravilo za TCP, pa QUIC slušalac treba sopstveni birač ili će nastaviti da koristi tunel dok HTTPS radi. Zadržite pravila na kojima se zaustavite kod komponente koja poseduje interfejs i potvrdite ih nakon ponovnog povezivanja ili obnove DHCP-a. Kada konkurentski menadžer ukloni rutu u radu nakon ponovnog pokretanja, to je problem vlasništva koji se rešava na izvoru, a ne razlog za dodavanje širih NAT pravila povrh.

Povezani članci