CentOS下iptables学习使用指南
iptables是Linux内核级的IPv4防火墙工具,通过配置规则实现对数据包的过滤、转发、地址转换等功能。其核心逻辑围绕“表(Table)”“链(Chain)”“规则(Rule)”展开:
filter表(默认,用于数据包过滤)、nat表(用于网络地址转换,如端口转发)、mangle表(修改数据包头部)、raw表(连接跟踪前处理)。filter表包含INPUT(进入本机)、OUTPUT(本机发出)、FORWARD(转发);nat表包含PREROUTING(路由前,如端口转发)、POSTROUTING(路由后,如SNAT)。CentOS 7及以上默认使用firewalld,若需使用iptables,需先禁用firewalld并安装iptables-services:
systemctl stop firewalld # 停止firewalld服务
systemctl disable firewalld # 禁用firewalld开机启动
yum install -y iptables-services # 安装iptables-services
systemctl enable iptables # 启用iptables开机启动
systemctl start iptables # 启动iptables服务
首次使用需清空默认规则,避免残留规则影响配置:
iptables -F # 清空filter表所有规则
iptables -X # 删除用户自定义的空链
iptables -Z # 清空所有计数器(匹配包数、字节数)
iptables -L -n -v
iptables -L INPUT -n -v
iptables -L -n --line-numbers
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -I INPUT 1 -s 192.168.1.100 -j DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -D INPUT 3
iptables -D INPUT -s 192.168.1.100 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
service iptables save # 保存到/etc/sysconfig/iptables
iptables-restore < /etc/sysconfig/iptables
192.168.1.100访问所有端口:iptables -A INPUT -s 192.168.1.100 -j ACCEPT
192.168.1.0/24访问SSH(端口22):iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 49152:65534 -j ACCEPT # 被动模式端口范围
10.0.0.1:iptables -A INPUT -s 10.0.0.1 -j DROP
10.0.0.0/8:iptables -A INPUT -s 10.0.0.0/8 -j DROP
echo 1 > /proc/sys/net/ipv4/ip_forward # 临时开启IP转发
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
/etc/sysctl.conf):net.ipv4.ip_forward = 1
sysctl -p # 生效配置
INPUT链默认策略为DROP,防止误操作导致无法连接。ping、telnet等工具测试端口是否可达,确保配置正确。service iptables save保存规则,重启后自动加载;若使用iptables-persistent(Debian/Ubuntu),可通过iptables-save > /etc/iptables/rules.v4保存。