2023-12-30

tailscale で ssh や、ファイル転送をする【2023-12-31 ファイル共有を追記】

 

 

【2023-12-31 ファイル共有を追記】 





tailscale で P2P & メッシュ型 VPN を張ることができますが、便利な機能がいくつかあります。

 

 

その一つが ssh です。

 

ssh は鍵とパスワード管理が必要ですが、tailscale でログインされたデバイス間で ssh を行うと鍵とパスワード管理が不要です。

 

ーーーーーーーーーーーーーー
 tailscale での ssh のやり方
ーーーーーーーーーーーーーー

 

ssh を可能にするには、対象となるデバイスの CLI で tailscale up --ssh とします。



すると tailscale 管理画面には tailscale up --ssh を行ったデバイスに  SSH  表示がされます。



 

例えば上図の gl-mt2500 に Mac mini のターミナルからログインしてみます。

 


 

鍵管理不要でパスワード入力もなしで、いきなり GL-MT2500 にログインできています。

 

Magic DNS をオンにしておけば、アドレスではなくサーバー名でのログインも可能です。

 

 

ssh を無効にするには tailscale up --ssh=false とします。

 

 

 

 

ーーーーーーーーーーーーーー
 ファイル転送(TailDrop)
ーーーーーーーーーーーーーー

 

ファイル転送を可能にするには tailscale 管理画面の settings タグ内にある【Send Files】をオンにします。

 


 

 

これにより、この管理画面で管理しているすべてのデバイス間でファイル転送が可能になります。

 

 

例えば Mac mini から android デバイスへファイル転送をしてみます。

 

まず転送するファイルを選びます。

 

例では「スクリーンショット 2023-12-23 9.07.37.png」を対象にしています。

 

 

このファイルを右クリックするとサブメニューが現れます。

 

この中の【共有】をクリックします。

 


 

すると新たなサブメニューが現れますので【Tailscale】をクリックします。

 


 

 

このとき、現在 tailscale に登録しているデバイスの一欄が現れます。

 

が点いているデバイスは現在 taiscale に接続しているデバイスを意味します。

 

ここでは umidigi-s5-pro にファイル転送しますので、このデバイスをクリックします。


 

複数のデバイスをクリックするとそのすべてにファイル転送されます。


クリックした umidigi-s5-pro の にチェックマークが入れば転送完了です。

 

【Done】でこの画面を終了します。

 

 

転送が完了すると umidigi-s5-pro には tailscale から通知が届きます。

 


 

実際に転送された画像を umidigi-s5-pro で表示した画面です。



ファイルは Mac / Android の場合はダウンロードフォルダに送られます。

 

Windows の場合はデスクトップに送られるようです。

 

 

転送機能は scp / sftp 機能で実現しているそうです。

 

 

 

 

VPN 接続を利用して samba 共有してファイルマネージャーなどでファイル共有することもできます。

 

 

この場合は tailscale VPN 接続された機器間での共有になります。

 

 

 

 

【2023-12-31 ファイル共有を追記】

ーーーーーーーーーーーーーー
 Mac のファイルを共有
ーーーーーーーーーーーーーー

Mac の【システム設定】→【一般】→【共有】で「ファイル共有」をオンにします。

「ファイル共有」は samba による共有です。



画面共有もしたい場合は「画面共有」をオンにします。

「画面共有」はリモートデスクトップで Mac の画面を開けるようになります。


「ファイル共有」ですが、ほかのデバイス・Mac / PC / スマホ などからファイルを共有できます。


1.Mac / PC の場合

  Finder や Exploler でネットワーク接続してファイル共有


2.Android の場合

  ファイルマネージャーなどのアプリから Mac のローカルアドレスを指定し、
  ID/Password を入力して接続し、共有

 

3.iPhone の場合

  File アプリの右上の (…) から「サーバへ接続」をタッチして Mac のローカル
  アドレスを指定し、ID/Password を入力して接続し、共有


4.接続先が NAS の場合

  同様の接続手続きで共有


 

ローカルネットワークで共有できるようにすれば、tailscale 接続によって外部からも同様に共有接続ができます。

 

 

 

例えば Android スマホで Mac のファイルを共有してみます。

 

下記のようなファイルマネージャーアプリがリモート接続ができて便利です。

 


 

アプリを開きます。 


 

 

【リモート】をタッチします。

ローカルネットワーク内のデバイス一覧が表示されます。

 

上から順に、

 ① Mac mini(tailscale アドレス)

 ② mac mini(プライベート IP)

 ③ imac(プライベート IP)

 ④ mac.home(mac mini の DNSmasq 名)

 ⑤ LS-AVLD2C(NAS)

 



 

ここでは mac.home を選択します。

   ※ mac.home は DNSmasq に登録した Mac mini の DNS 名です。

 

Mac mini のディスク一覧が表示されます。

 


 

ここでは「WD_Black-1TB-dd」を選択します。

この中に含まれるフォルダ一覧が表示されます。

 


 

以上のようにしてネットワーク内でアクセスできるようになります。

 

tailscale 接続していれば外からローカルネットワークのデバイスにアクセスできます。

 

 

 

 

