ASUS TUF-AX5400でコマンドラインからOpenVPNのクライアントを実行できないか探ってみた。

By | 2022年1月12日 , Last update: 2022年4月12日

はじめに

前の記事の設定を行って使い始めたASUS TUF-AX5400(以下、単に「TUF-AX5400」と書きます。)ですが、Webブラウザの設定画面をよーく観察してみると、アクセスポイントモードに設定している場合でもSSHが使えることがわかりました。

そこで、SSHが使用できるように設定してからTUF-AX5400にログインしてみると…

ether-wakeコマンドやopenvpnコマンドがファームウェアに含まれていることがわかりました。

これらのコマンドが使えるのであれば、openvpnでVPNを構築しつつコマンドラインからWake-On-LANで有線LAN側に接続しているPC群を外出中に起動することができるかもしれなさそうなので、そのような設定が可能かどうか手探りで実験してみることにしました。

スポンサーリンク

SSHの設定

使用可能にするための設定

SSHの設定は、以下の手順で行うことができます。

  1. Webブラウザ経由でログインします。
  2. 画面左側のメニューにある「管理」(下図の赤矢印)をクリックします。
  3. 下図の画面に切り替わりますので、「システム」(下図の赤矢印)をクリックします。
  4. 「管理・システム」画面に切り替わりますので、画面下部の「サービス」のセクションを以下のように設定します。
    • 「SSHを有効にする」を「LAN only」に設定します(下図の赤矢印(a))。
    • お好みで「SSHポート」にポート番号を設定します(下図の赤矢印(b))。
    • 「認証済キー」にはSSHの公開鍵をコピー&ペーストします(複数の公開鍵をコピー&ペーストすることも可能なようですが、試していません)。

  5. 「適用」ボタン(上図の赤矢印(c))をクリックします。

動作確認

SSHでのログインができることを確認します。なお、ログインIDはWebブラウザ経由でのログイン時に使用するIDと同じものになります。

ログインに成功すると、以下のようにuname -aコマンドが実行できたりするようになります。

pandanote@TUF-AX5400-AA38:/tmp/home/root# uname -a
Linux TUF-AX5400-AA38 4.1.52 #2 SMP PREEMPT Wed Jan 5 21:30:10 CST 2022 armv7l

 
ディストリビューションの種類はわかりませんが、Linuxのようです。

コマンドラインからのWake-On-LANの起動

次に、コマンドラインからのWake-On-LANの起動の方法について調べます。

なお、本節のMACアドレスの情報は実際に使用しているものとは異なるものを記載しています。

コマンドの有無の確認

そもそも、コマンドが存在していて、かつそれがシェルプロンプトから実行できるようになっているのかどうかを確認します。

過去の経験より、「ether-wakeコマンドを使っているのだろう。」と見当をつけて、findコマンド等を実行してみると…

pandanote@TUF-AX5400-AA38:/tmp/home/root# find / -name ether-wake -print
/usr/sbin/ether-wake
pandanote@TUF-AX5400-AA38:/tmp/home/root# ls -l /usr/sbin/ether-wake
lrwxrwxrwx 1 panda root 17 Jan 5 22:33 /usr/sbin/ether-wake -> ../../bin/busybox

スポンサーリンク

 
という結果が得られます。

BusyBoxに組み込まれているものの、デスクトップ用のLinuxのディストリビューションにインストールされているether-wakeと同様の使い方ができそうです。

ether-wakeの実行に必要な情報の確認

スポンサーリンク

ether-wakeの実行には、以下の情報が必要です。

  1. マジックパケットの送付先のMACアドレス
  2. 送付に使用するインタフェース

マジックパケットの送付先のMACアドレスについてはWebブラウザ経由で設定した際に調査済み(調べる方法についてはこちら参照。)ですので、後者の情報をip addrコマンドを実行し、LANでの通信用に設定したIPアドレス(この記事の例ではDHCPサーバにより割り当てられています。)に対応するインタフェース名を調べます。

すると…

pandanote@TUF-AX5400-AA38:/tmp/home/root# ip addr
(中略)
20: br0: mtu 1500 qdisc noqueue state UP group default
link/ether 50:12:34:56:78:9a brd ff:ff:ff:ff:ff:ff
inet 192.168.aaa.bbb/24 brd 192.168.aaa.255 scope global br0
valid_lft forever preferred_lft forever

 

という結果が得られます。


スポンサーリンク

上記の結果より、インタフェース名はbr0であることがわかります。

とりあえず試運転

ここで以下のコマンドを実行して、試運転してみます。

