NAT pravilo koje radi kada se upiše u ljusku ne uspijeva kada se zalijepi u before.rules, jer ta datoteka nije skripta. To je dokument formata za vraćanje sa sekcijama tablica, deklaracijama lanaca i oznakom COMMIT za svaku tablicu. Linija na pogrešnom mjestu ili prekida cijelo vraćanje ili tiho odbacuje pravila za koja ste vjerovali da postoje. Priručnik u nastavku stavlja fragment tamo gdje ga okvir očekuje i dokazuje rezultat prije sljedećeg ponovnog učitavanja.

Naredba u ljusci nije datoteka za vraćanje

Linija koja počinje s iptables -t nat uputa je iptables binarnom programu, dok je datoteka koju UFW čita opis potpunog skupa pravila. Razlika nije kozmetička: format za vraćanje mora znati u kojoj se tablici nalazi, koji lanci postoje i gdje tablica završava. Naredba zalijepljena u taj dokument ili je sintaksna greška ili je, još gore, pravilo pridruženo pogrešnoj tablici. Okvir učitava te datoteke kroz alate za vraćanje upravo zato što su deklarativne, a ne sekvencijalne.

Dokument se učitava i kao cjelina, pa jedna neispravna sekcija može zaustaviti primjenu ostatka datoteke. Zato mala greška u NAT fragmentu ruši i pravila filtra, i tako promjena vatrozida postaje prekid rada.

Stavite fragment unutar postojeće sekcije tablice

NAT fragment ima oblik, a oblik je važniji od teksta pravila unutar njega. Zaglavlje tablice otvara sekciju, deklaracije lanaca uspostavljaju brojače, pravila slijede, a COMMIT zatvara sekciju.

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.55.0.0/24 -o ens3 -j MASQUERADE
COMMIT

Skup i sučelje iznad su zamjenske vrijednosti za vaše; struktura je dio koji vrijedi kopirati. Ako datoteka već sadrži sekciju *nat, dodajte pravilo unutar te sekcije umjesto da otvarate drugu, jer format očekuje jedan COMMIT po tablici, a dvije sekcije za istu tablicu su popravak koji čeka da se dogodi. Zadržite definicije lanaca distribucije netaknutima, uključujući sve što je dobavljač dodao za vlastitu integraciju. Priručnik okvira UFW dokumentira datoteke before, user i after zajedno sa zahtjevom za odgovarajući COMMIT.

Ako se datoteka pokaže praznom, nemojte je popunjavati iz tutorijala. Provjerite koji je paket posjeduje i kakva je zapravo aktivna politika, jer prazna trajna datoteka ne dokazuje da jezgra ne drži pravila, a učitani skup pravila ne dokazuje da će sljedeće ponovno učitavanje imati potpunu datoteku za čitanje. Prvo vratite podržanu osnovnu liniju, a zatim ponovo primijenite promjene na lokaciji na nju.

Testirajte kandidata bez primjene

Alat za vraćanje može raščlaniti i izgraditi skup pravila bez primjene, što je najjeftiniji dostupni test. Pokrenite ga na zaštićenoj kopiji, a ne na aktivnoj datoteci, i čitajte tekst greške, a ne samo izlazni status. Neuspjeh raščlanjivanja imenuje liniju i obično tablicu, što je više nego što će vam reći neuspjelo ponovno učitavanje.

sudo cp /etc/ufw/before.rules /root/before.rules.bak
sudo iptables-restore --test < /root/before.rules.bak
echo "exit: 0"

Prolazak te provjere dokazuje da se dokument raščlanjuje i ništa drugo. Ne dokazuje da kandidat još sadrži svaki lanac o kojem UFW ovisi, da dopušta samo izvore koje ste namjeravali ili da udaljena administracija ostaje dostupna. To su odvojene recenzije, a posljednja zaslužuje drugu sesiju otvorenu prije nego što počnete.

Odaberite alat koji odgovara instaliranom pozadinskom sloju i porodici adresa. Host koji pokreće nft pozadinski sloj kroz sloj kompatibilnosti treba odgovarajuću naredbu, a IPv6 pravila žive u potpuno drugoj datoteci.

Držite prosljeđivanje, NAT i politiku pristupa odvojeno

Prevođenje izvora rješava problem adresiranja i ništa ne daje. Prosljeđivanje je zasebno dopuštenje kojim upravljaju sysctl i tablica filtra, i to je ono što ljudi zaborave kada tunel usmjerava, ali ne propušta promet. Politika pristupa treća je odluka o tome koji izvori mogu dosegnuti koje usluge, i nijedno NAT pravilo je ne izražava. Upravo držanje tih troje odvojenima čini kvar dijagnosticiranim umjesto jednog nejasnog simptoma.

sysctl net.ipv4.ip_forward
sudo iptables -t nat -S POSTROUTING
sudo iptables -S FORWARD

Čitajte ta tri izlaza zajedno, a ne jedan po jedan. Pravilo masquerade s onemogućenim prosljeđivanjem stvara klijenta koji se povezuje i ne doseže ništa, što s klijentove strane izgleda točno kao greška usmjeravanja i šalje ljude na pogrešnu datoteku. Tablica filtra i mjesto je gdje se skriva preširoki accept, pa provjerite njezinu zadanu politiku dok ste tamo.

Provjerite ponovno učitavanje, odbijanje i gubitak VPN-a

Tri zapažanja čine potpun test prihvaćanja: ponovno učitavanje uspijeva, dopuštena klijentska operacija radi, a zahtjev koji treba biti odbijen doista je odbijen. Treće je ono koje se preskače, i to je jedini dokaz da politika ikako nešto čini.

sudo ufw reload
sudo ufw status verbose
sudo iptables -t nat -L POSTROUTING -n -v

Zatim testirajte kvar za koji ste projektirali. Ispustite tunel i promatrajte što host radi, jer politika koja radi samo dok je VPN uključen jest politika s neizrečenom ovisnošću. Ponovo je učitajte nakon toga da dokažete da upravo datoteka, a ne neko preostalo aktivno stanje, proizvodi radni rezultat.

IPv4 NAT ne govori ništa o IPv6, pa navedite namjeravano pokrivanje obiju porodica u istoj bilješci kao i pravilo. Cilj je koherentna upravljana politika, a fragment koji se slučajno raščlanio nije dokaz za nju.

Povezani članci