弱者のネット活用術
パソコンを用いたお得なネット活用方法を中心とした情報を配信します。
05 | 2018/06 | 07
S M T W T F S
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
OpenVPNサーバーの導入 - VPN構築で外出先から自宅LANにアクセス -
WindowsでのVPNサーバー化を行っている中で、OpenVPNの活用が浮上しました。
OpenVPNはオープンソースソフトウェアで無料で利用することができます。
無料なので大した技術ではないのではないかといったイメージがありますが、
オープンソースの例としてandroid、Firefox、QGISなど非常に優秀なソフトがあります。
世界中の技術者が寄り集まって開発が進められているので、1企業が手がけるソフトよりある面優秀なわけです。
ただ、シェアソフトとは異なり商品ではないため、マニュアル等のサポート面で取り扱いにくい面があります。

OpenVPNはSSLを使用するので、PPTPやL2TP/IPsecよりセキュアなVPNを構築することができます。
PPTPやL2TP/IPsecはスノーデンの警告にあるようにNASに解読されております。
SSLを用いることでこれらよりもさらに強固なセキュリティを保持することができます。

おもしろそうだったので、早速、取りかかりました。

OpenVPNサーバーを自宅サーバーに立てます。
こちらよりダウンロードします。
WindowsXPにインストールしたい場合はopenvpn-install-2.3で利用可能です。
過去のインストーラーはこちらに落ちております。



●OpenVPNのインストール
我が家の自宅サーバーはWindowsなのでWindows用インストーラーからインストールします。
openvpninst1.png
EasyRAS 2は現在のバージョンではデフォルトでチェックが付いておりません。
難しいので使いません。
そのまま進んでいきます。

この画面がポップアップされたらインストールします。
openvpninst2.jpg
TAP-WindowsProvider V9はVPNネットワークアダプタの構成ソフトです。
OpenVPNでは複数のバーチャルネットワークアダプタを作成して、同時に複数のVPNに接続することができます。
サーバー側でも複数のサーバーを同時に立てることができます。

あとは画面に従ってインストールを完了させます。



●OpenVPNサーバーの設定ファイル解説
OpenVPNはOpenVPN GUIで接続できますが、設定ファイルはテキストデータで作成します。
デフォルトではOpenVPNの「config」フォルダに設定ファイルを配置することでGUIソフトで接続を実行できます。
設定はコンピューターとユーザーごとの両方に行うことができます。
コンピューター全体に設定する場合は、
C:\Program Files\OpenVPN\config
に設定ファイルを配置します。
ユーザーごとに設定する場合は、
C:\Users\******\OpenVPN\config  (Win10の場合)
に設定ファイルを配置します。
******は各ユーザー名を示します。

OpenVPNの設定ファイルはサンプルファイルを参考に作成すると簡単です。
設定ファイルのサンプルは
C:\Program Files\OpenVPN\sample-config
にあります。
OpenVPNサーバーの設定ファイルは「server.ovpn」を参考に作成します。
別途、SSL通信に必要なデジタル証明書を作成する必要があります。
デジタル証明書は後述します。
OpenVPNサーバーの設定内容について紹介します。
サンプルには英語でコマンドの解説が加えられております。
分かる範囲内で紹介します。
「#」と「;」はコメント行やコメントブロックを意味します。
以下にサンプルにあるserver.ovpnの内容を示します。
;local a.b.c.d・・・OpenVPNのローカルIPアドレス 特に指定する必要なし。

port 1194・・・ポート番号 任意に指定することができる。

proto udp・・・プロトコルの指定 UDPポートを使用する場合 TCPポートを使用する場合は「proto tcp」とする。
通常UDPの方がスループットがでるとのことです。
クライアント側でプロキシを通過させる必要がある場合などはTCPを選択します。

dev tun・・・VPNデバイスの設定をTUNに設定する。 TAPにしたい場合は「dev tap」とする。
TUNとはtunnelを意味し、ネットワーク層をシミュレートしますのでルーティング方式になります。(レイヤー3)
TAPとはTerminal Access Pointを意味し、データリンク層をシミュレートしますのでブリッジ方式になります。(レイヤー2)
OpenVPNはPPP通信を母体としたPPTPやL2TPとは異なり、TCPやUDP通信を母体としております。
TCPやUDP通信のTAPについてはandroidやiOSでは認められておりません。
TUNとTAPとの主な違いはVPNでつくられる仮想ネットワークがサーバー側ネットワークと同一か否かになります。

