Tailscaleサブネットルータで宅外から宅内マシンにアクセス:IPフォワーディングの設定と注意点

Raspberry Pi 3、Pico、激安USBキャプチャボードで作るPiKVM – VPNモニタリング編では、

PiKVMにTailscaleを導入し、外出先から安全にPiKVM自体を操作する方法について解説しました。これにより物理的なサーバー管理は劇的に楽になりましたが、運用を続けていくと、PiKVMの先にある「宅内ネットワーク上の他のデバイス」にアクセスしたい場面が増えてきます。

通常、TailscaleがインストールできないNASや、設定画面がブラウザベースのネットワークスイッチ、あるいは古いPCなどへ外部からアクセスするには、個別のVPN設定やポート開放といった手間とリスクが伴います。しかし、Tailscaleの「サブネットルータ」機能を活用すれば、Tailscaleを導入した1台のデバイス(今回の例ではPiKVMや自宅のLinuxサーバー)を経由して、宅内ネットワーク全体を安全にTailscale網へ組み込むことが可能になります。これにより、外出先からでも、あたかも自宅のWi-Fiに接続しているかのようなシームレスなアクセス環境が実現します。

目次

リモート環境の完全な自動復旧を目指して

本記事の目的は、Tailscaleのサブネットルータを正しく構築し、宅内デバイスへの自由なアクセス経路を確保することにあります。

特に重視するのは、一度設定して終わりではなく、システムのアップデートや不意の停電による再起動が発生した後でも、管理者の手動介入なしに自動的に通信が復旧する「堅牢な設定」の確立です。リモートメンテナンスを目的としたデバイスにおいて、再起動のたびに接続が途絶え、現地でコマンドを打ち直さなければならない状態は、インフラとして不完全です。物理的なトラブル時こそ真価を発揮する、安定した中継基盤の構築を目指します。

確実な接続性の確保と自動化の目標

今回の構築において達成すべき目標は、以下の通りです。

  1. 宅内デバイスへの到達性: 外出先のTailscale端末から、サブネットルータを経由して宅内LAN(例:192.168.1.0/24)内のすべてのターゲットデバイスに対し、ブラウザやSSH等で確実にアクセスできること。
  2. 再起動後の完全自動復旧: デバイスの電源が遮断された後の再起動において、追加の操作なしにサブネットルータ機能が自動で有効化され、宅外からのアクセスパスが維持されること。

これらを満たすことで、真に「メンテナンスフリー」なリモートアクセス環境を定義します。

通信を阻む「IPフォワーディング」の壁と管理画面の警告

サブネットルータを運用する上で、最も見落としやすく、かつ重大な注意点が、Linuxカーネルにおける「IPフォワーディング(ip_forward)」の設定です。

Tailscaleの管理画面(Admin Console)において、対象のノードに「Unable to relay traffic: This machine has IP forwarding disabled」というエラーが表示されることがあります。これは、Linux OS側で「自分宛てではないパケットを、他のネットワークインターフェースへ転送すること」が禁止されているために発生します。Linuxはセキュリティ保護の観点から、デフォルトでこの転送機能が無効化されています。

トラフィックの中継ができません

さらに、PiKVM(Arch Linux ARM)のような専用デバイスでは、SDカードの摩耗を防ぐためにファイルシステムが通常「読み取り専用(Read-Only)」で動作しています。検証時に一時的なコマンドでIPフォワーディングを有効にしても、適切なファイル保存手順を踏まなければ、再起動と同時に設定は初期化され、自宅内へのアクセス経路は完全に断たれてしまいます。この「OS側の転送制限」と「ファイルシステムの保護仕様」の両方を正しく理解し、対処することが不可欠です。

環境別:サブネットルータの構築と永続化手順

この課題を解決し、再起動後も安定して動作するサブネットルータを構築するための手順を、環境別に解説します。詳細はここを確認ください。

標準的なLinux(Ubuntu, Debian, CentOS等)の場合

一般的なLinuxサーバーをサブネットルータにする場合、ファイルシステムの制限はありません。設定ファイル(.conf)を正しく作成し、カーネルに読み込ませることが重要です。

# 1. IPフォワーディングを有効化するための設定ファイルを作成
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf

# 2. 設定を即座に適用
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf

# 3. Tailscaleでサブネットを広報(例:192.168.1.0/24の場合)
sudo tailscale up --advertise-routes=192.168.1.0/24

PiKVM(Arch Linux ARM)の場合

PiKVMの場合は、まず書き込み制限を解除してから設定を行い、最後に再び制限をかけるという手順を踏みます。

# 1. ファイルシステムを書き込み可能(RW)モードに変更
rw

# 2. IPフォワーディング設定の作成と反映(内容は標準Linuxと同様)
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf

# 3. Tailscaleでのサブネット広報
sudo tailscale up --advertise-routes=192.168.1.0/24

# 4. ファイルシステムを読み取り専用(RO)モードに戻す
ro

Tailscale管理画面(Admin Console)での承認

コマンド実行後、必ずTailscaleのWeb管理画面にアクセスしてください。対象ノードの「Edit route settings」メニューから、広報したサブネットのチェックボックスをオンにして「承認(Enable)」する必要があります。このWeb上での承認ステップを完了しない限り、実際の通信中継は開始されません。

まとめ:信頼性の高いリモートゲートウェイの完成

Tailscaleのサブネットルータ機能は、物理的な距離を超えて宅内ネットワークをシームレスに利用可能にする、極めて強力なソリューションです。しかし、その動作の鍵を握っているのは、Linuxの基本的なネットワーク設定である「IPフォワーディング」の適切な構成に他なりません。

今回解説した永続化設定を施すことで、単に「今動く」だけでなく、将来的な障害や停電時にも自動で復旧する強固なアクセス基盤が整いました。インフラを管理する者にとって、予期せぬ再起動を恐れる必要がなくなることは、最大の安心材料となります。構築後は必ず一度デバイスを再起動し、外部から宅内マシンへアクセスできるかを確認する「再起動試験」を行い、設定の定着を確認することをお勧めします。