openwrt是linux的个性化版本,服务于网络产品。自带了很多开源的组件:dnsmasq, pppoe,l2tp,firewall等。本次主要是关注于firewall,也就是防火墙。狭义上理解,防火墙就是对数据包的处理和过滤;广义上,防止网络攻击。
openwrt的firewall组件依赖三个主要的文件:1.配置文件/etc/config/firewall 2.服务重启文件/etc/init.d/firewall 3.解析文件/lib/firewall/uci_firewall.sh。组件最终都会转换成iptables规则。
Linux维护着4表5链(raw表,mangle表,nat表,filter表,prerouting链,postrouting链,input链,output链,forward链),所有经过三层网络的数据包,都会经过这4表5链(不是所有链都过一遍)。
iptables是用户态的插件,通过该插件,下发用户需要的规则给内核。
netfilter是内核态的插件,是一个框架。
后续会分别分享firewall,iptables, netfiter。三个话题