;dev-node MyTap・・・VPNネットワーク名を指定して読み込む。
VPNネットワークカードを複数使用する場合は各ネットワークカードに名前を付けて、各設定にて名前を呼び出します。
サンプルでは「MyTap」と言う名前のVPNネットワークカードを指します。
Windowsではネットワーク接続にある
「TAP-Windows Adapter V9」というデバイス名のネットワークアダプタの名前を変更して使い分けます。

ca ca.crt・・・デジタル証明書のcaデータを指定します。
cert server.crt・・・サーバー用公開鍵のデータを指定します。
key server.key …サーバー用秘密鍵のデータを指定します。
dh dh2048.pem…DHグループに関するデータを指定します。
これらのデータはデジタル証明書関係データを作成することで生成されます。
配置する場所はOpenVPNのconfigフォルダ以下になります。(Windowsの場合)
configフォルダ以下のフォルダに配置する場合は「****/ca.crt」のように設定します。

;topology subnet・・・ネットワークトポロジーの設定で、TUNモード時に設定できます。
デフォルトではnet30となっております。(Windows等をサポート)
その他にsubnetやp2pが設定できる。

server 10.8.0.0 255.255.255.0・・・TUNモード時の仮想ネットワークアドレスの設定です。
この設定ではVPNサーバーの仮想IPアドレスが10.8.0.2となります。
クライアント側の仮想IPアドレスは10.8.0.6以降に割り振られます。
他のネットワークIPアドレスが重複しないように注意します。

ifconfig-pool-persist ipp.txt・・・OpenVPN再起動時に再接続するクライアントが以前に割り当てられた仮想IPアドレスを使用する。

;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100・・・TAPモード時に設定するIPアドレスです。
サーバー側のネットワークアドレスを指定し、環境に応じて修正して使います。
10.8.0.4はサーバーのIPアドレスを指します。
255.255.255.0はサブネットマスクを意味し、サーバー側ネットワークの設定に合わせます。
10.8.0.50はVPNクライアントに割り当てる開始IPアドレスで、サーバー側ネットワークに合わせます。
10.8.0.100はVPNクライアントに割り当てる終了IPアドレスで、サーバー側ネットワークに合わせます。
ここで、サーバー側ネットワークのDHCPと重複しないようにクライアントIPアドレスを割り当てることに注意が必要です。

;server-bridge・・・TAPモード時にDHCPでクライアントIPアドレスを割り当てる場合に設定します。
上記のIPアドレスを指定した場合には設定しません。

;push "route 192.168.10.0 255.255.255.0"・・・サーバー側のネットワーク情報を通知する設定です。
TUNモードの時に仮想ネットワークとサーバー側ネットワークを接続する場合に設定します。
VPNサーバーがルーティング機能を持っていないと機能しないと思います。
Windowsでは難しいです。

;client-config-dir ccd・・・クライアント側のネットワーク情報を配置するフォルダ名の指定です。
ここでは「config」フォルダの下の「ccd」フォルダ内にクライアント側ネットワーク情報が格納されているという意味になります。
;route 192.168.40.128 255.255.255.248・・・クライアント側のネットワーク情報です。
192.168.40.128がクライアント側のセグメントで255.255.255.248がサブネットマスクになります。
この設定と合わせて、ccdフォルダ内にクライアント用証明書名と同じファイル名(拡張子なし)で
「iroute 192.168.40.128 255.255.255.248」
と記載したファイルを配置します。

クライアントに割り当てるIPアドレスを固定したい場合は次のような設定を行います。
;client-config-dir ccd・・・クライアント側のネットワーク情報を配置するフォルダ名の指定です。
;route 10.9.0.0 255.255.255.252・・・クライアント側のネットワーク情報です。
この設定と合わせて、ccdフォルダ内にクライアント用証明書名と同じファイル名(拡張子なし)で
「iroute 10.9.0.1 10.9.0.2」
と記載したファイルを配置します。
これで設定したクライアント証明書で接続された場合に10.9.0.1が割り当てられるようです。

;learn-address ./script・・・クライアントグループを設けてグループポリシーを設定できるようです。
難しくて分かりません。

;push "redirect-gateway def1 bypass-dhcp"・・・VPNクライアントのデフォルトゲートウェイがVPNサーバーとなります。
すべてのIPトラフィックがVPNサーバー経由となるようです。