ーーーーーーーーーーーーーー
 ログオフ状態を起こす
ーーーーーーーーーーーーーー

 

Windows 版の tailscale には Run unattended という機能があり、これをオンにしておくと Wondows PC がログオフ状態でも tailscale で起こしてファイル転送などができます。

 

 

残念ながら Mac 版 tailscale にはこの機能がありません。

 

 

しかし、なくても困らないのです。

 

なぜなら Mac はファイル共有や画面共有で、スリープ中の Mac が起きるからです。

 

 

これがあるので Mac には Run unattended がないのかも知れません。

 

 

 

 

メッシュ型 VPN といい、そのほかの機能といい、tailscale 開発者の方々の着眼には恐れ入谷の鬼子母神(古いか!)です。



そのほかにも tailscale には高度な機能がいくつかあり、まだまだ使い切れていませんがメチャクチャ便利なのは確かです。

 

 






2023-12-27

GL-AXT1800 のストレージを拡張または裏技で、大きなパッケージをインストールする

 

 

GL-AXT1800 はストレージ容量が 128 MB ですが初期起動直後でもパッケージインストール領域は 43 MB しか残っていません(マウントポイント:/overlay の利用可能領域サイズ)。

 

 

 

例えば tailscale 最新板 1.56.1 の tailscale / tailscaled パッケージ合計 58 MB をインストールできません。

 

GL-AXT1800 も A1300 も古い tailscale 1.32.2-1 dev-t が標準で入っています。


これでよければ管理画面から有効化(起動)すればすぐに使えます。




最新化する場合、いったん有効化しておき、モジュールを最新のものと置き換えます。

 

 

 

これら大きなパッケージをインストールできるようにするには二つの方法があります。

 

 

 

【方法1】ストレージを拡張する方法 

 

正統派のやり方です。

 

ストレージを sd カードで拡張して、パッケージをインストールするやり方です。

 

 

 

【方法2】upx 圧縮する方法:裏技です 

 

upx 圧縮はモジュールを実行可能なまま圧縮する方法です。

 

圧縮すれば約半分の 29 MB ほどになります。

 

Mac で upx 圧縮し、scp コマンドで GL-AXT1800 に送り込むやり方です。

 

 

ーーーーー

 

これら二つの方法は GL-A1300 でも同様にできますが、GL-A1300 のストレージ拡張は USB2.0 メモリでの拡張になります。

 

 

 

 

ここでは GL-AXT1800 での二つの方法について、具体的なやり方を記載します。

 

 

【方法1】ストレージを拡張する方法 


sd カードを挿して、ターミナルから GL-AXT1800 に ssh で入ります。


SD カードは 1 GB あれば十分ですが、手持ちの 2 GB のものを使います。


まずは、必要なパッケージをインストールします。


root@GL-AXT1800:~# opkg update
root@GL-AXT1800:~# opkg install block-mount kmod-fs-ext4 fdisk

 

 

次の手順でコマンドを実行します。

 

 ・sd カードのマウントを解除

 ・ext4 でフォーマット

 ・デバイスを /mnt にマウント

  下記ではエラーメッセージがでていますが、ちゃんとマウントされています

 ・/overlay の内容を sd カード である /mnt にコピー

 ・変更を有効にするため再起動


 

 

コマンドの具体的な実行状況です。


root@GL-AXT1800:~# umount /dev/mmcblk0p1
root@GL-AXT1800:~# mkfs.ext4 /dev/mmcblk0p1
mke2fs 1.45.6 (20-Mar-2020)
/dev/mmcblk0p1 contains a ext4 file system
    last mounted on /tmp/extroot/overlay on Wed Dec 27 07:49:01 2023
Proceed anyway? (y,N) y
Discarding device blocks: done                            
Creating filesystem with 480000 4k blocks and 120000 inodes
Filesystem UUID: 38034445-dc40-4eca-a606-955c098a40ab
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

root@GL-AXT1800:~# mount /dev/mmcblk0p1 /mnt
NTFS signature is missing.
Failed to mount '/dev/mmcblk0p1': Invalid argument
The device '/dev/mmcblk0p1' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?
root@GL-AXT1800:~#
root@GL-AXT1800:~# cp -a -f /overlay/. /mnt
root@GL-AXT1800:~# reboot
root@GL-AXT1800:~# Connection to 192.168.8.1 closed by remote host.
Connection to 192.168.8.1 closed.
Mac-mini ~ %



 

ーーーーー GL−A1300 の場合 ーーーーー

USB メモリで領域を拡大しますので以下のパッケージをインストールします。

 

root@GL-A1300:~# opkg update
root@GL-A1300:~# opkg install block-mount kmod-fs-ext4 kmod-usb-storage e2fsprogs kmod-usb-ohci fdisk

 

また、sd カードと違い、デバイスが /dev/mmcblk0p1 ではなく /dev/sda1 で認識されますので、GL-AXT1800 でのデバイスを読み替えれば結構です。

ーーーーー GL-A1300 ここまで ーーーーー


 

 

