在嵌入式设备上移植iptables,个人觉得这个还是有点麻烦的,一方面内核要支持,另一方面是库要支持(库要放齐全)。
首先,我在网上下载了一个iptables-1.4.4版本的iptables包,然后进行交叉编译,当然编译期间也遇到了种种问题,不过也最终解决了,主要是IPV6的一些东西找不到,那么我也就直接屏蔽了相关的代码,也许有其他办法,不过当时我直接屏蔽掉了。
其次,生成了iptables这个二进制文件和一些相关的库(相当重要的库),libxtables.so.2.0.0 libiptc.so.0.0.0 ---拷贝到板子的lib下,还有在目录extentions/下的库文件,这个也至关重要,如libxt_udp.so libxt_tcp.so libxt_standard.so libipt_SNAT.so libipt_DNAT.so也拷贝到lib下面。如果库不全的话,可能回出现一下问题(忘记了---),还要纪录一下这个库跟哪些东西相关libipt_SNAT.so,libipt_DNAT.so 支持 “--to”、“-j SNAT”和 “-j DNAT”选项,libipt_tcp.so支持“-- dport”选项。
再者,就是内核功能的添加,虽然命令移植成功了,但这个功能需要内核的支持。
Networking support --->
Networking options --->
Network packet filtering framework (Netfilter) -->
Core Netfilter configuration --->
全选为built-in [*]
IP: Netfilter configuration --->
全选为built-in [*]
其实我也想全选[*]但不允许,我的内核空间没有分配那么大,所以我只能添加些需要的东西,试着去添加,这个比较痛苦。
到此算是结束了iptables的移植了!