実家と下宿先とを vpn で繋ごうと考えていた。年末年始で実家に帰省しているこのタイミングで作業した。その時のログだったり、メモだったり
それぞれの環境は下記のとおりです。
実家(クライアント):Linux CentOS 4.4 下宿先(サーバ):opensolaris(SunOS 5.11)
OpenVPN はピアツーピアで、どちらかがサーバやクライアントということはないのだが、接続する方をクライアント、接続される方をサーバという表記にした
実家側の設定
カーネルの設定
tun について、カーネルで許可していなかったのでカーネルの再コンパイルをする。必要な .config の値は下記のとおり
CONFIG_INET_TUNNEL=m
CONFIG_TUN=m
CONFIG_ETHERTAP=m
一番上については必要かどうか分からないが、とりあえずモジュール化だけしておくことにした。TAPについてはイーサネットのトンネルに必要であり、今回の目的では必要はないが何か必要になる可能性があるためモジュール化しておくことにした。
FWの設定
適宜ファイアウォールについて設定する。
OpenVPNの設定
共通鍵を使用するため鍵を作り、作った鍵ファイルを下宿先にもコピーする(安全な方法でコピーすること)
# openvpn --genkey --secret hogehoge.key
次に、config ファイルの設定をする。
port 9999
proto udp
dev tun
ifconfig 192.168.xxx.1 192.168.xxx.2
remote xxx.xxx.xxx.xxx
secret /xxx/xxx/hogehoge.key
route 192.168.xxx.0 255.255.255.0 192.168.xxx.2
keepalive 10 120
comp-lzo
user vpn
group vpn
persist-key
persist-tun
status /tmp/openvpn-status.log
log-append /var/log/openvpn.log
verb 3
下宿側の設定
ドライバの設定
tun については OpenVPN のための Solaris 用 TAP ドライバ から取得し、コンパイルした。
FWの設定
適宜ファイアウォールについて設定する。
OpenVPNの設定
OpenVPNのコンパイル方法についても先のリンク先を参照してコンパイルする。
共通鍵を使用するため鍵を作り、作った鍵ファイルを下宿先にもコピーする(安全な方法でコピーすること)
# openvpn --genkey --secret hogehoge.key
次に、config ファイルの設定をする。
port 9999
proto udp
dev tun
ifconfig 192.168.xxx.2 192.168.xxx.1
secret /xxx/xxx/hogehoge.key
route 192.168.xxx.0 255.255.255.0 192.168.xxx.1
keepalive 10 120
comp-lzo
user vpn
group vpn
persist-key
persist-tun
status /tmp/openvpn-status.log
log-append /var/log/openvpn.log
verb 3
起動
起動については下記のように起動する
openvpn --daemon --writepid /var/run/openvpn.pid --config /xxx/xxx/hogehoge.conf --cd /tmp
正常にいけば tun0 が繋がる向こうに ping が通るはずだ。
バグ?
opensolaris の方で openvpn を止めて再度起動させたところうまく繋がらなくなった。ログには下記のように表示されている。
Tue Jan 1 15:08:17 2008 Can't set PPA 0: File exists (errno=17)
よくわからないが、下記のコマンドを実行した後に再度起動すれば直るようだ。
ifconfig tun0 unplumb
svcadm restart ipfilter