TOC

iptables (1): 基础知识

iptables 的历史变更,发展趋势,和其他技术的关联我也曾花了不少时间去了解,可以说还是很不全面,就不献丑了(或者以后再来说说)。

这里就单单讲一下 iptables。

基本思想

在网络数据传输过程中有几个关键点埋上钩子,每个钩子上绑定了一个规则链(CHAIN)。
我们在这些链上注册一些处理规则(RULE),也就是 条件操作
网络包走到埋点的地方时,内核会逐个规则检查,如果符合条件就会执行预定操作。

此外:

  1. 这些处理规则按照不同类型,分成了五类,存在五张不同的表中。
  2. 每个规则链可以设置一个预定的操作(文档中称之为:策略 Policy)。

五个点

  • PREROUTING 路由:内核收到网络包之后,判断该包是否是自己的,应该给哪个程序
  • INPUT 用户程序收到包之前(内核判断是自己的包之后,传输到用户程序)
  • OUTPUT 程序往外发包
  • FORWARD 这个包不是自己的,然后需要中转出去
  • POSTROUTING 路由:系统判断该包应该怎么发出

PS:可以自定义新的链,然后再别的链中引用。我所处理的任务都没有到需要创建新链的地步,所以没有接触过。

五张表

应该说是五个功能。

  • filter 过滤,即判断这个包。默认
  • nat 地址转换
  • mangle 数据包修改,日常网络管理应该不会用到
  • raw 数据包修改(在内核处理之前)
  • security unknown

操作类型

  • ACCEPT 放行
  • DROP 拦截
  • REJECT 拦截,但是告知对方
  • MARK 加标记

NAT

  • SNAT 源地址转换
  • DNAT 目的地址转换
  • REDIRECT 端口转换

参考资料与拓展阅读