Completa l'esempio di masquerading NAT usando nftables su Linux?


2

Sto cercando un esempio completo su come farlo usando nftables. Dovrebbe essere un client DHCP sull'interfaccia upstream, avere una LAN 192.168.0.0/24 sull'altra interfaccia e anche fungere da firewall.

Credito extra per l'apertura di una porta SSH sull'interfaccia di upstream e inoltro del traffico della porta 80 su un altro server sulla LAN.

Il wiki di nftables lascia alcune domande senza risposta. Ad esempio, il sezione sul masquerading non descrive come allegare la regola di masquerading a un'interfaccia rispetto all'altra.

Risposte:


2

Ecco cosa sto usando, assumendo lan0 è connesso alla tua rete interna, e wan0 al tuo ISP.

Non sono sicuro di cosa intendi per "client DHCP sull'interfaccia upstream", poiché questo viene fatto con un client DHCP, non nftables. La configurazione seguente non limita il traffico in uscita, quindi la richiesta DHCP verrà eseguita.

#!/usr/bin/nft -f

flush ruleset

table inet filter {
  chain input {
    type filter hook input priority 0; policy drop;

    # allow established/related connections
    ct state {established, related} accept

    # early drop of invalid connections
    ct state invalid drop

    # allow from loopback
    iifname lo accept

    # Allow from internal network
    iifname lan0 accept

    # allow icmp
    ip protocol icmp accept

    # allow ssh
    tcp dport 22 accept comment "SSH in"

    reject
  }

  chain forward {
    type filter hook forward priority 0;

    # Allow outgoing via wan0
    oifname wan0 accept

    # Allow incoming on wan0 for related & established connections
    iifname wan0 ct state related, established accept

    # Drop any other incoming traffic on wan0
    iifname wan0 drop
  }

  chain output {
    type filter hook output priority 0;
  }

}

table ip nat {
  chain prerouting {
    type nat hook prerouting priority 0;

    # Forward traffic from wan0 to a LAN server
    iifname wan0 tcp dport 80 dnat 192.168.0.8 comment "Port forwarding to web server"
  }

  chain postrouting {
    type nat hook postrouting priority 0;

    # Masquerade outgoing traffic
    oifname wan0 masquerade
  }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.