ミヤビソリューションは、
琵琶湖の環境保護に賛同します

OpenVPN

 

OpenVPN はSSLで暗号化を行うVirtual Private Networkです

現在、OpenVPN(2.1.3) が最新バージョンとなります

SSLを利用するため OpenSSL が使われますが、Debian 標準で既にインストールされていると思います

sarge時代には試行錯誤で動作するようにはしましたが、squeezeでのこの手順はほぼ完全に近い構成ができていると思います

Synapticでインストール

 

Synaptic で openvpn を探してインストールにチェックを入れ、[適用] を押すとインストールが始まります
openvpn だけの選択でも、他に必要なパッケージは自動的に選択してインストールしてくれます

そして、ネットワークは tap を使用し、tap と eth0 をブリッジにて接続するために Synaptic で bridge-utils をインストールしておきます

この時点では /etc/openvpn には update-resolv-conf のみがあり、ここに暗号キーや設定ファイルを作成していきます
設定方法はコマンドコンソール、Linux用GUI、Webminなどがあります

設定

 

OpenVPN の設定は、Webmin を使用します
Webmin の標準モジュールではありませんのでサードパーティ製モジュールで OpenVPN-admin をインストールしてください

Webmin の [サーバ] タグを開いて OpenVPN + CAのアイコンをクリックします

手順は、以下の通りです

1.”モジュール設定” を行います

  • ”Server Hint for Clients” には外部インターネットから接続するIPアドレス情報 (ドメイン名) を入力します
  • ”Command to start Bridge” には /usr/share/webmin/openvpn/br_scripts/bridge_start を入力します
  • ”Command to stop Bridge” には /usr/share/webmin/openvpn/br_scripts/bridge_end を入力します
  • ”Path to DOWN-ROOT-PLUGIN” には /usr/lib/openvpn/openvpn-down-root.so を入力します
  • [保存] を押します
  • これにより後に作成するサーバ設定時に/etc/openvpn/servers/(サーバ名)/bin 内に上記スクリプトを引数をつけて起動するスクリプト(xxx.up xxx.down-root)が作成されます、そしてそのスクリプトは OpenVPN の設定ファイル xxx.conf で指定されます(Webminでやる場合、ここが起動の仕組みでややこしいところです)


2.CA (認証局 Certificate Authority) の作成
  • Webmin の OpenVPN Administration メインメニューで ”Certification Authority List” アイコンを選択します
  • ”New Certification Authority” の入力箇所にCA名と自社情報を設定します
  • Key size は好みですが、1024/2048/4096 bit の中から選択します、暗号強度を上げると通信も遅くなります
  • [保存]を押します
  • CA の生成が行われます、2048 以上だと相当時間がかかります
  • 生成されると ”Certification Authority List” に作成したCA名がリストされます
openvpn1

3.サーバ認証キーの作成
  • ”Certification Authority List” で作成した CA名の行にある Keys List を開きます
  • ”New key to Certification Authority: CA名” で Key name を入力し、Key Server で server を選択します
  • [保存] を押します
  • これが、このサーバー側で使用する暗号キーとなります
  • キー名はサーバーのホスト名にするとわかりやすくなります
openvpn2

4.クライアント認証キーの作成
  • 3に引き続き
  • ”New key to Certification Authority: CA名” で Key name を入力し Key Server で client を選択します
  • [保存] を押します
  • これが、クライアント側で使用する暗号キーとなりますので、接続するクライアント分の数を作成します
  • キー名はクライアントのホスト名にするとわかりやすくなります


5.VPNサーバの作成と起動
  • Webmin の OpenVPN Administration メインメニューで ”VPN List” アイコンを選択します
  • ”ca”には作成したCA名が表示されていますので、[New VPN server] を押します
