概要
静的鍵での設定はセットアップが容易で、point-to-pointでのVPNでの利用や、テストやデモなどの用途に適しています。
静的鍵を利用する場合の利点
- セットアップが簡単
- X509 PKIの保守が不要
静的鍵を利用する場合の欠点
- 拡張性が低い - 1台のクライアントと1台のサーバーの組み合わせのみ
- PFS(Perfect Forward Secrecy)の欠如 — 鍵が漏洩した場合、以前のセッションについてもデータが明らかになってしまう
- VPNのペアごとに秘密鍵をプレーンテキストファイルとして保持しなければならない
- 秘密鍵を交換するのに、安全な方法(フロッピーディスクなどの物理媒体、暗号化されたネットワーク経由など)を使わなければならない
シンプルな例
この例では、最も単純で基本的なpoint-to-pointでのOpenVPN構成を説明します。
10.8.0.1のサーバーと10.8.0.2のクライアント間でVPNトンネルを構成し、OpenVPNのデフォルトであるUDPのポート1194を使って接続します。
まず、静的鍵を生成します。
openvpn --genkey --secret static.key
生成された静的鍵をサーバーとクライアントの両方にコピーします。この際、安全な方法でコピーするように注意してください。
サーバー設定ファイル
dev tun
ifconfig 10.8.0.1 10.8.0.2
secret static.key
クライアント設定ファイル
remote myremote.mydomain
dev tun
ifconfig 10.8.0.2 10.8.0.1
secret static.key
ファイアーウォール設定
下記のように設定されていることを確認してください。
- サーバーのUDPポート1194がオープンされていること
- OpenVPNが使用している仮想TUNインターフェイス(サーバーとクライアントの両方)がブロックされていないこと(TUNインターフェイス には、Linuxではtun0というような名前が、Windowsでは(変更していなければ)ローカルエリア接続nというような名前が付けられています)
OpenVPNの初心者が直面するネットワーク接続上の問題の多くは、このファイアーウォールが原因になっているようです。
VPNのテスト
サーバーとクライアントに上記の設定ファイルを配置し、OpenVPNを実行します。クライアント設定ファイルの中にあるmyremote.mydomainを、接続するOpenVPNサーバーのIPアドレスやFQDNに書き換えてください。
VPNの動作を確認するには、サーバーから10.8.0.2に、クライアントから10.8.0.1に対してそれぞれPINGを実行します。
シンプルな例から拡張する
VPNリンクでの圧縮の使用
クライアント設定ファイルとサーバー設定ファイルの両方に下記の記述を追加します。
comp-lzo
不安定な接続に対する対策の強化
具体的な対策として次のような方法があります。
- NATルータやファイアーウォールでの接続を維持する
- サーバーのIPアドレスが変わった場合にDNS名を追跡する
下記の設定をクライアントとサーバーの設定ファイルに追加します。
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
OpenVPNをデーモンとして実行する(Linux/BSD/Solaris/MacOSXのみ)
OpenVPNをデーモンとして実行し、権限をuser/group nobodyにドロップするには、設定ファイルに下記の記述を追加します。
User nobody
group nobody
daemon
クライアントがサーバー側サブネット全体にアクセスできるようにする
OpenVPNサーバーがサブネット192.168.4.0/24にあると仮定します。クライアント設定ファイルに下記の記述を追加します。
route 192.168.4.0 255.255.255.0
サーバー側では、10.8.0.2へのルートをOpenVPNサーバーにルーティングするようサーバー側LANゲートウェイのルートを設定します(これはOpenVPNサーバーとサーバー側LANゲートウェイが別PCの場合に必要な作業です)。
また、OpenVPNサーバーPCでIPフォワードが有効になっていることを確認してください。