基础配置(全).note
·前言:
nftables 和 iptables 之间使用同一个防火墙,如果不会配置 nftables,可以只安装nftables,然后使用iptables进行配置即可一、配置 nftables:
·安装 软件包:
apt install -y nftables iptables1、创建 nftables 表 和 链:
(1)照抄模板:
· filter 表默认就有,在 nftables 的 /etc/nftables.conf 配置文件中:
但是需要将 inet 改为 ip
vim /etc/nftables.conf
systemctl restart nftables //重启nftables,让nftables读取 /etc/nftables.conf 配置文件
systemctl enable nfatbles //将 nftables 配置为开机自启(2)(不建议)手动创建:
·nftables 创建 表和 链:
nft add table ip filter //filter表(创建表时,有没有 ip 都不影响,会自动补全)
nft add chain ip filter input //INPUT链
nft add chain ip filter output //OUTPUT链
nft add table ip nat //nat表(创建表时,有没有 ip 都不影响,会自动补全)
nft add chain ip nat prerouting //PREROUTING链
nft add chain ip nat postrouting //POSTROUTING链2、添加一个允许条目:
(1)查看 nftables 配置案例:
apt install -y man
man nftables(2)添加一个条目,允许 TCP 80端口进行访问:
# nft add rule [表名称] [链名称] [协议] dport [端口] [accept/drop]
nft add rule inet filter INPUT tcp dport 80 accept(3)查看 nftables 条目:
nft -a list ruleset //查看全部条目
nft list table inet filter //查看指定表的条目(指定的条目名称必须完全相同)(4)添加一个条目,允许 源地址为 172.16.0.0/16 的地址访问:
nft add rule inet filter INPUT ip saddr 172.16.0.0/16 accept(5)添加一个条目,允许 源地址为 192.168.123.123 的机器访问:
nft add rule inet filter INPUT ip saddr 192.168.123.123 accept(6)添加一个条目,允许 目标地址为 100.100.100.100 的数据包通过:
nft add rule inet filter INPUT ip daddr 100.100.100.100 accept3、添加一个拒绝条目:
(1)添加一个条目,拒绝 目标地址为 192.168.100.100 的数据包通过:
nft add rule inet filter INPUT ip daddr 192.168.100.100 drop二、添加 nat 条目:
只能够拥有一张 nat 表
(1)先创建 nat 表和链:(建议使用 iptables 来创建nat表)
·iptables 创建:
随意创建一个条目,让iptables自动进行创建nat表和链
apt install -y iptables
iptables -t nat -A POSTROUTING -s 1.0.0.1 -j SNAT --to 1.1.1.1
iptables -t nat -A PREROUTING -d 1.0.0.1 -j DNAT --to 1.1.1.1·nft 创建:
nft add table ip nat
nft add chain ip nat PREROUTING
nft add chain ip nat POSTROUTING(2)添加 SNAT:
nft add rule ip nat POSTROUTING ip saddr 1.1.1.1 snat to 123.123.123.123 //将 源地址为 1.1.1.1 的数据包 转换为 123.123.123.123(3)添加 DNAT:
将目标地址为 192.168.1.1:80 的数据包,目标地址转换为:192.168.1.100:8888
·仅转换地址:
nft add ip nat PREROUTING ip daddr 200.200.200.200 dnat to 131.131.131.131·转换地址的同时转换端口(或者仅转换端口)
nft add rule ip nat PREROUTING dnat tcp dport map { 80 : 192.168.1.1,8888 : 192.168.1.100 }(4)查看 nftables 防火墙条目:
nft -a list ruleset //查看全部条目
nft list table filter //查看指定表的条目
nft list table filter INPUT三、删除 nftables 防火墙(条目/表、链):
1、删除规则:
(1)先查看要删除的条目的‘handle’
nft -a list ruleset
nft list table ip nat
(2)删除 nftables 条目:
与添加条目类似,只需要将 add 替换成 delete即可
# 使用 handle,或者将其完整写一遍
nft delete rule inet ip filter INPUT handle 3
nft delete rule inet nat PREROUTING handle 7
# 再次查看:删除成功:

(3)删除 表、链:
·删除前查看:
nft -a list ruleset
·删除 inet nat 表:
nft delete table inet nat //删除表时需要写全称
# 再次查看:成功删除:

·删除 链:

nft delete chain ip filter SDF
# 再次查看:删除成功:

2、清除 nftables规则:
nft flush ruleset四、添加 允许全部、拒绝全部的规则,添加 默认规则:
1、添加 允许、拒绝全部:
2、添加 默认规则:
五、配置 保存规则,且重启不失效:
1、保存规则:
(1)保存规则:
nft list ruleset > /etc/nftables.conf(2)手动引入规则:
nft -f /etc/nftables.conf(3)配置 重启自动引入规则:
systemctl enable nftables # 将 nftables设置为开机自启动即可