Configurei o nftables como meu firewall padrão e único no openSUSE Tumbleweed. O iptables e o firewalld foram marcados como "tabu" e nunca serão reinstalados. Também verifiquei duas vezes para garantir que eles não estejam presentes no meu sistema. É o nftables e pronto.
Meu problema é que as cadeias de saída/entrada dentro de um inet
filtro não parecem afetar os dispositivos NAT. O nftables também está agindo como meu NAT para minha rede doméstica.
Tenho cerca de 8 dispositivos sempre conectados e, portanto, com NAT. Esses dispositivos (todos eles) não passam pelas minhas cadeias output
, input
o que é muito restritivo.
Não encontrei e não posso encontrar nenhuma informação sobre como garantir que dispositivos com NAT passem por outras tabelas e cadeias.
Alguém pode me explicar por que o nftables não roteia tráfego NAT por meio de outras tabelas e cadeias? Alguém pode fornecer uma maneira de enviar dados NAT por meio de outras tabelas do firewall?
Aqui está meu arquivo nftables.conf:
#!/usr/sbin/nft -f
flush ruleset
table inet filter{
chain state{
ct state {established, related} accept;
ct state invalid drop;
}
chain input{
type filter hook input priority 0; policy drop;
# allowed icmp types
ip protocol icmp icmp type {destination-unreachable, router-solicitation, router-advertisement, time-exceeded, parameter-problem} accept;
# if related or invalid
jump state;
# allow loopback
iif "lo" accept;
# NTP (Network Time)
udp dport 123 accept;
tcp dport 123 accept;
}
chain output{
type filter hook output priority 0; policy drop;
# allowed icmp types
ip protocol icmp icmp type {destination-unreachable, router-solicitation, router-advertisement, time-exceeded, parameter-problem} accept;
# if related or invalid
jump state;
# allow loopback
iif "lo" accept;
# allow TCP ident
tcp dport 113 accept;
# allow dns & dnssec
tcp dport { 53, 853 } accept;
udp dport { 53, 853 } accept;
# allow http
tcp dport { 80, 443, 1443, 8443, 8080 } accept;
udp dport { 80, 443, 1443, 8443, 8080 } accept;
# allow ftp
tcp dport { 20, 21 } accept;
udp dport 69 accept;
# allow ssh
tcp dport 22 accept;
udp dport 22 accept;
# allow email
tcp dport { 25, 465, 587 } accept; #SMTP & SMTPS
tcp dport { 110, 995 } accept; #POP3 & POP3S
udp dport { 110, 995 } accept; #POP3 & POP3S
tcp dport { 143, 993 } accept; #IMAP & IMAPS
udp dport { 143, 993 } accept; #IMAP & IMAPS
tcp dport 691; #MS Exchange
# IPsec VPN
udp dport { 500, 4500, 1701 } accept;
esp spi 50 accept;
ah spi 51 accept;
# NTP (Network Time)
udp dport 123 accept;
tcp dport 123 accept;
}
chain IPS_input{
type filter hook input priority 10; policy drop;
queue num 0
}
chain IPS_output{
type filter hook output priority 10; policy drop;
queue num 0;
}
chain IPS_forward {
type filter hook forward priority 10; policy drop;
queue num 0;
}
}
table nat {
chain prerouting {
type nat hook prerouting priority -100;
ct state invalid drop;
}
chain postrouting {
type nat hook postrouting priority 100;
ct state invalid drop;
ip saddr 10.0.0.0/24 oif eno2 masquerade; # "eno2" is our external interface
}
}