;push "dhcp-option DNS 208.67.222.222"・・・DNSサーバーアドレスを設定します。
;push "dhcp-option DNS 208.67.220.220"・・・代替DNSサーバーを設定する場合に有効にします。
DNSのIPアドレスはVPNサーバーが使用しているDNSサーバーアドレスを設定します。
DNSのIPアドレスはグローバルIPアドレスである必要があると思います。

;client-to-client・・・クライアント同士の接続を許可する設定です。
TAP接続の場合は同一サーバーに接続したクライアントは同一セグメントとなるため接続できます。
ただし、クライアントのファイアウォールの設定によります。

;duplicate-cn・・・クライアントごとに証明書を発行しない場合に設定します。
クライアントごとの証明書を発行しないとセキュリティレベルが落ちます。

keepalive 10 120・・・キープアライブの設定で、ここでは10秒ごとにpingし、120秒応答がなければダウンと判断します。

tls-auth ta.key 0・・・SSL/TLSによるセキュリティを有効にします。
ta.keyがSSL/TLSでconfigフォルダ以下に配置します。
サーバーに設定した場合はクライアントにも同様のta.keyが必要になります。
ta.keyはユーティリティとしてインストールされた「Generate a static OpenVPN key」を実行することで生成できます。
configフォルダにkey.txtというファイルが生成されるので、ファイル名をta.keyと変更して利用します。
このファイルはクライアントにもコピーする必要があります。

cipher AES-256-CBC…暗号化の種類を設定します。
CA認証局により決まります。

;compress lz4-v2…圧縮する場合に有効にする。(Ver2.4以上にのみ有効)
;push "compress lz4-v2"…圧縮形式を通知する。
この圧縮を有効にした場合はcpmp-lzoを無効にしておく。

;comp-lzo・・・圧縮する場合に有効にする。(旧バージョンとの互換あり)
この圧縮を有効にした場合はcompress lz4-v2を無効にする。

;max-clients 100・・・同時接続クライアント数の設定

;user nobody・・・ユーザーの権限を減らす設定(Windows以外のみ設定可能)
;group nobody・・・グループのの権限を減らす設定(Windows以外のみ設定可能)

persist-key
persist-tun
これらは特定のリソースへのアクセスを回避する設定のようで、よく分かりませんが有効にしてます。

status openvpn-status.log・・・ステータス表示を短くする。毎分切り捨てる

ログファイルの出力設定
;log openvpn.log・・・起動時に過去のログデータを削除する。(デフォルト設定)
;log-append openvpn.log・・・過去のログデータを追記する。
openvpn.logはログ出力ファイルの指定で、c:\users\****\OpenVPN\logに保存されます。
OpenVPNをサービスできどうしている場合はC:\Program Files\OpenVPN\logに保存されます。

verb 3・・・ログファイルの出力レベルの設定
番号の意味
0:致命的なエラーのみ
4:一般的な出力
5or6:接続の問題を解決するのに役立つ
9:非常に詳細な出力
とのことで3は一般的なものより少し簡単なログになります。

;mute 20・・・ログの出力数を指定する。例では20個のログを出力する。

explicit-exit-notify 1・・・サーバーが再起動するとクライアントに通知する設定
注)この設定はUDPポートのみ可能で、TCPポート選択時に設定した場合はサーバーが接続できない。

長い解説になってしまいましたが、要は以下の3工程を行えばOpenVPNサーバーを設定できます。



●SSL/TLS鍵ファイルの生成
セキュリティレベルを上げるためにSSL/TLS鍵を作成します。
SSL/TLSを無効にする場合は不要です。
OpenVPNインストール時に作成された「Generate a static OpenVPN key」を管理者権限で実行するだけです。
実行すると
C:\Program Files\OpenVPN\config に
key.txt が生成されます。
この「key.txt」を「ta.key」に変更します。
SSL/TLSを有効にした場合はクライアントにもta.keyを配布する必要があります。



●証明書認証局の設定
SSL通信に必要なデジタル証明書を作成する必要があります。
EasyRSAはコマンドラインで作業する必要がありますが、vpnux PKI Managerを用いることで作業が容易になります。
ここでvpnux PKI Managerを入手します。
「CAの新規作成」で認証局の場所を設定します。
場所は管理しやすい場所でよいが、OpenVPNのconfig下に配置するとコピーの手間が省ける。
「サーバー用 秘密鍵/証明書」でサーバー用の証明書を発行します。
「クライアント用 秘密鍵/証明書」でサーバー用の証明書を発行します。
生成された各証明書を配布する必要があります。

