NetworkManagerのCLIだけでモバイルネット接続
この記事は最終更新日から1年以上が経過しています。
田中ソフトウェアラボ@TanakaSoftwareLab
投稿日 2020/10/19
更新日 2020/10/21 ✏

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

以上です。


田中ソフトウェアラボ
田中ソフトウェアラボ@TanakaSoftwareLab
田中ソフトウェアラボ公式アカウント。「芽萌丸」運用情報や田中ソフトウェアラボからのお知らせを発信いたします。プログラミング関連記事(@programming)も担当。お問合せは Chatwork ID: akirattii まで。