主要观点:
- 互联网通过发送和接收称为“数据包”的小块数据工作,早期数据包可自由传输,后因安全问题出现各种问题,iptables 试图解决其中一些问题。
 - NetFilter 为 iptables 提供了内核级基础,通过在数据包处理的关键阶段引入钩子点和注册回调函数,实现了防火墙、NAT 等功能。
 - iptables 可视为前端,NetFilter 为后端,使用表和链来组织和管理规则,以实现数据包过滤、NAT 等功能。
 - 通过虚拟机(如 VMware Fusion 或 Vagrant)可方便地演示 iptables 的使用。
 
关键信息:
- 早期 Linux 系统的基本网络工具存在局限性,如 ipfwadm 只有基本数据包过滤能力且不支持状态检测,ipchains 虽有改进但仍不完美。
 - NetFilter 的关键阶段包括 PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING,可注册回调函数。
 - iptables 的表包括 Filter(默认,用于数据包过滤)、nat(用于网络地址转换)、mangle(用于数据包修改)。
 - 链用于保持规则的顺序和模块化,包括内置链(INPUT、OUTPUT、FORWARD)和可创建的自定义链。
 - 在虚拟机环境中,可使用命令查看 iptables 规则,通过添加规则(如 DROP、REJECT)可控制数据包的处理,还可创建自定义链用于日志记录等。
 
重要细节:
- iptables 使用 API 接口进行注册,如 
nf_register_net_hook和nf_register_net_hooks。 - 在虚拟机设置中,使用 
sudo iptables -L -v -n查看当前规则,-A用于追加规则,-p指定协议,–icmp-type匹配 ICMP 类型,-s指定源 IP 地址,-j指定目标动作。 tcpdump操作在数据链路层或 IP 层,能捕获到达网络接口卡的数据包,即使 iptables 后丢弃它们也能看到。- 可通过 
sudo iptables -N创建自定义链,使用sudo iptables -A添加规则到自定义链,log-prefix用于日志记录,log-level设定日志级别。 - 通过 
sudo iptables -D可删除规则,sudo dmesg | grep或sudo tail -f /var/log/kern.log可查看日志。 
结论:iptables 是基础技术但已接近过时,新的技术如 nftables、eBPF 正在取代它。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。