3: 2010-03-12 (Fri) 01:35:15 maruo source Cur: 2010-07-05 (Mon) 00:13:21 maruo source
Line 11: Line 11:
**クライアント側 [#v7b79b03] **クライアント側 [#v7b79b03]
クライアントにLinuxを使用する場合は、サーバと一緒。今回は、Windowsを使用するので、[[OpenVPN GUI for Windows 日本語版:http://www.openvpn.jp/bridging/5.html]]を使用します。インストール手順は[[こちら:http://www.openvpn.jp/guiuse.html]]でね。 クライアントにLinuxを使用する場合は、サーバと一緒。今回は、Windowsを使用するので、[[OpenVPN GUI for Windows 日本語版:http://www.openvpn.jp/bridging/5.html]]を使用します。インストール手順は[[こちら:http://www.openvpn.jp/guiuse.html]]でね。
- 
-*OpenVPNを設定してみよう [#gcb1e883] 
-**サーバ側 [#aa7ab458] 
-/usr/share/doc/openvpn-XXX/examples/sample-config-files/ディレクトリに、設定ファイルのサンプルがあります。こちらを利用しましょう。 
-サーバ側ですので、この下にあるserver.conf.bz2を、/etc/openvpn配下に、openvpn.confという名称で、解凍&コピーします。この中で、特に必要な項目を… 
-:port|openvpnで通信するポートを指定します(クライアント側と合わせる) 
-:proto|tcpか、udpかを指定します。(クライアント側と合わせる) 
-:dev|tapかtunか。tapはブリッジモードかつL2レベルインタフェース、tunはルーティングモードかつL3モードです。私はtunで。ってのは、DRBDと相性がわるかったから…(クライアント側と合わせる) 
-:ca|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、ca.crtを指定します。フルパスで書くのが安心。 
-:cert|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、server.crtを指定します。フルパスで書くのが安心。 
-:key|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、server.keyを設定します。フルパスで書くのが安心。 
-:dh|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、dh1024.pemを設定します。 
-:server|サーバモードで設定する、openvpn空間でのネットワークアドレスを指定します。通信先ネットワーク内で使用しているIPとは、かぶらないIPアドレスにする。例えば、通信先のNW空間が、仮に172.21.0.0/16ならば、openvpn空間のNWは、172.22.0.0/16とかね。 
-:push|接続してきたクライアントに自動設定するパラメータを指定する。例えばルーティングテーブル。接続してできたデバイスに対して、通信先NWのルーティング(上の例なら172.21.0.0/16向けのルーティング)を設定するとか、クライアントに参照させたいDNSサーバのアドレスとか。 
-:tls-auth,cipher|TLSによる暗号化をプラスする場合、使用する。暗号強度が上がる。 
-:user,group|Windowsではない場合、openvpnが動作するユーザ、グループ権限が指定できる。root以外にすれば、セキュリティは向上するよね。 
-**クライアント側 [#l2cb0b98] 
-Windowsだと、c:\Program Files(64ビット版の場合は、c:\Program Files (x86))\OpenVPN\sample-configに、サンプル設定ファイルがあります。この中のclient.ovpnをコピーして、c:\Program Files(64ビット版の場合は、c:\Program Files (x86))\OpenVPN\configに置きます。そしてこのファイルを編集しますが…注意!Windows7や、Windows Vistaは、管理者モードでないと変更セーブされませんので…気をつけてね。私は、個人のフォルダにコピーして、変更してからconfigフォルダに管理者モードでコピーしました。 
-:proto|tcpか、udpかを指定します。(サーバ側と合わせる) 
-:dev|tapかtunか。tapはブリッジモードかつL2レベルインタフェース(ARPが動くってことかな…)、tunはルーティングモードかつL3モード(ARPは解決しないモードかな)です。私はtunで。(サーバ側と合わせる) 
-:remote|接続先のサーバ名と、ポート(サーバ側のport項で指定した値)を指定する。 
-:ca|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、ca.crtを指定します。フルパスで書くのが安心。Windowsは、ファイルパスに\を使用しますが、OpenVPNは、\の指定は\\ですので、注意。 
-:cert|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、クライアント名.crtを指定します。フルパスで書くのが安心。Windowsは、ファイルパスに\を使用しますが、OpenVPNは、\の指定は\\ですので、注意。 
-:key|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、クライアント名.keyを設定します。フルパスで書くのが安心。 
-Windowsは、ファイルパスに\を使用しますが、OpenVPNは、\の指定は\\ですので、注意。 
-:tls-auth,cipher|TLSによる暗号化をプラスする場合、使用する。暗号強度が上がる。 
*暗号鍵を作成 [#y9606253] *暗号鍵を作成 [#y9606253]
OpenVPNインストール時、大体/usr/share/openvpn等のどこかに、easy-rsaというフォルダがあります。この中に、暗号鍵作成ツールが入っております。そのフォルダ内で、ツールを実行! OpenVPNインストール時、大体/usr/share/openvpn等のどこかに、easy-rsaというフォルダがあります。この中に、暗号鍵作成ツールが入っております。そのフォルダ内で、ツールを実行!
Line 76: Line 50:
 # build-dh  # build-dh
少々お待ちくださいね… 少々お待ちくださいね…
 +**TLSのHMAC認証用共有鍵作成 [#h77443fa]
 +別に作成しなくてもよいのですが、後で述べる[[暗号強度を強める設定>Gentoo Linuxな生活/OpenVPNで悩む#r6a3b622]]を行う場合は、共有鍵を作成します。
 + openvpn --genkey --secret ta.key
 +
**鍵をコピー [#q123c922] **鍵をコピー [#q123c922]
そうすると、keysサブディレクトリ配下に、以下があるはず。 そうすると、keysサブディレクトリ配下に、以下があるはず。
Line 87: Line 65:
 server.csr  server.csr
 server.key  server.key
-で、これらのうち、ca.crt(CA証明書),クライアント名.crt,クライアント名.csr(クライアント証明書),クライアント名.key(クライアント秘密鍵)をコピーして、Windows側に持ってってあげます。くれぐれも、漏えいしたりしないように気をつけつつ… + ta.key 
-*その他の設定 [#ta633b9b]+で、これらのうち、ca.crt(CA証明書),クライアント名.crt,クライアント名.csr(クライアント証明書),クライアント名.key(クライアント秘密鍵),ta.key(HMAC認証用共有鍵)をコピーして、Windows側に持ってってあげます。くれぐれも、漏えいしたりしないように気をつけつつ… 
 +*OpenVPNを設定してみよう(共通設定) [#tffcb460] 
 +OpenVPNは、TUN/TAPの2種類の設定モードがありますが、まずは共通で設定できるものからね。 
 +**サーバ側 [#aa7ab458] 
 +/usr/share/doc/openvpn-XXX/examples/sample-config-files/ディレクトリに、設定ファイルのサンプルがあります。こちらを利用しましょう。 
 +サーバ側ですので、この下にあるserver.conf.bz2を、/etc/openvpn配下に、openvpn.confという名称で、解凍&コピーします。この中で、特に必要な項目を… 
 +:port|openvpnで通信するポートを指定します(クライアント側と合わせる) 
 +:proto|tcpか、udpかを指定します。(クライアント側と合わせる) 
 +:ca|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、ca.crtを指定します。フルパスで書くのが安心。 
 +:cert|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、server.crtを指定します。フルパスで書くのが安心。 
 +:key|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、server.keyを設定します。フルパスで書くのが安心。 
 +:dh|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、dh1024.pemを設定します。 
 + 
 +:push|接続してきたクライアントに自動設定するパラメータを指定する。例えばルーティングテーブル。接続してできたデバイスに対して、通信先NWのルーティング(上の例なら172.21.0.0/16向けのルーティング)を設定するとか、クライアントに参照させたいDNSサーバのアドレスとか。 
 + 
 +**クライアント側 [#l2cb0b98] 
 +Windowsだと、c:\Program Files(64ビット版の場合は、c:\Program Files (x86))\OpenVPN\sample-configに、サンプル設定ファイルがあります。この中のclient.ovpnをコピーして、c:\Program Files(64ビット版の場合は、c:\Program Files (x86))\OpenVPN\configに置きます。そしてこのファイルを編集しますが…注意!Windows7や、Windows Vistaは、管理者モードでないと変更セーブされませんので…気をつけてね。私は、個人のフォルダにコピーして、変更してからconfigフォルダに管理者モードでコピーしました。 
 +:proto|tcpか、udpかを指定します。(サーバ側と合わせる) 
 +:remote|接続先のサーバ名と、ポート(サーバ側のport項で指定した値)を指定する。 
 +:ca|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、ca.crtを指定します。フルパスで書くのが安心。Windowsは、ファイルパスに\を使用しますが、OpenVPNは、\の指定は\\ですので、注意。 
 +:cert|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、クライアント名.crtを指定します。フルパスで書くのが安心。Windowsは、ファイルパスに\を使用しますが、OpenVPNは、\の指定は\\ですので、注意。 
 +:key|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、クライアント名.keyを設定します。フルパスで書くのが安心。 
 +Windowsは、ファイルパスに\を使用しますが、OpenVPNは、\の指定は\\ですので、注意。
**ブロードバンドルータ側の設定 [#ef9f4faa] **ブロードバンドルータ側の設定 [#ef9f4faa]
普通は、ブロードバンドルータで、ポートを閉じていると思います。ブロードバンドルータ側で、openvpnを受け付けているプロトコル、ポートを、openvpnサーバ側に向けてあげる変換テーブルを設定してあげましょう。 普通は、ブロードバンドルータで、ポートを閉じていると思います。ブロードバンドルータ側で、openvpnを受け付けているプロトコル、ポートを、openvpnサーバ側に向けてあげる変換テーブルを設定してあげましょう。
Line 95: Line 95:
Sysctlの、ip_forwardをONにします。 Sysctlの、ip_forwardをONにします。
 # echo "1" > /proc/sys/net/ipv4/ip_forward  # echo "1" > /proc/sys/net/ipv4/ip_forward
 +
 +*OpenVPNを設定してみよう(TUNモード) [#gcb1e883]
 +#ref(TUN.jpg,around,right)
 +TUNモードは、ルーティングモードです。VPNのネットワークは、通信する先のネットワークとは別のサブネットマスクになります。OpenVPNの設定は楽なんだけど、ルーティングの設定が難しいんだよね…
 +#clear
 +**サーバ側 [#ubdd8bbb]
 +先ほどのopenvpn.confの項目で、以下の項目を設定するですよ。
 +:dev|tunを指定します。
 +:server|サーバモードで設定する、openvpn空間でのネットワークアドレスを指定します。通信先ネットワーク内で使用しているIPとは、かぶらないIPアドレスにする。例えば、通信先のNW空間が、仮に172.21.0.0/16ならば、openvpn空間のNWは、172.22.0.0/16とかね。
 +**クライアント側 [#ebfbd9a9]
 +先ほどのclient.ovpnの、以下の項目を編集します。
 +:dev|tunを指定します。
 +
 +**その他の設定 [#zecd28f8]
***iptables等 [#n39f0623] ***iptables等 [#n39f0623]
iptablesを指定している場合は、openvpn用のNWアドレスを通過する設定をしないといけません iptablesを指定している場合は、openvpn用のNWアドレスを通過する設定をしないといけません
***各種サーバ [#r9e58f78] ***各種サーバ [#r9e58f78]
openvpn用のNWアドレスからのリクエストを受け付けるようにしましょう openvpn用のNWアドレスからのリクエストを受け付けるようにしましょう
 +***ブロードバンドルータ等 [#deab2c18]
 +基本は、デフォルトゲートウェイにブロードバンドルータを指定している事でしょう。このデフォルトゲートウェイに、OpenVPNクライアントのアドレスはOpenVPNサーバにルーティングしてあげるルーティングテーブルを追加します。
 +
 +*OpenVPNを設定してみよう(TAPモード) [#l984cd92]
 +#ref(TAP.jpg,around,right)
 +TAPモードは、アクセス先ネットワークとクライアントが同じサブネットとなります。TAPインタフェースの設定がめんどくさいんだけど、ルーティングなんかは設定しなくていいから楽なんだよね。ただ、アクセスコントロールをしたいときは難しいですわ。
 +
 +こちらで設定した場合の方が、NW通信は早いみたい。
 +
 +#clear
 +
 +**サーバ側 [#aa08ed07]
 +:dev|tap指定ね。特に、TAPデバイスを作成している場合は、そのままデバイス名(例えばtap0等)を指定すると良い
 +:server-bridge|TAPの場合はこちら。ブリッジIFのアドレス、ネットマスク、クライアントに付与するアドレスの範囲を指定。ちなみに、何もオプションを指定しない場合は、DHCPProxyモードになります。向こう側のネットワークにDHCPサーバとかいる場合は、そちらのDHCPにNW設定をお任せできます。
 +
 +**クライアント側 [#f5343d4c]
 +:dev|tap指定ね。
 +**OpenVPNのサーバ [#c272a946]
 +ブリッジ設定を追加してやります。
 +***bridge-utilsのインストール [#t84c78b8]
 + emerge bridge-utils
 +***ブリッジインタフェースを作成する [#o6c2ed73]
 +/etc/conf.d/netをこんな感じで設定。
 + config_br0=("br0に振るIPアドレス")
 + routes_br0=(
 +       "default via ゲートウェイアドレス"
 + )
 + #eth0にはアドレス付与しない
 + config_eth0=( "null" )
 + #tap0はTAPモードで動かす
 + tuntap_tap0="tap"
 + #tap0にはアドレス付与しない
 + config_tap0=("null")
 + #eth0とtap0をブリッジする
 + bridge_br0="eth0 tap0"
 + #net.eth0とnet.tap0を実行してからbr0を動かす
 + #また、NW設定の一番頭で動かす。
 + depend_br0() {
 +   need net.eth0 net.tap0
 +   before net
 + }
 +さらに、/etc/init.dに移って
 + ln -sfn net.lo net.br0
 + ln -sfn net.lo net.tap0
 +さらにさらに、初期設定で自動起動するように、
 + rc-update add net.br0 default
 +
*接続確認 [#c07b1bf1] *接続確認 [#c07b1bf1]
サーバ側で、openvpnを起動してみます。 サーバ側で、openvpnを起動してみます。
Line 105: Line 166:
*もう一工夫 [#z3477833] *もう一工夫 [#z3477833]
-Windows側のVPNクライアントを見ていると、USBのアクセスキーを差し込まないとVPN接続できないようなもの、ありますよね。あれにチャレンジしてみます。 
-うちのdv3500君は、SDカードスロットを持っています。うちに1GbyteのSDカードがありました。こいつを暗号化して、これにさっきのクライアント暗号化キーをぶっこんでおけば…そいつがないとVPN接続できないし、安心ですね。+**暗号化強度を上げてみる [#r6a3b622] 
 +***OpenVPNの設定 [#lf755405] 
 +OpenVPNの設定で、以下を追加すると、暗号強度が増しますよ。 
 +:tls-auth|TLSによる暗号化をプラスする場合、使用する。暗号強度が上がる。[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、ta.keyを書いて、第2パラメータに0を指定。サーバで指定したら、クライアント側にも必要 
 +:cipher|暗号化アルゴリズムを指定します。サーバ、クライアントにて設定を合わせます 
 +:user,group|Windowsではない場合、openvpnが動作するユーザ、グループ権限が指定できる。root以外にすれば、セキュリティは向上するよね。 
 +***鍵長を変えてみる [#scca189d] 
 +/usr/share/openvpn/easy-rsaの下に、varsというファイルがあります。こいつの 
 + export KEY_SIZE=2048 
 +にすると、2048bitの鍵長になり、SSLキー自体の暗号強度が上がりますよ。デフォルトは1024bit長ね 
 + 
 +**SSL等とポートを共有する [#x83a0432] 
 +例えば、apacheサーバ等の暗号化ポート(https:443番)を、OpenVPN用ポートと共有するってことを考えてみます。 
 +***apache側 [#y1caed41] 
 +SSL等のListenポートをずらしてやります。apacheの設定ファイルを開いて 
 + #Listen 443 
 + Listen 444 
 +  
 + #<VirtualHost _default_:443> 
 + <VirtualHost _default_:444> 
 +等ね。で、再起動 
 + 
 +***OpenVPN側 [#dc29ad6e] 
 +port-shareってオプションを使用します。これを行うと、httpのプロトコルを、shareしたアドレス、ポートに転送してくれます。サーバ側のopenvpn.confを開いて 
 + 
 + port 443 
 + port-share 127.0.0.1 444 
 + 
 +として再起動。 
 +こうすると、httpは127.0.0.1のポート444に転送してくれて、VPN接続も443で実行できるってわけです。便利ねー 
 + 
 +**通信速度の高速化 [#v1fac745] 
 +***通信パケットの圧縮 [#y0196690] 
 +通信時に、データパケットを通信元で圧縮し、通信先で解凍すると、通信回線の速さよりもCPUが勝っていれば、通信速度が向上します。 
 +クライアント、サーバ側にcomp-lzoオプションを追加してやって。 
 +***インタフェースのMTU長 [#pf891575] 
 +MTU長とは、IPパケット上に載せられるデータサイズの事。ふつーのEthernetは、1500バイトです。これを超えたデータを転送しようとするとパケットを分割しようとします。これをフラグメントと言いますが、ものすごく転送速度が落ちます。 
 + 
 +さて、このVPN、IPトンネルを使用します。IPトンネルもEthernetと同じくデバイスに見えます。このデバイスに入ったパケットは、IPヘッダをつけて、さらにEthernetの1500バイトのIPデータに変換されます。分かりました?IPトンネルは、余計にくっつけるヘッダサイズ分、MTU長が小さくなるのです。なので、これを調整してやると、飛躍的に転送速度が上がります。 
 + tun-mtu 1280 
 + mssfix 1280 
 + fragment 1280 
 +こんなオプションを、サーバ側、クライアント側の設定ファイルに追加すると…うちでは転送速度が2倍に向上したよ。fragmentはproto udpの時のみ有効です~。 
 + 
 +ゲートウェイのブロードバンドルータレベルで、約100Mbyteほどの転送速度。で、設定前と設定後で、100Mbyte程度のデータをVPN経由して転送してみました。 
 +:設定前|2.5Mbyte/sec=約20Mbps 
 +:設定後|5.2Mbyte/sec=約41Mbps 
 +:さらにTAPモードにすると|6.9Mbyte/sec=約55Mbps 
 +これは劇的な変化でしょ!!TAPモードにするとルーティングしない分、さらに早いみたいです。
**BitLocker to Go [#j8f352de] **BitLocker to Go [#j8f352de]
 +Windows側のVPNクライアントを見ていると、USBのアクセスキーを差し込まないとVPN接続できないようなもの、ありますよね。あれにチャレンジしてみます。
 +
 +うちのdv3500君は、SDカードスロットを持っています。うちに1GbyteのSDカードがありました。こいつを暗号化して、これにさっきのクライアント暗号化キーをぶっこんでおけば…そいつがないとVPN接続できないし、安心ですね。~
Windows7 Ultimateには、BitLockerというドライブ暗号化ツールが入っています。コントロールパネルから、BitLockerドライブ暗号化を選択します。SDカードを差し込むと、BitLocker to Goというメニューが出てきます。こいつでTPMデバイスを使用しない、パスワード認証を選択すると、SDカード差し込み時にパスワードを問い合わせてくる暗号化ドライブになります。これを選択。暗号化。 Windows7 Ultimateには、BitLockerというドライブ暗号化ツールが入っています。コントロールパネルから、BitLockerドライブ暗号化を選択します。SDカードを差し込むと、BitLocker to Goというメニューが出てきます。こいつでTPMデバイスを使用しない、パスワード認証を選択すると、SDカード差し込み時にパスワードを問い合わせてくる暗号化ドライブになります。これを選択。暗号化。


Front page   Diff Backup Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 33125, today: 6, yesterday: 8
ページ内検索

ログイン

ユーザー名:


パスワード:





パスワード紛失

メインメニュー

サブメニュー
自宅鯖計画

Gentoo Linuxな生活

玄箱HGにGentoo格闘記

航空ショーへ行こう

モータースポーツな世界

奥深き写真の世界への誘い

我思う ゆえに我あり



携帯用QRコード