Asuswrt-Merlin ファームウェアのインストール#
ルーターを壊す心配はありません。ASUS のルーターはワンクリックで元に戻すことができます。
1)ファームウェアのダウンロード
まず、https://www.asuswrt-merlin.net/download から適切なファームウェアをダウンロードし、解凍します。(現在の最新 RT-AC86U_386.13_2.zip
)
2)ファームウェアのアップグレード
ルーターの管理画面 http://192.168.50.1/
にログインし、 システム管理 > ファームウェアアップグレード
でファームウェアファイル(例: RT-AC86U_386.13_2_ubi.w
)をアップロードします。
3)JFFS パーティションの有効化
システム管理 > システム設定 > Persistent JFFS2 partition
次回起動時にJFFSパーティションをフォーマット
-いいえ
JFFSカスタムスクリプトと設定を有効にする
-はい
4)SSH ログインの有効化
システム管理 > システム設定 > SSHデーモン
SSHパスワードログインを許可
-はい
システムパーティションの説明#
admin@RT-AC86U-67A0:/tmp/home/root# df -h
Filesystem Size Used Available Use% Mounted on
ubi:rootfs_ubifs 77.2M 67.1M 10.0M 87% /
devtmpfs 207.9M 0 207.9M 0% /dev
tmpfs 208.0M 300.0K 207.7M 0% /var
tmpfs 208.0M 16.2M 191.8M 8% /tmp/mnt
mtd:bootfs 4.4M 3.3M 1.1M 75% /bootfs
tmpfs 208.0M 16.2M 191.8M 8% /tmp/mnt
mtd:data 8.0M 592.0K 7.4M 7% /data
tmpfs 208.0M 16.2M 191.8M 8% /tmp
/dev/mtdblock9 47.0M 34.2M 12.8M 73% /jffs
/tmp
は空き容量が大きく、デバイス再起動後にクリアされるため、一時的なファイルのダウンロードに使用できます。/jffs
は空き容量が少なく、デバイス再起動後も保持されるため、設定ファイルやインストーラー(制限あり)の保存に使用できます。
現在の新しいバージョンの tailscale_1.68.2_arm64.tgz
は tailscale 15.4M
と tailscaled 31.1M
の 2 つのコア実行ファイルを解放します。しかし、 /jffs
の空き容量が限られているため、 tailscale
と tailscaled
を収容できません。 /tmp
パーティションを利用して実行可能ファイルを保持することができます(使用時に実行可能ファイルをダウンロードするために adyanth/openwrt-tailscale-enabler を参照)。
安定した使用体験を得るために、私は tailscaled
を /jffs/tailscale/tailscaled
にインストールし、 tailscale
はあまり使用しないため、使用時に /tmp/tailscale
にダウンロードすることを計画しています。
Tailscale のインストール#
/jffs/tailscale/tailscale
#!/bin/sh
# https://github.com/adyanth/openwrt-tailscale-enabler/blob/main/usr/bin/tailscale
set -e
if [ ! -f /tmp/tailscaled ]; then
arch=`uname -m`
if [ "$arch" == "mips" ]; then
endianness=`echo -n I | hexdump -o | awk '{ print (substr($2,6,1)=="1") ? "le" : ""; exit }'`
elif [ "$arch" == "armv7l" ]; then
arch=arm
elif [ "$arch" == "aarch64" ]; then
arch=arm64
elif [ "$arch" == "x86_64" ]; then
arch=amd64
fi
tailscale_version="1.68.2"
latest_version=`wget -O- https://pkgs.tailscale.com/stable/ | grep tailscale_ | head -1 | cut -d'_' -f 2`
if [ "$tailscale_version" != "$latest_version" ]; then
tailscale_version=$latest_version
fi
version="${tailscale_version}_${arch}${endianness}"
echo "Tailscale ${version} をダウンロード中 .."
echo -e "tailscale_${version}/tailscaled" > /tmp/tailscale_${version}_files.txt
wget -O- https://pkgs.tailscale.com/stable/tailscale_${version}.tgz | tar x -zvf - -C /tmp -T /tmp/tailscale_${version}_files.txt
mv /tmp/tailscale_$version/* /tmp
rm -rf /tmp/tailscale_${version}*
echo "完了!"
fi
/tmp/tailscaled "$@"
/jffs/tailscale/tailscaled-startup.sh
#!/bin/sh
tailscaled_pid=`pidof tailscaled`
if [ -z "$tailscaled_pid" ]
then
modprobe tun
nohup /jffs/tailscale/tailscaled --no-logs-no-support --state=/jffs/tailscale/tailscaled.state --statedir=/jffs/tailscale >/dev/null 2>&1 &
else
echo "tailscaled (pid:$tailscaled_pid) は実行中です..."
fi
if [ -x /opt/bin/tailscale ]; then tailscale down; tailscale up; fi
/bin/sh /jffs/tailscale/tailscale-nat-setup.sh
上記のスクリプトを利用して /tmp/tailscale
と /tmp/tailscaled
をダウンロードし、手動で tailscaled
を /jffs/tailscale/tailscaled
に固定します。
mkdir -p /jffs/tailscale
chmod +x /jffs/tailscale/tailscale /jffs/tailscale/tailscaled-startup.sh
/jffs/tailscale/tailscale # ダウンロード
mv /tmp/tailscaled /jffs/tailscale/tailscaled
/jffs/tailscale/tailscaled-startup.sh # tailscaledを起動
/jffs/tailscale/tailscale up
# /jffs/tailscale/tailscale set ...
自動起動の設定#
Asuswrt-Merlin は私たちにさまざまなイベントの実行ポイントを提供しています、例えば:
wan-start
firewall-start
nat-start
init-start
- ...
これらのイベントの実行スクリプトを利用して、さまざまな機能を拡張することができます。例えば、私たちの tailscale 自動起動機能を実現することができます:
/jffs/scripts/nat-start
#!/bin/sh
modprobe tun
/bin/sh /jffs/tailscale/tailscale-nat-setup.sh
/jffs/scripts/firewall-start
#!/bin/sh
/bin/sh /jffs/tailscale/tailscaled-startup.sh
/jffs/tailscale/tailscale-nat-setup.sh
#!/bin/sh
# https://www.snbforums.com/threads/a-guide-about-installing-zerotier-on-asus-ac68u-router.42648/
logger -t "custom iptables" "Enter" -p user.notice
if ! iptables -C INPUT -i tailscale0 -j ACCEPT ; then
# tailscale nat
iptables -I INPUT -i tailscale0 -j ACCEPT
iptables -I FORWARD -i tailscale0 -j ACCEPT
iptables -I FORWARD -o tailscale0 -j ACCEPT
iptables -t nat -I POSTROUTING -o tailscale0 -j MASQUERADE
logger -t "custom iptables" "ルールが追加されました" -p user.notice
else
logger -t "custom iptables" "ルールが存在するためスキップ" -p user.notice
fi
参考リンク#
- https://gist.github.com/y0ngb1n/3d5c068ab191e6cc64254ad451047435
- https://github.com/haoel/haoel.github.io?tab=readme-ov-file#8-%E5%AE%B6%E7%94%A8%E9%80%8F%E6%98%8E%E7%BD%91%E5%85%B3
- https://github.com/adyanth/openwrt-tailscale-enabler
- https://pkgs.tailscale.com/stable/#static
- https://github.com/RMerl/asuswrt-merlin.ng/wiki/User-scripts
- https://github.com/RMerl/asuswrt-merlin.ng/wiki/Entware
- https://github.com/RMerl/asuswrt-merlin.ng/wiki/Installing-Tailscale-through-Entware
- https://www.snbforums.com/threads/a-guide-about-installing-zerotier-on-asus-ac68u-router.42648/