2023-12-26

GL-300N-v2(Mango)ルーターで tailscale を実行する

 

 

表題の英文サイトをみつけましたので、その全訳を記載します。 

 

このサイトが掲載されたのは 2021-08-04 ですので、現在はバージョン等が上がっており、まったく同じにはならないことをご承知おきいただきます。

 

 

GL-MT300N-v2(Mango)は Amazonで約 4,000 円、セールだと 3,000 円以下のこともあります。

 

ただ Mango はストレージが 16MB しかなく、tailsacle の最新版 1.56.1 は 58MB あり、そのままではインストールできません。


以下のサイトでは USB メモリを挿してディスク容量を拡大し、tailscale をインストールしています。

 

 

最初に USB メモリを用意し、インストール用の領域を拡大します。

容量は 1GB もあれば十分ですが、最低でも 16GB のものしか手に入らないでしょうから、それで結構です。

また Mango は USB2.0 なので、USB2.0 メモリで十分ですが、下記のようなもので結構です。




SanDisk USB3.1 SDCZ430-016G 16GB Ultra 130MB/s フラッシュメモリ

 

アマゾンで 1,000 円以下で入手できます。

 

 

GL-A1300 や AXT1800 も同様にディスク容量が少ないので、同じ方法で容量を拡大して最新版の tailscale を入れる必要があります。

 

GL-MT2500 / MT2500A の場合は 8GB あり、十分な空き領域がありますので、外付け USB メモリは不要です。

 

価格的には、

 

 AXT1800 > MT2500A > A1300 ≒ MT2500 > MT300N-v2

 

となっており、MT2500 が約 10,000円前後、300N-v2 が最安値です。

 

 

手間をかけても最安値でいくか、簡単にインストールが可能な MT2500 でいくかはお好みです。

 

個人的には tailscale の少し古いバージョン 1.32.2-1 が標準で入っている MT2500 がオススメです。

 

この古いバージョンでもよければ簡単に起動設定できます。

 

最新版もいくつかの CLI コマンドでインストールできます。

 

  

ーーーーー


Mango ルーターで tailscale を実行する

GL-MT300N-v2(Mango)



 

最初に Mango の初期セットアップをおこないますが、これは下記サイトに従って行います。

https://docs.gl-inet.com/router/jp/3/setup/mini_router/first_time_setup/

 


ガイド に従い、最新のファームウェア アップデートを含めて、可能な限り最適な状態から開始してください。

root ユーザーのパスワードを作成してください。
次に、新しいルーターに SSH 経由で接続できることを確認します。

$ ssh root@192.168.8.1

BusyBox v1.30.1 () built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 19.07.7, r11306-c4a6851c72
 -----------------------------------------------------
root@ROUTER:~#


アップグレード コマンドを実行して、最新のパッケージファイルのリストを取得します。

root@ROUTER:~# opkg update
Downloading https://fw.gl-inet.com/releases/v19.07.7/packages-3.0/    ramips/packages/Packages.gz 
Updated list of available packages in /var/opkg-lists/glinet_packages
Downloading https://fw.gl-inet.com/releases/v19.07.7/packages-3.0/ramips/glinet/Packages.gz
Updated list of available packages in /var/opkg-lists/glinet_private
Downloading https://fw.gl-inet.com/releases/v19.07.7/kmod-3.0/ramips/mt76x8/Packages.gz
Updated list of available packages in /var/opkg-lists/glinet_kmod


最初に、curl、ca-bundle、kmod-tun をインストールする必要があります。

root@ROUTER:~# opkg install curl ca-bundle kmod-tun

これらのパッケージの一部またはすべてがすでにインストールされている可能性がありますが、上記のコマンドを実行しても問題はありません。

Tailscale ホームページにアクセスしてアカウントを作成し、ログインします。

ルーターのアーキテクチャを再確認してください。

