iptables详解

目录

1.表和链

1.表:

优先级:数据包按 raw → mangle → nat → filter 的顺序经过各表

raw 表:控制数据包是否被状态跟踪机制处理,绕过连接跟踪以提升性能
    PREROUTING
    OUTPUT

mangle 表:修改数据包的标记或元数据(如TTL、TOS、MARK),用于流量整形或策略路由。    
    PREROUTING
    INPUT
    OUTPUT
    FORWARD
    POSTROUTING

nat 表:网络地址转换
    PREROUTING:数据包进入“路由前”,修改“目标”地址(DNAT),路由重定向。
    POSTROUTING:数据包离开路由后,修改源地址(SNAT)、源地址伪装。
  

filter 表:默认的数据包过滤表
    INPUT:目标为本机,过滤进入本机的流量(如 SSH、HTTP)。
    OUTPUT:本机发出,过滤本机外联流量(如限制访问)。
    FORWARD:数据包需转发(非本机目标)。


5链关键区别:PREROUTING/POSTROUTING:修改地址(NAT)。
         INPUT/OUTPUT:过滤本机相关流量。
         FORWARD:控制转发流量。

流量过程:
    外部流量进入:PREROUTING → 路由决策 → INPUT(本机)或 FORWARD(转发)。
    内部流量发出:OUTPUT → 路由决策 → POSTROUTING → 离开本机。

2.语法详解

语法:iptables [-t 表名] [规则参数] [链名] [协议地址参数] [-j 动作]

1.表名:raw, mangle,nat,filter 

2.规则参数:
    参数	            作用
    -t <表名>	        指定操作的表(如 -t nat、-t filter,默认 filter)。
    -A <链名>	        追加 规则到链尾(如 -A INPUT)。
    -I <链名> [规则号]	插入 规则到链首或指定位置(如 -I INPUT 2)。
    -D <链名> <规则号>	删除 指定规则(如 -D INPUT 3)。
    -L	                列出 规则(-L INPUT 查看特定链)。
    -v	                显示详细信息(如数据包计数 pkts 和字节 bytes)。
    -n	                禁用 DNS 反向解析,加快输出速度。
    -F	                清空 链中的所有规则(-F INPUT 清空 INPUT 链)。
    -P <链名> <动作>	    设置链的默认策略(如 -P INPUT DROP)。

3.链名:
    入站流量:PREROUTING → INPUT;
    出站流量:OUTPUT → POSTROUTING
    转发流量:PREROUTING → FORWARD → POSTROUTING;

4.协议地址参数:
    参数	    作用
    -p <协议>	协议(如 -p tcp、-p udp、-p icmp)。
    --dport     目标端口(需配合 -p tcp/udp,如 --dport 80)。
    --sport     源端口(如 --sport 22)。
    -s <IP>	    源 IP(如 -s 192.168.1.100)。
    -d <IP>	    目标 IP(如 -d 10.0.0.1)。
    -i <网卡>	输入网卡(如 -i eth0)。
    -o <网卡>	输出网卡(如 -o wlan0)。
    -m <模块>	使用扩展模块(如 -m state --state ESTABLISHED)。

5.动作:
    参数	        作用
    -j ACCEPT	    允许数据包通过。
    -j DROP	        丢弃数据包(无响应)。
    -j REJECT	    拒绝数据包(返回 ICMP 拒绝消息)。
    -j LOG	        记录日志(/var/log/messages)。
    -j DNAT	        目标地址转换(如 -j DNAT --to-destination 192.168.1.2:80)。
    -j SNAT	        源地址转换(如 -j SNAT --to-source 1.2.3.4)。
    -j MASQUERADE	动态 SNAT(适用于拨号或 DHCP 获取 IP)。

3.常用示例

(1)查看规则
iptables -L -n -v          # 查看 filter 表规则(默认)
iptables -t nat -L -n -v   # 查看 nat 表规则
iptables -L INPUT -n -v    # 查看 INPUT 链规则
(2)允许/拒绝流量
iptables -A INPUT -p tcp --dport 22 -j ACCEPT   # 允许 SSH
iptables -A INPUT -p tcp --dport 80 -j DROP    # 拒绝 HTTP
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT  # 允许局域网访问
(3)NAT 与端口转发
# SNAT(内网机器通过网关访问外网)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# DNAT(将外网 80 端口转发到内网 192.168.1.2)
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.1.2:80
(4)保存与恢复规则
service iptables save # 保存规则
iptables-save > /etc/iptables.rules   # 保存规则
iptables-restore < /etc/iptables.rules # 恢复规则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

skyQAQLinux

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值