「稻草」Strawing

对方拒绝了你的代码并向你抛了一个异常

« Android折腾记(LG V20)用ufsd驱动替换ntfs-3g并对接udisks2实现自动挂载 »

Android下打通RNDIS(USB网络共享)与WIFI热点

#此操作需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热点间的路由限制
本文地址:https://www.liyanfeng.com/post/139.html(如转载,需注明本原文地址)

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

搜索

网站分类

最近发表

推广内容

标签(Tags)

最新评论及回复

文章归档

Powered By Z-Blog 1.8 Walle Build 100427 Designed by Han'space

Blog by Yanfeng Lee(liyafe1997)@Daocao .[Archiver].

本博客采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可,转载本站内容即代表您同意了本协议,必须署名-非商业使用-禁止演绎。