root@ROUTER:~# cat /etc/openwrt_release
DISTRIB_ID='OpenWrt'
DISTRIB_RELEASE='19.07.7'
DISTRIB_REVISION='r11306-c4a6851c72'
DISTRIB_TARGET='ramips/mt76x8'
DISTRIB_ARCH='mipsel_24kc'
DISTRIB_DESCRIPTION='OpenWrt 19.07.7 r11306-c4a6851c72'
DISTRIB_TAINTS='busybox override'


「DISTRIB_ARCH=」は mipsle_24kc デバイスを示しているため、後で tailscale の mipsle バイナリを下記サイトで得ます。


 https://pkgs.tailscale.com/stable/
 

デフォルトでは、ルーターはエディタとして「vi」を使用します。

 

nano はややフレンドリーで、コンソールに直接貼り付けることができるので、インストールします。

root@ROUTER:~# opkg install nano
Package nano (5.5-1) installed in root is up to date.  


USB ツールとドライバーをインストールします。

root@ROUTER:~# opkg install kmod-usb-storage kmod-usb-storage-uas usbutils
Package kmod-usb-storage (4.14.221-1) installed in root is up to date.
Package kmod-usb-storage-uas (4.14.221-1) installed in root is up to date.
Package usbutils (007-10) installed in root is up to date.
root@ROUTER:~# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ohci-platform/1p, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 480M


利用可能なパーティション/デバイスを確認します。

root@ROUTER:~# opkg install block-mount
Package block-mount (2020-05-12-84269037-1) installed in root is up to date.  
root@ROUTER:~# ls -la /dev/sd*
brw-------    1 root     root        8,   0 Jan  1  1970 /dev/sda
brw-------    1 root     root        8,   1 Jan  1  1970 /dev/sda1
root@ROUTER:~# block info | grep "/dev/sd"
/dev/sda1: UUID="YOUR-UUID-HERE" VERSION="1.0" MOUNT="/mnt/sda1" TYPE="ext4"

必要なディスクユーティリティをインストールします。

root@ROUTER:~# opkg install gdisk e2fsprogs kmod-fs-ext4
Installing gdisk (1.0.4-2) to root...
Downloading https://fw.gl-inet.com/releases/v19.07.7/packages-3.0/ramips/packages/gdisk_1.0.4-2_mipsel_24kc.ipk
Installing uclibcxx (0.2.5-3) to root...
Downloading https://fw.gl-inet.com/releases/v19.07.7/packages-3.0/ramips/packages/uclibcxx_0.2.5-3_mipsel_24kc.ipk
Configuring uclibcxx.
Configuring gdisk.
Package e2fsprogs (1.44.5-2) installed in root is up to date.
Package kmod-fs-ext4 (4.14.221-1) installed in root is up to date.


USB ストレージに EXT4 パーティションを作成します。
gdisk を使用して現在のパーティション (FAT32 である可能性が高い) を削除し、新しいパーティションを作成します。
パーティションを Linux ファイルシステムとしてマークします (ここではコード 8300 を使用します)。

root@ROUTER:~# gdisk /dev/**your device**
GPT fdisk (gdisk) version 1.0.4

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): p
Disk /dev/sda: 60088320 sectors, 28.7 GiB
Model:  SanDisk 3.2Gen1
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): YOUR-DISK-IDENTIFIER-HERE
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 60088286
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
1    2048          60088286      28.7 GiB   8300  Linux filesystem

Command (? for help): w


変更を書き込んで終了するには「w」を、変更を保存せずに終了するには「q」を入力します。

ファイルシステムを作成します。

root@ROUTER:~# mkfs.ext4 /dev/sda1

新しく作成したパーティションをマウントします。

/mnt/sda1 フォルダーがまだ存在しない場合は、マウント ポイントとして作成します。

root@ROUTER:~# mkdir -p /mnt/sda1
root@ROUTER:~# blkid
/dev/mtdblock5: TYPE="squashfs"
/dev/sda1: UUID="YOUR-UUID-HERE" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="YOUR-PARTUUID-HERE"  

自動マウントされるようにパーティションを設定します。

