Android携帯でインターネットをストリーミングするためのUSBネットワークインターフェースをどのように生成しますか?

Android携帯でインターネットをストリーミングするためのUSBネットワークインターフェースをどのように生成しますか?

USB経由でマイコンピュータからマイ携帯電話(Android実行)にインターネットを転送しようとしています。これを実装する方法はわかりませんが、USBネットワークインターフェースが必要であることを知っていますusb0。たとえば、このインターフェイスは電話を接続しても自動的には生成されません。

このUSBネットワークインターフェイスを作成するには? Linuxでこれを行うことはできますか、それともAndroid携帯電話で行う必要がありますか?

メモ: 電話機でUSBテザリングを有効にすると、Linuxで対応するUSB​​インタフェースが作成されます。ただし、これは電話をネットワークデバイス(またはゲートウェイ?)として使用し、電話からコンピュータにインターネットを転送するように自動的に設定されます。これは私が望むものとは反対です。

答え1

実際、USBテザリングは携帯電話とPCの間で対称的な接続を作成します。トラフィックが流れる方向は、ネットワークインターフェイスの設定と各エンドで実行されるサービスによってのみ定義されます。

携帯電話からPCへのトラフィックフローを取得するには、次の手順を実行します。

  • DHCP を実行し、インターネット接続を共有するように PC を設定します。
  • Android携帯でUSBテザリングを有効にします。
  • Android携帯でdhcpクライアントをrootとして実行します。

netcfg usb0 dhcp

または

dhclient usb0

携帯電話ごとにインターフェイス名rndis0が異なる場合があります。rmnet0これはを介して見つけることができますifconfig

問題が発生した場合は、g_ether電話にカーネルモジュールを手動でロードすることも試す価値があります。

答え2

さて、私の経験をあなたと共有することができます。

携帯電話(Samsung J1(Android 5.1.1))): 肯定的な開発者オプション>>アクティブUSBデバッグ>>行きたいアンカレッジからネットワークおよびポータブルイベントゾーンへの接続 アンカレッジ(翻訳してすみません、私はキューバ出身です)USBネットワーク>>これにより、仮想端末エミュレータ(apk)を開いてアクセスします。su)ネットワークインタフェースを確認するために使用し、ifconfig「new」というインタフェースを返しました。rndis0そしてIP 192.168.42.129

DebianがインストールされているPCで:端末を開いてアクセスします。sudo(毎回入れる必要はありません) >> ifconfig"new"というインターフェースを返します。USB0そしてIP 192.168.42.111

携帯電話からPCへ、またはその逆にpingを実行すると、すべてが正常になります(両方から答えを得ました)。これで携帯電話にゲートウェイを提供する時間ですので、携帯電話の端末エミュレータで route add default gw 192.168.42.111 dev rndis0>>ここに入力してください。 PC IP ターミナル エミュレータで Google DNS (IP と名前別) を ping できる場合、またはインターネット接続にプロキシ サーバーの設定が必要ない場合は、USB インターネット ケーブルを介して携帯電話で ping できる必要があります。

PS:コンピュータと携帯電話が自動的にIPを取得できない場合は、次のコマンドを使用してください。

コンピュータから:

ifconfig usb0 10.42.0.1 netmask 255.255.255.0
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -j MASQUERADE  

電話:

ifconfig rndis0 10.42.0.2 netmask 255.255.255.0
busybox route add default gw 10.42.0.1 dev rndis0

DNS(スチールフォン)を設定します。

mount -o remount, rw /system
echo 'nameserver 192.168.6.40' > /system/etc/resolv.conf
mount -o remount, ro /system
iptables -t nat -I OUTPUT 1 -p udp --dport 53 -j DNAT --to-destination 192.168.6.40:53 

答え3

Android 8.0

ifconfig usb0 192.168.225.3 netmask 255.255.255.0
ndc network create 9792
ndc network interface add 9792 usb0
ndc network route add 9792 usb0 0.0.0.0/0 192.168.225.1
ndc resolver setnetdns 9792 8.8.8.8 8.8.4.4
ndc network default set 9792

関連情報