iptables基本命令

# 查看规则列表
iptables -L -n

# 放行指定端口:22
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 放行IP:123.123.56.50
iptables -A INPUT -s 123.123.56.50 -j ACCEPT

新建脚本 ipt.sh

vi ipt.sh

Debian Ubuntu 脚本内容

# 清空所有默认规则
iptables -F
# 清空所有自定义规则
iptables -X
# 所有计数器归0
iptables -Z
# 重新设置iptables
# 设置iptables白名单开始
# 允许icmp
iptables -A INPUT -p icmp -j ACCEPT
# 放行端口:8080
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# 放行IP:123.123.56.56
iptables -A INPUT -s 123.123.56.56 -j ACCEPT
# 禁止其他不匹配的规则访问本机
iptables -P INPUT DROP
#配置写入文件,重启也生效。
modprobe ip_tables
iptables-save > /etc/iptables.up.rules

CentOS 脚本内容

# 清空所有默认规则
iptables -F
# 清空所有自定义规则
iptables -X
# 所有计数器归0
iptables -Z
# 重新设置iptables
# 设置iptables白名单开始
# 允许icmp
iptables -A INPUT -p icmp -j ACCEPT
# 放行端口:8080
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# 放行IP:123.123.56.56
iptables -A INPUT -s 123.123.56.56 -j ACCEPT
# 禁止其他不匹配的规则访问本机
iptables -P INPUT DROP
#配置写入文件,重启也生效。
service iptables save
#重启iptables服务
systemctl restart iptables.service

Debian Ubuntu 配置重启不失效

iptables 规则设置后都是即时生效的,在机器重启后,一般情况下 iptables 中的配置信息会被清空。
通过下面教程的方式,可以做到重启规则不失效。

先将防火墙规则保存到/etc/iptables.up.rules文件中:

iptables-save > /etc/iptables.up.rules

然后修改脚本/etc/network/interfaces,在末尾添加一行,在网络启动时应用防火墙规则。

# vi编辑命令
vi /etc/network/interfaces

# 在最后 添加下面一行
pre-up iptables-restore < /etc/iptables.up.rules


# 重启测试
reboot

CentOS 7 卸载firewalld防火墙

systemctl disable firewalld
systemctl stop firewalld
systemctl mask firewalld
systemctl disable firewalld.service

CentOS 7 安装iptables防火墙

yum install iptables -y
yum install iptables-services -y
systemctl enable iptables
systemctl enable iptables.service