出先から自宅にアクセスできるようにするんです。
最初PPTPDをセットアップしたけど、出先のネットワークがGREポートを通してくれないから、OpenVPNもセットアップした。
ここでは、OpenVPNのセットアップをまとめておくです。
UbuntuのVPNサーバにWindowsクライアントから接続できるように設定するよ。
- OpenVPNとbridge-utilsのインストール
bridge-utilsは、一つのEtherポート仮想化して(br0)、VPN(tap0)とその他(eth0ポート)から使えるようにするもの(らしい)。
apt-get install openvpn bridge-utils
※sudoが面倒なので、私はrootで実行しちゃいますw- 鍵ファイルの作成
鍵ファイルを作るスクリプトがインストールされているので、そこに移動。
cd /usr/share/doc/openvpn/examples/easy-rsa/2.0
ここに vars というファイルがあるので、その一番下の方を編集して、鍵を作るときの情報を入力。
export KEY_COUNTRY="JP"
export KEY_PROVINCE="Kanagawa"
export KEY_CITY="Yokohama"
export KEY_ORG="recitativo-fant.asia"
export KEY_EMAIL="メールアドレス"
export KEY_PROVINCE="Kanagawa"
export KEY_CITY="Yokohama"
export KEY_ORG="recitativo-fant.asia"
export KEY_EMAIL="メールアドレス"
あとは、下記手順でCA、サーバ鍵、クライアント鍵を作っていく。
source vars
./clean-all
./build-dh
./build-ca
# サーバ鍵を作成 : 鍵の名前は "server"
./build-key-server server
# クライアント鍵をパスワード付きで作成 : 鍵の名前は "client01"
./build-key-pass client01
ここで作成するクライアント鍵1個に対して、IPアドレスが1個割り振られる模様。./clean-all
./build-dh
./build-ca
# サーバ鍵を作成 : 鍵の名前は "server"
./build-key-server server
# クライアント鍵をパスワード付きで作成 : 鍵の名前は "client01"
./build-key-pass client01
なので、同時接続するクライアントの数だけ鍵ファイルを作成すること。
すると、keysというディレクトリの中に鍵ファイルが作られるので、このうち必要なものをコピーする。
cd keys
mkdir /etc/openvpn/keys
cp ca.crt /etc/openvpn/keys
cp dh1024.pem /etc/openvpn/keys
cp server.crt /etc/openvpn/keys
cp server.csr /etc/openvpn/keys
cp server.key /etc/openvpn/keys
mkdir /etc/openvpn/keys
cp ca.crt /etc/openvpn/keys
cp dh1024.pem /etc/openvpn/keys
cp server.crt /etc/openvpn/keys
cp server.csr /etc/openvpn/keys
cp server.key /etc/openvpn/keys
クライアント側には下記ファイルをコピーする。
ca.crt
client01.crt
client01.key
client01.crt
client01.key
- サーバの設定
★途中で再起動すると、ネットワークが全部とまったりするorz。
まずは、OpenVPNの設定。
/etc/openvpn/server.conf を作成します。
内容は下記の通り。
proto tcp
port 1194
# デバイスのインターフェースは tap0 を使う
dev tap0
# 鍵ファイルの設定
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
# サーバブリッジの設定
# 192.168.1.10 はサーバのIPアドレス
# ネットマスクは 255.255.255.0
# 192.168.1.210 から 192.168.1.219 の範囲でIPアドレスを割り振る
server-bridge 192.168.1.10 255.255.255.0 192.168.1.210 192.168.1.219
# 経路の設定
# 192.168.1.0/24 をクライアントに追加する。
route 192.168.1.0 255.255.255.0
# TLS-Server にする
tls-server
# 圧縮を有効にする
comp-lzo
/usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz に設定ファイルのサンプルがあるので、これを解凍して /etc/openvpn/ の下にコピー、編集しても良し。port 1194
# デバイスのインターフェースは tap0 を使う
dev tap0
# 鍵ファイルの設定
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
# サーバブリッジの設定
# 192.168.1.10 はサーバのIPアドレス
# ネットマスクは 255.255.255.0
# 192.168.1.210 から 192.168.1.219 の範囲でIPアドレスを割り振る
server-bridge 192.168.1.10 255.255.255.0 192.168.1.210 192.168.1.219
# 経路の設定
# 192.168.1.0/24 をクライアントに追加する。
route 192.168.1.0 255.255.255.0
# TLS-Server にする
tls-server
# 圧縮を有効にする
comp-lzo
#UDPでも良いが、出先のネットワークがUDPを通してくれないのでここではTCPを使う。
次に、ブリッジの起動、停止スクリプトを設定する。
/usr/share/doc/openvpn/examples/sample-scripts に bridge-start、bridge-stopがあるので、/etc/openvpn/ の下にコピーして、bridge-startの下記を編集。
(~省略~)
eth="eth0"
eth_ip="192.168.1.10" ←br0に設定するIPアドレス
eth_netmask="255.255.255.0" ←br0に設定するネットワークアドレス
eth_broadcast="192.168.1.255" ←br0に設定するブロードキャストアドレス
(~省略~)
eth="eth0"
eth_ip="192.168.1.10" ←br0に設定するIPアドレス
eth_netmask="255.255.255.0" ←br0に設定するネットワークアドレス
eth_broadcast="192.168.1.255" ←br0に設定するブロードキャストアドレス
(~省略~)
VPNの起動、停止には下記の順番になる必要がある。
起動手順
ネットワーク機能 → ブリッジ機能 → OpenVPNサーバ
停止手順
OpenVPNサーバ → ブリッジ機能 → ネットワーク機能
なので、bridge-startとbridge-stopを/etc/init.d/openvpn に適当に組み込んじゃうwネットワーク機能 → ブリッジ機能 → OpenVPNサーバ
停止手順
OpenVPNサーバ → ブリッジ機能 → ネットワーク機能
さらに、Ethernet関連ファイルを編集する。
まずは、/etc/network/interfaces
(~省略~)
#eth0からbr0に変更
#auto eth0
#iface eth0 inet static
auto br0
iface br0 inet static
(~省略~)
#ファイルの最後に追加
bridge_ports eth0 tap0 iface eth0 inet manual
iface tap0 inet manual
#eth0からbr0に変更
#auto eth0
#iface eth0 inet static
auto br0
iface br0 inet static
(~省略~)
#ファイルの最後に追加
bridge_ports eth0 tap0 iface eth0 inet manual
iface tap0 inet manual
次に、/etc/sysctl.conf
net.ipv4.ip_forward = 1
ここまでやって、ようやくサーバを再起動。
マシンごと再起動しないと、/etc/sysctl.confが設定されないっぽい。
- クライアントの設定
http://openvpn.se/download.htmlからインストールパッケージをダウンロードしてインストールする。
インストールすると、Windowsの「ネットワーク接続」に「ローカル接続 n」が追加される。
デバイス名が「TAP-Win32 Adapter」のやつである。
これの名前を右クリックで「tap0」に変更する。
C:\Program Files\OpenVPN\config\client.ovpn を編集する。
client
dev tap
dev-node tap0
proto tcp
remote recitativo-fant.asia 1194
resolv-retry infinite
nobind
ca "D:\\keys\\ca.crt"
cert "D:\\keys\\client01.crt"
key "D:\\keys\\client01.key"
comp-lzo
verb 3
鍵ファイルのパス指定では、エンサイン(\)を2個ずつ書く。dev tap
dev-node tap0
proto tcp
remote recitativo-fant.asia 1194
resolv-retry infinite
nobind
ca "D:\\keys\\ca.crt"
cert "D:\\keys\\client01.crt"
key "D:\\keys\\client01.key"
comp-lzo
verb 3
- ルータの設定