netfilter 学习摘要
netfilter 子系入口在L3,完成后把数据包发往L4
netfilter 主要功能:
数据包选择(iptables)
数据包过滤
网络地址转换(NAT)
数据包操纵(在路由选择之前或之后修改数据包头的内容)
连接跟踪
网络统计信息收集
常见框架
IPVS:一种传输层负载均衡解决方案。
IP sets: 一个由用户空间工具ipset和内核部分 组成的框架。
iptables:linux防火墙,为netfilter提供管理层。
A: NF_INET_PRE_ROUTING:位于方法ip_rcv() 中,这是所有入站数据包遇到的第一个挂接点,处于路由选择子系统查找之前。
涉及功能(优先级顺序): Conntrack(-200) 、 mangle(-150) 、 DNAT(-100)
B: NF_INET_LOCAL_IN :这个挂在点位于ip_local_deliver()中,对于所有发送给当前主机的入站数据包,经过prerouting执行后,都到达这里。
涉及功能:mangle(-150) 、 filter(0) 、 SNAT(100) 、 Conntrack(INT_MAX-1)
C: NF_INET_FORWARD: 这个挂载点位于ip_forward(),对于所有要转发的数据包,经过prerouting 并执行后,都到这个挂载点。
涉及功能:mangle(-150) 、 filter(0)
D: NF_INET_LOCAL_OUT:这个挂载点位于_ip_local_out(),当主机生成的所有出站数据包都在经过这个挂载点后到达postrouting.
涉及功能: Conntrack(-200) 、 mangle(-150) 、 DNAT(-100) 、 filter(0)
E: NF_INET_POST_ROUTING: 这个挂载点位于ip_output(),所有要转发的数据包经过forward后到达这个挂载点,当主机生成的数据包经过local_out后将到达这个挂载点。
涉及功能:mangle(-150)、SNAT(100)、Conntrack(INT_MAX)
在同一挂接点,优先级越低的回调函数越先被调用。