站点图标 谷姐靓号网

【Linux 防火墙】nftables 简单上手-黎东林

Rate this post

Debian 11 已自带 nftables,为 iptables 原团队研发的新一代 netfilter 解释器/命令行,性能更高效,命令行更直观,建议代替 iptables 使用。

官方Wiki:https://wiki.nftables.org

简单记录一下我习惯启用基本 nftables 的步骤:

1. mkdir /etc/nftables
2. vim /etc/nftables/default.nft

#!/usr/sbin/nft -f

flush ruleset

table ip default {

chain input {

type filter hook input priority 0; policy drop;

iif lo accept
ct state established, related accept

# ping
icmp type echo-request limit rate 500/second accept

# SSH
tcp dport 22 accept

# Nginx
#tcp dport { 80, 443 } accept
}

chain forward {

type filter hook forward priority 0; policy drop;

ct status dnat accept
}
}

table ip6 default {

chain input {

type filter hook input priority 0; policy drop;

iif lo accept
ct state established, related accept

icmpv6 type { nd-nei**or-solicit, nd-router-advert, nd-nei**or-advert } accept

# ping
icmpv6 type echo-request limit rate 500/second accept
}

chain forward {

type filter hook forward priority 0; policy drop;

ct status dnat accept
}
}

3. vim /etc/nftables.conf

include "/etc/nftables/default.nft"

4. systemctl start nftables
5. systemctl enable nftables
6. systemctl restart nftables
7. 如有报错 systemctl status nftables 检查错误报告

8. 端口转发示例

table ip default {

chain input {

type filter hook input priority 0; policy drop;

iif lo accept
ct state established, related accept

# ping
icmp type echo-request limit rate 500/second accept

# SSH
tcp dport 22 accept
}

chain forward {

type filter hook forward priority 0; policy drop;

ct status dnat accept
}

chain prerouting {

type nat hook prerouting priority -100; policy accept;

iif eth0 tcp dport 443 dnat to ip 目的地:port 端口
}

chain postrouting {

type nat hook postrouting priority 100; policy accept;

masquerade
}
}

完。

热议
推荐楼 zhujizixun 9小时前

nftables天下第一!好用且强大,主机资讯帮顶。

3楼 shuang76 3小时前

nft天下第一了?

4楼 fuzzylogic 1小时前

ufw语法更直观

5楼 sRGB 1小时前

之前 iptables 不是白学了,之前写的 iptables 脚本不是不能用了。

debian buster不能启动docker守护进程(dockerd)的解决办法
iptables v1.8.2 (nf_tables): Chain already exists 解决办法
故障原因是Docker用iptables初始化NAT网络,而Debian buster使用 nftables 而不是 iptables,导致dockerd不能正常完成NAT初始化,出错退出。
处理方法是调用update-alternatives强制Debian用iptables而不是nftables。

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
# for ipv6
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

6楼 buste 1小时前

可以

7楼 51Yo 1小时前

我还是喜欢用firewall-cmd

8楼 chxin 半小时前

之前 iptables 不是白学了,之前写的 iptables 脚本不是不能用了。

debian buster不能启动docker守护进程 ...

爱用啥就装啥呗,又不是iptables不更新也不兼容了

9楼 88232128 半小时前

我还是喜欢用firewall-cmd

nftables可以firewalld强大多了

10楼 燕十三丶 半小时前

不错 晚上回去了解下

申明:本文内容由网友收集分享,仅供学习参考使用。如文中内容侵犯到您的利益,请在文章下方留言,本站会第一时间进行处理。

退出移动版