iptables防火墙

本文详细解释了iptables的各个表(如filter、nat等)、链(如INPUT、OUTPUT、FORWARD等)以及管理选项、匹配条件和动作。通过实例介绍了如何创建、修改和应用规则来控制网络数据包的进出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iptables  [-t 表名]  管理选项  [链名]  [匹配条件]  [-j 控制类型]

1. 表:

  • filter:过滤规则表,根据预定义的规则过滤符合条件的数据包,默认表

  • nat:network address translation 地址转换规则表

  • mangle:修改数据标记位规则表

  • raw:关闭启用的连接跟踪机制,加快封包穿越防火墙速度

  • security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现

2. 链:

  • INPUT: 处理入站数据包,匹配目标IP为本机的数据包。

  • OUTPUT: 处理出站数据包,一般不在此链上做配置。

  • FORWARD: 处理转发数据包,匹配流经本机的数据包。

  • PREROUTING链: 在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的IP和端口映射到路由器的外网IP和端口上。

  • POSTROUTING链: 在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网。

3. 规则:

  • 规则定义了如何处理特定的数据包。
  • 每个规则都包含匹配条件和对匹配数据包的动作。

4.管理选项

Command 描述示例命令
-AAppend - 在指定链的末尾添加规则iptables -A INPUT -p tcp --dport 22 -j ACCEPT
-DDelete - 删除指定链上的规则iptables -D INPUT -s 192.168.1.2 -j DROP
-IInsert - 在指定链的指定位置插入规则iptables -I INPUT 3 -p udp --dport 53 -j ACCEPT
-PPolicy - 设置指定链的默认策略iptables -P INPUT DROP
-FFlush - 清空指定链上的所有规则iptables -F INPUT
-LList - 列出指定链上的所有规则iptables -L INPUT
-NNew Chain - 创建一个新的用户自定义链iptables -N MYCHAIN
-XDelete Chain - 删除指定的用户自定义链iptables -X MYCHAIN
-ZZero Counters - 将指定链上的计数器归零iptables -Z INPUT
-tTable - 指定要操作的表,如 filter、nat、mangle 等iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

5.匹配条件

Parameter 说明示例命令
-s, --source指定源 IP 地址iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
-d, --destination指定目标 IP 地址iptables -A OUTPUT -d 8.8.8.8 -j ACCEPT
-p, --protocol指定协议(如 tcp、udp、icmp)iptables -A INPUT -p tcp --dport 80 -j ACCEPT
--sport指定源端口iptables -A OUTPUT --sport 1024:65535 -j ACCEPT
--dport指定目标端口iptables -A INPUT --dport 22 -j ACCEPT
-i, --in-interface指定输入接口iptables -A INPUT -i eth0 -j ACCEPT
-o, --out-interface指定输出接口iptables -A OUTPUT -o eth0 -j ACCEPT
--state指定连接状态iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-j, --jump指定要采取的动作(ACCEPT、DROP、REJECT 等)iptables -A INPUT -j DROP
-m, --match加载扩展模块iptables -A INPUT -m comment --comment "Allow SSH"

6. 动作:

ACCEPT允许通过iptables -A INPUT -p tcp --dport 22 -j ACCEPT
DROP丢弃(拒绝)数据包iptables -A INPUT -p tcp --dport 80 -j DROP
REJECT拒绝数据包,并给发送者一个拒绝的响应iptables -A INPUT -p udp --dport 53 -j REJECT
LOG记录数据包到系统日志iptables -A INPUT -p tcp --dport 22 -j LOG --log-level 4 --log-prefix "SSH traffic: "
RETURN结束当前链的处理,返回到上一级链iptables -A INPUT -p icmp -j RETURN

7. 基本用法:

  • 查看规则:sudo iptables -L
  • 清空规则:sudo iptables -F
  • 允许特定 IP 地址:sudo iptables -A INPUT -s <IP 地址> -j ACCEPT
  • 拒绝特定端口:sudo iptables -A INPUT -p tcp --dport <端口号> -j DROP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值