Top / test / Ubuntu 10.04 LTS Server / openVPNserver

Ubuntu 10.04 LTS Serverで openVPNサーバー

ここでは、ブリッジVPNとしてみよう。 その前に、ブリッジモードの場合には、vmwareなどで立ち上げる場合には、プロミスキャスモードがONになっていないと失敗する。esxiだとethの設定にあるらしいが、serverの場合には、chmodをしないとだめだった。

OSのインストール

まずは、普通にOSをインストールする。 その後、ipv4のforwardingを許可するために、カーネルパラメーターを変更する。

# diff -uN /etc/sysctl.conf.orig /etc/sysctl.conf
--- /etc/sysctl.conf.orig       2009-12-17 04:34:38.000000000 +0900
+++ /etc/sysctl.conf    2011-04-30 02:10:13.355858841 +0900
@@ -23,7 +23,7 @@
 #net.ipv4.tcp_syncookies=1

 # Uncomment the next line to enable packet forwarding for IPv4
-#net.ipv4.ip_forward=1
+net.ipv4.ip_forward=1

 # Uncomment the next line to enable packet forwarding for IPv6
 #net.ipv6.conf.all.forwarding=1

ブリッジの作成

$ sudo apt-get install bridge-utils
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  bridge-utils
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 81 個。
32.6kB のアーカイブを取得する必要があります。
この操作後に追加で 205kB のディスク容量が消費されます。 

ブリッジのためのツールをインストールし、下記のようにネットワークの設定を変更する。

$ cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto br0
iface br0 inet static
       address 192.168.0.10
       network 192.168.0.0
       netmask 255.255.255.0
       broadcast 192.168.0.255
       gateway 192.168.0.1
       bridge_ports eth0
       bridge_fd 9
       bridge_hello 2
       bridge_maxage 12
       bridge_stp off

この設定で、eth0自身にはIPはふらない。br0にIPアドレス(192.168.0.10/24)を振って、eth0と接続している。

設定後、service networking restart でリスタート後に、brctl showコマンドで確認する。

# /etc/init.d/networking restart
 * Reconfiguring network interfaces...
Waiting for br0 to get ready (MAXWAIT is 20 seconds).
ssh stop/waiting
ssh start/running, process 1425
                                                                         [ OK ]
# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000c293959c5       no              eth0

OpenVPNのインストール

# apt-get install openvpn
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  linux-headers-2.6.32-24 linux-headers-2.6.32-24-generic-pae
これらを削除するには 'apt-get autoremove' を利用してください。
以下の特別パッケージがインストールされます:
  liblzo2-2 libpkcs11-helper1 openssl-blacklist openvpn-blacklist
提案パッケージ:
  resolvconf
以下のパッケージが新たにインストールされます:
  liblzo2-2 libpkcs11-helper1 openssl-blacklist openvpn openvpn-blacklist
アップグレード: 0 個、新規インストール: 5 個、削除: 0 個、保留: 0 個。
7,937kB のアーカイブを取得する必要があります。
この操作後に追加で 16.3MB のディスク容量が消費されます。
続行しますか [Y/n]? y

rootでないユーザーで下記のを実行する。

$ sudo mkdir /etc/openvpn/easy-rsa/
$ sudo cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
$ sudo chown -R $USER /etc/openvpn/easy-rsa/

次に、/etc/openvpn/easy-rsa/vars を編集して、下記の項目を設定する。

# vi /etc/openvpn/easy-rsa/vars
export KEY_COUNTRY="JP"
export KEY_PROVINCE="Tokyo"
export KEY_CITY="Shibuya"
export KEY_ORG="Example Company"
export KEY_EMAIL="hostmater@example.com"

server証明書を作成するために、下記のコマンドを実行する。

$ cd /etc/openvpn/easy-rsa/
$ source vars
$ ./clean-all
$ ./build-dh
$ ./pkitool --initca
$ ./pkitool --server server
$ cd keys
$ openvpn --genkey --secret ta.key
$ sudo cp server.crt server.key ca.crt dh1024.pem ta.key /etc/openvpn/

次に、client証明書を作成するために、下記のコマンドを実行する。

$ cd /etc/openvpn/easy-rsa/
$ source vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys
$ ./pkitool client

そして、作成した下記のファイルをクライアントにscpでコピーする。

  • /etc/openvpn/ca.crt
  • /etc/openvpn/easy-rsa/keys/hostname.crt
  • /etc/openvpn/easy-rsa/keys/hostname.key
  • /etc/openvpn/ta.key

