Linux
开启swap分区
iptables 规则
iptables 基础
CentOS7 安装配置 WireGuard
SNAT 与 DNAT
UDP打洞
容器网络
网络地址转换 NAT
keepalived 配置文档
本文档使用 MrDoc 发布
-
+
首页
iptables 基础
### 概念 iptables其实不是真正的防火墙,它只是一个命令行工具,用户通过iptables这个工具,可以控制netfilter,netfilter位于内核空间,才是真正的防火墙,真正办事的"人"。 netfilter 是Linux操作系统核心层内部的一个数据包处理模块,它具有以下功能: - 网络地址转换(Network Address Translate) - 数据包内容修改; - 数据包过滤(防火墙功能); ### 五链 - `PREROUTING` 数据包刚进入网络层,路由之前; - `INPUT` 路由判断后,流入用户空间; - `OUTPUT` 用户空间发出后; - `FORWARD` 路由判断不进入用户空间,只进行转发(不是本机的数据包); - `POSTROUTING` 数据包通过网络接口出去; ### 四表 - `filter表`:负责过滤功能; - `nat表`:network address translation,网络地址转换功能; - `mangle表`:拆解报文,做出修改,并重新封装的功能; - `raw表`:关闭nat表上启用的连接追踪机制; 也就是说,我们自定义的所有规则,都是这四种分类中的规则,或者说,所有规则都存在于这4张”表”中。 > 表的优先级关系: > raw –> mangle –> nat –> filter , raw 最高 (对吗?) ### 表和链的关系 >s 表和链的关系,我觉得可以这样理解: 就好比web开发中的钩子,在不同的阶段,你注册的钩子函数可以获取到不同的数据,然后进行不同的处理。 `链`我把它理解为`阶段`,数据包进入计算机网卡后会经过多个处理阶段,比如 路由前/转发后 等等; `表`它是`规则的类型`,我把它理解为`小阶段`。规则有多种类型,不同的类型有先后执行顺序,比如在OUTPUT阶段,会先执行所有的filter规则,再执行nat规则;  ### 简化的链路图 最常用的链其实就是 `nat` 和 `filter`,只考虑这两个链,链路图如下:  #### 说明 - 在`PREROUTING`表中,NAT 阶段一般用来实现`目标地址转换(DNAT)`; - 在`POSTROUTING`表中,NAT阶段一般用来实现`源地址转换(SNAT)`; ### 如何编写规则 1. 匹配条件 ``` # 匹配源地址 -s 192.168.10.10/24 -s 192.168.10.10,192.168.10.20 # 匹配目标地址 -d 192.168.10.10,192.168.10.20 # 流入的网卡,-i选项只能用于PREROUTING链、INPUT链、FORWARD链 -i eth0 # 流出的网卡,-o选项只能用于FORWARD链、OUTPUT链、POSTROUTING链 -o eth0 ``` 2. 处理动作 ``` ACCEPT:允许数据包通过; DROP:直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。 REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息。 SNAT:源地址转换,解决内网用户用同一个公网地址上网的问题。 MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的ip上。 DNAT:目标地址转换。 REDIRECT:在本机做端口映射。 ``` > 补充一下DROP和REJECT的区别。DROP是直接把匹配到的报文丢弃,REJECT除了把报文丢弃还会给该报文中的源IP发一个ICMP报文说明目的不可达(直接回复不可达, 更强硬)。前者报文发送方只能等超时,而后者发送方因为收到了ICMP不可达所以马上就给出了提示。 3. 看一个示例: ``` iptables -t nat -A OUTPUT -p tcp --dport 5000 -j REDIRECT --to-port 5008 ``` 这个命令中参数说明: ``` -t 表示要操作的表; -A 表示追加规则; -p 表示匹配条件中的"协议"; -j 表示动作,这里是转发; ``` ### 参考 > [iptables使用教程](https://www.liuvv.com/p/a8480986.html) > [视频教程:通俗介绍linux四表五链以及自定义链的用法](https://www.bilibili.com/video/BV1RF411B7iP/?spm_id_from=333.788&vd_source=eca4416e1c0a8a9d46bdea050eca1084)
gaojian
2023年12月20日 16:18
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码