目录
车联网是防火墙上在C端少有的应用领域。防火墙的经典功能是实现内外网络的隔离,因此在企业内网、服务器网络等面向企业用户的领域内,防火墙有着广泛的应用。而在PC互联网时代,个人主机因其单一的网络结构基本不会单独配置防火墙应用,除非其安装的安全软件包含了防火墙功能。过渡到移动互联网时代之后,用户使用的智能终端由于使用了运营商级别的NAT,因此终端在IPV4网络上不能够被直接连接,再加上终端系统对权限的严格管控,使得防火墙在个人用户智能终端上显得愈发不那么重要。但进入到车联网时代和IOT时代之后,网络结构重新变得复杂起来,比如车内各种域控制器、传感器、网联模块等,组成了复杂的车内网络,承载着异常复杂的业务,防火墙的隔离功能再次变得重要起来。
网络数据包过滤的实现
Iptables防火墙包含用户空间的Iptables规则管理工具和内核空间的Netfilter包过滤模块。其中,Netfilter实现的包过滤为上层的iptables规则提供了强大和丰富的过滤逻辑。
Netfilter在内核的5个地方设置了HOOK 点,用户可以通过配置 iptables 规则,在HOOK点对报文进行过滤、修改等操作。这五个过滤点在包传输路径上的逻辑位置如下图所示:

接收路径
网卡收到报文,通过网卡驱动发送给内核协议栈,当报文达到协议栈的网络层(IP层)时,需要确定报文是应该继续往上层协议栈传送(local deliver),还是通过转发信息表转发(forward)出去;
发送路径
对本机向外发送(local out)的报文,经上层协议栈传递至协议栈的IP层,需要确定是从哪个网卡发送出去。
明确五个HOOK点的位置,是理解iptables规则逻辑的最佳方式。五个HOOK点在协议栈中的具体位置如下图所示:

iptables规则解析
Netfilter的五个HOOK点提供了以规则链(rule chain)的方式管理用户对网络包的处理需求,用户通过iptables工具向规则链添加或删除规则。规则链根据HOOK点或协议栈位置提供对应的包处理功能,而表(table)则是按照功能对规则进行逻辑分类,如用于过滤的filter表,用于网络地址转换的nat表,表与链的组织关系如下表所示:

表格来源:Things_You_Should_Know_About_Netfilter[1]
Netfilter在处理每个规则链时,会按照“raw、mangle、nat、filter、security、rawpost”的顺序依次处理对应的规则。
如何处理回环地址
在一般的认识中,当本机将数据包发送到本机上指定的一个网卡地址时,该数据包会到达这个指定的网络接口。但事实却不是这样,当数据包寻址后发现目的机器即为发送机器,它会被发送到环回接口。比如下面这个例子[1]:
# ip -4 addr ls eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
inet 192.168.1.21/24 brd 192.168.1.255 scope global eth0
# ip route get 192.168.1.21
local 192.168.1.21 dev lo src 192.168.1.21
cache <local> mtu 16436 advmss 16396 hoplimit 64
我们可以看到,发送到这台机器eth0地址的数据包将在 lo 设备或环回接口上路由,即使目标地址不是 127.0.0.1。
考虑到每个控制器基本都存在域内通信的需求,因此,针对回环地址,我们建议的防火墙策略是应该在任何情况下都要保证其联通性。
工作在三层的Iptables如何实现对MAC的过滤
笔者曾经有一个疑问,因为iptables网络防火墙工作的层级是三层,但是它却能够对处于二层的MAC地址进行过滤,比如下面这个规则:
i

本文详细解读了网络数据包过滤的iptables实现,包括规则解析、回环地址处理、MAC过滤机制,以及车联网中的安全实践,涵盖功能性应用(NAT和跨VLAN连接)、安全性应用(默认策略、网络隔离和高危端口过滤)和策略配置技巧。
最低0.47元/天 解锁文章
27

被折叠的 条评论
为什么被折叠?