root@ROUTER:~# block detect | uci import fstab
root@ROUTER:~#
uci set fstab.@mount[-1].enabled='1'
root@ROUTER:~#
uci commit fstab

再起動して、/dev/sda1 フォルダーがマウントされていることを確認します。

root@ROUTER:~# uci show fstab
fstab.@global[0]=global
fstab.@global[0].anon_swap='0'
fstab.@global[0].anon_mount='0'
fstab.@global[0].auto_swap='1'
fstab.@global[0].auto_mount='1'
fstab.@global[0].delay_root='5'
fstab.@global[0].check_fs='0'
fstab.@mount[0]=mount
fstab.@mount[0].target='/mnt/sda1'
fstab.@mount[0].uuid='YOUR-UUID-HERE'
fstab.@mount[0].enabled='1'  


ここで、後で /opt フォルダーとなるフォルダー内に tailscale フォルダーを作成します。

また、再起動間の認証を保存するための state フォルダーも作成します。

root@ROUTER:~# mkdir -p /mnt/sda1/opt/tailscale/state

注:busybox は「mkdir -p」をサポートしていない場合があります。
その場合は、各ディレクトリを個別に作成してください。

ルート ディレクトリに /opt フォルダーを作成します。

root@ROUTER:~# mkdir /opt

これら 2 つのフォルダー間にシンボリック リンクを作成します。

root@ROUTER:~# ln -s /mnt/sda1/opt /opt

スペースができたので、Tailscale をインストールします。

また、tailscale ダウンロード ファイルを保存するための「アーカイブ」フォルダーも作成します。
整理整頓を保つため、これはあなたの選択ですが、お勧めします。

root@ROUTER:~# mkdir /opt/tailscale/archive

mipsle デバイス用の Tailscale Stable バイナリをダウンロードします(アーカイブ フォルダーを作成しなかった場合はパスを調整します)。

root@ROUTER:~# curl -O https://pkgs.tailscale.com/stable/**latest version**_mipsle.tgz --output /opt/tailscale/archive/.

アーカイブを解凍します (必要に応じてアーカイブ名を調整します)。

root@ROUTER:~# tar x -zvf /opt/tailscale/archive/**latest version**_mipsle.tgz -C /opt/

ファイルを正しいフォルダーに移動します (必要に応じてフォルダー名を調整します)。

root@ROUTER:~# mv /opt/**latest version**_mipsle/* /opt/tailscale/.

空になったフォルダーを削除します (必要に応じてフォルダー名を調整します)。

root@ROUTER:~# rm -r /opt/**latest version**_mipsle

/opt/tailscale フォルダーは次のようになります。

root@ROUTER:~# ls -la /opt/tailscale
drwxr-xr-x    5 root     root          4096 Jul 28 16:10 .
drwxr-xr-x    4 root     root          4096 Jul 28 11:50 ..
drwxr-xr-x    2 root     root          4096 Jul 28 16:01 archive
drwxr-xr-x    2 root     root          4096 Jul 28 15:35 state
drwxr-xr-x    2 root     root          4096 Jul 28 12:56 systemd
-rwxr-xr-x    1 root     root      10866857 Jul 28 02:56 tailscale
-rwxr-xr-x    1 root     root      16612381 Jul 28 02:56 tailscaled


Tailscale アプリケーションとデーモン ファイルへのシンボリック リンクを作成します。

root@ROUTER:~# ln -s /opt/tailscale/tailscale /usr/sbin/tailscale

root@ROUTER:~# ln -s /opt/tailscale/tailscaled /usr/sbin/tailscaled


Tailscale を制御するサービスを作成します。
/etc/init.d に Tailscale サービスを作成します (前にインストールした nano を使用)。

root@ROUTER:~# nano /etc/init.d/tailscale

