云服务器iptables常用命令完整列表
iptables基础操作命令
查看规则命令
- iptables -L:列出所有防火墙规则,显示当前生效的规则列表
- iptables -L -n:以数字格式显示IP地址和端口,不进行DNS解析,提高显示速度
- iptables -L -v:显示详细信息,包括每个规则匹配的数据包数量和字节数
- iptables -L -n -v:组合使用,以数字格式显示详细信息,是最常用的查看命令
- iptables -L --line-numbers:显示规则编号,方便后续删除或修改特定规则
- iptables -t nat -L:查看NAT表的规则,用于网络地址转换相关配置
- iptables -t filter -L:查看filter表规则,这是默认表,用于数据包过滤
规则管理命令
- iptables -A INPUT -j ACCEPT:在INPUT链末尾添加一条允许所有流量的规则
- iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT:在INPUT链第1条位置插入允许HTTP访问的规则
- iptables -D INPUT 3:删除INPUT链中的第3条规则
- iptables -D INPUT -s 192.168.1.100 -j DROP:删除匹配特定条件的规则
- iptables -R INPUT 2 -j DROP:替换INPUT链中第2条规则为DROP动作
- iptables -F:清空所有链中的所有规则,慎用
- iptables -F INPUT:只清空INPUT链中的规则
- iptables -X:删除所有用户自定义的链
- iptables -Z:将所有规则的数据包计数器和字节计数器归零
- iptables -P INPUT DROP:设置INPUT链的默认策略为DROP,拒绝所有未匹配的流量
参数说明命令
表和链操作参数
- -t, --table:指定要操作的表,常用选项包括filter(默认)、nat、mangle、raw
- -A, --append:在指定链的末尾添加一条新规则
- -I, --insert:在指定链的指定位置插入一条新规则
- -D, --delete:删除指定链中的一条规则
- -R, --replace:替换指定链中的某条规则
- -L, --list:列出指定链的规则
- -F, --flush:清空指定链的所有规则
- -N, --new-chain:创建一个新的自定义链
- -X, --delete-chain:删除指定的自定义链
- -P, --policy:设置指定链的默认策略
匹配条件参数
- -s, --source:指定源IP地址或网段,如192.168.1.0/24
- -d, --destination:指定目标IP地址或网段
- -p, --protocol:指定协议类型,如tcp、udp、icmp、all
- –dport, --destination-port:指定目标端口,必须配合-p参数使用
- –sport, --source-port:指定源端口,必须配合-p参数使用
- -i, --in-interface:指定数据包进入的网络接口,如eth0
- -o, --out-interface:指定数据包流出的网络接口
- -m, --match:指定使用扩展模块,如state、connlimit、recent等
动作参数
- -j, --jump:指定规则匹配后的动作,如ACCEPT、DROP、REJECT、LOG等
- ACCEPT:允许数据包通过
- DROP:丢弃数据包,不发送任何响应
- REJECT:拒绝数据包,并发送拒绝响应
- LOG:记录数据包信息到系统日志
- RETURN:返回到调用链继续处理
端口管理命令
开放端口命令
- iptables -A INPUT -p tcp --dport 22 -j ACCEPT:开放SSH端口22
- iptables -A INPUT -p tcp --dport 80 -j ACCEPT:开放HTTP端口80
- iptables -A INPUT -p tcp --dport 443 -j ACCEPT:开放HTTPS端口443
- iptables -A INPUT -p tcp --dport 3306 -j ACCEPT:开放MySQL端口3306
- iptables -A INPUT -p tcp --dport 1000:2000 -j ACCEPT:开放端口范围1000-2000
- iptables -A INPUT -p udp --dport 53 -j ACCEPT:开放DNS端口53(UDP协议)
- iptables -I INPUT -p tcp --dport 8080 -j ACCEPT:在规则列表开头插入开放8080端口的规则
限制端口访问命令
- iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT:只允许特定IP访问SSH端口
- iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT:允许整个网段访问MySQL端口
- iptables -A INPUT -p tcp --dport 3306 -j DROP:拒绝所有对MySQL端口的访问
- iptables -I INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT:限制HTTP访问频率,每分钟最多25个连接,突发100个
IP访问控制命令
允许IP访问命令
- iptables -A INPUT -s 192.168.1.100 -j ACCEPT:允许来自特定IP的所有流量
- iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT:允许来自整个网段的流量
- iptables -A INPUT -s 10.0.0.0/8 -j ACCEPT:允许来自10.0.0.0/8大网段的流量
- iptables -I INPUT 1 -s 123.45.67.89 -j ACCEPT:在规则列表最前面插入允许特定IP的规则
拒绝IP访问命令
- iptables -A INPUT -s 192.168.1.100 -j DROP:拒绝来自特定IP的所有流量
- iptables -A INPUT -s 10.0.0.0/8 -j DROP:拒绝来自整个网段的流量
- iptables -I INPUT 1 -s 1.2.3.4 -j DROP:在规则列表最前面插入拒绝特定IP的规则
- iptables -A INPUT -s 192.168.1.0/24 -j REJECT:拒绝网段访问并发送拒绝响应
连接状态管理命令
状态检测命令
- iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT:允许已建立的连接和相关连接通过
- iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT:只允许新的HTTP连接
- iptables -A INPUT -m state --state INVALID -j DROP:丢弃无效的数据包
- iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT:使用conntrack模块进行连接跟踪
本地回环和ICMP命令
- iptables -A INPUT -i lo -j ACCEPT:允许本地回环接口的所有流量
- iptables -A OUTPUT -o lo -j ACCEPT:允许本地回环接口的输出流量
- iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT:允许ICMP ping请求
- iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT:限制ping请求频率为每秒1次
服务管理命令
iptables服务控制命令
- service iptables start:启动iptables防火墙服务
- service iptables stop:停止iptables防火墙服务
- service iptables restart:重启iptables防火墙服务
- service iptables status:查看iptables服务运行状态
- service iptables save:保存当前规则到配置文件
- systemctl start iptables:使用systemctl启动iptables服务(新版本系统)
- systemctl stop iptables:使用systemctl停止iptables服务
- systemctl enable iptables:设置iptables开机自启
- systemctl disable iptables:禁止iptables开机自启
规则保存和恢复命令
备份和恢复命令
- iptables-save > /etc/iptables.rules:将当前规则保存到指定文件
- iptables-restore < /etc/iptables.rules:从文件恢复iptables规则
- iptables-save > /root/iptables_backup_$(date +%Y%m%d).txt:带时间戳的规则备份
- iptables-restore < /root/iptables_backup_20250312.txt:恢复指定日期的规则备份
高级功能命令
NAT转换命令
- iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE:启用IP伪装,用于共享上网
- iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080:端口转发,将80端口转发到内网服务器
- iptables -t nat -A POSTROUTING -j SNAT --to-source 1.2.3.4:源地址转换
防护和限制命令
- iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j REJECT:限制SSH并发连接数不超过3个
- iptables -A INPUT -p tcp --dport 80 -m recent --name http --set:记录HTTP访问
- iptables -A INPUT -p tcp --dport 80 -m recent --name http --rcheck --seconds 60 --hitcount 10 -j DROP:60秒内超过10次访问则拒绝
- iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables dropped: ":记录被丢弃的数据包,限制日志频率
多端口和复杂匹配命令
- iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT:同时开放多个不连续端口
- iptables -A INPUT -p tcp -m multiport --dports 1000:2000,3000:4000 -j ACCEPT:开放多个端口范围
- iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST SYN -j DROP:阻止TCP SYN扫描攻击
- iptables -A INPUT -m mac --mac-source 00:11:22:33:44:55 -j ACCEPT:基于MAC地址的访问控制
实用组合命令
常用配置模板
- iptables -F; iptables -X; iptables -Z:一键清空所有规则和计数器
- iptables -P INPUT DROP; iptables -P FORWARD DROP; iptables -P OUTPUT ACCEPT:设置安全的默认策略
- iptables -A INPUT -i lo -j ACCEPT; iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT:基本安全配置
- iptables -L -n -v --line-numbers:查看带编号的详细规则列表,便于管理
通过掌握这些iptables常用命令,您可以有效管理京东云服务器的防火墙规则,构建安全可靠的网络防护体系。建议在实际操作前先在测试环境验证,避免影响生产环境的正常运行。