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

を追加した。

参考

Tags of current page