WZR-HP-AG300H の OpenWRT の更新と設定
http://transitive.info/2018/02/03/install-lede-wzr-hp-ag300h/ のときにインストールした LEDE の WZR-HP-AG300H を最新の OpenWRT に更新して設定した。
ファームウェアの更新
WZR-HP-AG300H にインストールしてあたた LEDE 17.01.4 から OpenWRT 21.02.3 に更新した。 https://openwrt.org/toh/buffalo/wzr-hp-ag300h から openwrt-21.02.3-ath79-generic-buffalo_wzr-hp-ag300h-squashfs-sysupgrade.bin をダウンロードし、 管理画面の「System」「Backup / Flash Firmware」から更新した。
設定
LuCI で設定
バージョンがだいぶ変わったので、まず、 「System」「Backup / Flash Firmware」「Perform reset」で初期化した。 初期化後はパスワードなしでログインできた。
- 「System」「System」で「Timezone」を「Asia/Tokyo」にした。
- 「System」「System」「Language and Style」「Design」を「BootstrapLight」にした。
- 「System」「Administration」で「Router Password」を設定した。
- 「System」「Administration」「SSH Access」で root の LAN からは password authentication を許可して、 WAN からは password authentication を許可しないようにした (「Add instance」で Interface が lan と wan の設定を作る)。
- 「System」「Administration」「SSH Access」でポートを 2222 に変更した。
- 「Network」「Interfaces」の LAN の「Edit」で「IPv4 address」でルータの IP アドレスを設定し、 「DHCP」で使う IP アドレスの範囲を設定をした。
- 「Network」「DHCP and DNS」でデスクトップ PC に割り当てる固定 IP を設定した。
- 「Network」「Wireless」で無線 LAN の設定をした。
ユーザの追加
SSH でログインして root で作業する。 ルータの IP を 192.168.0.1 とした。SSH のポートは 2222 としたので
ssh -p 2222 root@192.168.0.1
とすれば良い。
外部からインストールするときに、一般ユーザを使いたかったので次のようにしてユーザを追加した。
opkg update
opkg install shadow-useradd shadow-su sudo
でパッケージをインストールする。
useradd USERNAME
passwd USERNAME
mkdir -p /home/USERNAME
chown USERNAME:USERNAME /home/USERNAME
としてユーザを追加してホームディレクトリを作る。 sudo を使うために
echo "USERNAME ALL=(ALL) ALL" >> /etc/sudoers.d/USERNAME
とする。
dropbear だと作成したユーザでログインできなかった。openssh もインストールして、そちらを使うことにした。
openssh
scp を使うためには sftp も必要になる。
opkg install openssh-server openssh-client openssh-sftp-server
root でログインできるように /etc/ssh/sshd_config に
PermitRootLogin yes
を追加する。
/etc/init.d/sshd restart
で設定を反映させる。 上ではポート 2222 にしていたのだが、openssh-server の同様の設定をしないとポートは 22 になる。
autossh
opkg install autossh
/etc/config/autossh を次のようにした。 相手のサーバのポート 22223 をルータのポート 22 につなげているので、 プロバイダからプライベート IP を割り当てられていても、 サーバのポート 22223 にアクセスすることで SSH でルータにログインできるようになる。
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=60 -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
opkg install etherwake
ユーザ USERNAME がパスワードなしで実行できるように
echo "USERNAME ALL=(ALL) NOPASSWD: /usr/bin/etherwake" >> /etc/sudoers.d/USERNAME
を追加した。
sudo etherwake -i eth0.1 AB:CD:EF:GH:IJ:KL
のように -i オプションを使わないとうまくいかないことがあった。
DHCP で配布した IP アドレスのリスト
ブラウザでアクセスして見ればよいのだが、コマンドで取得できると便利だったので調べた。 https://forum.archive.openwrt.org/viewtopic.php?id=8343 にあるように /tmp/dhcp.leases を見れば良い。