次のスクリプトをエディタに貼り付けます。

 1#!/bin/sh /etc/rc.common
 2
 3# Copyright 2020 Google LLC.
 4# SPDX-License-Identifier: Apache-2.0
 5
 6USE_PROCD=1
 7START=80
 8
 9start_service() {
10  local state_file
11  local port
12  local std_err std_out
13
14  config_load tailscale
15  config_get_bool std_out "settings" log_stdout 1
16  config_get_bool std_err "settings" log_stderr 1
17  config_get port "settings" port 41641
18  config_get state_file "settings" state_file /opt/tailscale/state/tailscaled.state
19
20  /usr/sbin/tailscaled --cleanup
21
22  procd_open_instance
23  procd_set_param command /usr/sbin/tailscaled
24
25  # Set the port to listen on for incoming VPN packets.
26  # Remote nodes will automatically be informed about the new port number,
27  # but you might want to configure this in order to set external firewall
28  # settings.
29  procd_append_param command --port "$port"
30  
31  # OpenWRT /var is a symlink to /tmp, so write persistent state elsewhere.
32  procd_append_param command --state "$state_file"
33
34  procd_set_param respawn
35  procd_set_param stdout "$std_out"
36  procd_set_param stderr "$std_err"
37
38  procd_close_instance
39}
40
41stop_service() {
42  /usr/sbin/tailscaled --cleanup
43}
44


CTRL+X で nano を終了し、終了時に必ずファイルを保存してください。
次に、スクリプトを実行可能にします。

root@ROUTER:~# chmod +x /etc/init.d/tailscale

(オプション) /etc/config にサービスの構成ファイルを作成して、組み込みのサービス設定をオーバーライドできます。
 

root@ROUTER:~# nano /etc/config/tailscale
1config settings 'settings'
2        option log_stderr '1'
3        option log_stdout '1'
4        option port '41641'
5        option state_file '/opt/tailscale/state/tailscaled.state'


以上で tailscale がインストールされましたので、起動します。

root@ROUTER:~# cd /etc/init.d

root@ROUTER:~# service tailscale start


インストールに関連する出力が表示されるはずです。
重大なエラーがない限り (ログに関連するいくつかのエラーが表示される場合がありますが、無視しても問題ありません)、次のコマンドを使用して TailscaleVPN をオンラインにできます。

root@ROUTER:~# tailscale up

これにより、画面上にいくつかのテキストとアクセス先の URL が表示されます。
この時点で、すでに tailscale のアカウントを持っており、その Web サイトにログインしているはずです。
コンソールから URL にアクセスしてルーターを認証します。
tailscale 管理コンソールにアクセスすると、ルーターが追加されているのが表示されます。
ここでのルーターにはすでに「有効期限なし」が設定されていることに注意してください。
これは、デバイスの横にある省略記号 (....) を選択し、次を選択することで後で行うことができます Disable Key Expiry

Machines  

[All | External]            [Search machines...            ] 

MACHINE                    IP            OS    LAST SEEN 
hello                    100.101.102.103        Linux    Connected 
services@tailscale.com                        1.12.1
[External][No expiry]

router                    xxx.xxx.xxx.xxx        Linux    Connected
your@email.address                        1.12.1
[No expiry]  


ネットワークが利用可能であることを確認するには、次のコマンドを実行します (CTRL+Cキャンセルする場合に使用します)。

root@ROUTER:~# tailscale ping hello.ipn.dev
pong from hello (100.101.102.103) via DERP(fra) in 659ms
pong from hello (100.101.102.103) via DERP(fra) in 54ms
pong from hello (100.101.102.103) via DERP(fra) in 101ms
pong from hello (100.101.102.103) via DERP(fra) in 54ms
pong from hello (100.101.102.103) via DERP(fra) in 54ms
^Ccontext canceled


これで tailscale がインストールされ、正しく動作することを確認しました。
ただし、まだ自動的には開始されないため、ルーターを再起動する前に、さらに 2 つのコマンドを入力する必要があります。

root@ROUTER:~# cd /etc/init.d

root@ROUTER:~# service tailscale enable


ルーターを再起動し、ping を再テストします。
以前と同じように機能すれば tailscale のインストールと動作確認は終了です。

 

 

 






0 件のコメント: