- ①設計編
- ②VPS基本設定
- ③OpenVPNサーバ構築
- ④ルータ役PCの設定
- ⑤リモートアクセスPCの設定
- ⑥over IPv6
次は、自宅LANのルータ役PCを構築してみたいと思います。
目次
ルータ役PCの動作
ご自宅のインターネット接続に、Wi-Fiルータ等ご利用されているかと思います。ここではインターネット・ルータと呼称致します。Wi-FiやLANケーブルでつながった機器は、インターネット・ルータを経由してインターネット上の機器と通信しています。
外出先のPCが、自宅LANの機器と双方向通信できるように、次のような動作をするように機器を設定します。
- 自宅LANのOpenVPNサーバ宛のパケットを、インターネット・ルータからルータ役PCへ転送します。
- ルータ役のPCは、自宅LANの機器とOpenVPNサーバとの間でパケットを仲介します。ここではIPフォワーディングと呼びます。
どのPCをルータ役にするか
考えなくてはならないのは、どのようなPCをルータ役にするかです。
Windows、Mac、LinuxどのようなOSでも、OpenVPNのインストールとIPフォワーディングが可能のようです。IPフォワーディングさせながら、普段通りPCを利用する事も可能ですが、他の複数の機器のパケット処理や暗号化処理を行うため、ある程度の性能は必要かと思います。次の条件を考えてみました。
- IPフォワーディングが可能→Windows, Mac, Linux
- OpenVPN
- インストールが可能→Windows, Mac, Linux
- 接続設定を細かく調整できる→Mac Tunnelblick VPN等
- セキュリティ
- ウイルス対策ソフトを導入可能→Windows, Mac
- OpenVPN接続に問題があるとき、NATやNDプロキシを越えて外出先から直接操作できる→どこでも My Mac、TeamViewer?(未検証)
- 電気・ネットワーク等のリソース節約
- 消費電力が少なく安定動作→サーバとして使用している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
HomebrewとHomebrew-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に外出先からアクセス
- ①設計編
- ②VPS基本設定
- ③OpenVPNサーバ構築
- ④ルータ役PCの設定
- ⑤リモートアクセスPCの設定
- ⑥over IPv6