Skip to content

Iptables и Nftables

Начиная с CentOS 8 и Ubuntu 22.04 iptables имеет ограниченную поддержку в конфигурации по умолчанию.

Правила брандмауэра в Linux работают на нескольких уровнях (снизу вверх): netfilter, iptables/nftables, firewalld.

Iptables работает с таблицами (filter, nat, mangle) и цепочками (INPUT, FORWARD, OUTPUT, PREROUTING, POSTROUTING) и действиями (ACCEPT, DROP, REJECT).

Iptables может видеть только определенные таблицы. Nftables может видеть те же таблицы и цепочки, которыми управляет iptables. Nftables может создавать дополнительные таблицы и цепочки. Iptables не может просматривать таблицы и правила, которым управляет nftables.

Firewalld конфликтует с iptables. Если используется iptables, Firewalld должен быть отключен systemctl disable --now firewalld.

Пример команд iptabes:

iptables -L -n -v
iptables-save
iptables -F # table "filter" is a default table
iptables -t nat -F
iptables -t mangle -F
iptables --policy INPUT DROP
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
iptables -I INPUT 3 -p tcp --dport 6666 -j ACCEPT
iptables -D INPUT 3
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A PREROUTING -s 192.168.200.0/255.255.255.0 ! -d 192.168.200.50 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.200.50:3128

Пример комманд nftables:

nft list tables
nft list table inet firewalld
nft list table ip filter
nft list chains
nft list chain ip filter FORWARD
nft list ruleset
nft insert rule ip filter INPUT position 7 tcp dport 6666 accept
nft delete rule filter INPUT handle 9

Пример команд Firewalld:

firewall-cmd --list-all
firewall-cmd --list-all --permanent
firewall-cmd --get-services
firewall-cmd --add-service=http --permanent 
firewall-cmd --add-service=http
firewall-cmd --add-port=6666/tcp
firewall-cmd --reload 
firewall-cmd --zone=internal --add-masquerade
firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=80:toaddr=192.168.1.10
firewall-cmd --remove-service=http --permanent
firewall-cmd --remove-port=6666/tcp --permanent

Источник 1
Источник 1