- 前言
- 读者对象
- 如何阅读本书
- 勘误和支持
- 致谢
- 第 1 篇 高性能网站构建
- 第 1 章 深入理解 DNS 原理与部署 BIND
- 第 2 章 全面解析 CDN 技术与实战
- 第 3 章 负载均衡和高可用技术
- 第 4 章 配置及调优 LVS
- 第 5 章 使用 HAProxy 实现 4 层和 7 层代理
- 第 6 章 实践 Nginx 的反向代理和负载均衡
- 第 7 章 部署商业负载均衡设备 NetScaler
- 第 8 章 配置高性能网站
- 第 9 章 优化 MySQL 数据库
- 第 2 篇 服务器安全和监控
- 第 10 章 构建企业级虚拟专用网络
- 第 11 章 实施 Linux 系统安全策略与入侵检测
- 第 12 章 实践 Zabbix 自定义模板技术
- 第 13 章 服务器硬件监控
- 第 3 篇 网络分析技术
- 第 14 章 使用 tcpdump 与 Wireshark 解决疑难问题
- 第 15 章 分析与解决运营商劫持问题
- 第 16 章 深度实践 iptables
- 第 4 篇 运维自动化和游戏运维
- 第 17 章 使用 Kickstart 完成批量系统安装
- 第 18 章 利用 Perl 编程实施高效运维
- 第 19 章 精通 Ansible 实现运维自动化
- 第 20 章 掌握端游运维的技术要点
- 第 21 章 精通手游运维的架构体系
最佳实践 84:深入理解 iptables 各种表和各种链
通过以上几节的最佳实践,可以知道,iptables 为系统工程师提供了强大的包过滤功能、NAT 网络地址转换功能。在 Linux 中,为 iptables 提供这些功能的底层模块,是 netfilter 框架。netfilter 是 Linux 内核中的一系列钩子(hook),它为内核模块在网络栈中的不同位置注册回调函数(callback function)提供了支持。数据包在协议栈中依次经过这些在不同位置的回调函数的处理。
Netfilter 钩子与 iptables 各种表和链的处理顺序如图 16-13 所示。
图 16-13 netfilter 钩子与 iptables 各种表和链的处理顺序图
Netfilter 有 5 个钩子可以提供程序去注册。在数据包经过网络栈的时候,这些钩子上注册的内核模块依次被触发。这 5 个钩子的处理时间如下。
- NF_IP_PRE_ROUTING:在数据流量进入网络栈后立即被触发,这个钩子上注册的模块在路由决策前即被执行。如图 16-13 中所示的阶段。
- NF_IP_LOCAL_IN:这个钩子在路由判断确定包是发送到本机时执行。如图 16-13 中所示的阶段。
- NF_IP_FORWARD:这个钩子在路由判断是需要转发给其他主机时执行。如图 16-13 中的所示的阶段。
- NF_IP_LOCAL_OUT:这个钩子在本机进程产生的网络被送到网络栈上时执行,如图中所示的阶段。
- NF_IP_POST_ROUTING:这个钩子在数据包经过路由判断即将发送到网络前执行。如图 16-13 中所示的阶段。
Iptables 中有 5 个链(chain),分别如下。
- PREROUTING:NF_IP_PRE_ROUTING 钩子触发。
- INPUT:NF_IP_LOCAL_IN 钩子触发。
- FORWARD:NF_IP_FORWARD 钩子触发。
- OUTPUT:NF_IP_LOCAL_OUT 钩子触发。
- POSTROUTING:NF_IP_POST_ROUTING 钩子触发。
Iptables 中有 5 种表(table),分别如下。
- filter 表。filter 表是 iptables 中使用最广泛的表,这个表的作用是进行过滤,也就是由这个表来决定一个数据包是否继续它的目的地址或者被拒绝。
- nat 表。顾名思议,这个是进行网络地址转换用的,如本章中的最佳实践 83 所示,可以改变数据包的源地址或者目的地址。
- mangle 表。mangle 表用于修改 IP 的头部信息,如修改 TTL(Time to Live)。
- raw 表。raw 表为 iptables 提供了一种不经过状态追踪的机制,在大流量对外业务的服务器上使用这个表以避免状态追踪带来的性能问题。如本章中的最佳实践 81 中的案例所示。
- security 表。提供在数据包中加入 SELinux 特性的功能。一般用得不多,在下面的章节中不再包含这一部分内容。
通过以上分析,我们知道 netfilter 仅仅有 5 个钩子,而 iptables 有 5 个链和 5 种表,由此可见在一个钩子上可能有多个表的不同链需要处理,如图 16-13 中的 raw 表、mangle 表、filter 表都有 POSTROUTING 链,这些链根据自己向内核注册时的优先级(priority)依次处理。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论