OpenVPN(Peer-to-Peer)の設定

自宅の内外にある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

接続方法

  1. まずは、自宅側のVPN接続を開始する。相手がまだいないので接続は確立せずに待ち状態になる。通常はこの状態で、スリープしないようにして外出することになる。
  2. 宅外からVPNクライアントを接続すると、めでたく接続が確立するはずである。

この状態でリモートデスクトップを起動して、接続先を10.8.0.1にすれば成功するはずである。(もちろんリモートデスクトップを許可しておくこと)

番外:VPNクライアント側の設定(Ubuntu編)

Ubuntuの場合、上記のmy_client.ovpnファイルと鍵を/etc/openvpn/clientにでも配置しておいて、コンソールからopenvpnコマンドで接続することができる。

> openvpn --config my_client.ovpn

または、GUIでも設定できるので備忘録を残しておく

ネットワーク設定を開いて、VPNを追加する

ubuntu-vpn001

認証タイプは共通鍵、接続先のドメイン名またはグローバルIPアドレスと、接続したときのIPアドレスなどを指定する

ubuntu-vpn002

詳細パネルで、ポート番号やデバイスタイプを設定しておく

ubuntu-vpn003

接続できると、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  (不明なネット)
-->