April 04, 2006

  FITELnet-F40とFreeS/WANの接続成功

土曜日に入手したルータのVPN機能をチェックしてみました。接続相手に選んだのは、Linux用のIPsecスタックとして知られるFreeS/wan(Ver.1.98b)を組み込んだサーバ(Redhat6.2)です。実験環境は以下のようになっています。

FreeS/wanはカーネルのコンパイルが必要なためセットアップが大変なのですが、今回はすでに下準備は済んでいる環境で行いましたので、そこに時間をとられるようなことはありませんでした。なお、今回は事前共有鍵方式での接続を行いました。

まずはルータ側の設定からです。

#
#
wan type=manual
interface wan addr=202.xxx.yyy.2,255.255.255.240
#
#
interface lan addr=192.168.99.1,255.255.255.0
#
#
ipripstatic delete default
ipripstatic add dst=0.0.0.0,0.0.0.0 nexthop=202.xxx.yy.1
#
#
nat wan natp
#
#
vpn on
#
# デフォルト設定からの変更点
# 暗号アルゴリズム:「DES」→「3DES」
# Oakley Group:「1」→「2」
#
vpnikepolicy add id=1 method=prekey encr=3des group=2
#
# デフォルト設定からの変更点
# 暗号アルゴリズム:「DES」→「3DES」
# Oakley Group:「1」→「2」
# IKE ライフタイム:「600秒」→「3600秒」
# 新しい鍵情報の生成:「pfs=no」→「pfs=yes」
# 圧縮ネゴシエーション:「ipca=off」→「ipca=on」
#
vpnpolicy add id=1 sec=3600 encr=3des auth=hmac-md5 group=2 pfs=yes ipca=on
#
# デフォルト設定からの変更点
# ネゴシエーションモード:「mode=auto」→「mode=main」 # 共有鍵は「testthisistest」になります
#
vpnpeer add addr=202.xxx.yyy.1 \
idtype-pre=userfqdn key=a,testthisistest nat=off ikepolicy=1 mode=main
#
#
vpnselector add id=1 dst=192.168.0.0,255.255.255.0 \
src=192.168.99.0,255.255.255.0 type=ipsec peeraddr=202.xxx.yyy.1 policy=1
vpnselector add id=64 dst=all src=all type=bypass

FreeS/WANとの接続のために変更すべき点は、コメントをご覧頂ければおわかりいただけるかと思います。これでルータ側の設定は完了です。

つづいてLinuxサーバではIPsec関連で2つ、ルーティング関連で1つの設定ファイルを扱います。はじめにIPsecの事前共有鍵の設定からです。

■ /etc/ipsec.secrets

202.xxx.yyy.2 202.xxx.yyy.1 "testthisistest"

以下はVPN接続の設定です。

■ /etc/ipsec.conf

config setup
# THIS SETTING MUST BE CORRECT or almost nothing will work;
# %defaultroute is okay for most simple cases.
interfaces=%defaultroute
# Debug-logging controls: "none" for (almost) none, "all" for lots.
klipsdebug=none
plutodebug=none
# Use auto= parameters in conn descriptions to control startup actions.
plutoload=%search
plutostart=%search
conn TEST
type=tunnel
left=202.xxx.yyy.2
leftsubnet=192.168.99.0/24
right=202.xxx.yyy.1
rightsubnet=192.168.0.0/24
esp=3des-md5-96

IPsec関連の設定が完了しました。最後に192.168.99.0/24からのパケットを192.168.0.0/24へフォワードするための設定を行います。

# ipchains -A forward -s 192.168.0.0/24 -d 192.168.99.0/24 -j ACCEPT
# ipchains -A forward -s 192.168.99.0/24 -d 192.168.0.0/24 -j ACCEPT

これでサーバ側の設定が終わりました。さっそくVPN回線を開いてみます。

# /usr/local/sbin/ipsec auto -add TEST
# /usr/local/sbin/ipsec auto -up TEST

回線が開いたら192.168.0.254から192.168.99.254へpingを打ちます。応答があるようなら、Linuxサーバ上でtcpdumpを実行し、パケットが暗号化されているのを確認して下さい。これで作業完了となります。

ジャンクで入手したルータでこれだけのことが出来れば、文句なしといったところでしょうか。これこそがジャンク漁りの醍醐味ではないかと思います。

【2006.04.23 追記】
その後検証を続けたところ、上記の設定ではFITELnet-F40からVPNを開始出来ないことが判明しました。そこで「vpnpolicy」コマンドおよび「vpnpeer」コマンドの太字部分のパラメータを追加し問題を解決しました、
投稿者 bitterbit : April 4, 2006 08:23 PM