VMWare Workstation 6.5を使って、NetBSD 5.0.1同士でTeamを作成して、2つのVMの間でIPsec環境を構築することにしました。
これはDebian lennyで同じことをした時にMTUを片側で少し減らした場合、PMTUが発生し、端末がハングしたようにみえる現象がNetBSDと連携した時にどうなるか確認したかったからです。
とりあえずNetBSD 5.0.1同士でのIPsec環境を構築したので、その時の差分の手順をメモしておきます。
はじめに
作業手順は大きく分けて次のような流れになっています。
- NetBSDカーネルの再ビルド
- IPsec用のNICの追加
- /etc/ipsec.confの作成
- /etc/racoon/raccon.confの作成
- /etc/racoon/certsディレクトリの作成とpemファイルの配置
- システムの設定
- システムの再起動
- 稼働確認
ipsec.confファイルはipsec-tools.confと読み替えれば、手順もファイルの内容もLinuxの時と同じものがそのまま使えます。 そのため今回はNetBSD固有の部分で、特に気になった設定周りについてだけメモをまとめていきます。
NetBSDカーネルの再ビルド
5.0.1ではIPSECが標準で有効になっていないため、これを有効にしたカーネルを作成します。 手順自体は通常のようにGENERICファイルをコピーして編集しますが、その際に次のオプションを有効にしてください。
...
options IPSEC
options IPSEC_ESP
...
IPsec用のNICの追加
VMWare Workstationの機能でネットワークセグメントを一つ追加しています。 今回はwm1に対して"10.0.0."1と"10.0.0.2"のIPアドレスを割り当て、その2点間でIPsecが有効になるように設定を行ないました。
システムの設定
NetBSD固有の設定は/etc/rc.confに集中しています。
sshd=YES
ipsec=YES
racoon=YES
念のためにipsec.confとraccon.confファイルの内容もコピーしておきます。
#!/usr/sbin/setkey -f
#
flush;
spdflush;
## out rule (local -> remote)
## IPv4
spdadd 10.0.0.2 10.0.0.1 any -P out ipsec
esp/transport//require
ah/transport//require;
## in rule (remote -> local)
## IPv4
spdadd 10.0.0.1 10.0.0.2 any -P in ipsec
esp/transport//require
ah/transport//require;
ipsec.confファイルはもう片側では、IPアドレスを入れ替えています。 実際には"out", "in"を入れ替えた方が楽でしょう。
path certificate "/etc/racoon/certs";
remote 10.0.0.1 {
exchange_mode main;
my_identifier asn1dn;
peers_identifier asn1dn;
certificate_type x509 "newcert.pem" "newkey.pem";
peers_certfile x509 "server1.newcert.pem";
verify_cert on;
proposal {
encryption_algorithm aes;
hash_algorithm sha1;
authentication_method rsasig;
dh_group modp1024;
}
generate_policy on;
passive off;
}
sainfo anonymous {
pfs_group modp768;
encryption_algorithm rijndael, 3des;
authentication_algorithm hmac_sha1, hmac_md5;
compression_algorithm deflate;
}
racoon.confファイルは、もう片側では10.0.0.1を10.0.0.2に、server1.netcert.pemはserver2.newcert.pemに変更しています。
さいごに
システムを再起動すると2つのIPアドレスの間では無事にIPsecによる通信が始まりました。 最初はracoonを有効にせずに再起動し、後からracoonを起動したせいか、linuxの時と同じようにphase2でtimeoutが発生しました。
Mar 1 13:21:00 server2 racoon: ERROR: phase1 negotiation failed due to time up. e60ee11ca211d3b2:0000000000000000
Mar 1 13:21:03 server2 racoon: ERROR: phase2 negotiation failed due to time up waiting for phase1. ESP 10.0.0.1[500]->10.0.0.2[500]
やはり同じように両方で"racoonの停止"→"setkeyのクリア"を行なった後に、"racoonの起動"、"setkey -f ipsec.confによる設定の反映"を行なうと無事に通信が始まりました。
やはりMTUをいじってもちゃんと動きますね。まぁ当然か。 Linuxの新しいkernelでは直ってるのかなぁ…。
0 件のコメント:
コメントを投稿