用root手动配置USB Tethering -- usb-tethering 领域 android 相关 的问题

Configuring USB tethering manually with root


1
vote

问题

中文

我已经用尽了以编程方式启用USB系列:

  • service 方法在我的手机上不起作用(三星注4)。它似乎是某种保护的API,并从 adb 戳戳它没有效果。

  • shell input 方法不适用,因为它要求设备已解锁,并且似乎没有以编程方式和非破坏性解锁设备锁定的方式指纹。

所以,我正在寻找实现这个目标"艰难的方式" ,即做Android用户空间在点击USB系绳的所有内容时做所有的事情。

据我所知,这涉及以下步骤(大多数情况都与您在Linux机器上进行的方法类似):
  1. 通过USB建立与主机的IP连接。这涉及将USB置于 rndis 模式,设置路由,分配IP等。

    我已经弄清楚了如何实现这一点并发布答案这里。

    < / li>
  2. 启动 dnsmasq 实例,通过DHCP为连接的PC分配IP,转发DNS请求。

    如果您不需要DNS服务器检测,则不需要此步骤,并在USB接口上分配静态IPS。

  3. 启用IP转发( /proc/sys/net/ipv4/ip_forward )。

  4. 设置 iptables 以启用转发/伪装。

  5. 更新流量计费的路由表。

我设法编写一堆脚本,它在通过其UI启用USB系列时,通过Android操作系统执行了一堆脚本。要创建脚本,我录制了系统状态( iptables -S ip route show table all ),而不与tetering,然后将差异转换为shell命令以将更改应用于系统。但是,我的复制品仍然不够;系统的某些部分仍然是未配置的,这可以防止流量通过。

有人有一个关于我可能缺失的线索,或者我如何缩小/调试问题?

英文原文

I've exhausted the documented methods of programmatically enabling USB tethering:

  • The service method doesn't work on my phone (Samsung Note 4). It seems to be some sort of protected API, and poking it from adb has no effect.

  • The shell input method is not applicable, as it requires that the device is unlocked, and there doesn't seem to be a way to programmatically and non-destructively unlock a device locked with a fingerprint.

So, I'm looking into achieving this goal "the hard way", i.e. do everything that the Android userspace does when you tap the USB tether checkbox.

