androidwifi⽹络摄像头源代码_Android下打通RNDIS(USB⽹
络共享)与。。。
成长的脚印
诺珉宇图片#此操作需root权限,没有的可以略过了
世界豪车排行榜原始需求是这样的,需要连通⼀台没有⽆线⽹卡的台式机和⼀台没有以太⽹的笔记本(⼿头上也没有⽹线),正好⼿上有安卓⼿机(年度街机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 ^
发现在 tetherctrl_FORWARD表(这个表被FORWARD表引⽤)默认规则中直接被DROP掉了,这导致我之前在后⾯怎么插ACCEPT都没⽤。不太清楚官⽅的⽤意,为什么要DROP掉这些转发的流量,为了安全?(⼿机内部的热点,⼀切都在我的掌控之中能有什么不安全的嘛)
小学三年级作文我的课余生活所以解决⽅案也很简单,把这调规则delete掉就好:
iptables -D tetherctrl_FORWARD -j DROP
选墓地
之后192.168.43和42两个⽹段的机⼦(即USB连的台式机和连WIFI热点的笔记本)互相ping了下,能通了。
话说不知道是不是所有⼿机与热点有关的FORWARD表都叫tetherctrl_FORWARD,并且默认情况下都会被DROP掉。有没有别的⽹友
有没有别的⽹友帮验证⼀下,如果是的话,可以把这条命令做成⼀个App,⼀键解除RNDIS和WIFI热点间的路由限制。