在Android5.1系统上的adb shell或调试串口SHELL命令行下运行相应的iptables命令,NAT功能仍不生效,但同样的命令在Android4.4和4.2上验证是成功的,于是通过iptables -t nat -nvL和iptables -nvL命令对比,并未发现区别,后来发现使用ip route list table 0命令时,5.1系统上多了一句:
192.168.43.0/24 dev wlan0table local_networkproto staticscope link
于是,我们使用ip route add 192.168.43.0/24 dev wlan0 table local_network proto static scope link命令将相应路由规则添加上,就能正常使用NAT功能了,而不会出现其他WiFi连接映射出来的AP时握手时间过长、连接上AP的设备无法PING通AP等问题。
对比了/system/netd目录下的代码,5.1上也确认多了对local_network这张table的处理。