Puncte:1

eroare de configurare după actualizarea nftables

drapel ph

Am folosit nftables în ultimii 2 ani cu aceeași configurație, am actualizat programul zilele trecute și acum mă plâng că configurația mea nu este validă, deși toată documentația încă spune că este corect. poate cineva poate observa un simbol necinstiți sau ceva?

iată configurația mea:


set de reguli de culoare

# `inet` se aplică atât pentru IPv4, cât și pentru IPv6.
tabel inet filter {
    intrare în lanț {
        tip filtru cârlig prioritate de intrare 0;

        # accepta orice trafic localhost
        dacă accept

        # fără inundații ping:
        protocol ip icmp tip icmp rată limită de solicitare eco peste 10/secundă rafală 4 pachete picătură
        ip6 nexthdr icmpv6 tip icmpv6 rată limită de solicitare eco peste 10/secundă rafală 4 pachete picătură

        # acceptă traficul provenit de la noi
        ct stat stabilit, înrudit accepta

        # ssh
        tcp dport 22 accept

        # http/https
        tcp dport 80 accept
        tcp dport 443 accept

        # tftp/netboot
        udp dport 4011 accept
        udp dport 67 accept
        tcp dport 69 accept
        udp dport 69 accept

        # ascultător
        tcp dport 8080 accept
        tcp dport 4343 accept

        # smb
        tcp dport 139 accept
        tcp dport 445 accept
        udp dport 137 accept
        udp dport 138 accept

        # mc
        tcp dport 25565 accept

        # numărați și eliminați orice alt trafic
        contrapicătură
    }

    ieșire în lanț {
        tip filtru cârlig ieșire prioritate 0;
        acceptarea politicii;
    }

    lanț înainte {
        tip filtru cârlig înainte prioritate 0;
        nft add regula inet filter forward ct status dnat accept;
        scăderea politicii;
    }
}

si eroarea la pornire:

Se pornește nftables...
/etc/nftables.conf:57:6-8: Eroare: eroare de sintaxă, adăugare neașteptată
        nft add regula inet filter forward ct status dnat accept;
            ^^^
nftables.service: Proces principal ieșit, cod=ieșit, stare=1/Eșec
nftables.service: a eșuat cu rezultatul „exit-code”.
Nu s-a pornit nftables.
Puncte:0
drapel cl
A.B

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.

PetNoire avatar
drapel ph
deci de ce a funcționat perfect cu o zi înainte de postare. De asemenea, uau, cel mai detaliat răspuns pe care l-am primit până acum, am apăsat săgeata în sus dacă acest site îmi permite să fac ceva
A.B avatar
drapel cl
A.B
@PetNoire Nu se poate ce era diferit înainte, dar a spus ce trebuie făcut. Dacă credeți că acest lucru v-a rezolvat problema, puteți în continuare să marcați acest răspuns ca răspuns acceptat pentru a-mi mulțumi.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.