最近为客户写应用程序来测试网卡,客户要求ping自己来检查是否通路,发现ping开发板自己IP时不管插不插自回环网线都能ping通,而我写的测试程序其实就是对ping命令进行的字符串分析,因此这样是不能检测出网卡的通路与否。后来知道ping自己ip时会路由到本地环回的虚网口,数据包根本没有到物理层从网卡发出。因此不管网卡好坏都可以ping通。组长跟我说用iptables命令来做NAT转换ip,可以实现这个功能。
根文件系统中没有iptables这个命令,因此需要交叉编译下iptables命令:
下载源码包
#apt-get source iptables
解压进入源码包,交叉编译源码的步骤基本都一样,先configure,指定安装目录以及交叉编译目标,然后make make install
注意这里指定安装目录的时候最好指定一个路径简单的目录,因为将生成的bin include以及lib放到rootfs中使用时出现一个问题就是运行iptables时找不到SNAT文件。用LD_LIBRARY_PATH指定也不行,后来用strace命令跟踪iptables命令,发现它在查找类似SNAT这些相关的库文件时是按照安装路径的目录来查找的,跟qtopia的安装目录也必须一致是一样的,所以最好安装在路径简单的目录,这样按照同样的路径放到rootfs中就可以使用了,当然,主要是lib下