IPsecで暗号化された2つのSolaris10トンネルを作成したいと思います。構成は非常に簡単です。 2つのSolaris 10ノード、LANは暗号化されず、トンネルは暗号化されます。 Lanはe1000g0、Tunnelはip.tun0 Node 1の「Clear」IPは192.168.0.21 Node 2の「Clear」IPは192.168.0.199 このプロセスを実行します。
a) 両方のノードで IPv4 転送とルーティングをイネーブルにします。
routeadm -u -e ipv4-routing
routeadm -u -e ipv4-forwarding
b) 両方のノードで /etc/inet/ike/config を編集します。
p1_xform
{ auth_method preshared oakley_group 5 auth_alg sha encr_alg 3des }
p2_pfs 2
c)もちろん、逆方向ローカル/リモートを使用して、両方のノードで/etc/inet/secret/ike.presharedを編集します。
{ localidtype IP
localid 192.168.0.21
remoteidtype IP
remoteid 192.168.0.119
}
d) 両方のノードで IKE をイネーブルにし、svcs が動作していることを確認します。
svcadm enable ike
svcs ike
e) /etc/inet/ipsecinit.conf ファイルを編集します。
# LAN traffic to and from this host can bypass IPsec.
{laddr 192.168.0.0 dir both} bypass {}
# WAN traffic uses ESP with AES and SHA-1.
{tunnel ip.tun0 negotiate tunnel}
ipsec {encr_algs aes encr_auth_algs sha1 sa shared}
f) リフレッシュ..
svcadm refresh ipsec/policy
g)すべてが大丈夫だったので、トンネルを作りました。
svcs -a|grep -i ipsec
disabled 9:35:34 svc:/network/ipsec/manual-key:default
online 9:35:53 svc:/network/ipsec/ipsecalgs:default
online 9:35:53 svc:/network/ipsec/ike:default
online 9:54:38 svc:/network/ipsec/policy:default
ホストAから
ifconfig ip.tun0 plumb
ifconfig ip.tun0 192.168.192.24 192.168.192.40 tsrc 192.168.0.21 tdst 192.168.0.199 router up
ホストBで
ifconfig ip.tun0 plumb
ifconfig ip.tun0 192.168.192.40 192.168.192.24 tsrc 192.168.0.199 tdst 192.168.0.21 router up
すべてが大丈夫に見えますが..動作しません。
HostAはHostBをpingできます。
ping 192.168.0.199
192.168.0.199 is alive
HostBはHostAにpingを送信できます。
ping 192.168.0.2
192.168.0.2 is alive
しかし、トンネルにpingを実行すると...
ホストAからホストBへ
ping -s 192.168.192.40
PING 192.168.192.40: 56 data bytes
----192.168.192.40 PING Statistics----
25 packets transmitted, 0 packets received, 100% packet loss
ホストBからホストAへ
ping -s 192.168.192.24
PING 192.168.192.24: 56 data bytes
----192.168.192.24 PING Statistics----
25 packets transmitted, 0 packets received, 100% packet loss
HostAでは、netstat -rnは次のように言います。
netstat -rn
Routing Table: IPv4
Destination Gateway Flags Ref Use Interface
-------------------- -------------------- ----- ----- ---------- ---------
default 192.168.0.1 UG 1 1
192.168.0.0 192.168.0.21 U 1 3 e1000g0
192.168.192.40 192.168.192.24 UH 1 0 ip.tun0
224.0.0.0 192.168.0.21 U 1 0 e1000g0
127.0.0.1 127.0.0.1 UH 1 48 lo0
HostBでは、netstat -rnは次のように言います。
Routing Table: IPv4
Destination Gateway Flags Ref Use Interface
-------------------- -------------------- ----- ----- ---------- ---------
default 192.168.0.1 UG 1 2 e1000g0
192.168.0.0 192.168.0.199 U 1 7 e1000g0
192.168.192.24 192.168.192.40 UH 1 1 ip.tun0
127.0.0.1 127.0.0.1 UH 3 122 lo0
私が逃したものは何ですか?両方のノードでファイアウォールが無効になっています。
答え1
見つかった解決策のバグは多くのconfの構文にあります。ファイルはまずファイルです
/etc/inet/ike.preshared
必ず使用する必要があり、使用されるIPは「プライマリ」インターフェイスのIPではなくトンネルのIPでなければなりません。
# ike.preshared on hostA
#…
{ localidtype IP
localid 10.4.0.1
remoteidtype IP
remoteid 10.4.0.2
key keyinhexformat
# The preshared key can also be represented in hex
# as in 0xf47cb0f432e14480951095f82b
# key "This is an ASCII Cqret phrAz, use str0ng p@ssword tekniques"
}
16進キーを生成するには、次のコマンドを使用します。
echo "mypassword" | od -t x1|head -1|tr -d ' '
文書
/etc/inet/ike/config
これに似ている必要があります。この場合も、プライマリインターフェイスのIPではなくトンネルのIPを使用します。
p1_xform
{ auth_method preshared oakley_group 5 auth_alg sha encr_alg 3des }
p2_pfs 2
{ label "test1-test2" local_addr 10.4.0.1 remote_addr 10.4.0.2 p1_xform { auth_method preshared oakley_group 5 auth_alg sha256 encr_alg aes } p2_pfs 5 }
もちろん、HostBでは、両方のファイルは10.4.0.1から10.4.0.2の逆順でなければなりません。
最後に、/etc/inet/ipsecinit.conf ファイルを編集します。
{laddr 192.168.0.21 dir both} bypass {}
{laddr 10.4.0.1 raddr 10.4.0.2} ipsec {encr_algs aes encr_auth_algs sha256 sa shared}
もちろん、10.4.0.1はホストBから10.4.0.2に置き換える必要があり、192.168.0.21はホストBのホストマスターIPに置き換える必要があります。
次に、ホストAでスクリプトを実行します。
ifconfig ip.tun0 unplumb
ifconfig ip.tun0 plumb
ifconfig ip.tun0 10.4.0.1 10.4.0.2 netmask 255.255.255.0 tsrc 192.168.0.21 tdst 192.168.0.199 router up
for i in ike ipsec/policy;do svcadm refresh $i; done
次に、HostBでスクリプトを実行します。
ifconfig ip.tun0 unplumb
ifconfig ip.tun0 plumb
ifconfig ip.tun0 10.4.0.2 10.4.0.1 netmask 255.255.255.0 tsrc 192.168.0.199 tdst 192.168.0.21 router up
for i in ike ipsec/policy;do svcadm refresh $i; done
すべてが大丈夫です。 pingとsnoopでテストしてみてください。