Version 9 (modified by mitty, 14 years ago) (diff) |
---|
HOWTO
- OpenVPN 2 HOWTO 日本語訳 - OpenVPN Japanese Information (wiki)
- OpenVPN 2 Ethernet Bridging 日本語訳 - OpenVPN Japanese Information (wiki)
- Network/VPN/OpenVPNでSSL-VPN環境を構築する - きのさいと
- CentOS5.3にOpenVPNを導入(ブリッジモード)
- VMware ESXi上でopenvpnをブリッジモードで起動させる場合、プロミスキャスモードを許可してあげる必要があります。
- Kung Noi:OpenVPNでハブ直結
- OpenVPNサーバ作成 - 休日奮闘記
- bridge-startスクリプトを使わず、/etc/network/interfaces内でpre-up/post-downによってtap,brを制御
- OpenVPN – Bridging two net « Linux Blog
I found that the originial bridge-start script did not include the default gateway. Since I only use a single network card on my server, this is a necessary addition.
- NATの内側にOpenVPNサーバを作る場合、オリジナルのイーサネットブリッジ作成時スクリプトではデフォルトルートが設定されないため、そのままではWANに繋がらなくなることに注意
dhcpd with openvpn bridge
- server.confにおいてserver-bridgeを使わずに、server側サブネット上に存在する既存のdhcpdを用いてIP address assignする
- (SOLVED) OpenVPN+dhcpd+ldap
- (Openvpn-users) OpenVPN to filter out dhcp traffic?
- => purebridge
- openvpnの内部dhcpdを用いない場合の具体手順
設定ファイルについて
- /etc/openvpn/*.conf がそれぞれ読み込まれる
- /etc/init.d/openvpn
(snip) CONFIG_DIR=/etc/openvpn (snip) case "$1" in start) (snip) for CONFIG in `cd $CONFIG_DIR; ls *.conf 2> /dev/null`; do NAME=${CONFIG%%.conf} start_vpn done
- /etc/init.d/openvpn
router mode
- 基本的に#HOWTOの通りでよい
server side settings
- sudo aptitude install -R openvpn
- cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz .
- vim server.conf
- 適宜編集
各種鍵・証明書
#HOWTOで「自分でCA(認証局)を作り,OpenVPNサーバとクライアントのために証明書と鍵を生成する」となっているセクションは、代わりにssl?に従って作成するrootCAを新しく作るのは管理が面倒になるためApache向けのSSL certを作るのとやり方は変わらない
rootCAのCA証明書とDHパラメータが、生成されないので、二つだけ個別に作るopenssl x509 -in demoCA/cacert.pem -out ca.crtopenssl dhparam -out dh1024.pem 1024
- openssl.cnfに対する編集([3#file2])のため、Apache用SSL証明書と同様に作成した鍵・証明書を用いると、サーバ側で「VERIFY ERROR: depth=0, error=unsupported certificate purpose: 」というエラーになり接続が維持されない。
マスタCA証明書と鍵を生成する
- http://freescitech.net/2/wiki/?OpenVPN%202%20HOWTO%20%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%A8%B3#abd6e0dc に従って作成する
- sudo cp -av /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/easy-rsa
- sudo vim /etc/openvpn/easy-rsa/vars
- sudo su -
- /etc/openvpn/easy-rsa# . ./vars
- /etc/openvpn/easy-rsa# ./clean-all
- /etc/openvpn/easy-rsa# ./build-ca
Country Name (2 letter code) [JP]: State or Province Name (full name) [Ibaraki]: Locality Name (eg, city) [Tsukuba]: Organization Name (eg, company) [mitty.jp]:OpenVPN CA Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) [mitty.jp CA]:OpenVPN CA Email Address [root (X) mitty.jp]:
- /etc/openvpn/easy-rsa# ./build-key-server server
Country Name (2 letter code) [JP]: State or Province Name (full name) [Ibaraki]: Locality Name (eg, city) [Tsukuba]: Organization Name (eg, company) [mitty.jp]: Organizational Unit Name (eg, section) []:OpenVPN Server Common Name (eg, your name or your server's hostname) [server]:server.mitty.jp Email Address [root (X) mitty.jp]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'JP' stateOrProvinceName :PRINTABLE:'Ibaraki' localityName :PRINTABLE:'Tsukuba' organizationName :PRINTABLE:'mitty.jp' organizationalUnitName:PRINTABLE:'OpenVPN Server' commonName :PRINTABLE:'server.mitty.jp' emailAddress :IA5STRING:'root (X) mitty.jp' Certificate is to be certified until Nov 13 13:43:33 2019 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated
- /etc/openvpn/easy-rsa# ./build-key client
Country Name (2 letter code) [JP]: State or Province Name (full name) [Ibaraki]: Locality Name (eg, city) [Tsukuba]: Organization Name (eg, company) [mitty.jp]: Organizational Unit Name (eg, section) []:OpenVPN Client Common Name (eg, your name or your server's hostname) [client]:client.mitty.jp Email Address [root (X) mitty.jp]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'JP' stateOrProvinceName :PRINTABLE:'Ibaraki' localityName :PRINTABLE:'Tsukuba' organizationName :PRINTABLE:'mitty.jp' organizationalUnitName:PRINTABLE:'OpenVPN Client' commonName :PRINTABLE:'client.mitty.jp' emailAddress :IA5STRING:'root (X) mitty.jp' Certificate is to be certified until Nov 13 13:44:25 2019 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated
- /etc/openvpn/easy-rsa# ./build-dh
- sudo ls -l /etc/openvpn/easy-rsa/keys/
-rw-r--r-- 1 root root 3928 2009-11-15 22:43 01.pem -rw-r--r-- 1 root root 3810 2009-11-15 22:44 02.pem -rw-r--r-- 1 root root 1208 2009-11-15 22:42 ca.crt -rw------- 1 root root 887 2009-11-15 22:42 ca.key -rw-r--r-- 1 root root 3810 2009-11-15 22:44 client.crt -rw-r--r-- 1 root root 712 2009-11-15 22:44 client.csr -rw------- 1 root root 887 2009-11-15 22:44 client.key -rw-r--r-- 1 root root 245 2009-11-15 22:45 dh1024.pem -rw-r--r-- 1 root root 260 2009-11-15 22:44 index.txt -rw-r--r-- 1 root root 20 2009-11-15 22:44 index.txt.attr -rw-r--r-- 1 root root 21 2009-11-15 22:43 index.txt.attr.old -rw-r--r-- 1 root root 130 2009-11-15 22:43 index.txt.old -rw-r--r-- 1 root root 3 2009-11-15 22:44 serial -rw-r--r-- 1 root root 3 2009-11-15 22:43 serial.old -rw-r--r-- 1 root root 3928 2009-11-15 22:43 server.crt -rw-r--r-- 1 root root 712 2009-11-15 22:43 server.csr -rw------- 1 root root 887 2009-11-15 22:43 server.key
- sudo mv ca.crt dh1024.pem server.* /etc/openvpn/
ca.crt dh1024.pem server.conf server.crt server.key
デフォルトで出来るTUN
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:336 (336.0 B) TX bytes:504 (504.0 B)
client side
- serverと同様に各種鍵を作る。ca.crtはserverと同じ物を使用。
- cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf .
- vim client.conf
- 適宜編集
- sudo mv * /etc/openvpn/
ca.crt client.conf client.crt client.key
デフォルトで出来るTUN
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.8.0.6 P-t-P:10.8.0.5 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
bridge mode
- server側は物理NICとTAPデバイスのブリッジを造る必要がある。
- sudo aptitude install -R bridge-utils
- クライアント側はconfを編集してTUNをTAPに変更するのみ
bridge script
- bridge-startはUbuntuではパッケージに含まれていないようなので、http://openvpn.net/index.php/open-source/downloads.html からDLすること。
- sudo cp bridge-start /etc/init.d/
- sudo update-rc.d bridge-start start 99 S .
Adding system startup for /etc/init.d/bridge-start ... /etc/rcS.d/S99bridge-start -> ../init.d/bridge-start
- OS起動時に、networking -> bridge-start -> ufw の順でサービスが起動する
customize ufw
- 以下の追加を忘れると、サーバ<->クライアント間でpingしか通らないので注意
-A ufw-before-input -i tap0 -j ACCEPT -A ufw-before-input -i br0 -j ACCEPT -A ufw-before-forward -i br0 -j ACCEPT
push route
- サーバ側の設定で以下のような設定があるが、単一サブネットに対してブリッジする際はこれは不要
# Push routes to the client to allow it # to reach other private subnets behind # the server. Remember that these # private subnets will also need # to know to route the OpenVPN client # address pool (10.8.0.0/255.255.255.0) # back to the OpenVPN server. ;push "route 192.168.10.0 255.255.255.0"
- もしpushしてしまうと、クライアント側のルーティングテーブルに「192.168.10.0/24 via 192.168.10.254 dev tap0」の様なエントリが作成されてしまい、クライアント側で「BridgedLAN => WAN」のNATを構成してもWANからのreplyが正常にルートされなくなる。
misc
error on dhcp3-server
eth0とtap0をブリッジした場合、eth0がプロミスキャスモードでIPが振られなくなるため(ブリッジデバイスのbr0にIPが来る)、以下のようなエラーが出てdhcpdが起動しなくなる。
No subnet declaration for eth0 (0.0.0.0).
- /etc/default/dhcp3-server を以下のように修正して回避する
INTERFACES="br0"