RSS

OpenVPN 実験

CA作るのが面倒かと思ったが共有鍵でやる方法で簡単にできるようなのでやってみた。ひじょーに簡単。

実験環境は Debian GNU/Linux。サーバが OpenVPN 2.0-beta16 クライアントが2.1-rc11
サーバー: 192.168.1.2/24 ・ GW: 192.168.1.1/24 ただし NATで 172.16.1.2/24 ・ 172.16.1.1/24 で外に公開されているものとする。クライアント側は意識の必要はないが172.16.10.1だとする。GWでUDP/1194をあけておくこと。

openvpn --genkey --secret static.key

で共有秘密鍵を作成してサーバーとクライアントで保持。
サーバー側のconfigは以下のとおり。server.confとする。

dev tun
ifconfig 10.8.0.1 10.8.0.2
secret static.key

10.8.0.1とかは好きに決めていい。
クライアント側は次のとおりでclient.confとする

remote 172.16.1.2
dev tun
ifconfig 10.8.0.2 10.8.0.1
secret static.key

これでサーバー側に10.8.0.1が割り当てられクライアントに10.8.0.2が割り当てられる。
サーバー側で

# openvpn --config server.conf

クライアント側で

# openvpn --config client.conf

と実行する。サーバー側の出力が

Mon Jan 12 16:33:56 2009 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL]
 built on Sep 20 2007
Mon Jan 12 16:33:56 2009 IMPORTANT: OpenVPN's default port number is now 119
4, based on an official port number assignment by IANA.  OpenVPN 2.0-beta16
and earlier used 5000 as the default port.
Mon Jan 12 16:33:56 2009 TUN/TAP device tun0 opened
Mon Jan 12 16:33:56 2009 ifconfig tun0 10.8.0.1 pointopoint 10.8.0.2 mtu 1500
Mon Jan 12 16:33:56 2009 UDPv4 link local (bound): [undef]:1194
Mon Jan 12 16:33:56 2009 UDPv4 link remote: [undef]
Mon Jan 12 16:34:11 2009 Peer Connection Initiated with 172.16.10.1:1194
Mon Jan 12 16:34:12 2009 Initialization Sequence Completed

クライアント側が

Mon Jan 12 16:34:01 2009 OpenVPN 2.1_rc11 i486-pc-linux-gnu [SSL] [LZO2] [EPOLL]
 [PKCS11] built on Sep 18 2008
Mon Jan 12 16:34:01 2009 IMPORTANT: OpenVPN's default port number is now 1194, b
ased on an official port number assignment by IANA.  OpenVPN 2.0-beta16 and earl
ier used 5000 as the default port.
Mon Jan 12 16:34:01 2009 /usr/sbin/openvpn-vulnkey -q static.key
Mon Jan 12 16:34:01 2009 WARNING: file 'static.key' is group or others accessible
Mon Jan 12 16:34:01 2009 TUN/TAP device tun0 opened
Mon Jan 12 16:34:01 2009 /sbin/ifconfig tun0 10.8.0.2 pointopoint 10.8.0.1 mtu 1500
Mon Jan 12 16:34:01 2009 UDPv4 link local (bound): [undef]:1194
Mon Jan 12 16:34:01 2009 UDPv4 link remote: 172.16.1.2:1194
Mon Jan 12 16:34:11 2009 Peer Connection Initiated with 172.1.6.2:1194
Mon Jan 12 16:34:12 2009 Initialization Sequence Completed

という具合になれば成功している。互いにpingを飛ばすなりして確認すること。

このままではクライアントが192.168.1.2にはアクセスできるが 192.168.1.0/24 にアクセスできるわけではない。ネットワーク全体にアクセスしたい場合には次のcliet.confに足す。

route 192.168.1.0 255.255.255.0

gwに10.8.0.2/32へのルーティングを192.168.1.2に向けるようにルーティングを付け足すこと。さらに /proc/sys/net/ipv4/ip_forwad = 1にすること。