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常用命令,您可以有效管理京东云服务器的防火墙规则,构建安全可靠的网络防护体系。建议在实际操作前先在测试环境验证,避免影响生产环境的正常运行。