サーバーの設定ファイルを作成する。 まずは、ひな形からcopyする。

$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
$ sudo gzip -d /etc/openvpn/server.conf.gz

その後、/etc/openvpn/server.conf を編集する。

# diff -uN server.conf.orig server.conf
--- server.conf.orig    2011-04-30 00:56:28.410646000 +0900
+++ server.conf 2011-04-30 01:05:14.598396112 +0900
@@ -50,7 +50,10 @@
 # unless you partially or fully disable
 # the firewall for the TUN/TAP interface.
 ;dev tap
-dev tun
+;dev tun
+dev tap0
+up "/etc/openvpn/up.sh br0"
+down "/etc/openvpn/down.sh br0"

 # Windows needs the TAP-Win32 adapter name
 # from the Network Connections panel if you
@@ -93,7 +96,7 @@
 # Each client will be able to reach the server
 # on 10.8.0.1. Comment this line out if you are
 # ethernet bridging. See the man page for more info.
-server 10.8.0.0 255.255.255.0
+;server 10.8.0.0 255.255.255.0

 # Maintain a record of client <-> virtual IP address
 # associations in this file.  If OpenVPN goes down or
@@ -113,6 +116,7 @@
 # to connecting clients.  Leave this line commented
 # out unless you are ethernet bridging.
 ;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
+server-bridge 192.168.1.5 255.255.255.0 192.168.1.140 192.168.1.149

 # Configure server mode for ethernet bridging
 # using a DHCP-proxy, where clients talk
@@ -135,6 +139,7 @@
 # back to the OpenVPN server.
 ;push "route 192.168.10.0 255.255.255.0"
 ;push "route 192.168.20.0 255.255.255.0"
+push "route 192.168.1.0 255.255.255.0"

 # To assign specific IP addresses to specific
 # clients or if a connecting client has a private
@@ -194,6 +199,9 @@
 # DNS servers provided by opendns.com.
 ;push "dhcp-option DNS 208.67.222.222"
 ;push "dhcp-option DNS 208.67.220.220"
+push "dhcp-option DNS 192.168.1.242"
+push "dhcp-option DNS 192.168.1.254"
+push "dhcp-option DOMAIN local.kensuke.jp"

 # Uncomment this directive to allow different
 # clients to be able to "see" each other.
@@ -236,7 +244,7 @@
 # a copy of this key.
 # The second parameter should be '0'
 # on the server and '1' on the clients.
-;tls-auth ta.key 0 # This file is secret
+tls-auth ta.key 0 # This file is secret

 # Select a cryptographic cipher.
 # This config item must be copied to
@@ -259,8 +267,8 @@
 #
 # You can uncomment this out on
 # non-Windows systems.
-;user nobody
-;group nogroup
+user nobody
+group nogroup

 # The persist options will try to avoid
 # accessing certain resources on restart

次に、設定ファイル内で定義している up.shを作成する。

$ cat /etc/openvpn/up.sh:
#!/bin/sh

BR=$1
DEV=$2
MTU=$3
/sbin/ifconfig $DEV mtu $MTU promisc up
/usr/sbin/brctl addif $BR $DEV

そして、down.shも作成する。

$ cat /etc/openvpn/down.sh:
#!/bin/sh

BR=$1
DEV=$2

/usr/sbin/brctl delif $BR $DEV
/sbin/ifconfig $DEV down

最後に、chmodして実行できるようにする。

$ sudo chmod 755 /etc/openvpn/down.sh
$ sudo chmod 755 /etc/openvpn/up.sh

openvpnをリスタートして、/var/log/daemon.logを見てエラーが出ていなければサーバーは完了。

クライアント側

OpenVPN GUI(windows)

config directoryに、ca.crt client.crt client.key ta.keyをコピーして、同じディレクトリに client.ovpnとして下記のような設定を入れる。

client
dev tap
proto tcp
remote 121.1.132.87 1194
resolv-retry infinite
nobind
persist-key
persist-tun

ca ca.crt
cert client.crt
key client.key

ns-cert-type server
tls-auth ta.key 1
comp-lzo
verb 3

参照: http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&externalId=287
https://help.ubuntu.com/10.04/serverguide/C/openvpn.html


トップ   一覧 単語検索   最終更新のRSS
Last-modified: 2011-04-30 (土) 12:18:13 (2611d)