As far as I can tell, this involves the following steps (most of which would be similar to how you'd do it on a Linux machine):

  1. Establish an IP connection to the host computer through USB. This involves putting USB in rndis mode, setting up routes, assigning an IP, etc.

    I've already figured out how to achieve this and posted the answer here.

  2. Launch a dnsmasq instance, to assign an IP to the connected PC via DHCP, and forward DNS requests.

    This step shouldn't be necessary if you don't need DNS server detection and assign static IPs on the USB interfaces yourself.

  3. Enable IP forwarding (/proc/sys/net/ipv4/ip_forward).

  4. Set up iptables to enable forwarding/masquerading.

  5. Update routing tables for traffic accounting.

I managed to write a bunch of scripts which replicate exactly the visible effects (described above) as performed by the Android OS when enabling USB tethering through its UI. To create the scripts, I recorded the system state (iptables -S, ip route show table all) with and without tethering, then converted the differences into shell commands to apply the changes to the system. However, my replicas are still not enough; some part of the system remains unconfigured which prevents traffic from going through.

Does anyone have a clue as to what I might be missing, or how I can narrow down / debug the problem?

  

回答列表

0
 
vote
vote
最佳答案
 

一个伙伴让我知道,用于转发的一个 sysctl 设置,用于转发(每个接口的全局一个和一个,然后为IPv6)。

在我的手机上,相关设置是:

  vars=(     net.ipv4.conf.all.accept_redirects=0     net.ipv4.conf.all.forwarding=1     net.ipv4.conf.default.forwarding=1     net.ipv4.conf.ip6tnl0.forwarding=1     net.ipv4.conf.lo.forwarding=1     net.ipv4.conf.p2p0.forwarding=1     net.ipv4.conf.rmnet0.forwarding=1     net.ipv4.conf.rmnet1.forwarding=1     net.ipv4.conf.rmnet2.forwarding=1     net.ipv4.conf.rmnet3.forwarding=1     net.ipv4.conf.rmnet4.forwarding=1     net.ipv4.conf.rndis0.forwarding=1     net.ipv4.conf.sit0.forwarding=1     net.ipv4.conf.wlan0.forwarding=1     net.ipv4.ip_forward=1     net.ipv6.conf.all.forwarding=2     net.ipv6.conf.all.proxy_ndp=2     net.ipv6.conf.default.forwarding=2     net.ipv6.conf.ip6tnl0.forwarding=2     net.ipv6.conf.lo.forwarding=2     net.ipv6.conf.p2p0.forwarding=2     net.ipv6.conf.rmnet0.forwarding=2     net.ipv6.conf.rmnet1.forwarding=2     net.ipv6.conf.rmnet2.forwarding=2     net.ipv6.conf.rmnet3.forwarding=2     net.ipv6.conf.rmnet4.forwarding=2     net.ipv6.conf.rndis0.forwarding=2     net.ipv6.conf.sit0.forwarding=2     net.ipv6.conf.wlan0.forwarding=2 ) ; sysctl "${vars[@]}"   

与其他,转发和束缚作品!

 

A buddy let me know that there is more than one sysctl setting for forwarding (a global one and one per interface, then more for IPv6).

On my phone, the relevant settings are:

vars=(     net.ipv4.conf.all.accept_redirects=0     net.ipv4.conf.all.forwarding=1     net.ipv4.conf.default.forwarding=1     net.ipv4.conf.ip6tnl0.forwarding=1     net.ipv4.conf.lo.forwarding=1     net.ipv4.conf.p2p0.forwarding=1     net.ipv4.conf.rmnet0.forwarding=1     net.ipv4.conf.rmnet1.forwarding=1     net.ipv4.conf.rmnet2.forwarding=1     net.ipv4.conf.rmnet3.forwarding=1     net.ipv4.conf.rmnet4.forwarding=1     net.ipv4.conf.rndis0.forwarding=1     net.ipv4.conf.sit0.forwarding=1     net.ipv4.conf.wlan0.forwarding=1     net.ipv4.ip_forward=1     net.ipv6.conf.all.forwarding=2     net.ipv6.conf.all.proxy_ndp=2     net.ipv6.conf.default.forwarding=2     net.ipv6.conf.ip6tnl0.forwarding=2     net.ipv6.conf.lo.forwarding=2     net.ipv6.conf.p2p0.forwarding=2     net.ipv6.conf.rmnet0.forwarding=2     net.ipv6.conf.rmnet1.forwarding=2     net.ipv6.conf.rmnet2.forwarding=2     net.ipv6.conf.rmnet3.forwarding=2     net.ipv6.conf.rmnet4.forwarding=2     net.ipv6.conf.rndis0.forwarding=2     net.ipv6.conf.sit0.forwarding=2     net.ipv6.conf.wlan0.forwarding=2 ) ; sysctl "${vars[@]}" 

With these and the other ones, forwarding and tethering works!

 
 

相关问题

2  三星Galaxy Y连接并与USB连接时挂机  ( Samsung galaxy y hangs up when connected and tethered with usb ) 
我刚刚购买了一个新的三星Galaxy Y,它正常工作。但是当我用USB连接我的手机时,Explorer在"我的电脑" 中工作正常,但我的手机被挂断,这样可以在手机上工作。它表现得像它没有资源使用,好像某人可能已经从单元格中吸入所有RAM /处理器。 请建议在这种情况下可以做些什么。在连接PC之前,我尝试了清除RAM...

0  如何使用IP网络摄像头通过USB系列从2个Android手机收到2个视频流?  ( How can i receive 2 video streams from 2 android phones over usb tethering using ) 
为实时DJ流设置(在预算上),我希望能够通过USB系列使用IP网络摄像头Android应用程序从两个或更多Android手机接收来自两个或更多Android手机的两个或更多个视频流。它适用于一部手机,但是当我尝试添加第二部手机时,我无法连接到它。 两个手机在端口8080上启动一个服务器。我无法直接在应用程序中更改IP...

3  我的蜂窝网络比USB系列慢,我做了什么?  ( My cellular networks slower than usb tethering what shoud i do ) 
在我的头衔上瞥了一眼,它并没有真正有意义,因为热点本身应该比借用/系绳的客户更快,但由于未知的原因,它总是慢,而不是一点慢。 我不是唯一一个有这个问题。 我的手机型号是Oukitel K4000(非根)。最初我甚至甚至不能访问HTTPS网站,如 https://www.google.com : 但USB / ...

1  互联网共享 - Ubuntu  ( Internet sharing ubuntu ) 
我有一个智能手机(来自本地制造商)。它有一个选择"通过USB电缆共享Windows PC Internet" 的"USB Internet" 。 我的第一个问题是我是否可以通过这个选项桥接我的Ubuntu Internet连接? 当我将手机连接到我的PC网络管理器时,显示一个新的以太网连接"有线连接2" ,其中包含名...

2  如何从WiFi Hotspot访问USB系扣设备?  ( How can i access usb tethered device from wifi hotspot ) 
所以我发现了USB系绳IP为192.168.52.x的艰难方式,WiFi地址为192.168.53.x。 我的目标是能够从WiFi访问USB系列设备(Raspberry PI),就像它是相同的网络一样。 如果我有特定的端口,那就没关系,但如果可能的话,我想避免这种情况。我找到了这个xda post 关于反向系列(共享...

0  系列时数据掉落  ( Data drops when tethering ) 
我正在尝试通过USB将我的电脑连接到手机上。我有完整的条形,但它旁边的LTE符号将消失大约十秒钟,然后重新出现几秒钟,只能再次消失。当我不是束缚时,我没有这个问题。 这是非常令人沮丧的,因为当我有一个连接时,我必须观看手机,然后我只有几秒钟的连接。 是这种行为是否应该发生,有没有办法解决它? ...

2  用于控制束缚的小部件  ( Widget for controlling tethering ) 
市场上是否有窗口小部件让我控制标准的Android系列?我使用它很多,只需浏览所有设置选项即可才能查看复选框... ...

1  我用我的三星A10e在我的Chromebook上进行系绳。最近,在最近的更新之后,我注意到它一直断绝很多  ( I use my samsung a10e for tethering to my chromebook recently after a recent u ) 
一点点更多信息。 我的手机是三星A10E。我的Chromebook显然运行了Chrome OS。 最近,几天前我有一个电话更新。现在,我注意到我的手机在白天随机间隔断开连接。它已经很讨厌,我已经尝试了很多东西。 一个候选名单: 完全关闭手机,然后重新启动 重新启动电话 重置网络设置 我试图研究Chrome Conn...

2  如何在系列时限制数据下载  ( How to limit data download when tethering ) 
当我将Android Mobile连接到我的笔记本电脑时,我通过USB系列使用3G数据。我的笔记本电脑上的几个背景活动(赢8.1赢了),例如常规更新。这排出了每月包,分配的下载/上传限制无时间耗尽。 有没有办法监控系束缚连接和拒绝/块背景下载,任何文件大于5-10MB的文件? ...

2  Cyanogenmod USB系绳  ( Cyanogenmod usb tether ) 
我似乎无法找到在Cyanogenmod 7.0.1中启用USB系绳的选项。几页和论坛线程在无线&amp下提到了一个复选框;网络设置,但我没有它。 有什么我需要做的才能让这个展现出来吗?这不再支持了吗?我应该选择什么USB模式?手机是摩托罗拉里程碑,计算机运行Windows 7 x64。 ...

0  三星Galaxy S3请求当系绳时的网络安全钥匙  ( Samsung galaxy s3 requesting network security key when tethering ) 
我的s3(jellybean)在通过USB插入时,我的电脑突然不再识别。我通过在另一个线程中建议使用开发人员选项来解决它,它允许安装驱动程序......再次(谢谢)。 但现在,如果我尝试通过USB系列将其用作热点,我提示输入网络安全密钥。 先前它刚刚连接到没有必要,而且我不知道在哪里我会在哪里找到这样的钥匙,因为...

9  我可以将我的Android平板电脑连接到我的Android手机吗?  ( Can i usb tether my android tablet to my android phone ) 
iis可以将我的wifi-thewal-the lataxy tab-tether us teth-tether us tets to-tething to my galaxy s? 我知道如何WiFi系绳,但它是一个巨大的电池猪。有没有Mini-USB版本的Galaxy Tab电缆?如果是这样,可以用来系绳吗?...

2  Android反向系列需要rootion是什么?  ( Whats the reason android reverse tethering require root ) 
从我所知道的: Android Tethering,通过USB电缆从Android分享Internet到笔记本电脑,没有root。 Android反向Tethering,通过USB电缆从笔记本电脑以太网分享Internet 要求root 。 所以我很好奇,无根的Android系列的技术原因/限制是允许但不反...

0  如何使用Mac OS X进行USB系列(使用Gingerbread Acer Linker Metal&Snow Leopard)?  ( How can i do usb tethering with mac os x using gingerbread acer liquid metal ) 
我想用我的Android手机让我的Hackintosh(10.6雪橇队)冲浪互联网。 在Windows和Ubuntu上测试的Android和堵塞USB电缆上选择USB系列的标准方式并不起... 谢谢。 ...

0  设置“未知ID:netcfg”,同时设置USB0接口以进行反向系绳  ( Getting message unknown id netcfg while setting up usb0 interface for reverse ) 
我正在尝试在Sony Xperia 4.0.4(rooted)和Linux 12.04之间建立反向束缚。我从Matthew Read在这个帖子上的答案中遵循措施,如何在USB上设置反向束缚? 所有步骤工作,但是当我在手机的根外壳中执行"su netcfg usb0 dhcp" 时,我会得到消息"未知ID:netcf...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.