NetworkManagerのCLIだけでモバイルネット接続
Linux上でNetworkManagerのCLIツールnmcli
だけを使ってモバイルインターネットの設定と接続を行う方法です。
目次:
前提
- OS: Ubuntu 16.04.6 LTS
- USBモデム: L-05A
nmcliを使うメリット
- OS起動時のネット自動接続が比較的簡単 (ラズパイを使ったIoTで重宝します)
- ターミナルだけでネット接続設定と接続・切断が可能
準備
NetworkManager のインストール
もし NetworkManager と eject が未インストールならインストールしておいてください:
$ sudo apt install network-manager eject
USBモデムを自動認識させる
多くのUSBモデムは接続時に「CD-ROM」として認識されていますので、これを「USBモデム」として認識させる必要があります。
まずはお使いのUSBモデムのVendorIDとProductIDを調べます:
# USBモデム認識前の VendorID とProductID を調べる
pi@raspberrypi:~ $ lsusb
Bus 001 Device 002: ID 1004:613a LG Electronics, Inc.
VendorID="1004", ProductID="613a" (CD-ROM扱い時) ということが分かりました。 これらのIDを利用して、以下のように udev の rules ファイルを新規作成します:
## udevのrulesを新規作成:
pi@raspberrypi:~ $ sudo nano /etc/udev/rules.d/50-usbmodem-l05a.rules
# L-05A (CD-ROM扱い) を起動時に自動でejectしてUSBモデムとして認識させる:
ATTRS{idVendor}=="1004", ATTRS{idProduct}=="613a", RUN+="/usr/bin/eject /dev/sr0"
これが何をやっているかというと、OS起動時に VendorID=1004 且つ ProductID=613a のCD-ROM扱いのデバイスを$ eject /dev/sr0
して取り出しているだけです。これだけでちゃんとUSBモデムとして認識してくれます。
あえてusb-modeswitchを使わない理由
usb-modeswitchという有名なツールを使えばUSBモデム認識を自動で行ってくれますが、ここでは使いませんでした。というのもラズパイ端末を起動時に自動的にネット接続させたかったのですが、usb-modeswitchを入れていた場合、物理的に電源を落とすと次から起動時に自動接続されないという謎現象に遭遇したからです。(ちなみに$ sudo reboot
でラズパイを再起動すると大丈夫でした、、、)
※今回紹介しているやり方は usb-modeswitch が削除されていることが前提となっています。
ネット接続設定
nmcli con add
コマンドで接続設定を新規作成できます:
## モバイルインターネット接続の設定追加(例)
## 以下の接続設定で作成:
## - 接続名: My_Mobile_Internet
## - タイプ: gsm (モバイルインターネット)
## - インターフェース名: *
## - APN: 3g-d-2.ocn.ne.jp
## - ユーザ名: mobileid@ocn
## - パスワード: mobile
$ nmcli con add con-name "My_Mobile_Internet" type gsm ifname "*" apn 3g-d-2.ocn.ne.jp user mobileid@ocn password mobile
nmcli con modify/delete
コマンドで接続設定を編集・削除することもできます:
## 接続設定を編集
## - 接続名 My_Mobile_Internet を My_Mobile_Internet2 に変更:
$ nmcli con modify "My_Mobile_Internet" connection.id "My_Mobile_Internet2"
## 接続設定 My_Mobile_Internet2 を削除:
$ nmcli con delete "My_Mobile_Internet2"
TIP:接続設定は/etc/NetworkManager/system-connections/<接続名>に保存されます。nmcliを使わずにテキストエディタで直接編集することもできます。
ネット接続・切断
## My_Mobile_Internet に接続:
$ nmcli con up My_Mobile_Internet
## My_Mobile_Internet を切断:
$ nmcli con down My_Mobile_Internet
以上です。