V6プラス自宅LANに外出先からアクセス④ルータ役PCの設定


次は、自宅LANのルータ役PCを構築してみたいと思います。


ルータ役PCの動作

ご自宅のインターネット接続に、Wi-Fiルータ等ご利用されているかと思います。ここではインターネット・ルータと呼称致します。Wi-FiやLANケーブルでつながった機器は、インターネット・ルータを経由してインターネット上の機器と通信しています。

外出先のPCが、自宅LANの機器と双方向通信できるように、次のような動作をするように機器を設定します。

  1. 自宅LANのOpenVPNサーバ宛のパケットを、インターネット・ルータからルータ役PCへ転送します。
  2. ルータ役のPCは、自宅LANの機器とOpenVPNサーバとの間でパケットを仲介します。ここではIPフォワーディングと呼びます。


どのPCをルータ役にするか

考えなくてはならないのは、どのようなPCをルータ役にするかです。

Windows、Mac、LinuxどのようなOSでも、OpenVPNのインストールとIPフォワーディングが可能のようです。IPフォワーディングさせながら、普段通りPCを利用する事も可能ですが、他の複数の機器のパケット処理や暗号化処理を行うため、ある程度の性能は必要かと思います。次の条件を考えてみました。

  1. IPフォワーディングが可能→Windows, Mac, Linux
  2. OpenVPN
    • インストールが可能→Windows, Mac, Linux
    • 接続設定を細かく調整できる→Mac Tunnelblick VPN等
  3.  セキュリティ
    • ウイルス対策ソフトを導入可能→Windows, Mac
  4. OpenVPN接続に問題があるとき、NATやNDプロキシを越えて外出先から直接操作できる→どこでも My Mac、TeamViewer?(未検証)
  5. 電気・ネットワーク等のリソース節約
    • 消費電力が少なく安定動作→サーバとして使用しているPCを兼用
    • 夜間等タイマーで電源ON,OFFできる→Mac(標準機能)、Windows(機種による)、Linux(機種による)

OpenVPNの接続に問題が出た場合、VPSへログインしてサーバ側で強制切断、その後再接続されれば、正常に戻る場合が多いです。(TLS Error: local/remote TLS keys are out of syncエラーの場合など)

うちでは上記の理由に加えて、DockerのWordPressを使いたい等の理由から、サーバ兼ルータ役にMac miniを使用しています。どこでも My MacはV6プラス環境でも問題なく使用できました(外出先もMacが必要ですが)。

ここではWindowsとMacの設定方法を記載しますが、Macの動作のみ確認したかたちです。


インターネット・ルータへルーティング追加

このような感じで、インターネット・ルータにルーティングを追加します。


ルータ役PCの設定

IPフォワーディング有効化

macOS

/etc/sysctl.confを編集します。

sudo vi /etc/sysctl.conf

次の内容を追加し、再起動します。

net.inet.ip.forwarding=1

IPフォワーディングが有効かどうか確認します。

sysctl -o net.inet.ip.forwarding
# 手動で有効化
# sudo sysctl -w net.inet.ip.forwarding=1

OSバージョンによりnet.inet.ip.fw.enable=1の場合もあるようです。man sysctlでご確認下さい。

Windows

レジストリエディタで下記のキーを開き

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

IPEnableRouterを1に変更します。

サービスを開き「Routing and Remote Access」を自動起動に設定します。


OpenVPNインストール

macOS

HomebrewHomebrew-Caskでインストールする方法が簡単です。

OpenVPNは必須です。VPN接続の管理にTunnelblick VPNをお勧め致します。

brew install openvpn
brew cask install tunnelblick

Windows

OpenVPN Downloadページからダウンロード・インストールを行います。


拠点間接続OpenVPNクライアント設定

client1.ovpnファイル作成

拠点間接続用のクライアント証明書は、client1という名前で作りました。設定ファイルclient1.ovpnを作成します。

macOSは/usr/local/etc/openvpnへ配置します。

Windowsは%USERPROFILE%\OpenVPN\configへ配置するようです。

vi /usr/local/etc/openvpn/client1.ovpn

下記のような内容になります。

dev tun
port 1194
proto udp
ca ca.crt
cert client1.crt
key client1.key
tls-auth ta.key 1
client
remote <VPSのDDNSホスト名>
remote-cert-tls server
ns-cert-type server
cipher AES-256-CBC
verb 4

サーバ側で細かい設定を管理するため、拠点間接続のクライアント設定がいちばんシンプルな感じです。追ってあとで行うリモートアクセス用の設定は、一工夫が必要になります。

証明書転送

クライアントで使用する証明書を、SCP、SFTPアプリケーションを使ってサーバからコピーします。

macOSでscpを使うと次のような感じになります。

SRC1=root@<VPSのDDNSホスト名>:\~/easy-rsa/2.0/keys
SRC2=root@<VPSのDDNSホスト名>:/etc/openvpn/server
scp -i <SSH接続RSAキーファイルパス> -P 22 $SRC1/ca.crt $SRC1/client1.crt $SRC1/client1.key $SRC2/ta.key /usr/local/etc/openvpn

ファイル4つを設定フォルダへコピーします。

クライアント接続

OpenVPNを起動し、client1.ovpnファイルを使ってサーバと接続します。

macOSでTunnelblick VPNを使用する場合、次のような設定になります。OpenVPNバージョン等を既定値から変える必要がありました。

「コンピュータ起動時に接続」「接続を維持する」を有効にすることで、切断されても自動接続してくれます。

コンピュータ起動後の累計の通信量が表示されます。

自動起動・再接続設定

macOSの場合、上記のTunnelblick VPNの設定で自動接続が有効になります。

Windowsの場合、OpenVPNサービスの自動起動を有効にするようです。

ルータ役のPCを再起動後、VPN接続されているかどうか、確認してみて下さい。

拠点間接続がうまく行われていれば、VPSから自宅LAN機器へping等が行えるはずです。

ルーティングが自動追加されるのが正しい動作

基本的に、OpenVPNの設定がしっかりできていれば、routeコマンドによる手動のルーティング追加は不要です。サーバ側ではOpenVPN起動時、クライアント側では接続時に、ルーティングが自動的に追加される動きが、正しい動きです。

VPS、自宅ルータ役PC、リモート接続PCともにすべて、自動でルーティングが追加されます。

自動追加されない場合、設定ファイルを疑ってみて下さい。


以上でルータ役PCの構築が完了です。

お疲れ様でした。

次回は、外出先で使用する、リモートアクセス用のPCとスマートフォンを設定します。


V6プラス自宅LANに外出先からアクセス

スポンサーリンク

フォローする

スポンサーリンク