サーバーに必要な鍵ファイル
・ca.crt
・ca.key
・dh{n}.pem
・server.crt・・・任意に作成した共通名
・server.key・・・任意に作成した共通名
・ta.key・・・SSL/TLSを有効とする場合
認証局をOpenVPNのconfig下に作成した場合はコピー不要です。

クライアントに必要な鍵ファイル
・ca.crt
・client1.crt
・client1.key
・ta.key・・・SSL/TLSを有効とする場合



●サーバーの設定ファイル例
UDPポートでブリッジ接続(tap)した場合の設定例です。
ルーティング接続(tun)の方が推奨されておりますが、Windowsの場合はルーティング設定が面倒です。
AndroidやiOSとの接続が不要な場合はブリッジ接続(tap)が簡単です。
サーバー側LANは192.168.0.0/24で、VPNサーバーのアドレスが192.168.0.254としてます。
使用ポートは任意に設定可能ですが、ここでは1194とし、ルーターからサーバーへのポート転送設定は済んでいるものとします。
ブリッジ接続の場合はWindowsでネットワークアダプタをブリッジしておく必要があります。
[コントロールパネル]→[ネットワークとインターネット]→[ネットワーク接続]で
openvpnbridge1.jpg
ローカルネットワークアダプタと仮想ネットワークアダプタ(TAP-Windows AdapterV9)を選択して、
右クリックでブリッジ接続(G)をクリックします。

ポート転送が必要になるので、生成されたブリッジ接続のIPアドレスを設定します。
openvpnbridge2.jpg
Windows7で、再起動時にブリッジ接続アダプタのデフォルトゲートウェイが消えてしまう現象が発生したものがありました。
再起動後にサーバーへアクセスできなくなった場合はブリッジ接続アダプタのデフォルトゲートウェイを確認してみてください。
ブリッジ接続アダプタのデフォルトゲートウェイが消えてる場合はレジストリを確認します。
openvpnbridge3.jpg
ネットワークアダプタの設定は
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\
にアダプタの数分あります。
{  }内に複雑な文字がありますが、このうちのどれかがブリッジ接続アダプタの設定になります。
IPアドレスを固定設定した場合はDefaultGatewayが生成されるので、設定したデフォルトゲートウェイが空白のものが
ブリッジ接続アダプタの設定になると判断できます。
その他のIP情報からもブリッジ接続アダプタであることは推察できます。
DefaultGatewayをダブルクリックして、デフォルトゲートウェイを入力します。
サーバーとなるWindowsで行う設定は以上になります。

OpenVPNサーバー設定例は以下のコマンドになります。
port 1194
proto udp
dev tap
ca CA/ca.crt
cert CA/server_1.crt
key CA/server_1.key # This file should be kept secret
dh CA/dh2048.pem
ifconfig-pool-persist ipp.txt
server-bridge 192.168.0.254 255.255.255.0 192.168.0.230 192.168.0.235
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
explicit-exit-notify 1




  ↓↓↓↓参考記事には↓↓下記↓↓に1票よろしく!↓↓↓↓
    blogramのブログランキング    FC2ブログランキング
スポンサーサイト

テーマ:サーバ - ジャンル:コンピュータ

eo光電話を外出先で利用 - eo多機能ルーター下にVPNサーバーを立てる②Win2008 -
クライアントOSであるWin7をVPNサーバーとすることで、eo多機能ルーターと同じネットワークに仮想ネットワークアドレスを
割り当てることができましたが、Windows7では1台ずつしか接続できないことが分かりました。
同時に複数台接続するためにはサーバーOSが必要とのことでしたので、Windows2008をVPNサーバーにしました。

Windows Server2008ではリモートアクセスサーバーをインストールして行います。
リモートアクセスサーバーであればややこしい設定は不要です。
インストール手順を紹介します。

サーバーマネージャーで役割を追加します。
役割画面で役割の追加をクリック
win2008vpn01.jpg
「ネットワークポリシーとアクセスサービス」にチェックを入れて[次へ(N)>]をクリック

「ルーティングとリモートアクセスサービス」にチェックを入れて[次へ(N)>]をクリック
win2008vpn02.jpg
順次進んでいきインストールを完了させる。

