Kam sodi NAT za VPN v before.rules UFW in kako ga preizkusiti
Vrstica NAT v before.rules mora stati v veljavnem razdelku tabele s COMMIT. Kandidata razčlenite z iptables-restore --test, preden znova naložite UFW.
Pravilo NAT, ki deluje, ko ga vtipkate v lupino, ne uspe, ko ga prilepite v before.rules, ker ta datoteka ni skript. Je dokument v formatu obnavljanja z razdelki tabel, deklaracijami verig in oznako COMMIT za vsako tabelo. Vrstica na napačnem mestu bodisi prekine celotno obnovitev bodisi tiho zavrže pravila, za katera ste mislili, da obstajajo. Spodnji postopek postavi fragment tja, kamor ga pričakuje ogrodje, in dokaže rezultat pred naslednjim nalaganjem.
Ukaz v lupini ni datoteka za obnovitev
Vrstica, ki se začne z iptables -t nat, je navodilo za binarno datoteko iptables, medtem ko je datoteka, ki jo bere UFW, opis celotnega nabora pravil. Razlika ni kozmetična: format obnavljanja mora vedeti, v kateri tabeli je, katere verige obstajajo in kje se tabela konča. Ukaz, prilepljen v ta dokument, je bodisi skladenjska napaka bodisi, kar je slabše, pravilo, pripeto na napačno tabelo. Ogrodje te datoteke nalaga prek orodij za obnavljanje prav zato, ker so deklarativne in ne zaporedne.
Dokument se naloži tudi kot celota, zato lahko en okvarjen razdelek ustavi uporabo preostanka datoteke. Zato majhna napaka v fragmentu NAT potegne s seboj tudi pravila filtriranja, in tako sprememba požarnega zidu postane izpad.
Fragment postavite v obstoječi razdelek tabele
Fragment NAT ima obliko, in oblika je pomembnejša od besedila pravila v njem. Glava tabele odpre razdelek, deklaracije verig postavijo števce, pravila sledijo in COMMIT zapre razdelek.
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.55.0.0/24 -o ens3 -j MASQUERADE
COMMIT
Skupina in vmesnik zgoraj sta nadomestni mesti za vaše vrednosti; struktura je del, ki se ga splača kopirati. Če datoteka že vsebuje razdelek *nat, dodajte pravilo znotraj tega razdelka, namesto da bi odprli drugega, ker format pričakuje en COMMIT na tabelo, dva razdelka za isto tabelo pa sta popravilo, ki čaka na dogodek. Ohranite definicije verig distribucije nedotaknjene, vključno s tistimi, ki jih je ponudnik dodal za svojo integracijo. Priročnik ogrodja UFW dokumentira datoteke before, user in after skupaj z zahtevo po ustreznem COMMIT.
Če se datoteka izkaže za prazno, je ne polnite iz vadnice. Potrdite, kateri paket jo ima v lasti in kakšna je dejanska aktivna politika, ker prazna trajna datoteka ne dokazuje, da jedro nima pravil, in naložen nabor pravil ne dokazuje, da bo naslednje nalaganje imelo popolno datoteko za branje. Najprej obnovite podprto osnovno linijo, nato znova uporabite spremembe mesta na njej.
Kandidata preizkusite brez uporabe
Orodje za obnavljanje lahko nabor pravil razčleni in zgradi, ne da bi ga uporabilo, in to je najcenejši razpoložljivi preizkus. Zaženite ga na zaščiteni kopiji, ne na živi datoteki, in berite besedilo napake, ne le izhodnega stanja. Napaka razčlenjevanja navede vrstico in običajno tabelo, kar je več, kot vam bo povedalo neuspešno nalaganje.
sudo cp /etc/ufw/before.rules /root/before.rules.bak
sudo iptables-restore --test < /root/before.rules.bak
echo "exit: 0"
Prehod tega preverjanja dokazuje, da se dokument razčleni, in nič drugega. Ne dokazuje, da kandidat še vedno vsebuje vsako verigo, od katere je odvisen UFW, da dovoljuje samo predvidene vire ali da oddaljena administracija ostane dosegljiva. To so ločeni pregledi in zadnji si zasluži drugo sejo, odprto pred začetkom.
Izberite orodje, ki ustreza nameščenemu backendu in družini naslovov. Gostitelj, ki izvaja backend nft prek sloja združljivosti, potrebuje ustrezen ukaz, pravila IPv6 pa živijo v povsem drugi datoteki.
Posredovanje, NAT in politiko dostopa držite ločeno
Prevajanje vira reši problem naslavljanja in ne podeli ničesar. Posredovanje je ločeno dovoljenje, ki ga nadzirata sysctl in tabela filtriranja, in prav tega ljudje pozabijo, ko tunel usmerja, a ne prepušča prometa. Politika dostopa je tretja odločitev o tem, kateri viri lahko dosežejo katere storitve, in nobeno pravilo NAT je ne izrazi. Prav ločevanje teh treh naredi okvaro diagnostično namesto enega samega nejasnega simptoma.
sysctl net.ipv4.ip_forward
sudo iptables -t nat -S POSTROUTING
sudo iptables -S FORWARD
Berite te tri izhode skupaj, ne enega za drugim. Pravilo masquerade z izklopljenim posredovanjem ustvari odjemalca, ki se poveže in ne doseže ničesar, kar z vidika odjemalca izgleda točno kot napaka usmerjanja in pošlje ljudi k napačni datoteki. Tabela filtriranja je tudi mesto, kjer se skriva preširok accept, zato medtem ko ste tam, preverite še njeno privzeto politiko.
Preverite nalaganje, zavrnitev in izgubo VPN
Tri opažanja sestavljajo popoln sprejemni preizkus: nalaganje uspe, dovoljena odjemalčeva operacija deluje in zahteva, ki bi morala biti zavrnjena, je dejansko zavrnjena. Tretje je tisto, ki ga preskočijo, in je edini dokaz, da politika sploh kaj počne.
sudo ufw reload
sudo ufw status verbose
sudo iptables -t nat -L POSTROUTING -n -v
Nato preizkusite okvaro, za katero ste načrtovali. Spustite tunel in opazujte, kaj počne gostitelj, ker politika, ki deluje le, dokler je VPN vklopljen, je politika z neizrečeno odvisnostjo. Po tem znova naložite še enkrat, da dokažete, da delujoč rezultat daje datoteka in ne kakšno preostalo stanje izvajanja.
NAT IPv4 ne pove ničesar o IPv6, zato v isti opombi kot pravilo navedite predvideno pokritost obeh družin. Cilj je skladna upravljana politika, fragment, ki se je slučajno razčlenil, pa ni njen dokaz.