Puncte:2

configurez linux-ul meu ca router, cum activez redirecționarea portului cu nftables?

drapel au
ufk

Încerc să-mi configurez Gentoo Linux ca router.

aceasta este configurația mea de până acum.

WAN NIC este enp3s0 și LAN NIC este enp1s0f0

acceptând conexiuni la ICMP, porturile tcp 53, 22, 80, 443, 445, 5900 și porturile udp 53,67,68 din LAN

acceptând conexiunea de la portul SSH 22 de la WAN

acestea funcționează grozav, ceea ce nu am reușit să fac este să creez port forwarding.

Încerc să configurez asta dacă o conexiune pe portul 222 vine de la WAN, să o redirecționez la mașină cu adresa ip 192.168.1.2 pe port 22 iar această regulă nu produce o eroare, dar nici nu îmi permite să mă conectez.

aceasta este configuratia mea:

filtru ip tabel {
    intrare în lanț {
        tip filtru cârlig intrare filtru prioritar; acceptarea politicii;
        stare ct { stabilit, înrudit } accept
        dacă "lo" accept
        iif "enp1s0f0" tcp dport { 22, 53, 80, 443, 445, 5900 } contor pachete 0 octeți 0 jurnal accept
        iif "enp3s0" tcp dport { 22 } contor pachete 0 octeți 0 jurnal accept
        iif „enp1s0f0” udp dport { 53, 67, 68 } accept
        iif „enp1s0f0” protocol ip icmp accept
        contor pachete 1 bytes 259 drop
    }

    ieșire în lanț {
        tip filtru cârlig ieșire filtru prioritar; acceptarea politicii;
        stare ct { stabilit, înrudit, nou } accept
        dacă "lo" accept
    }

    lanț înainte {
        tip filtru cârlig înainte filtru prioritar; acceptarea politicii;
        iif "enp3s0" oif "enp1s0f0" stare ct { stabilit, asociat } accept
        iif "enp1s0f0" sau "enp3s0" accept
        iif „enp3s0” oif „enp1s0f0” contor pachete 0 octeți 0 picătură
    }

    postrouting în lanț {
        tip filter hook postrouting priority filter; acceptarea politicii;
    }
}
table ip nat {
    postrouting în lanț {
        tip nat hook postrouting priority srcnat; acceptarea politicii;
        oifname „enp3s0” mascarada
    }

    preroutare în lanț {
        tip nat hook prerouting prioritate 100; acceptarea politicii;
        iif „enp3s0” tcp dport { 222 } dnat la 192.168.1.2:22 ### <- REGULA DE RECOMANDARE A PORTULUI AICI
    }
}

cum pot corecta aceasta problema?

mulțumesc.

Puncte:2
drapel cl
A.B

Odată ce primul pachet al unui flux nou (deci starea NOU) traversează nat prerouting lanţ, dnat se întâmplă și cu noua destinație pachetul este direcționat și traversează filtru înainte lanţ.

Apoi această regulă o renunță:

        iif „enp3s0” oif „enp1s0f0” contor pachete 0 octeți 0 picătură

O regulă pentru a permite acest prim pachet (care nu este în stabilit stat) este necesar.

Aceasta ar putea fi inserată înaintea regulii de eliminare într-un prim mod naiv:

iif "enp3s0" oif "enp1s0f0" ip daddr 192.168.1.2 tcp dport 22 accept

și din cauza topologiei specifice: LAN 192.168.1.0/24 nu este rutabil, așa că nu este accesibil în mod implicit de pe Internet, probabil că ar fi suficient de bun (din punct de vedere tehnic, următorul router hop ar putea înșela și ajunge la 192.168.1.2:22 direct fără NAT). Dar dacă sistemul nu făcea nimic mascaradă (și a existat o rețea LAN rutabilă în loc de 192.168.1.0/24) acest lucru ar lăsa serviciul accesibil direct.

Există de fapt o metodă mai simplă și mai sigură, care este, de asemenea, mai generică în cazul în care există și alte porturi dnat-ed și toate astea dnat regulile sunt toate de permis: adăugați o regulă care permite orice pachet care a suferit a dnat transformare. Este mai detaliat în echivalent iptables-extensii' potrivire conttrack:

DNAT

O stare virtuală, care se potrivește dacă destinația inițială diferă de sursa de raspuns.

Doar introduceți acest lucru în loc filtru înainte înainte de ultimul cădere brusca regulă:

ct status dnat accept

sau pentru a fi un pic mai precis:

iif enp3s0 oif enp1s0f0 ct status dnat accept

pana la foarte precis:

iif enp3s0 oif enp1s0f0 ct state new ct status dnat ip daddr 192.168.1.2 tcp dport 22 accept

Această stare poate apărea numai din cauza unui precedent dnat regula efectuată pe un flux, deci validează intenția: accept.


Note:

  • nu este nevoie să folosiți mese diferite pentru diferite tipuri de cârlig (filtru și nat) atâta timp cât este vorba despre aceeași familie (ip Aici).

    Acesta este un obicei moștenit de la iptables care ar putea limita posibilitățile. De exemplu, domeniul de aplicare al a a stabilit este o masă. Folosind același set între a filtru lanț și a nat lanțul cere ca acestea să fie în același tabel (unde a stabilit este definit). Din păcate, multe exemple chiar și de pe wiki folosesc încă imitarea convențiilor de denumire iptables.

  • deși nu contează aici, prioritatea istorică pt nat prerouting nu este 100, ci -100 (alias dstnat).

    Ar conta doar dacă ar exista și alte mese inclusiv nat prerouting lanţuri sau dacă iptables nat regulile au fost folosite împreună (și în acest caz ar fi sfătuit să folosiți -101 sau -99 mai degrabă decât exact -100), pentru a determina care reguli au prioritate.

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.