nasneをTailscale VPNにつなぐ
自宅に置いているnasneを、VPNサービスのTailscale経由であらゆるところから使おうという試みです。試みを実現するための仕組みは、nasneと同じくTailscaleを直接導入できない、NASやネットカメラ (例: ATOM Cam 2) やその他IoT機器にも応用できると思います。
設定してみよう
前提条件
今回の試みには、前提として次の3つが必要です。Tailscaleという、非常に楽にVPNが張れるこのサービスについては、他に様々なところで紹介されているので説明を省略します。
- Tailscaleを利用していること (まだの場合はサインアップをどうぞ): Tailscale · Best VPN Service for Secure Networks
- 自宅LAN内にLinux機が稼働していること
- 自宅LAN内にTailscale経由で使いたいネットワーク機器があること
3の機器は今回、初期型nasne 1TBモデル (SIE CECH-ZNR2J) です。そのファイル共有機能 (共有フォルダー) をTailscale経由で使うことにします。
【余談】現時点で購入できるnasneは、BUFFALO製nasne NS-N100です。
バッファロー nasne HDDレコーダー 2TB 地デジ/BS/CS チューナー torne ニコニコ実況 【 PS5 / PS4 / iPhone/iPad/Android/Windows 対応 】 NS-N100
バッファロー
設定手順
次のような状態の2台のマシンとnasneを例に進めます。
マシン | 場所 | LANでのIPアドレス | TailscaleでのIPアドレス |
---|---|---|---|
machine-cloud | インターネット | — | 100.x.x.C |
machine-lan (Linux) | 自宅 | 192.168.1.L | 100.x.x.L |
nasne | 自宅 | 192.168.1.N | (割当不可) |
machine-cloudからnasneの共有フォルダーが使えるように、次の順で設定を行います。
- machine-cloudとmachine-lanにTailscale clientを導入して、Tailscaleでの通信が行えるようにする
- Subnet routers and traffic relay nodes · TailscaleでのStep 2以降の設定を実施する
- Step 2にて必要最小限の設定を行うならば、サブネットマスク
/32
を用いてsudo tailscale up --advertise-routes=192.168.1.N/32
となる - Optionalとなっている部分は行わなくても構わない
- Step 2にて必要最小限の設定を行うならば、サブネットマスク
- machine-cloudからnasneのIPアドレスに対し、nmapでのポートスキャンを行うと次の結果となります
$ nmap 192.168.1.N
Starting Nmap 7.80 ( https://nmap.org ) at 2021-08-09 12:51 JST
Nmap scan report for 192.168.1.N
Host is up (0.024s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
Nmap done: 1 IP address (1 host up) scanned in 0.45 seconds
- これはつまり、TailscaleのVPNにおいてmachine-lanがRelay Nodeとして介在することで、machine-cloudからnasneの139/tcp, 445/tcp等が見えている状態です。したがって、machine-cloudからnasneの共有フォルダーを使うことができます
まとめ
Tailscaleを用いると、どこからでも自宅LAN機器へアクセスできる経路を作れるし、その設定は簡単ということがわかりました。もちろん、SSHのポートフォワーディングやらrouting設定やらを駆使しても技術的にはできないことはないでしょうが、Tailscaleは、設定作業が劇的にわかりやすいところが秀逸だと思います。
参考情報) ファイル名の文字化け解決はあきらめた
Tailscaleのレイヤーの問題ではなく、SMBプロトコルかnasneのDLNA機能かメディアファイルを参照するソフトの問題ですが、参考として。
machine-cloud (Ubuntu) からnasneに保存するメディアファイルのファイル名に、日本語文字 (多バイト文字) を含む場合、私の家のテレビ (LGの2020年型) のメディアサーバ画面でnasneのメディアファイルを参照すると、ファイル名が文字化けするようで、この文字化けをなんとか回避しようと考えました。
しかし、私の初期型nasneのSMBプロトコルは「SMB 1.0」とバージョンが古いことが関係するのか、mount
時のオプションにcodepage=cp932
を設定できない?ようで、苦肉の策でconvmvfs
という変換ツール (Ubuntuではaptで導入可能) を見つけて、
- Ubuntu Manpage: convmvfs - utility that mirrors a whole filesystem tree from one charset to another.
次のようにmachine-cloudでの設定をいろいろ試みたのですが、解決せずです。現時点ではファイル名の文字化けは諦めています。
## 1) machine-cloudでのマウント
sudo mount -t cifs -o guest,rw,vers=1.0 //192.168.1.N/share1 /mnt/nasne_direct
## 2-a) convmvfsを用いた多重マウント1 → NG (テレビで文字化け)
convmvfs /mnt/nasne_convert -o icharset=CP932,srcdir=/mnt/nasne_direct
## 2-b) convmvfsを用いた多重マウント2 → NG (テレビで文字化け)
convmvfs /mnt/nasne_convert -o icharset=EUCJP-MS,srcdir=/mnt/nasne_direct