主要参考:https://blog.csdn.net/wlzx120/article/details/52300774,取精华凭想象补充图形和部分说明。
原理
5个位置
- 1.内核空间中:从一个网络接口进来,到另一个网络接口去的
- 2.数据包从内核流入用户空间的
- 3.数据包从用户空间流出的
- 4.进入/离开本机的外网接口
- 5.进入/离开本机的内网接口
5个规则链
- 1.PREROUTING (路由前)
- 2.INPUT (数据包流入口)
- 3.FORWARD (转发管卡)
- 4.OUTPUT(数据包出口)
- 5.POSTROUTING(路由后)
常用3个功能:
- 1.filter 定义允许或者不允许的
- 2.nat 定义地址转换的
- 3.mangle功能:修改报文原数据
规则的写法:
iptables定义规则的方式比较复杂:
格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION
-t table :3个 filter 过滤 、nat 地址转换、mangle 内容修改
COMMAND:定义如何对规则进行管理,有几类:1)链管理 -P链默认操作、 -N新建链 、-X删除链、 -E 重命名链、-Z 清空链及计数器、2)规则管理: -A 添加规则、 -D 删除规则、 -R替换规则、 -I插入 3)查看:-L 、等等
chain:指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候,是可以省略的 :INPUT OUTPUT FORWARD PREROUTING POSTROUTING
CRETIRIA:指定匹配标准 :-s 来源ip/mask、-d 目标 、-i入网卡、-o出网卡、-p协议 tcp/udp 、--dport 目的端口 --sport 等等
-j ACTION :指定如何进行处理 :ACCEPT允许、REJECT拒绝、DROP丢弃、MASQUERADE自适应地址伪装、SNAT源地址转换 --to-source、DNAT目的地址转换 --to-destination、REDIRECT、RETURN 等等
具体和例子请看一开始的连接。