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