debian 7 iptables 规则的编写保存修改

/ 0
在系统中,往往需要进行iptables规则的编写,但是当系统重新启动后这些规则则没有了,那么如何解决这样的问题呢?

启动iptables

modprobe ip_tables

关闭iptables(关闭命令要比启动复杂)

iptalbes -F

iptables -X

iptables -Z

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

modprobe -r ip_tables

依次执行以上命令即可关闭iptables,否则在执行modproble -r ip_tables时将会提示  FATAL: Module ip_tables is in use.

解决这样的问题也即是解决iptables规则的持久化,可能使用iptables-save与iptables-restore两个命令的组合来完成,解决方法如下:
1、先在系统中将需要使用的iptables规则进行配置;
2、使用iptables-save > /etc/iptables.rules;
3、编辑 /etc/network/if-pre-up.d/iptables 文件,使其在网卡设备准备启动的阶段执行/etc/network/if-pre-up.d/iptables中的命令进行规则的恢复,编辑内容如下:
#!/bin/bash
iptables -F
iptables-restore /etc/iptables.rules

#开放22端口ssh
iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT

#开放80端口web
iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT

#开放21、20端口ftp
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT

# 如使用vsftpd 使用了pasv 方式,如 pasv_min_port=6000 mx=7000 pasv_enable=YES之类
iptables -A INPUT -p tcp --dport 6000:7000 -j ACCEPT
iptables -A OUTPUT -p TCP --sport 6000:7000 -j ACCEPT
# 2个都要设,只设第一个不能下载,只设第二个不能上传

 

4、重启系统即可。
保存规则
执行完之后保存规则
centos是service iptables save
debian/ubuntu是
iptables-save > /etc/iptables-rules
编辑/etc/network/interfaces,追加如下内容
pre-up iptables-restore < /etc/iptables-rules

修改 /etc/network/interfaces 脚本自动应用这些规则(末行是添加的)

auto eth0
iface eth0 inet dhcp
pre-up iptables-restore <  /etc/iptables.rules
post-down iptables-save >/etc/iptables.rules #关机时,把当前iptables 储存

#清空配置(如果不用Iptables了)
iptables -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT

发表评论