VPNの設定を行います。
win2008vpn03.jpg
ネットワークポリシーとアクセスサービスの下にあるルーティングとリモートアクセスを右クリックして
「ルーティングとリモートアクセスの構成と有効化(C)」をクリックする。

win2008vpn04.jpg
「カスタム構成(C)」を選択して[次へ(N)>]をクリック

win2008vpn05.jpg
「VPNアクセス(V)」にチェックを入れて[次へ(N)>]をクリック

ルーティングとリモートアクセスのプロパティ設定を行う。
win2008vpn06.jpg win2008vpn07.jpg
[全般タブ]はIPv4のみチェックを入れる。
[セキュリティ]タブで「カスタムIPsecポリシーをL2TP接続に許可する(L)」にチェックを入れて任意の事前共通キーを設定。
カスタムIPsecポリシーをL2TP接続に許可することで、L2TP/IPsecを有効にする。

仮想ネットワークに割り当てるIPアドレスを設定する。
win2008vpn08.jpg win2008vpn09.jpg
[IPv4]タブで仮想ネットワークに割り当てるIPアドレスを設定します。
「静的アドレスプールを使う(S)」を選択して[追加(D)]をクリックすることでIPアドレスの範囲を設定できる。
ここで、eo多機能ルーターと同じネットワークのIPアドレスにしておく。
[IPv6]タブは念のためチェックをすべて外す。

不要なデバイスをとめておく。
ネットワークポリシーとアクセスサービスの下にあるルーティングとリモートアクセスの下にあるポートを右クリックして
ポートのプロパティを開く。
win2008vpn10.jpg win2008vpn11.jpg
             変更前                           変更後
L2TPのみ有効にしておく。
PPTPでも接続したければ両方有効にすることで併用できます。
ここで、ゲートウェイからVPNに必要なポートを転送する必要があります。
L2TP/IPsecとPPTPに必要なポートは次のとおり。
●L2TP/IPsec
 プロトコル:ESP プロトコル番号50
       UDPポート500
       UDPポート4500
●PPTP
 プロトコル:GRE プロトコル番号47
       TCPポート1723
必要な物のみeo多機能ルーターでサーバーへ転送させます。

設定が完了したらルーティングとリモートアクセスを再起動します。
win2008vpn12.jpg
「ルーティングとリモートアクセス」を右クリックして、[すべてのタスク(K)]→[再起動]をクリック

VPNに接続させるユーザーの設定を行います。
接続許可させたいユーザーのプロパティを開きます。
VPN接続用のユーザーが必要な場合はユーザーを新規作成しておきます。
ユーザーのプロパティで許可できます。
win2008vpn13.jpg
[ダイヤルイン]タブにあるリモートアクセス許可で「アクセスを許可(W)」を選択します。

設定完了したらスマホでVPN接続できるか確認します。

Windows Serverであれば同時に複数接続できました。
128台まで同時に接続できるようです。
同時接続時のスループットについてはサーバーの力量によるようです。


  ↓↓↓↓参考記事には↓↓下記↓↓に1票よろしく!↓↓↓↓
    blogramのブログランキング    FC2ブログランキング

テーマ:Windows - ジャンル:コンピュータ




RSSフィード

最近の記事+コメント

広告スペース

いろいろアフィリエイトしてます。

入金に至ったASPはこちら



電報サービス VERY CARD

bitFlyer ビットコインを始めるなら安心・安全な取引所で







ベルメゾンネット






NTTフレッツ光







プロフィール

kすけ

Author:kすけ
2児の父であり貧乏サラリーマンでもあります。
パソコンやネットワークをあれこれ触っている内にインターネットの活用方法を模索するようになりました。
セコネタからグチや日常生活まで的を絞らず運営するブログです。

ブロとも申請フォーム




この人とブロともになる

ブログ内検索



楽天で探す
楽天市場

カテゴリー

ブロとも一覧

ちょっと寄り道しませんか?
ぶろぐいろいろ
あみパパ日記2
薬剤師の不養生
♪お気楽ままmikaのしゃべり放題♪
Suomen
不思議な不正義
だから俺は原付に乗る。

最近のトラックバック

リンク






↓↓おこづかい通信↓↓購読者募集中
メルマガ登録・解除
おこづかい通信
 
 powered by メルマガスタンドmelma! トップページへ
この人と友達になる

このブログをリンクに追加する

月別アーカイブ

全ての記事を表示する

全ての記事を表示する