Solaris10を含むIPsecトンネル..私は何を見逃していますか?

Solaris10を含むIPsecトンネル..私は何を見逃していますか?

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でテストしてみてください。

おすすめ記事