原始需求是这样的,需要连通一台没有无线网卡的台式机和一台没有以太网的笔记本(手头上也没有网线),正好手上有安卓手机(年度街机K30pro)和数据线,于是寻思用USB插台式机上开USB网络共享(RNDIS),然后开WIFI热点(Android上的interface为wlan1)给笔记本,组成一个局域网。可是发现这是两个独立的interface,rndis0的网段为192.168.42.0/24,wlan1的网段为192.168.43.0/24。而且在默认情况下,这两个网段竟然无法互访,之间没有路由。
折腾的过程较为曲折,首先我尝试直接给iptables的FORWARD表加各种ACCEPT,不行,INPUT表OUTPUT表都加,都不行,甚至NAT都上了,还是不行。最后找到stackoverflow上的一个帖子,说iptables -F清空所有规则后可以,试了下还真行,可是把原先的规则清了,热点也没法正常上网了,甚至手机本身的网络都受影响了。
用iptables -nvL仔细看了下,并且用grep来划了下重点
iptables -nvL | grep --color -e "DROP" -e "wlan1" -e "rndis0" -e ^
所以解决方案也很简单,把这调规则delete掉就好:
iptables -D tetherctrl_FORWARD -j DROP
话说不知道是不是所有手机与热点有关的FORWARD表都叫tetherctrl_FORWARD,并且默认情况下都会被DROP掉。有没有别的网友帮验证一下,如果是的话,可以把这条命令做成一个App,一键解除RNDIS和WIFI热点间的路由限制。
本文地址:https://www.liyanfeng.com/post/139.html(如转载,需注明本原文地址)