Featured image of post Ubuntu 20.04 server iptables 持久化

Ubuntu 20.04 server iptables 持久化

Ubuntu 20.04 上 iptables 持久化操作

有一批服务器需要做 iptables 持久化,开机自动加载。

在 Ubuntu 12.04 时代, 可以把加载脚本写到 /etc/rc.local 开机自动加载,Ubuntu 20.04 要启用 rc.local 太麻烦,用 netfilter-persistent 来实现自动加载。

netfilter-persistent 加载 ipset-persistentiptables-persistent 保存的规则。

TLDR

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# noninteractive install
sudo debconf-set-selections <<EOF
iptables-persistent iptables-persistent/autosave_v4 boolean true
iptables-persistent iptables-persistent/autosave_v6 boolean true
ipset-persistent ipset-persistent/autosave boolean true
EOF

sudo apt update && sudo apt install netfilter-persistent ipset-persistent iptables-persistent  -y

sudo netfilter-persistent save
sudo systemctl enable netfilter-persistent
sudo systemctl start netfilter-persistent

静默安装

ipset-persistent 和 iptables-persistent 安装过程中会弹出交互窗,选择是否自动保存规则。

交互会打断服务器上脚本安装,需要无交互静默安装。

Ubuntu 上软件包安装配置项归 debconf 管理,在一台机器上交互安装完成后,用 debconf-show 查看软件包的配置项。

1
2
3
4
5
6
sudo debconf-show ipset-persistent
* ipset-persistent/autosave: true

sudo debconf-show iptables-persistent
* iptables-persistent/autosave_v4: true
* iptables-persistent/autosave_v6: true

在安装前,用 debconf-set-selections 在 debconf 数据库中插入对应的内容,即可实现无交互静默安装。

debconf-set-selections 配置语法

1
{包名} {配置项key} {配置项类型} {配置项value}

生成的配置如下

1
2
3
4
5
sudo debconf-set-selections <<EOF
ipset-persistent ipset-persistent/autosave boolean true
iptables-persistent iptables-persistent/autosave_v4 boolean true
iptables-persistent iptables-persistent/autosave_v6 boolean true
EOF

执行 sudo apt install netfilter-persistent ipset-persistent iptables-persistent -y 即可静默安装。

持久化

保存规则

sudo netfilter-persistent save

自动加载

1
2
sudo systemctl enable netfilter-persistent
sudo systemctl start netfilter-persistent

参考链接

Built with Hugo
主题 StackJimmy 设计