RASPBIAN STRETCHでUSB 3G/4Gモデムを使い屋外でもネットワーク接続をする
Raspbian StretchにUSB 3G/4Gモデムをつないでみます。屋外ではWiFiアクセスポイントになる設定をしています。
基本的にjessieの頃と同じ設定で動かせるようですが、interfacesファイルの扱いには注意が必要でしょう。
以前の記事
USB 3G モデム L-02CをRaspberry Pi 3で使えるようにしてMVNOのSIMカードで通信する
と同様にRaspbian StretchでもL-02Cを使えるようにしてみます。
USBモデムは2つの異なるモードがあるそうです。コンピュータに最初に接続するとUSBドライブとして動作し、一度取り外し操作をするとUSBモデムとして動きます。モデムのドライバをモデムに内蔵していて簡単にインストールできるようにしているようです。
Windows用ドライバを入れるためなのでWindowsマシン以外には意味がありません。
LinuxマシンでもUSBドライブとして最初に見えてしまうので自動的に取り外してモデムモードへ変更する必要があります。
RASPBIAN STRETCHには最初からUSBのモードを切り替える設定がなされているようです。
/lib/udev/rules.d/40-usb_modeswitch.rulesにモードスイッチのルールが書かれています。ご自分のモデムの記述があるかファイルをテキストエディタで開いて探してみてください。
私が使うUSB 3G/4GモデムはL-02Cです。/lib/udev/rules.d/40-usb_modeswitch.rulesに次のように書かれています。
ダイアルアップするためのツールをインストールします。
接続できるか試します。
ここまで動けば基本的にモデムが使えます。
この後の設定は以前の記事と同様にできます。ですが/etc/network/interfacesファイルを中途半端にいじると動かないかもしれません。
ここでは屋外でRaspberry PiをWiFiアクセスポイントとして動かす事を前提に設定を進めてみます。
以前の記事:Raspbian stretchなRaspberry PiをWiFiホットスポット化する
で紹介したホットスポット化したRaspberry Pi 3にUSB 3G/4Gモデムを追加します。
以前の記事:Raspberry Pi 3とUSB 3Gモデムでワイヤレスホットスポットを作る
の設定をstretchに合わせて行います。
/etc/network/interfacesファイルの代わりに/etc/network/interfaces.d/hotspotファイルを使うようにしています。
/etc/network/interfaces.d/hotspotファイルをテキストエディタで編集します。
ファイルの最後に次のように追加します。
次にモデムを挿した時に自動で接続するようにします。
/etc/ppp/peers/wvdialファイルを編集します。モデム利用時にルートを自動的に変更する設定を加えます。次の文をファイルの最後に追加してください。
/etc/udev/rules.d/50-lte.rulesというファイルを作り編集します。
次の文を追加します。
以前の記事:Raspbianのifup@.serviceがおかしくてUSB 3G/4G モデムが動かなかった
で書いたようにifup@.serviceファイルに問題があります。USBモデムの抜き差しを正しく認識してくれません。
/lib/systemd/system/ifup@.serviceファイルを編集し2番目のAfter文を削除してください。
これでRaspberry Piは屋外でも自由にネット接続できるWiFiアクセスポイントなりました。
基本的にjessieの頃と同じ設定で動かせるようですが、interfacesファイルの扱いには注意が必要でしょう。
以前の記事
USB 3G モデム L-02CをRaspberry Pi 3で使えるようにしてMVNOのSIMカードで通信する
と同様にRaspbian StretchでもL-02Cを使えるようにしてみます。
USBモデムは2つの異なるモードがあるそうです。コンピュータに最初に接続するとUSBドライブとして動作し、一度取り外し操作をするとUSBモデムとして動きます。モデムのドライバをモデムに内蔵していて簡単にインストールできるようにしているようです。
Windows用ドライバを入れるためなのでWindowsマシン以外には意味がありません。
LinuxマシンでもUSBドライブとして最初に見えてしまうので自動的に取り外してモデムモードへ変更する必要があります。
RASPBIAN STRETCHには最初からUSBのモードを切り替える設定がなされているようです。
/lib/udev/rules.d/40-usb_modeswitch.rulesにモードスイッチのルールが書かれています。ご自分のモデムの記述があるかファイルをテキストエディタで開いて探してみてください。
私が使うUSB 3G/4GモデムはL-02Cです。/lib/udev/rules.d/40-usb_modeswitch.rulesに次のように書かれています。
# LG L-02C LTE ATTR{idVendor}=="1004", ATTR{idProduct}=="61dd", RUN+="usb_modeswitch '/%k'"usb_modeswitchはすでに動くので追加で設定する必要は無いようです。
ダイアルアップするためのツールをインストールします。
sudo apt install ppp wvdialwvdialの設定をします。/etc/wvdial.confを次のように書き換えました。私のSIMカードはIIJmioです。SIMに合わせたAPN設定も行います。
[Dialer Defaults] Init1 = ATZ Init2 = ATH Init3 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Init4 = AT+CGDCONT=2,"IP","iijmio.jp" Dial Attempts = 3 Stupid Mode = 1 Modem Type = Analog Modem Dial Command = ATD Stupid Mode = yes Baud = 460800 New PPPD = yes APN = iijmio.jp Modem = /dev/ttyUSB2 ISDN = 0 Phone = *99***2# Carrier Check = no Password = iij Username = mio@iijjessieの時はモデムに/dev/gsmmodemのリンクが自動的に付いたのですがstretchでは使えません。モデムの指定は多くの場合/dev/ttyUSB2となります。
接続できるか試します。
sudo wvdial問題なければppp0インターフェースができIPアドレスが割り当てられます。
ここまで動けば基本的にモデムが使えます。
この後の設定は以前の記事と同様にできます。ですが/etc/network/interfacesファイルを中途半端にいじると動かないかもしれません。
ここでは屋外でRaspberry PiをWiFiアクセスポイントとして動かす事を前提に設定を進めてみます。
以前の記事:Raspbian stretchなRaspberry PiをWiFiホットスポット化する
で紹介したホットスポット化したRaspberry Pi 3にUSB 3G/4Gモデムを追加します。
以前の記事:Raspberry Pi 3とUSB 3Gモデムでワイヤレスホットスポットを作る
の設定をstretchに合わせて行います。
/etc/network/interfacesファイルの代わりに/etc/network/interfaces.d/hotspotファイルを使うようにしています。
/etc/network/interfaces.d/hotspotファイルをテキストエディタで編集します。
ファイルの最後に次のように追加します。
allow-hotplug ppp0 iface ppp0 inet wvdial pre-up sleep 3 up if [ `ifquery --state nat0` ]; then ifdown nat0; ifup nat1;fi down if [ `ifquery --state nat1` ]; then ifdown nat1; ifup nat0;fi iface nat1 inet manual up sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward' up iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE up iptables -A FORWARD -i ppp0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT up iptables -A FORWARD -i wlan0 -o ppp0 -j ACCEPT down iptables -D FORWARD -i wlan0 -o ppp0 -j ACCEPT down iptables -D FORWARD -i ppp0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT down iptables -t nat -D POSTROUTING -o ppp0 -j MASQUERADE down sh -c 'echo 0 > /proc/sys/net/ipv4/ip_forward'動作確認をしてみます。次のコマンドでモデムの起動と終了ができるはずです。
sudo ifup ppp0 sudo ifdown ppp0
次にモデムを挿した時に自動で接続するようにします。
/etc/ppp/peers/wvdialファイルを編集します。モデム利用時にルートを自動的に変更する設定を加えます。次の文をファイルの最後に追加してください。
replacedefaultroute persist holdoff 10USB 3Gモデムの抜き差しをした時に自動でifup/ifdownするサービスを登録します。
/etc/udev/rules.d/50-lte.rulesというファイルを作り編集します。
次の文を追加します。
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{../idVendor}=="1004", ATTRS{../idProduct}=="618f", ATTRS{bInterfaceNumber}=="02", TAG+="systemd" ,ENV{SYSTEMD_WANTS}+="ifup@ppp0.service"
idVenderとidProductはご自分のモデムに合わせて変更してください。モデムが挿されたらifupを抜かれたらifdownが自動的に動きます。
以前の記事:Raspbianのifup@.serviceがおかしくてUSB 3G/4G モデムが動かなかった
で書いたようにifup@.serviceファイルに問題があります。USBモデムの抜き差しを正しく認識してくれません。
/lib/systemd/system/ifup@.serviceファイルを編集し2番目のAfter文を削除してください。
これでRaspberry Piは屋外でも自由にネット接続できるWiFiアクセスポイントなりました。
コメント
コメントを投稿