WZR-HP-AG300H に LEDE をインストール
FTP でファームウェアを更新した。 Ubuntu 17.10 だと OpenWRT のページに書いてあるネットワークの設定で うまくいかなかったので、Ubuntu 16.04 で行った。
WZR-HP-AG300H の LAN のポート
まず、中古で購入したので管理者のパスワードがわからなかったので 底面のリセットボタンを3秒間押して初期化を行った。
WAN ポートに一番近い LAN ポート (上から4番目) にケーブルを挿し、PC とつなぐ。
telnet で 設定
telnet で WZR-HP-AG300H に接続して設定をする必要がある。 http://192.168.11.1/ に接続している場合は関係するブラウザを一度すべて閉じ、 http://192.168.11.1/cgi-bin/cgi?req=frm&frm=py-db/55debug.html にアクセスする。 ID は bufpy でパスワードは otdpopy でログインする。 管理者のパスワードを設定している場合は otdpopy に続けて、管理者のパスワードを入力する。
デバッグモードの telnetd から start をクリックする。
Ubuntu の端末で
telnet 192.168.11.1
として、ルータに telnet にログインする。
ubootenv list
として
ethaddr=02:AA:BB:CC:DD:20
ipaddr=192.168.11.1
serverip=192.168.11.2
となっていることを確認する。
ubootenv set accept_open_rt_fmt 1
として tftp からファームウェアを更新できるようにする。
FTP でアップロード
lede-17.01.4-ar71xx-generic-wzr-hp-ag300h-squashfs-tftp.bin をダウンロードした。
sudo ifconfig enx98ded0147896:1 192.168.11.2
sudo arp -s 192.168.11.1 02:aa:bb:cc:dd:20
とする。ルータの電源を入れて、接続が有効になったら (ルータのすべての接続口が光った後に LAN ケーブルが挿さっている口が光る) すぐに次のコマンドを実行する。
curl -T lede-17.01.4-ar71xx-generic-wzr-hp-ag300h-squashfs-tftp.bin tftp://192.168.11.1
FTP の転送が終わって、しばらくするとファームウェアのインストールが終わる。
上の操作を Ubuntu 17.10 で行うとうまくいかなかった。 ネットワークの設定の問題だと思うが、解消方法はわからなかった。
LEDE の設定
LuCI で設定
次のように設定した。
- 「System」「System」で「Timezone」を「Asia/Tokyo」にした。
- 「System」「Administration」で「Router Password」を設定した。
- 「System」「Administration」で「SSH Access」で LAN からは password authentication を許可して、 WAN からは password authentication を許可しないように設定した。
- 「Network」「Interfaces」の LAN の「Edit」で「IPv4 address」と「DHCP」の設定をした。
- 「Network」「Wireless」で無線 LAN の設定をした。
- 「Network」「DHCP and DNS」でデスクトップ PC に割り当てる IP を固定にした。
デスクトップ PC (Ubuntu 17.10) の IP を設定した IP に変えるには
service network-manager restart
とすればよい。
ユーザの追加
SSH でログインして root で作業する。 外部からインストールするときに、一般ユーザを使いたかったので次のようにしてユーザを追加した。
opkg install shadow-useradd shadow-su sudo
でパッケージをインストールする。
useradd USERNAME
passwd USERNAME
mkdir -p /home/USERNAME
chown USERNAME:USERNAME /home/USERNAME
としてユーザを追加してホームディレクトリを作る。 sudo を使うために
visudo
として
USERNAME ALL=(ALL) ALL
を追加する。
LEDE のパッケージのインストールと設定
dropbear
openssh をメインで使うことにしたので、ポートを変える。
/etc/config/dropbear は
config dropbear
option PasswordAuth 'on'
option Interface 'lan'
option Port '22'
config dropbear
option Interface 'wan'
option PasswordAuth 'off'
option RootPasswordAuth 'off'
option Port '22'
となっていた。
uci set dropbear.@dropbear[0].Port=2222
uci set dropbear.@dropbear[1].Port=2222
uci commit dropbear
としてポートを変えた。/etc/config/dropbear は
config dropbear
option PasswordAuth 'on'
option Interface 'lan'
option Port '2222'
config dropbear
option Interface 'wan'
option PasswordAuth 'off'
option RootPasswordAuth 'off'
option Port '2222'
のように変わる。
/etc/init.d/dropbear restart
で dropbear を再起動する。
openssh
opkg update
opkg install openssh-server
opkg install openssh-client
軽量という理由で dropbear が標準なのだろうけど、 使い勝手が良くないのでサーバとクライアントの両方とも openssh を使うことにした。
root でログインできるように /etc/ssh/sshd_config に
PermitRootLogin yes
を追加する。
/etc/init.d/sshd restart
で設定を反映させる。
sshtunnel
外部から自宅にアクセスするために VPS に常時 SSH で接続しておくために sshtunnel を使った。
opkg install sshtunnel
鍵などを用意した上で /etc/config/sshtunnel は次のようにした。 VPS の 22223 ポートに SSH で接続すると ルータの 22 ポートに接続される。
config server SERVER_NAME
option user USERNAME
option hostname example.com
option port 22
option retrydelay 10
option CheckHostIP no
option Compression yes
option CompressionLevel 6
option IdentityFile /root/.ssh/id_rsa
option LogLevel INFO
option ServerAliveCountMax 3
option ServerAliveInterval 30
option StrictHostKeyChecking yes
option TCPKeepAlive yes
option VerifyHostKeyDNS no
config tunnelR http
option server SERVER_NAME
option remoteaddress *
option remoteport 22223
option localaddress 127.0.0.1
option localport 22
私の環境では segmentation fault で ssh client が動かなかった。 LEDE をインストールし直して、結局、autossh を使用した。
autossh
opkg install autossh
でインストールする。 まず、アクセスするサーバの鍵を /root/.ssh/id_rsa に置き
ssh USERNAME@example.com
で一度、ログインしておく。 上述の sshtunnel の設定を参考にして /etc/config/autossh を次のようにした。
config autossh
option ssh '-o CheckHostIP=no -o Compression=yes -o CompressionLevel=6 -o IdentityFile=/root/.ssh/id_rsa -o LogLevel=INFO -o ServerAliveCountMax=3 -o ServerAliveInterval=30 -o StrictHostKeyChecking=yes -o TCPKeepAlive=yes -o VerifyHostKeyDNS=no -o ExitOnForwardFailure=yes -nN -R *:22223:127.0.0.1:22 -p 22 USERNAME@example.com'
option gatetime '0'
option monitorport '0'
option poll '600'
etherwake
Wake on LAN を使いたいので etherwake をインストールした。
opkg install etherwake
root でないと使えない。ユーザ USERNAME にパスワードなしで実行できるように visudo で
USERNAME ALL=(ALL) NOPASSWD: /usr/bin/etherwake
を追加した。