USB経由でSamsung S7をお気に入りのLinuxコンピュータに接続します。 「設定 - >接続 - >モバイルホットスポットとテザリング」に移動し、「USBテザリング」を有効にします。
AndroidはLinuxホストとのネットワーク共有を有効にするため、Linuxは電話機からIPアドレスを取得する必要があります。これが崩れるところです。電話機自体へのIP接続を許可するために正しいネットワーク設定が行われていません。
問題は、Samsung S7が無効または破損したMacアドレス(00:00:00:00:00:00)を送信していることです。 Linuxネットワークスタックは、「0」MACアドレスではまったく機能しません。
この問題はSamsung S7(Android 6.xおよび7.x)で発生したようです。以前の携帯電話であるSamsung S4とS5は、問題なくテザリングされました。
NetworkManagerを使用してFedora 24/25を実行していますが、すべてのLinuxで同じ問題が発生する可能性があります。
PS:Win7-64とのネットワーク共有が機能します。
ifconfig -a
enp0s20u4: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 00:00:00:00:00:00 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
Mar 7 08:56:02 m3800 kernel: usb 1-4: New USB device found, idVendor=04e8, idProduct=6863
Mar 7 08:56:02 m3800 kernel: usb 1-4: New USB device strings: Mfr=3, Product=4, SerialNumber=5
Mar 7 08:56:02 m3800 kernel: usb 1-4: Product: SAMSUNG_Android
Mar 7 08:56:02 m3800 kernel: usb 1-4: Manufacturer: SAMSUNG
Mar 7 08:56:02 m3800 kernel: usb 1-4: SerialNumber: cexxxxxxxxxxxxxxxx
Mar 7 08:56:02 m3800 mtp-probe: checking bus 1, device 6: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-4"
Mar 7 08:56:02 m3800 mtp-probe: bus: 1, device: 6 was not an MTP device
Mar 7 08:56:02 m3800 kernel: [ 127.774244] usbcore: registered new interface driver cdc_ether
Mar 7 08:56:02 m3800 kernel: usbcore: registered new interface driver cdc_ether
Mar 7 08:56:02 m3800 kernel: [ 127.777443] rndis_host 1-4:1.0 eth0: register 'rndis_host' at usb-0000:00:14.0-4, RNDIS device, 00:00:00:00:00:00
Mar 7 08:56:02 m3800 kernel: [ 127.777466] usbcore: registered new interface driver rndis_host
Mar 7 08:56:02 m3800 kernel: rndis_host 1-4:1.0 eth0: register 'rndis_host' at usb-0000:00:14.0-4, RNDIS device, 00:00:00:00:00:00
Mar 7 08:56:02 m3800 kernel: usbcore: registered new interface driver rndis_host
Mar 7 08:56:02 m3800 kernel: [ 127.781049] rndis_host 1-4:1.0 enp0s20u4: renamed from eth0
Mar 7 08:56:02 m3800 kernel: rndis_host 1-4:1.0 enp0s20u4: renamed from eth0
Mar 7 08:56:02 m3800 NetworkManager[876]: <info> (enp0s20u4): carrier is OFF
Mar 7 08:56:02 m3800 NetworkManager[876]: <info> (enp0s20u4): new Ethernet device (driver: 'rndis_host' ifindex: 3)
Mar 7 08:56:02 m3800 NetworkManager[876]: <info> (enp0s20u4): exported as /org/freedesktop/NetworkManager/Devices/2
Mar 7 08:56:02 m3800 NetworkManager[876]: <info> (enp0s20u4): device state change: unmanaged -> unavailable (reason 'managed') [10 20 2]
Mar 7 08:56:02 m3800 NetworkManager[876]: <error> [1488905762.697751] [platform/nm-linux-platform.c:2278] link_change(): Netlink error changing link 3: <UP> mtu 0 (1) driver 'rndis_host' udi '/sys/devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/net/enp0s20u4': Invalid address for specified address family
Mar 7 08:56:02 m3800 NetworkManager[876]: <info> (enp0s20u4): preparing device
Mar 7 08:56:02 m3800 NetworkManager[876]: <info> read connection 'Wired connection 1'
Mar 7 08:56:02 m3800 NetworkManager[876]: <info> (enp0s20u4): created default wired connection 'Wired connection 1'
ベストアンサー1
Linux ネットワークスタックは、MAC アドレスが "0" のインターフェイスでは動作しません。ネットワーク構成を設定しようとすると、Linux側でAndroid携帯電話のテザリング設定が中断されます。
次の方法は、現在のインターフェイスとルーティングを手動で設定することで機能します。これをシェルスクリプトにカプセル化します。
# cat tetherS7_nwsetup.sh
IFNAME=enp0s20u4
ip a add 192.168.42.2/24 brd + dev $IFNAME
ip link set dev enp0s20u3 address e8:2a:ea:01:02:03
ip link set dev $IFNAME up
route add default gw 192.168.42.129
echo "nameserver 8.8.8.8" >>/etc/resolv.conf
IFNAMEを変更してインターフェース名を入力してください。次に、次を実行します。
# chmod +x tetherS7_nwsetup.sh
# sudo ./tetherS7_nwsetup.sh
DNSの場合、現在GoogleのDNSサーバーを使用しています。自由に変更してみてください。このステップが役に立つことを願っています。