概要
自分、Macに auのHWD12をUSBでつないでモバイル通信していたのですが、macOS Catalinaになってから、この機種がUSB接続で使用できなくなりました。
どうやらこの子は、Catalinaで死んでしまう、32bitアプリケーションを使って接続する仕様だったようです。
テザリングで凌ごうにも、いままで一ヶ月で20GBも通信に使っていた手前、下手するとパケ死しかねません。
仕方ないので、Raspberry piを調達し、au HWD12に接続されたモバイルWifiルーターとして動かすことで、間接的に macOS Catalinaからでも使えるようにしました。
変更履歴
- 19/11/05火 IPマスカレードの -o usb0 が -o eth0 になっていたので修正
必要なもの
- au HWD12 データ通信カード
- これはもともとあった
- Raspberry pi 3 B
- B+を買ったつもりが、Bでした。でもなんとかなりました
- ラズパイケース
- 持ち歩き用。なんでもよい
- マイクロSDカード
- 4GBでよいはず。もう見かけないので8GBを買いました
- マイクロUSBケーブル
- 電源用
- バッテリー (オプション)
- なくてもいいけどあるとPCと一緒に移動できて便利
- SDカードに焼くことができるPC
今回の環境
機種 | OS | SDカード |
---|---|---|
Raspberry Pi Model 3 B | Raspbian Buster Lite(2019-9-26) | 8GB |
段取り
1. 起動用のSDカードを作成する
OSイメージのZIPファイルを公式サイトからダウンロードし、Etcherで空のSDカードに書き込みます。
Raspbian公式ダウンロードページ
いくつかDLリンクがあるが、「with desktop」とかがないやつを選ぶと良い
https://www.raspberrypi.org/downloads/raspbian/
Etcher
Mac版もWindows版もあります
https://etcher.io/
2. ラズパイ起動・初期設定
Raspberry piに、上記のSDカードをさします。
その後、USBキーボードとHDMIケーブルを挿入して、電源を入れましょう。
なお自分はUSBマウスは使いませんでした。これだと初期設定画面がGUIにならず、コマンドコンソールになるようです。
初期設定画面が出たら、下記の設定をしましょう。
- SSHを有効にする
- メニューの
5 Interface Options
-
P2 SSH
を選択 -
Would you like the SSH sever to be enabled
でYes
を選択 -
ESC
キー連打で終了
- メニューの
ここで、ログイン画面が出た場合は、ユーザー名pi
、パスワードraspberry
でログインした後、sudo raspi-config
コマンドで設定画面を出せます。
3. ラズパイにログイン
ユーザー名pi
、パスワードraspberry
でログインします。
パスワードは手順の最後で任意のものに変更します。
4. 既存ネットワークに接続
この時点で、有線LANに接続するか、無線LAN設定を行い既存のWifiに接続します。
無線LAN設定をする場合はこのようにします。
なお、ラズパイの内蔵Wifiは2.4GHz帯のみ使用できます。(SSIDに g, Gがついている事が多いです)
$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
を押下した後、o
を押下し、下記を設定します。
SSID_OF_YOUR_ENV
と、PASSWD_OF_YOUR_ENV
は、好きな前適宜既存環境の値を設定してください。
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="SSID_OF_YOUR_ENV"
psk="PASSWD_OF_YOUR_ENV"
}
終わったら、ESC
キーを押して:x
を押下し保存終了します。保存したくない場合は:q!
です。
なお、PCで直接マイクロSDカードを編集できる場合は、あらかじめPC上でマイクロSDカードのルートにwpa_supplicant.conf
ファイルを配置してもよいです。
この場合は、ラズパイ起動時に自動的に /etc/wpa_supplicant/wpa_supplicant.conf
を上書きするようになっています。
読み込まれたあと、マイクロSDのルートディレクトリに作成したファイルは削除されます。
5. ソフトウェアのインストール
まずはシステムを最新にして、その後 dnsmasq
と hostapd
をインストールします。
以下の順にコマンドを実行してください。
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install dnsmasq hostapd
インストールが終わったら、dnsmasq
と、hostapd
のサービスを一旦終了します。
設定ファイルをこれからいじるので、悪影響を防ぐためです。
$ sudo systemctl stop dnsmasq
$ sudo systemctl stop hostapd
ちなみにこれらのサービスが動作しているかどうかは、下記のコマンドでわかります。
$ systemctl status dnsmasq
$ systemctl status hostapd
6. USBデータ通信カード HWD12の設定
今回は、USBデータ通信カード「HWD12」で通信するモバイルWifiルータを作りますので、それに必要な関連ソフトをここで導入します。
まず、HWD12をラズパイに挿入してください。
この時点では、USBストレージとして認識されてしまうので、通信はできないと思います。
下記のコマンドを入力します。
bridge-utils
は、USBデータ通信カードをブリッジにするために導入しています。
$ sudo apt-get install bridge-utils -y --no-install-recommends
$ sudo apt-get install usb-modeswitch
$ sudo cp /etc/usb_modeswitch.conf{,.back}
$ sudo vi /etc/usb_modeswitch.conf
編集画面が起動しますので、Shiftキー + G
で、最後の行まで飛びます。
その後、o
を押すと編集モードに入れるので、下記を入力します。
DefaultVendor=0x12d1
DefaultProduct=0x1f03
TargetVendor=0x12d1
TargetProduct=0x14db
MessageContent="55534243123456780000000000000a11062000000000000100000000000000"
編集が終わったら、ESC
キーを押して、:x
を押して終了します。
その後は下記コマンドを入力してください。
$ sudo modprobe usbserial vendor=0x12d1 product=0x14db
$ sudo usb_modeswitch -c /etc/usb_modeswitch.conf
ここまで来たら、HWD12 のランプが紫になり、インターネットにつながるようになります。
この時点で、LANは切り離してしまってよいです。
7. ネットワーク・インタフェースのブリッジ作成
ラズパイに搭載されている無線LANと、HWD12をつなぐブリッジを作成します。
これによって 無線LAN を アクセス・ポイント化した際に、そのまま HWD12側ののネットワークに接続することができます。
ネットワーク・インターフェースの設定に、ブリッジ・インターフェースを追加して usb0 と wlan0 を ブリッジさせる設定をします。
設定は /etc/network/interfaces ファイルに、下記の3行を追加します.
$ sudo vi /etc/network/interfaces
と押下した後、Shiftキー+G
を押して末尾に飛びます。
その後、o
を押して、下記の行を追加します。
auto br0
iface br0 inet dhcp
bridge_ports usb0 wlan0
設定後に、ブリッジのインタフェースをupすると状態を確認できます。このとき既存のネットワークが一旦切断されます。
$ sudo ifup br0
再起動後、$ brctl show
コマンドを押下すると、内容が確認できます。
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.021e101f0000 no usb0
wlan0
8. dhcpの設定
次に設定ファイルを編集します。
まずはdhcpの設定です。
$ sudo vi /etc/dhcpcd.conf
viが開きまする
Shiftキー + G
で、最後の行まで飛びます。
その後、o
を押すと編集モードに入れるので、以下2行を追加します。
これは、「無線LANのネットワークカードのゼロ番(wlan0)に、静的IPアドレスとして 192.168.200.1/24を設定する」という意味になります。
このIPアドレス自体は、好きなものでよいです。
interface wlan0
static ip_address-192.168.200.1/24
ESC
キーを押して:x
と押すと保存終了できます。保存しない時は:q!
です。
ここまでやったら、dhcpを再起動させます。
$ sudo service dhcpcd restart
9. dnsmasqの設定
dnsmasqは、インストール時点で設定ファイルが配置されますが、今回やりたいことは単純なので、既存のファイルをリネームして待避し、設定ファイルをいちから作ります。
$ sudo mv /etc/dnsmasq.conf /etc/dsnmasq.conf.old
$ sudo nano /etc/dnsmasq.conf
viが開いたら、o
を押して、下記の2行を入力します。
これは、「無線LAN wlan0のIPアドレス貸出範囲は192.168.200.2~192.168.200.40、ネットワークマスクは255.255.255.0、IPアドレス貸出期間は24時間」という意味になります。
独自のIPアドレスにした場合はこちらも変更してください。
interface=wlan0
dhcp-range=192.168.200.2,192.168.200.40,255.255.255.0,24h
入力したら、ESC
キーを押して:x
で終了します。
10. hostapdの設定
いよいよhostapdです。これを設定するとアクセス・ポイントが作成されます。
ここでは、自作ルーターのSSIDやパスワードを設定することになります。
まずは、hostapdの設定ファイルを編集します。
$ sudo vi /etc/hostapd/hostapd.conf
このファイル、ない場合は新規作成されます。
開いたら、下記を追記してください。
このとき、YOUR_SSID
とYOUR_PASSWORD
は適宜書き換えてください。
YOUR_PASSWORD
は、8-64文字にすることをおすすめします。
interface=wlan0
bridge=br0
driver=nl80211
ssid=YOUR_SSID
country_code=JP
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=YOUR_PASSWORD
終わったら、ESC
キーを押して、:x
で終了します。
この時、もし、このファイルが新規作成されている場合、権限が 644
などになっていることがあります。
その場合、このファイルは読まれないので、権限を600
にしてやります。
確認方法
$ ls -al /etc/hostapd/hostapd.conf
pi@raspberrypi:~ $ ls -al /etc/hostapd/hostapd.conf
-rw-r--r-- root root 220 Oct 30 04:00 /etc/hostapd/hostapd.conf
ここで、左はしが-rw-------
以外になっていたら、600
ではないので、下記のコマンドを打ってください。
$ sudo chmod 600 /etc/hostapd/hostapd.conf
その後、600
になったことを確認します。
pi@raspberrypi:~ $ ls -al /etc/hostapd/hostapd.conf
-rw------- root root 220 Oct 30 04:00 /etc/hostapd/hostapd.conf
この後は、この設定ファイルを読み込むように、hostapdの設定ファイルを書き換えます。
$ sudo vi /etc/default/hostapd
開くと以下のように表示されると思います。
# Defaults for hostapd initscript
#
# See /usr/share/doc/hostapd/README.Debian for information about alternative
# methods of managing hostapd.
#
# Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration
# file and hostapd will be started during system boot. An example configuration
# file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz
#
#DAEMON_CONF=""
# Additional daemon options to be appended to hostapd command:-
# -d show more debug messages (-dd for even more)
# -K include key data in debug messages
# -t include timestamps in some debug messages
#
# Note that -B (daemon mode) and -P (pidfile) options are automatically
# configured by the init.d script and must not be added to DAEMON_OPTS.
#
#DAEMON_OPTS=""
真ん中あたりに
#DAEMON_CONF=""
という行があります。
ここの行をDAEMON_CONF="/etc/hostapd/hostapd.conf"と書き換えます。
- 先頭の
#
を削除 - 右の""にパス名を入れる
という編集となります。
ここまで来たら、dnsmasqとhostapdを起動してみます。
$ sudo systemctl start hostapd
$ sudo systemctl start dnsmasq
エラー表示なく起動したらOKです。
11. IP転送の設定
ここまでで無線LANのアクセスポイントが設定されました。
この後は、無線LANに接続したPCなどから、HWD12につながるよう設定します。
システム設定ファイルを編集し、ポートフォワード機能を有効化します。
$ sudo vi /etc/sysctl.conf
28行目くらいに、下記の行があります。(net.ipv6.conf.all.forwardingや、net.ipv4.confなど、紛らわしい行が多いので気をつけてください)
#net.ipv4.ip_forward=1
これを下記のように書き換えます。
先頭の#
にカーソルをあわせてx
を押すと#
が消えます。
net.ipv4.ip_forward=1
設定後、ESC
キーを押して:x
で終了してください。
再起動後、ポートフォワードが有効になります。
12. IPマスカレード設定
最後に、IPマスカレードの設定です。
しかし、2019年11月時点では、iptablesの最新1.8以上になると、このコマンドが使えません。
ほっとくと勝手に1.8になるので、まずは、iptablesをレガシーモードで動くようにしてやります。
$ sudo update-alternatives --config iptables
と打つと、下記のように出ます。
pi@raspberrypi:~ $ sudo update-alternatives --config iptables
There are 2 choices for the alternative iptables (providing /usr/sbin/iptables).
Selection Path Priority Status
----------------------------------------------------
0 /usr/sbin/iptables-nft 20 auto mode
* 1 /usr/sbin/iptables-legacy 10 manual mode
2 /usr/sbin/iptables-nft 20 manual mode
Press <enter> to keep the current choice[*:, or type selection number:
ここでは、1
を押してやります。
この後、$ iptables --version
と押すと、
iptables v1.8.2 (legacy)
等とでるので、切り替わったことがわかります。
この後は、下記のコマンドを実行してください。
$ sudo iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE
その後は、下記のコマンドを実行します。
$ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat
$ cat /etc/iptables.ipv4.nat
ファイルに内容が書かれていることを確認したら、次に下記のコマンドで、以下のファイルを開いてください。
$ sudo vi /etc/rc.local
一番下に exit 0
という行があります。この行が実行されると、シェルは止まります。
この行の下ではなく、上に、以下の行を追加します。
iptables-restore < /etc/iptables.ipv4.nat
dhclient -4 -v usb0
ifdown br0
ifup br0
追加したら、ESC
キーを押した後、:x
を押して終了です。
これで、ルーターの設定は終了です。
ラズパイを再起動します。
$sudo reboot
しばらくすると、先ほど hostapd で設定したSSIDが見えるようになっていると思います。
設定したパスワードを入れると接続できるようになります。
問題なければ、ラズパイにログインし、OSパスワードを変更してください。
$ passwd
使用感
- 起動までに2〜3分かかります。
- たまに、起動後にインターネット接続に失敗することがあります。そのときはルーターを再起動してください。
- 通常の使用では問題ないのですが、たまにビデオ会議で切れたりすることがあります。
- wifiの電波は、15mくらいはゆうに届くようです。
- 普通のUSB電源だと、バッテリーの電力不足エラー(Under-voltage detected)が出ることがあります。ラズパイ用の電源/バッテリーを使うと解消するかもしれません。
参考にしたサイト
こちらの記事を参考にしました。ありがとうございます!
Raspberry Pi 3 Model B+の無線LANでルータを構成する
http://mekiku.com/view.php?a=51
RaspberryPiでルーターを自作し無線AP化
https://qiita.com/wannabe/items/a66c4549e4a11491f9d5
Raspberry Pi 3 を WiFi アクセス・ポイント化する
https://azriton.github.io/2017/03/22/Raspberry-Pi-3-%E3%82%92-WiFi-%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%BB%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E5%8C%96%E3%81%99%E3%82%8B/
RaspberryPi で Huawei の HWD12 を使う方法
https://blog.kakakikikeke.com/2015/12/raspberrypi-with-huawei-hwd12.html