再起動されたら LuCi の管理画面から【システム】→【マウントポイント】として、マウントされている /dev/mmcblk0p1 の【編集】をクリックします。


マウントされていなければ【追加】ボタンで割り当て操作をします。

 

【一般設定】は次のようにします。

 

 

 

【詳細設定】は次のようにします。

 

 

【保存】して戻り【保存&適用】をクリックして反映させます。


【システム】→【再起動】で再起動します。


 

 

再起動後の【マウントポイント】は次のようになって /overlay が拡張されているのが確認できます。




tailscale の最新版インストールと起動は、次のコマンドを実行します。

 

root@GL-AXT1800:~# opkg flag hold tailscale tailscaled
Setting flags for package tailscale to hold.
Setting flags for package tailscaled to hold.
root@GL-AXT1800:~# wget https://pkgs.tailscale.com/stable/tailscale_1.56.1_arm.tgz
--2023-12-27 08:08:42--  https://pkgs.tailscale.com/stable/tailscale_1.56.1_arm.tgz
Resolving pkgs.tailscale.com... 199.38.181.239, 2607:f740:f::d19
Connecting to pkgs.tailscale.com|199.38.181.239|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://dl.tailscale.com/stable/tailscale_1.56.1_arm.tgz [following]
--2023-12-27 08:08:43--  https://dl.tailscale.com/stable/tailscale_1.56.1_arm.tgz
Resolving dl.tailscale.com... 109.105.218.17, 2a09:8280:1::a:1a71
Connecting to dl.tailscale.com|109.105.218.17|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 28696243 (27M) [application/x-compressed-tar]
Saving to: 'tailscale_1.56.1_arm.tgz'

tailscale_1.56.1_arm.tg 100%[=============================>]  27.37M  47.0MB/s    in 0.6s    

2023-12-27 08:08:43 (47.0 MB/s) - 'tailscale_1.56.1_arm.tgz' saved [28696243/28696243]

root@GL-AXT1800:~# tar zxf tailscale_1.56.1_arm.tgz
root@GL-AXT1800:~# mv tailscale_1.56.1_arm/tailscale* /usr/sbin
root@GL-AXT1800:~# /etc/init.d/tailscale restart 





【方法1】upx 圧縮する方法 

 

まず Mac のターミナルで brew install upx として、upx をインストールしておきます。

 

 

https://pkgs.tailscale.com/stable/ から現時点の最新板 tailscale_1.56.1_arm.tgz をダウンロードし、解凍します。

 

ターミナルで、解凍したフォルダに移動し、upx コマンドでモジュールを圧縮します。

 

圧縮時の --best オプションは最適圧縮指定です。

 

Mac-mini tailscale_1.56.1_arm % upx --best tailscale*   
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2023
UPX 4.1.0       Markus Oberhumer, Laszlo Molnar & John Reiser    Aug 8th 2023

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
  15875666 ->   8891944   56.01%    linux/arm    tailscale                     
  41638019 ->  20020416   48.08%    linux/arm    tailscaled                    
   --------------------   ------   -----------   -----------
  57513685 ->  28912360   50.27%                 [ 2 files ]

Packed 2 files.
Mac-mini tailscale_1.56.1_arm %

 

 

tailscale / tailscaled の二つ合計で 57.5 MB のものが約半分の 28.9 MB に圧縮されています。

 

 

次に GL-AXT1800 の LuCi →【システム】→【Software】で openssh-sftp-server をインストールします。

 

これは、scp で送り込まれるファイルを受け取るサーバーパッケージです。

 

Mac から scp コマンドで圧縮したモジュールを送り込みます。

 

Mac-mini tailscale_1.56.1_arm % scp tailscale* root@192.168.8.1:/usr/sbin
root@192.168.8.1's password: <パスワード入力>
tailscale                                                   100% 8891KB   1.7MB/s   00:05    
tailscaled                                                  100%   20MB   1.6MB/s   00:12   
Mac-mini tailscale_1.56.1_arm %
 

 

GL-AXT1800 に ssh で入り、tailscale を再起動します。

 

root@GL-AXT1800:~# /etc/init.d/tailscale restart 

 

 

tailscale を起動した GL-AXT1800 を、既存のルーターにぶら下げて使う場合は管理画面で【アプリケーション】→【tailscale】→【リモートアクセスWANを許可する 】をオンにします。

 

 

そして、ssh で入ったターミナル画面で tailscale up --advertise-routes=<192.168.xxx.0/24> --accept-routes --advertise-exit-node とし、Exit Node と Subnets を広告します。

 

  ※ 192.168.xxx.0/24 は既存ルーターの LAN 側セグメントです。

 


実際に Exit Node と Subnets を有効にするには、tailscale の管理画面で AXT1800 の Edit route setting... でチェックを入れます。




以上が、ストレージ容量が十分な空き領域を持たない場合の、空き領域以上の大きさのパッケージをインストールする方法です。





GL-MT2500 / MT2500A の場合はストレージが 8 GB ありますから、このようなやり方は不要ですが、これらの機種には無線 LAN が搭載されていません。









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 のインストールと動作確認は終了です。