7.4.1. 网络过滤器行为
Netfilter 使用四个不同的表,这些表存储规范三种数据包操作的规则:
• 过滤 关注过滤规则(接受、拒绝或忽略数据包);
• NAT (网络地址转换)涉及数据包的源地址或目标地址和端口的转换;
• 失踪 涉及 IP 数据包的其他更改(包括 ToS——服务类型——字段和选项);
• 原 允许在数据包到达连接跟踪系统之前对其进行其他手动修改。
每个表都包含称为 链. 防火墙使用标准链根据预定义的情况处理数据包。 管理员可以创建其他链,只有在被标准链之一(直接或间接)引用时才会使用。
这个 过滤 表具有三个标准链:
• INPUT: 涉及目的地是防火墙本身的数据包;
• OUTPUT:关注防火墙发出的数据包;
• 前锋: 涉及通过防火墙的数据包(既不是它们的源也不是它们的目的地)。
这个 NAT table 也有三个标准链:
• PREROUTING: 一到达就修改数据包;
• POSTROUTING: 在数据包准备好继续前进时修改数据包;
• OUTPUT: 修改防火墙本身产生的数据包。
这些链在图 7.1 “如何调用 Netfilter 链” [第 155 页]。
图7.1 创新中心 网络过滤器 链被称为
每个链都是一个规则列表; 每个规则都是一组条件和满足条件时要执行的操作。 防火墙在处理一个数据包时,一条条一条规则地扫描相应的链,当满足一条规则的条件时,它就跳转(因此 -j 命令中的选项)到指定的操作以继续处理。 最常见的行为是标准化的,并且存在专门的行为。 采取这些标准操作之一会中断链的处理,因为数据包的命运已经密封(除非下面提到的例外)。 下面列出的是 网络过滤器 动作。
• 接受: 允许数据包继续前进。
• 拒绝:拒绝带有 Internet 控制消息协议 (ICMP) 错误数据包的数据包( --拒绝 类型 选项 iptables的 确定要发送的错误类型)。
• 下降:删除(忽略)数据包。
• 登录:日志(通过 syslogd的) 带有数据包描述的消息。 请注意,此操作不会中断处理,并且链的执行会在下一个规则处继续,这就是记录拒绝数据包需要 LOG 和 REJECT/DROP 规则的原因。 与日志记录相关的常见参数包括:
– --日志级别, 默认值 警告, 表示 系统日志 严重程度。
– --日志前缀 允许指定文本前缀来区分记录的消息。
– --log-tcp-sequence、--log-tcp-options 和 --log-ip-options 表示要集成到消息中的额外数据:分别是 TCP 序列号、TCP 选项和 IP 选项。
• 超日志:通过记录消息 乌洛格德,它可以比 syslogd的 用于处理大量消息; 请注意,此操作与 LOG 一样,也会将处理返回到调用链中的下一个规则。
• 链名: 跳转到给定的链并评估其规则。
• 返回:中断当前链的处理,返回调用链; 如果当前链是标准链,则没有调用链,因此默认操作(使用 -P 选项 iptables的) 被执行。
• SNAT (仅在 NAT 表):适用 源网络地址转换 (SNAT)。 额外选项描述了要应用的确切更改,包括 - 源 地址:端口 选项,它定义了新的源 IP 地址和/或端口。
• DTA (仅在 NAT 表):适用 目标网络地址转换 (DNAT)。 额外选项描述了要应用的确切更改,包括 --到目的地 地址:端口 选项,它定义了新的目标 IP 地址和/或端口。
• MASQUERADE (仅在 NAT 表):适用 伪装 (一种特殊情况 源地址转换).
• REDIRECT (仅在 NAT table):透明地将数据包重定向到防火墙本身的给定端口; 这可用于设置一个透明的 Web 代理,该代理在客户端无需配置即可工作,因为客户端认为它连接到接收者,而通信实际上是通过代理进行的。 这 --到端口 端口 选项指示应重定向数据包的端口或端口范围。
其他行动,特别是那些涉及 失踪 表,不在本文讨论范围内。 这 iptables(8) 和 ip6表(8) 手册页有一个完整的列表。
什么是ICMP? Internet控制消息协议 (ICMP) 是用于传输通信辅助信息的协议。 它测试网络连接与 平 命令,发送 ICMP 回声请求 消息,收件人打算用 ICMP 回答 回声回复 信息。 它向防火墙发出拒绝数据包的信号,指示接收缓冲区中的溢出,为连接中的下一个数据包建议更好的路由,等等。 该协议由多个 RFC 文档定义。 RFC777 和 RFC792 是第一个,但许多其他协议扩展和/或修订了协议。
➨ http://www.faqs.org/rfcs/rfc777.html
➨ http://www.faqs.org/rfcs/rfc792.html
作为参考,接收缓冲区是一个小的内存区域,用于存储数据从网络到达的时间和内核处理它的时间之间的数据。 如果该区域已满,则无法接收新数据并且 ICMP 会发出问题信号,以便发射器可以减慢其传输速率(理想情况下应该在一段时间后达到平衡)。
请注意,尽管 IPv4 网络可以在没有 ICMP 的情况下工作,但对于 IPv6 网络,ICMPv6 是严格要求的,因为它结合了在 IPv4 世界中分布在 ICMPv4 中的多种功能, Internet 组成员协议 (IGMP),和 地址解析协议 (ARP)。 ICMPv6 在 RFC4443 中定义。
➨ http://www.faqs.org/rfcs/rfc4443.html
什么是ICMP? Internet控制消息协议 (ICMP) 是用于传输通信辅助信息的协议。 它测试网络连接与 平 命令,发送 ICMP 回声请求 消息,收件人打算用 ICMP 回答 回声回复 信息。 它向防火墙发出拒绝数据包的信号,指示接收缓冲区中的溢出,为连接中的下一个数据包建议更好的路由,等等。 该协议由多个 RFC 文档定义。 RFC777 和 RFC792 是第一个,但许多其他协议扩展和/或修订了协议。
➨ http://www.faqs.org/rfcs/rfc777.html
➨ http://www.faqs.org/rfcs/rfc792.html
作为参考,接收缓冲区是一个小的内存区域,用于存储数据从网络到达的时间和内核处理它的时间之间的数据。 如果该区域已满,则无法接收新数据并且 ICMP 会发出问题信号,以便发射器可以减慢其传输速率(理想情况下应该在一段时间后达到平衡)。
请注意,尽管 IPv4 网络可以在没有 ICMP 的情况下工作,但对于 IPv6 网络,ICMPv6 是严格要求的,因为它结合了在 IPv4 世界中分布在 ICMPv4 中的多种功能, Internet 组成员协议 (IGMP),和 地址解析协议 (ARP)。 ICMPv6 在 RFC4443 中定义。
➨ http://www.faqs.org/rfcs/rfc4443.html