openvpn3
  • ”Name”はサーバーのホスト名を指定するとわかりやすくなります
  • ”Device”は tap を指定します (ブリッジ接続するため)
  • ”Bridge Device”に br0 と入力します
  • ”Network Device for Bridge”は eth0 を選択します
  • ”IP-Address/Gateway”にはサーバの IP アドレスを入力します (なぜか Gateway を入れるとエラーになる)
  • ”Net Mask”は通常 255.255.255.0 です
  • ”IP-Range for Bridge-Clients”にはクライアントに動的に割り振るアドレス範囲を入れますが、クライアントを固定アドレスにする場合は、その固定アドレス以外の範囲を指定しておきます
  • ”enable TLS and assume server role during TLS handshake”で yes を選択します
  • ”Because the OpenVPN server ..... (option client-to-client)”で yes を設定します
  • ”Encrypt packets whit cipher .....”はお好みで選択します
  • ”tun-mtu .....”は、つながらない場合に1500より小さな値を入れなおして試してください (私は1350を使用ましたがflagmentでの調整の方が正しいかも)
  • ”flagment”と”mssfix”はtun-mtuに同じく接続の問題があった場合に調整してください (接続できたのに通信できない場合や通信速度が異常に遅い場合など)
  • ”Additional Configurations”に”script-security 2”を入力します(次のStartで”openvpn_execve:external program may not be called due to setting of --script-security level”のエラーが出る場合に必要)
  • [保存] を押します
  • ”VPN server list”に作成したサーバ名が表示されます
  • /etc/openvpn/servers/(作成したサーバ名)/bin に (サーバ名).down-root と (サーバ名).up がありますので、それぞれを編集して netmask=255.255.255.0 に続けて gw=192.168.xxx.xxx とゲートウエイの指定を追加します
  • ”VPN server list”の作成したサーバー名にある start をクリックして、stop の表示になればサーバが起動しています、表示が元々Stop であればクリックして一旦 start の表示にしてから行ってください
  • ifconfig で br0 eth0 lo tap0 が有効で br0 にアドレスが振られていることを確認します
  • 再度 stop をクリックして ifconfig で eth0 lo が有効で eth0 にアドレスが振られていることを確認します

6.VPNクライアントの作成
  • ”VPN server list” の Client List をクリックします
  • [New VPN Client] を押します
  • ”Name” は4で作成したクライアント認証キーの名前がリストされますので選択します
  • ”remote” はモジュール設定で入力した ”Server Hint for Clients” が入っていますので、接続できる情報であることを確認しておきます、ドメイン、ホスト名、以外にグローバル IP アドレスでも可です
  • クライアントを固定 IP にする場合は、”Additional Configurations” に ”ifconfig IPADDRESS NETMASK” と入れ、”float”を no にします
  • [保存] を押します
  • クライアントが複数ある場合は、これを繰り返します
  • ”VPN client list サーバ名” の各クライアントにあるExport をクリックすると、設定ファイルとキーファイルが圧縮されて1 ファイルになったものをダウンロードすることができます

 

 

クライアント側設定
この先はクライアント側 PC (Windows) での作業です

VPNクライアントのインストール

VPNクライアントの設定
  • 前記6の圧縮ファイルを解凍するとフォルダができて、中に拡張子が ovpn となったファイルがあります
  • そのファイルを編集して client という行 (1行目) を tls-client に書き直してください
  • (なぜかクライアント作成画面で tls-client にするオプションが見つかりませんでした...)
  • そして、OpenVPNのインストール先にある config というフォルダにそのフォルダごと移動させます
  • OpenVPN GUI のアイコンを右クリックして、Connect を選択すれば接続できるはずです
  • その際に、同じ IP セグメント内から接続してもつながりませんから、外部インターネットから接続テストする必要があります


ルータの設定
  • 説明が最後になってしまいましたが、ルータに穴を開ける作業が必要です
  • ポートマッピングやアドレス変換といわれる設定を行います
  • OpenVPN をデフォルトのまま設定するとポート番号は UDP 1194 が使われますので、外部から 1194 にアクセスがあったパケットは OpenVPNをインストールしたサーバの IP アドレスへ通しますといった具合に指定します


うまくつながっていれば、外から暗号化したパケットで、自社 (自宅) 内のネットワークに直接続しているように見えるはずです
ネットワーク接続では、TAP-Win32 Adapter V9 というネットワークアダプタが有効になっているはずです
このアダプタに、VPNクライアントの作成で指定した ”ifconfig IPADDRESS NETMASK” の IP アドレスが割り振られます

ちなみに、このアダプタの接続速度は 10Mbps ですから、ローカルネットワーク (100Mbps Ether や 54Mbps Wireless) よりは遅いですから、大きなファイルを転送するときは、ローカルネットワーク内で行いましょう


ちなみに、Debianから別の OpenVPN サーバーにつなぎにいく場合
  • 前述6で作成されたフォルダをクライアントとなる Debian の任意のところにコピーします
  • コピーしたフォルダとファイルのアクセス権を root 644 にします
  • ovpn ファイルの 1 行目は同じように tls-client に変更します
  • コマンドコンソールで root になります
  • コピーしたフォルダに CD します
  • openvpn --config XXXXX.ovpn &
  • これで ”Initialization Sequence Completed” と表示されれば接続完了です

 

 

[上へ戻る]