Linuxとネットワークの接続をUSBテザリングで行う

昨日書いたLinuxでのUSB Tetheringの件、解決しました。やり方をつらつらっと書きます。

以下が、やりたいこと。

  • Linuxをネットワーク(インターネット)に繋げたい。
  • 使用できるネットワークはUSB Thering経由のみ。
    • USB TetheringはAndroidデバイス(携帯電話等)で行う。
    • 内部ネットワークにつなげるeth0はあるが、eth0は使用しない。
  • Linuxは最小構成でInstallした環境。

今回はNexus7をUSB TehteringのホストにしてCentOS6.5からインターネットに繋げます。ちなみに実際に外とつながるのはWiFi Tetheringしている携帯電話。
CentOS→Nexus7(USB Tethering)→携帯電話(WiFi Tethering)となっています。

まずは現状確認。(eth0は省いています。)

ifconfig -a

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:288 (288.0 b)  TX bytes:288 (288.0 b)

AndroidデバイスをLinuxマシンにUSBで接続→AndroidデバイスのUSB TetheringをONにするとこうなります。

ifconfig

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:288 (288.0 b)  TX bytes:288 (288.0 b)

usb0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

まだIPアドレス等々設定ができていません。前回はここでDHCPのやり方がわからず詰まっていたのですが、調べてみたらdhclientコマンドでIPアドレスの取得ができることがわかりました。ちなみにRHELやCentOSはdhclient、Vine Linuxではdhcpcdというdaemonで動かすそうです。

# まずはusb0をアクティブにする。
ifconfig usb0 on

# dhclientを実行
dhclient -v usb0

Internet Systems Consortium DHCP Client 4.1.1-P1
Copyright 2004-2010 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/usb0/xx:xx:xx:xx:xx:xx
Sending on   LPF/usb0/xx:xx:xx:xx:xx:xx
Sending on   Socket/fallback
DHCPRELEASE on usb0 to 192.168.42.129 port 67 (xid=0x????????)
send_packet: Network is unreachable
send_packet: please consult README file regarding broadcast address.
[root@dev4356v231c work]# dhclient -v usb0
Internet Systems Consortium DHCP Client 4.1.1-P1
Copyright 2004-2010 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/usb0/xx:xx:xx:xx:xx:xx
Sending on   LPF/usb0/xx:xx:xx:xx:xx:xx
Sending on   Socket/fallback
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 7 (xid=0x????????)
DHCPOFFER from 192.168.42.129
DHCPREQUEST on usb0 to 255.255.255.255 port 67 (xid=0x????????)
DHCPACK from 192.168.42.129 (xid=0x????????)
bound to 192.168.42.107 -- renewal in 1422 seconds.

これで192.168.42.107が割り当てられました。

ifconfig

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:288 (288.0 b)  TX bytes:288 (288.0 b)

usb0      Link encap:Ethernet  HWaddr E2:94:B7:09:E7:09
          inet addr:192.168.42.107  Bcast:192.168.42.255  Mask:255.255.255.0
          inet6 addr: fe80::e094:b7ff:fe09:e709/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:31 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1534 (1.4 KiB)  TX bytes:1762 (1.7 KiB)

ping等を実行すれば外につながっているのが確認できるかと思います。

dhclientを実行すると以下のエラーが返ってくる場合があります。

dhclient -v usb0

dhclient(31399) is already running - exiting.

This version of ISC DHCP is based on the release available
on ftp.isc.org.  Features have been added and other changes
have been made to the base software release in order to make
it work better with this distribution.

Please report for this software via the CentOS Bugs Database:
    http://bugs.centos.org/

exiting.

この場合はdhclient -rを実行してください。リースしているリソースを解放し、dhclientを終了します。

dhclient -r -v usb0
Internet Systems Consortium DHCP Client 4.1.1-P1
Copyright 2004-2010 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/usb0/xx:xx:xx:xx:xx:xx
Sending on   LPF/usb0/xx:xx:xx:xx:xx:xx
Sending on   Socket/fallback
DHCPRELEASE on usb0 to 192.168.42.129 port 67 (xid=0x????????)

WiFiで接続することがほとんどで USB Tetheringする機会はなかなかないかと思いますが、最近はまったまとめということで。

では。