Acesta este în interiorul unui nftables scenariu încărcat cu comanda nft -f
. The nft
cuvântul nu are sens în interior și nu ar trebui să apară. Dar există 1 1/2 alte probleme în același loc. Deci sa vedem:
În jurul liniei nft
comanda se plânge că există:
lanț înainte {
tip filtru cârlig înainte prioritate 0;
nft add regula inet filter forward ct status dnat accept;
scăderea politicii;
}
nft
de eliminat,
deja în interiorul unui filtru inet înainte
(lanț) bloc
Asa de adăugați regula filtru inet înainte
trebuie de asemenea eliminate. De fapt, cel ;
este de prisos pentru că urmează o nouă linie după.
ct status dnat accept
scăderea politicii;
trebuie pus cu definiția lanțului de bază
De data aceasta cu obligatoriu ;
parte a sintaxei. cel politică
cuvântul cheie face parte din lanţ definiție, nu face parte din a regulă definiție. Deși acest lucru pare să fie acceptat în prezent separat de definiția lanțului său de bază prin reguli între, nu este ceva pe care să te bazezi: acest lucru s-ar putea schimba într-o ediție ulterioară.
Aceeași observație se aplică și pentru ieșire
lanț: nu separa acceptarea politicii;
din definiția lanțului său de bază, astfel încât să nu inserați reguli din greșeală mai târziu.
The redirecţiona
lanțul ar trebui să fie înlocuit în cele din urmă cu:
lanț înainte {
tip filtru cârlig înainte prioritate 0; scăderea politicii;
ct status dnat accept
}
Ceea ce ar fi sintaxa corectă, dar nu chiar interesantă, este să definiți regula nu în interiorul blocurilor, ci complet în afara structurilor, la sfârșitul scriptului astfel:
lanț înainte {
tip filtru cârlig înainte prioritate 0; scăderea politicii;
}
}
adauga regula inet filtru inainte ct stare dnat accept
Oricum set de reguli liste nft
îl va afișa apoi înapoi ca înainte în interiorul filtru inet înainte
bloc de lanț.
Note:
în timp ce este în regulă de utilizat protocol ip icmp
, nu este OK de folosit ip6 nexthdr ipv6-icmp
motivul este că, spre deosebire de IPv4, în care protocolul din antetul IPv4 este întotdeauna protocolul de nivel 4, IPv6 următorul antet nu este întotdeauna antetul stratului 4 (icmp, udp, tcp...): ar putea fi în schimb un Antetul extensiei care apar între antetul IPv6 și antetul stratului 4 (final). În acest caz, regula nu se va potrivi.
Sistemul de operare a determinat deja ce protocol de nivel 4 îi aparține acest pachet, astfel încât informațiile sunt disponibile ca metainformații, mai degrabă decât informații despre conținutul pachetului: meta l4proto ipv6-icmp
.
Acesta este de asemenea documentate în pagina de manual:
Această expresie se referă la câmpurile antet ipv6. Atenție la utilizare
ip6 nexthdr
, valoarea se referă doar la antetul următor, adică ip6 nexthdr tcp
se va potrivi numai dacă pachetul ipv6 nu conține niciunul
antete de extensie. Pachetele care sunt fragmentate sau de ex. conțin a
anteturile extensiilor de rutare nu vor fi potrivite. Vă rugăm să utilizați meta l4proto
dacă doriți să potriviți antetul de transport real și să ignorați oricare
în schimb anteturi suplimentare de extensie.
Dar de fapt, deoarece aceeași linie include un tip icmpv6...
linie, aceasta filtrează deja protocolul de nivel 4 pentru a se potrivi cu ICMPv6 și, în același timp utilizarea ICMPv6 setează implicit protocolul de nivel 3 să se potrivească cu IPv6: nu este nevoie de nimic pentru a face bine.
La fel și linia anterioară se poate face fără protocol ip icmp
din aceleași motive (dar comportamentul său actual este încă în regulă).
Linia:
ip6 nexthdr icmpv6 tip icmpv6 rată limită de solicitare eco peste 10/secundă rafală 4 pachete picătură
trebuie înlocuit pur și simplu cu:
Rata limită de solicitare de eco de tip icmpv6 peste 10/secundă explozie 4 pachete
(fără a fi nevoie de antecedente meta nfproto ipv6 meta l4proto icmpv6
)
TFTP
TFTP folosește numai UDP
Portul TCP 69 nu este niciodată utilizat, așa că nu necesită o regulă pentru a-l permite.
TFTP și firewall cu stare
TFTP este un protocol la fel de dificil ca FTP pentru firewall-uri. După interogarea inițială, transferul de date în sine nu mai folosește portul UDP 69 nicăieri. Utilizarea adecvată a Ajutor TFTP conttrack cu reguli suplimentare (care ar trebui să se încarce automat nf_conntrack_tftp
modulul kernel) ar trebui probabil să fie nevoie, cu excepția cazului în care setarea sysctl este depreciată net.netfilter.nf_conntrack_helper
a fost activat înapoi.
Acest lucru ar deveni cu adevărat în afara subiectului pentru a aborda acest lucru aici. Vezi începutul (doar) răspunsului meu la CentOS 8 ca router NAT cu nft și firewalld - cum îl fac să treacă TFTP? pentru a avea un exemplu de set de reguli TFTP care poate fi copiat pentru a înlocui Exemplu FTP în wiki-ul nftables.
reguli identice cu doar valori de port diferite pot fi factorizate folosind seturi anonime. nftables versiunea >= 1.0.2 are chiar și -o
(optimizare) opțiune să încerci să faci asta automat.