pandanote@TUF-AX5400-AA38:/tmp/home/root# ether-wake -i br0 aa:bb:cc:dd:ee:ff
pandanote@TUF-AX5400-AA38:/tmp/home/root#

 
コマンド自体は何も出力せずに終了しますが、指定したMACアドレスに間違いがなければマジックパケットの送付先のデバイスの電源がONになります。

OpenVPNは実行できるのか?

Wake-On-LANの設定ができたら、OpenVPNが実行できるかどうかについて調べます。

Webブラウザ経由で早い段階でアクセスポイントモードに設定してしまったために、一部の設定が見えなくなってしまっている等の理由で調査が不十分なものになってしまっている可能性もありますが、(OpenVPNを含む)VPNの設定はWebブラウザ経由では簡単にはできなさそうです。

しかし、参考文献[1]にはVPNが使用可能であるかのような記載があるので、とりあえずいつものfindコマンドで調べてみると…

pandanote@TUF-AX5400-AA38:/tmp/home/root# find / -name openvpn -print
(中略)
/usr/sbin/openvpn

 
と出力されて、OpenVPNのコマンドが存在していることがわかります。


スポンサーリンク

そこで、以下の手順でOpenVPNの起動を行うための設定及び起動の確認を行います。

  1. この記事の方法でOpenVPN用の鍵一式や設定ファイル(client.conf)を作成します。
  2. ネットワークインターフェースとしてTUNを使うように設定されていますが、kernelのtunドライバがTUF-AX5400の起動時にはロードされていないので、以下のコマンドを実行してロードします。
    pandanote@TUF-AX5400-AA38:/tmp/home/root# modprobe tun

     

  3. シェルプロンプトから以下のコマンドを実行します(OpenVPN用の鍵一式及び設定ファイル(client.conf)が/tmp/home/rootの下に置かれているものと仮定しています)。
    pandanote@TUF-AX5400-AA38:/tmp/home/root# /usr/sbin/openvpn --config client.conf

     

  4. 実行に成功すると、以下のようなメッセージがログファイルに出力されますので、確認します。
    2022-01-11 21:58:58 TUN/TAP device tun0 opened
    2022-01-11 21:58:58 net_iface_mtu_set: mtu 1500 for tun0
    2022-01-11 21:58:58 net_iface_up: set tun0 up
    2022-01-11 21:58:58 net_addr_ptp_v4_add: 192.168.ccc.ddd peer 192.168.ccc.eee dev tun0

     

  5. OpenVPN経由でpingが通るか確認します。
    [pandanote@pandanote.info ~]$ ping 192.168.ccc.ddd
    PING 192.168.ccc.ddd (192.168.ccc.ddd) 56(84) bytes of data.
    64 バイト応答 送信元 192.168.ccc.ddd: icmp_seq=1 ttl=64 時間=10.7ミリ秒
    64 バイト応答 送信元 192.168.ccc.ddd: icmp_seq=2 ttl=64 時間=10.2ミリ秒

     

  6. Enjoy!! 👍

まとめと次の課題

参考文献[1]にはVPNに対応しているという記載があるのですが、この記事を最初に書いた時点(2022年1月)では対応するマニュアルが見つからなかったので、とりあえず何となく動作させるための方法を編み出してみました。

前節までで検討したether-wakeコマンドやopenvpnコマンドについてはシェルスクリプトとして記述する等の方法で、できるだけ簡単に起動できるようにしておくと、外出中に自宅のPC群をスマホからの起動することができて、かつ終了もできるようになるので、いろいろとかなり楽しい感じになりそうだと思っています。

その一方で、TUF-AX5400にSSH経由でログインしたユーザに対するホームディレクトリとしてtmpfs上に存在するディレクトリが割り当てられています。したがって、ここにシェルスクリプトのファイルを保存してもTUF-AX5400が再起動すると消えてしまいますので、ホームディレクトリ上にシェルスクリプトのファイルを置くのは得策ではありません。可能であれば、再起動しても消えないところでかつコマンドのパスの階層が浅めで、かつわかりやすいところに保管しておきたいところです(openvpnの起動用の鍵や設定ファイル等に至ってはもっと切実で、これらが消えてしまうとopenvpnコマンドが実用になりません)。

そこで、次の記事でシェルスクリプトや設定ファイル群の保存の方法について考察することにしました。

御用とお急ぎでなければご覧いただけると幸いです。

次の課題が見つかったところで、この記事につきましては以上とさせていただきます。🙇‍♂️

References / 参考文献

  1. TUF Gaming AX5400 スペック