自宅の内外にある2台のPCをVPN接続することを目的とした設定方法メモ
前提条件
本来VPNサーバーを設置して認証するのがベストではあるが、なるべく簡易的に2台のPCを接続することを目的としているので、認証方式は静的鍵としている。
認証方式 | 静的鍵(static key) |
UDPポート | 1199 |
VPNサーバー(自宅Windows10マシン) | 10.8.0.1 |
VPNクライアント(外) | 10.8.0.2 |
注意点としては、上記でVPNサーバーと言っているが、自宅と外の2つのVPNクライアントがPeer-to-Peer接続する構成である。宅内のVPNサーバーをあらかじめVPN接続待ち状態にしておいて、外から接続するイメージになる。
VPNサーバー側の設定
静的鍵の作成
クライアント、サーバーで同じ鍵を使用することで、認証をクリアして接続できるようになる。まず自宅のWindows10マシンにOpenVPNをインストールする。
https://www.openvpn.jp/download/
インストールしたら、コマンドプロンプトを起動してopenvpn --genkey
コマンドで共通の鍵を生成する。
> set PATH=C:\Program Files\OpenVPN\bin;%PATH%
> openvpn --genkey --secret vpn.key
このvpn.keyをVPNサーバーとVPNクライアントの双方に配布しておく。
VPNサーバー側のVPN設定ファイル
my_server.ovpn
proto udp
dev tun
port 1199
ifconfig 10.8.0.1 10.8.0.2
secret vpn.key
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
ルーターのポートマッピング設定
上記の場合、ポート1099番を自宅のVPNサーバーのIPアドレスに紐づけておく。これをやらないとルーターを超えられない。
ファイヤーウォールの受信側の設定
念のため、ファイヤーウォールの受信側の設定も許可する。おそらく最初にOpenVPNを起動すると、ファイヤーウォールの通過を許可するかパネルが出るので、許可するだけで良いかもしれない。
規則 | 受信側 |
定義名 | OpenVPNサーバー |
プロトコル | UDP |
ポート | 1199 |
VPNクライアント側の設定
VPNクライアント側のVPN設定ファイル
以下の設定ファイルでOpenVPNクライアント接続を行う。基本的にサーバー側と同じだが、こちらにはremote
の項目が追加されている。ここにインターネット側から見た自宅のグローバルIPアドレスか、ドメイン名を設定する。
あと、ifconfig
の項目には、VPNサーバー側の設定ファイルのIPアドレスと逆の順番で記述する。
この設定ファイルと共通鍵をOpenVPNクライアントのconfigに入れておく。
my_client.ovpn
remote hoge.com
proto udp
dev tun
port 1194
ifconfig 10.8.0.2 10.8.0.1
secret vpn.key
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
接続方法
- まずは、自宅側のVPN接続を開始する。相手がまだいないので接続は確立せずに待ち状態になる。通常はこの状態で、スリープしないようにして外出することになる。
- 宅外からVPNクライアントを接続すると、めでたく接続が確立するはずである。
この状態でリモートデスクトップを起動して、接続先を10.8.0.1
にすれば成功するはずである。(もちろんリモートデスクトップを許可しておくこと)
番外:VPNクライアント側の設定(Ubuntu編)
Ubuntuの場合、上記のmy_client.ovpn
ファイルと鍵を/etc/openvpn/client
にでも配置しておいて、コンソールからopenvpn
コマンドで接続することができる。
> openvpn --config my_client.ovpn
または、GUIでも設定できるので備忘録を残しておく
ネットワーク設定を開いて、VPNを追加する
認証タイプは共通鍵、接続先のドメイン名またはグローバルIPアドレスと、接続したときのIPアドレスなどを指定する
詳細パネルで、ポート番号やデバイスタイプを設定しておく
接続できると、tun0
のネットワークインタフェースにIPが発番されて接続が確立する
> ifconfig
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 10.8.0.2 netmask 255.255.255.255 destination 10.8.0.1
inet6 fe80::8366:e7ec:83d8:ceb5 prefixlen 64 scopeid 0x20<link>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 100 (不明なネット)