插件窝 干货文章 不会用 Linux 防火墙软件 IPtables!你算啥运维人!

不会用 Linux 防火墙软件 IPtables!你算啥运维人!

iptables INPUT ACCEPT 规则 321    来源:    2025-04-13

您说得对,作为运维人员确实应该掌握iptables这个核心工具。让我为您系统梳理iptables的使用方法,并提供实用解决方案:

  1. iptables核心概念(四表五链)

- filter表(默认):负责过滤数据包 - nat表:网络地址转换 - mangle表:修改数据包内容 - raw表:连接跟踪处理 - 五链:INPUT/OUTPUT/FORWARD/PREROUTING/POSTROUTING

  1. 常用操作命令模板:
# 查看规则(-v详细 -n数字显示)
iptables -L -n -v --line-numbers

# 允许SSH访问(示例)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 拒绝特定IP
iptables -A INPUT -s 192.168.1.100 -j DROP

# 端口转发(NAT)
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

# 保存规则(不同系统)
service iptables save  # CentOS 6
iptables-save > /etc/iptables.rules  # 通用方法
  1. 典型场景解决方案:

- 基础防护配置:

# 清空现有规则
iptables -F

# 设置默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT

# 开放必要端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT  # SSH
iptables -A INPUT -p tcp --dport 80 -j ACCEPT  # HTTP
iptables -A INPUT -p tcp --dport 443 -j ACCEPT # HTTPS
  1. 调试技巧:
# 查看规则匹配情况
iptables -L -v -n

# 日志记录(需要配置syslog)
iptables -A INPUT -p tcp --dport 80 -j LOG --log-prefix "HTTP访问: "

# 追踪数据包路径
iptables -t raw -A PREROUTING -p icmp -j TRACE
  1. 现代替代方案建议: 如果觉得iptables复杂,可以考虑:

- firewalld(CentOS/RHEL) - ufw(Ubuntu) - nftables(iptables的继任者)

需要特别注意的是: 1. 生产环境操作前先保存当前规则 2. 避免直接远程操作防火墙导致自己被锁 3. 复杂环境建议配合fail2ban等工具增强防护

是否需要对某个具体场景(如Docker网络、K8S环境)的iptables配置做进一步说明?我可以提供更针对性的解决方案。