文章目录
1.说明2.raw表3.Mangle表1.说明
RAW表 和 MANGLE 表 实事求是的说 在⼯工作中 ⼀一般⽤用到的确实⽐比较少,⽬前更更多的 还是处在⼀一个 探索和实验的阶段 后期 随着IPTABLES的发展更更新 可能这两个表 也会加⼊入到 主流⽤用法当中
2.raw表
RAW表 是IPTABLES中 第⼀一优先级的表 (四个表 实际上在处理理时 会有优先级 这个后 ⾯面 我们紧接着就会学到)
它的作⽤用是 针对⼀一个数据包 让它可以跳过 链接跟踪 和 NAT
一个数据包 在进⼊入IPTABLES(内核netfilter功能块)之后 , 默认会对 其进⾏行行连接跟踪, Linux系统当中 存在⼀一个叫做 ip_conntrack的模块 专⻔门⽤用于 对所有进⼊入内核处理理的 数据包 连接 进⾏行行状态标记和跟踪 并且保存在⼀一个表当中 (其⽬目的 是为了了深⼊入分析数据包的信息 以 供调研)
如果设置了了 RAW表的规则 由于这个表 在IPTABLES当中 处于最⾼高优先级 , 那么之后 这个 数据包 不不会再被 Linux执⾏行行 ip_conntrack追踪记录,并且也会跳过NAT的规则
RAW表中 只有 PREROUTING 和 OUTPUT, 使⽤用的动作是 NOTRACK
RAW表的 定义⽅方法 很简单
iptables -t raw -A PREROUTING -d 192.168.56.102 -j NOTRACK
3.Mangle表
Mangle表的作⽤ 是在数据包经过路由表之前 根据规则 修改数据包的⼀些标志位, 以便其他 规则或程序 可以利⽤这种标志 对数据包进⾏⼆次处理 ⽐较常⽤的⼀种case 就是⽤这种⽅法 来做 策略路由
那么 回到我们的主题MANGLE表, 它就可以在这种情况下 发挥作⽤了 MANGLE表 可以调⽤PREROUTING链 在经过路由表之前 按照我们的需求 给某⼀类的请求 打上⼀个标签
iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 80:443 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 20:21 -j MARK --set-mark 2
制定两个 路由表10 和 20 , 并且通过 对两种标签 分别做静态路由
ip route add default via 202.106.x.x dev eth1 table 10
ip route add default via 211.108.x.x dev eth2 table 20
ip rule add from all fwmark 1 table 10
ip rule add from all fwmark 2 table 20