[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
IPsecで、SAバンドルを使ったトンネルモードの通信ができない
大平浩貴と申します。
私どものほうで、NetBSDでSAバンドルを使ったIPsecを使おうと
思っているのですが、Windowsとうまく通信できない状況が続いております。
こちらで実験した通信に失敗する状況を下記にまとめてみました。
皆様のほうで、このような現象は再現されますでしょうか?
また、もし原因や各種情報などご存知の方がいらっしゃいましたら、
どうかお教えいただければ幸いです。
■OS
NetBSD3.1とWindows XP
■現象
トンネルモードでSAバンドルを使用すると、WindowsとIPsecできない。
■私どもでの原因検討
SAバンドルを使うために、setkeyにおいて
「AHとESPをどういう順番で指定するか」また、
「それぞれをトンネルにするか、トランスポートにするか」によって
通信できるかどうかが変わってくると考えた。
そこで、後述するように6パターンのSAを作成して実験したのだが、
いずれも失敗した。
そもそも、NetBSDにおけるSAバンドル機能はAvailableになっている
のかなど、ご存知の方がいらっしゃったらご教示頂きたい。
■詳細
●setkeyについて
setkeyで設定するSPDを下記の(1)〜(6)のパターンで試したが、
いずれもIPsecによる通信はできなかった。
◆(1)ESP/Tunnel:AH/Tunnelの順に指定した場合
bash-3.2# cat setkey.conf
flush;
spdflush;
spdadd 192.168.32.132 192.168.32.1 any -P out ipsec
esp/tunnel/192.168.32.132-192.168.32.1/require
ah/tunnel/192.168.32.132-192.168.32.1/require;
spdadd 192.168.32.1 192.168.32.132 any -P in ipsec
esp/tunnel/192.168.32.1-192.168.32.132/require
ah/tunnel/192.168.32.1-192.168.32.132/require;
bash-3.2#
IPsec-SAは確立するが、パケットの構造が異なるため通信できない。
・Windows->NetBSD
Frame 12 (150 bytes on wire, 150 bytes captured)
Ethernet II, Src: Vmware_c0:00:01 (00:50:56:c0:00:01), Dst:
Vmware_ca:4a:d5 (00:0c:29:ca:4a:d5)
Internet Protocol, Src: 192.168.32.1 (192.168.32.1), Dst: 192.168.32.132
(192.168.32.132)
Authentication Header
Encapsulating Security Payload
・NetBSD->Windows
Frame 13 (170 bytes on wire, 170 bytes captured)
Ethernet II, Src: Vmware_ca:4a:d5 (00:0c:29:ca:4a:d5), Dst:
Vmware_c0:00:01 (00:50:56:c0:00:01)
Internet Protocol, Src: 192.168.32.132 (192.168.32.132), Dst:
192.168.32.1 (192.168.32.1)
Authentication Header
Internet Protocol, Src: 192.168.32.132 (192.168.32.132), Dst:
192.168.32.1 (192.168.32.1)
Encapsulating Security Payload
◆(2)AH/Tunnel:ESP/Tunnelの順に指定した場合
bash-3.2# cat setkey.conf
flush;
spdflush;
spdadd 192.168.32.132 192.168.32.1 any -P out ipsec
ah/tunnel/192.168.32.132-192.168.32.1/require
esp/tunnel/192.168.32.132-192.168.32.1/require;
spdadd 192.168.32.1 192.168.32.132 any -P in ipsec
ah/tunnel/192.168.32.1-192.168.32.132/require
esp/tunnel/192.168.32.1-192.168.32.132/require;
bash-3.2#
(1)と同様。ただし、ESPで暗号化されているためNetBSD->Windowsは(1)から類推
してAHでトンネルモードによるカプセル化が行われ、それをESPでカプセル化し
たと思われる。
・Windows->NetBSD
Frame 12 (150 bytes on wire, 150 bytes captured)
Ethernet II, Src: Vmware_c0:00:01 (00:50:56:c0:00:01), Dst:
Vmware_ca:4a:d5 (00:0c:29:ca:4a:d5)
Internet Protocol, Src: 192.168.32.1 (192.168.32.1), Dst: 192.168.32.132
(192.168.32.132)
Authentication Header
Encapsulating Security Payload
・NetBSD->Windows
Frame 13 (170 bytes on wire, 170 bytes captured)
Ethernet II, Src: Vmware_ca:4a:d5 (00:0c:29:ca:4a:d5), Dst:
Vmware_c0:00:01 (00:50:56:c0:00:01)
Internet Protocol, Src: 192.168.32.132 (192.168.32.132), Dst:
192.168.32.1 (192.168.32.1)
Encapsulating Security Payload
Internet Protocol, Src: 192.168.32.132 (192.168.32.132), Dst:
192.168.32.1 (192.168.32.1)
Authentication Header
※最後の2行は予想
次の(3)〜(6)はカプセル化モードが異なるためIPsec-SAの確立ができない
(racoonがポリシーが一致しないエラーとしてはじいている)。
◆(3)ESP/Transport:AH/Tunnelの順に指定した場合
bash-3.2# cat setkey.conf
flush;
spdflush;
spdadd 192.168.32.132 192.168.32.1 any -P out ipsec
esp/transport//require ah/tunnel/192.168.32.132-192.168.32.1/require;
spdadd 192.168.32.1 192.168.32.132 any -P in ipsec
esp/transport//require ah/tunnel/192.168.32.1-192.168.32.132/require;
bash-3.2#
◆(4)AH/Transport:ESP/Tunnelの順に指定した場合
bash-3.2# cat setkey.conf
flush;
spdflush;
spdadd 192.168.32.132 192.168.32.1 any -P out ipsec
ah/transport//require esp/tunnel/192.168.32.132-192.168.32.1/require;
spdadd 192.168.32.1 192.168.32.132 any -P in ipsec ah/transport//require
esp/tunnel/192.168.32.1-192.168.32.132/require;
bash-3.2#
◆(5)ESP/Tunnel:AH/Transportの順に指定した場合
bash-3.2# cat setkey.conf
flush;
spdflush;
spdadd 192.168.32.132 192.168.32.1 any -P out ipsec
esp/tunnel/192.168.32.132-192.168.32.1/require ah/transport//require;
spdadd 192.168.32.1 192.168.32.132 any -P in ipsec
esp/tunnel/192.168.32.1-192.168.32.132/require ah/transport//require;
bash-3.2#
◆(6)AH/Tunnel:ESP/Transportの順に指定した場合
bash-3.2# cat setkey.conf
flush;
spdflush;
spdadd 192.168.32.132 192.168.32.1 any -P out ipsec
ah/tunnel/192.168.32.132-192.168.32.1/require esp/transport//require;
spdadd 192.168.32.1 192.168.32.132 any -P in ipsec
ah/tunnel/192.168.32.1-192.168.32.132/require esp/transport//require;
bash-3.2#
●racoon.confについて
BSD側のracoon.confは以下の設定を使用。
bash-3.2# cat racoon.conf
# $KAME: racoon.conf.sample,v 1.28 2002/10/18 14:33:28 itojun Exp $
# "path" affects "include" directives. "path" must be specified before any
# "include" directive with relative file path.
# you can overwrite "path" directive afterwards, however, doing so may add
# more confusion.
#path include "/usr/local/v6/etc" ;
#include "remote.conf" ;
# the file should contain key ID/key pairs, for pre-shared key
authentication.
path pre_shared_key "/etc/racoon/psk.txt" ;
# racoon will look for certificate file in the directory,
# if the certificate/certificate request payload is received.
#path certificate "/usr/local/openssl/certs" ;
# "log" specifies logging level. It is followed by either "notify", "debug"
# or "debug2".
#log debug;
remote anonymous
{
#exchange_mode main,aggressive,base;
exchange_mode main,base;
#my_identifier fqdn "server.kame.net";
#certificate_type x509 "foo@kame.net.cert" "foo@kame.net.priv" ;
lifetime time 24 hour ; # sec,min,hour
#initial_contact off ;
#passive on ;
# phase 1 proposal (for ISAKMP SA)
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key ;
dh_group 2 ;
}
# the configuration could makes racoon (as a responder)
# to obey the initiator's lifetime and PFS group proposal,
# by setting proposal_check to obey.
# this would makes testing "so much easier", but is really
# *not* secure !!!
proposal_check strict;
}
# phase 2 proposal (for IPsec SA).
# actual phase 2 proposal will obey the following items:
# - kernel IPsec policy configuration (like "esp/transport//use)
# - permutation of the crypto/hash/compression algorithms presented below
sainfo anonymous
{
# pfs_group 2;
lifetime time 12 hour ;
encryption_algorithm 3des ;
authentication_algorithm hmac_sha1 ;
compression_algorithm deflate ;
}
bash-3.2#
--
大平浩貴