LinuxコンピュータからAndroid携帯に「USBテザリング」で作成されたネットワークに接続するには?

LinuxコンピュータからAndroid携帯に「USBテザリング」で作成されたネットワークに接続するには?

モバイルサービスを搭載したAndroid携帯電話で「USBテザリング」をオンにし、USBケーブルを使用して携帯電話をLinuxコンピュータに接続しました。

コンピュータでは、

  • 携帯電話の「USBテザリング」で作成されたネットワークに接続するために使用されるネットワークインターフェイスは何ですか?

  • ネットワークに自動的に接続されますか、またはいくつかのコマンドを実行する必要がありますか?前者の場合、自分のコンピュータにインターネットが接続されていないのはなぜですか?

ワイヤレスインターフェイスをオフにします。ありがとうございます。

$ sudo ifconfig wlp5s0 down  
$ sudo iwconfig
lo        no wireless extensions.

enp4s0    no wireless extensions.

wlp5s0    IEEE 802.11  ESSID:off/any  
          Mode:Managed  Access Point: Not-Associated   Tx-Power=22 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on
          
enp0s20f0u3  no wireless extensions.


$ sudo ifconfig
enp4s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 20:47:47:73:02:6e  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 31812  bytes 2845669 (2.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 31812  bytes 2845669 (2.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ベストアンサー1

少なくとも私のSony Xperia 5 IIIとDebian 11では、電話はドライバをusb0使用してrndis_hostネットワークインターフェイスとして表示されます。

ドライバモジュールは、およびrndis_hostという他のモジュールに依存します。cdc_etherusbnetmii

ネットワークインタフェース名は、おそらくDebianがデフォルトでUSBネットワークインタフェースにMACアドレス()ベースの名前を使用するように指示するファイルをusb0追加したためです。ただし、少なくとも一部の電話機は RNDIS インターフェイスを通過しませんが、ドライバはランダム MAC を割り当てます。したがって、属性を取得できないため、既存のカーネルベースの名前はそのまま残ります。/lib/systemd/network/73-usb-net-by-mac.linkenx112233445566udevID_NET_NAME_MACusb0

他のディストリビューションでは、デバイスパスに応じて名前を使用できます。例enp0s20f0u3:パスは、携帯電話のテザー接続に使用されているUSBポートと現在接続されている他のUSBデバイスの数によって異なり、最適ではない可能性があります。

したがって、あなたの質問に対する答えは次のとおりです。

携帯電話の「USBテザリング」で作成されたネットワークに接続するために使用されるネットワークインターフェイスは何ですか?

名前はLinuxディストリビューションと携帯電話のモデルによって異なります。usb0たとえば、MACベースの名前、enx112233445566パスベースの名前(たとえば)などですenp0s20f0u3

ネットワークに自動的に接続されますか、またはいくつかのコマンドを実行する必要がありますか?前者の場合、自分のコンピュータにインターネットが接続されていないのはなぜですか?

使用しているLinuxディストリビューションとコンピュータの特定の構成がわからない場合は、この質問に確実に答えることはできません。システムは、DHCPを介してホットプラグネットワークインターフェイスを自動的に設定するように設定されていますか?異常なインターフェース名を自動的に設定しますかusb0

オプションがない場合は、以下sudo ifconfigのみ表示されます。アクティブで構成済みsudo ifconfig -aネットワークインターフェイスも設定されていないインターフェイスを見たいと思います。

出力は、sudo iwconfig現在システムに設定されていないUSBベースのネットワークインタフェースがあることを示しますenp0s20f0u3。これはあなたの携帯電話かもしれません。 NetworkManagerを使用している場合は、接続のみを設定できます。 DHCPを使用して自動的に接続するように設定し、「すべてのユーザーがこのネットワークに接続できる」を選択して、単純な接続ではなくシステム全体のネットワーク接続にすることもできます。ユーザーアカウントでログインしている場合にのみ使用できます。

他のネットワーク構成サブシステムを使用している場合は、自動的に接続するように構成する必要があります。新しいネットワークへの接続はセキュリティに敏感な作業である可能性があるため、システムに対する悪意のあるメイド型攻撃から一定レベルの保護を提供するために、システムはデフォルトで以前に未知のホットプラグネットワークインターフェイスに自動的に接続されませんできます。攻撃します。エアギャップを維持します。


さらに、RNDIS USBネットワークインタフェースの様々なバージョンは、わずかに異なるUSBデバイスクラス識別子を使用します。 2018年5月頃まで、カーネルはUSBデバイスでRNDISネットワークインターフェイスを識別する3つの可能な方法を知っていました。

したがって、カーネルがそれより古い場合、低レベルおよびカーネルモジュールには、 USBインタフェースクラス「その他」、サブクラス4、プロトコル1をRNDIS USBネットワークインタフェースとして検出するコードusbnetcdc_ether含まれていないため、ロードが失敗する可能性があります。rndis_hostテザリングモードで電話に接続したときの正しいUSBネットワークプロトコルモジュール。この場合、ネットワークインターフェイスがまったく検出されない可能性があります。

(この問題を解決したカーネルパッチを新しいAndroid携帯に接続する必要があるシステムにバックポートする必要があり、特定のアプリが更新されるまでカーネルのアップグレードを受け入れることができなかったのでこれを覚えています...長い話です。)

おすすめ記事