OpenVPNのインストールと設定2011/05/30 |
OpenVPNを導入して、仮想プライベートネットワークを構築します。外部からLANへ安全に接続することが可能です。
ここでは以下のような構成を例に構築していきます。ブリッジ方式により、クライアントにVPNサーバーと同じネットワーク内のIPアドレスをVPNサーバー
から割り当て、インターネット上を仮想プライベートネットワークを介して、通信を可能にするというものです。
(サーバー側のグローバルIPアドレスには説明の都合上、プライベートのものを使用していますが、適宜自分の環境に置き換えてください)
(1) VPNサーバー
[172.16.2.1] - グローバルIPアドレス [10.0.0.50] - eth0(元々のIPアドレス) [10.0.0.60] - br0 - ブリッジ用として新たに設定 (2) VPNクライアント(Windows) [192.168.0.244] - 元々のIPアドレス [10.0.0.??] - VPNサーバーより自動割り当て
なお、インターネットを介した通信のため、ルーターにNAT/ポートフォワードの設定をする必要があります。
VPNサーバー側の待ち受けポートとプロトコルはデフォルトのものを使用するため、UDP の 1194番です。
上記の例でいうと、インターネット側から 172.16.2.1 の 1194番宛てにきた UDP を 10.0.0.60 の 1194番へ転送する
設定をする必要があります。
|
|
[1] | OpenVPNのインストールと設定 |
[root@vpn ~]# cp /usr/share/doc/openvpn-*/sample-config-files/server.conf /etc/openvpn/
[root@vpn ~]#
vi /etc/openvpn/server.conf # 53行目:変更 dev tap0
# 78行目:以下3行変更 ca /etc/openvpn/easy-rsa/keys/ca.crt cert /etc/openvpn/easy-rsa/keys/server.crt key /etc/openvpn/easy-rsa/keys/server.key
# 87行目:変更 dh /etc/openvpn/easy-rsa/keys/dh1024.pem
# 96行目:コメントにする # server 10.8.0.0 255.255.255.0
# 103行目:コメントにする # ifconfig-pool-persist ipp.txt
# 115行目:コメント解除して変更 ( [VPNサーバのIP] [マスク] [クライアントに割り当てるIPの範囲] ) server-bridge 10.0.0.60 255.255.255.0 10.0.0.200 10.0.0.254
# 138行目:追記 ( [VPNサーバのネットワーク] [マスク] ) push "route 10.0.0.0 255.255.255.0"
# 275行目:変更 status /var/log/openvpn-status.log
# 284行目:以下2行コメント解除し変更 log /var/log/openvpn.log log-append /var/log/openvpn.log
|
[2] | CA証明書とCA秘密鍵を作成します。 |
[root@vpn ~]# cp -R /usr/share/openvpn/easy-rsa/2.0 /etc/openvpn/easy-rsa [root@vpn ~]# cd /etc/openvpn/easy-rsa [root@vpn easy-rsa]# mkdir keys
[root@vpn easy-rsa]#
vi vars # 64行目:以下5行、自身の環境に合わせて変更 export KEY_COUNTRY=" JP "export KEY_PROVINCE=" Hiroshima "export KEY_CITY=" Hiroshima "export KEY_ORG=" GTS "export KEY_EMAIL=" xxx@srv.world "
source ./vars NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys [root@vpn easy-rsa]# ./clean-all [root@vpn easy-rsa]# ./build-ca Generating a 1024 bit RSA private key .................++++++ ......++++++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [JP]: # Enter State or Province Name (full name) [Hiroshima]: # Enter Locality Name (eg, city) [Hiroshima]: # Enter Organization Name (eg, company) [GTS]: # Enter Organizational Unit Name (eg, section) []: # Enter Common Name (eg, your name or your server's hostname) [GTS CA]: vpn.srv.world # FQDN入力 Name []: server-ca # 適当に入力 Email Address [xxx@srv.world]: # Enter |
[3] |
[2]の操作により、/etc/openvpn/easy-rsa/keys/ 配下に「
ca.crt 」というファイルが作成されているので、
それをクライアントPCにFTPなりSFTPなりでもってきておきます。
|
[4] | サーバー証明書とサーバー秘密鍵を作成します。 |
[root@vpn easy-rsa]# ./build-key-server server Generating a 1024 bit RSA private key ........++++++ .......++++++ writing new private key to 'server.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. -----
Country Name (2 letter code) [JP]:
# Enter State or Province Name (full name) [Hiroshima]: # Enter Locality Name (eg, city) [Hiroshima]: # Enter Organization Name (eg, company) [GTS]: # Enter Organizational Unit Name (eg, section) []: # Enter Common Name (eg, your name or your server's hostname) [server]: vpn.srv.world # FQDN入力 Name []: server # 適当に入力 Email Address [xxx@srv.world]: # Enter
Please enter the following 'extra' attributes
1 out of 1 certificate requests certified, commit? [y/n]to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from /etc/openvpn/easy-rsa/2.0/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'JP' stateOrProvinceName :PRINTABLE:'Hiroshima' localityName :PRINTABLE:'Hiroshima' organizationName :PRINTABLE:'GTS' commonName :PRINTABLE:'vpn.srv.world' name :PRINTABLE:'server' emailAddress :IA5STRING:'xxx@srv.world' Certificate is to be certified until May 17 20:20:18 2021 GMT (3650 days) Sign the certificate? [y/n]: y
y Write out database with 1 new entries Data Base Updated |
[5] | Diffie Hellman ( DH ) パラメータを生成します。 |
[root@vpn easy-rsa]# ./build-dh Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time |
[6] | クライアント用の証明書と秘密鍵を作成します。 |
[root@vpn easy-rsa]# ./build-key-pass client
Generating a 1024 bit RSA private key
..................++++++ ..................++++++ writing new private key to 'client.key' Enter PEM pass phrase: # パスフレーズ設定 Verifying - Enter PEM pass phrase: # 確認再入力 ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [JP]: # Enter State or Province Name (full name) [Hiroshima]: # Enter Locality Name (eg, city) [Hiroshima]: # Enter Organization Name (eg, company) [GTS]: # Enter Organizational Unit Name (eg, section) []: # Enter Common Name (eg, your name or your server's hostname) [client]: vpn.srv.world # FQDN入力 Name []: client # 適当に入力 Email Address [xxx@srv.world]: # Enter
Please enter the following 'extra' attributes
1 out of 1 certificate requests certified, commit? [y/n]to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from /etc/openvpn/easy-rsa/2.0/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'JP' stateOrProvinceName :PRINTABLE:'Hiroshima' localityName :PRINTABLE:'Hiroshima' organizationName :PRINTABLE:'GTS' commonName :PRINTABLE:'vpn.srv.world' name :PRINTABLE:'client' emailAddress :IA5STRING:'xxx@srv.world' Certificate is to be certified until May 17 20:33:28 2021 GMT (3650 days) Sign the certificate? [y/n]: y y Write out database with 1 new entries Data Base Updated |
[7] |
[6]の操作により、/etc/openvpn/easy-rsa/keys/ 配下に「
client.crt 」と
「client.key 」いう二つのファイルが作成されているので、
それをクライアントPCにFTPなりSFTPなりでもってきておきます。
|
[8] | VPNサーバーのブリッジの設定と起動スクリプトの作成をし、OpenVPNを起動します。 |
[root@vpn ~]# cp /usr/share/doc/openvpn-*/sample-scripts/bridge-stop /etc/openvpn/ [root@vpn ~]# cp /usr/share/doc/openvpn-*/sample-scripts/bridge-start /etc/openvpn/ [root@vpn ~]# chmod 755 /etc/openvpn/bridge-start [root@vpn ~]# chmod 755 /etc/openvpn/bridge-stop
[root@vpn ~]#
vi /etc/openvpn/bridge-start # 17-20行目:変更 eth="eth0" # 必要があれば変更 eth_ip=" 10.0.0.60 " # ブリッジに使用するIP eth_netmask=" 255.255.255.0 " # サブネットマスク eth_broadcast=" 10.0.0.255 " # ブロードキャストアドレス
[root@vpn ~]#
vi /etc/rc.d/init.d/openvpn
start)
echo -n $"Starting openvpn: " # 126行目:追記 /etc/openvpn/bridge-start
# 205行目:追記 /etc/openvpn/bridge-stop success; echo rm -f $lock /etc/rc.d/init.d/openvpn start Starting openvpn: tun: Universal TUN/TAP device driver, 1.6 tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com> Mon May 30 22:48:15 2011 TUN/TAP device tap0 opened Mon May 30 22:48:15 2011 Persist state set to: ON Bridge firewalling registered device eth1 entered promiscuous mode device tap0 entered promiscuous mode br0: port 2(tap0) entering learning state br0: port 1(eth1) entering learning state [ OK ] [root@vpn ~]# chkconfig openvpn on
|
Sponsored Link |