[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#

--
大平浩貴