Linux 和 Solaris 之间的 IPsec 隧道

Linux 和 Solaris 之间的 IPsec 隧道

我有一台 Solaris 机器位于以太网的某个地方,我想通过 IPsec 将其纳入我的网络。我在 Solaris 机器之间可以做到这一点,但在 Solaris 和 Linux 之间却不行。

我认为基本问题是 Solaris 仅以与 Cisco IPsec 虚拟隧道接口相同的方式执行 IPsec 隧道模式 - 即由 IPsec 保护的 IP-in-IP 隧道。我真的不知道如何在 Linux 上复制它。我确实希望隧道有一个 IP 地址,因为远程主机没有路由本地网络 - 只是它自己。

索拉里斯

Solaris 配置如下所示:

# ipsecinit.conf
{tunnel ip.tun0 negotiate tunnel}
  ipsec {encr_algs AES-CBC encr_auth_algs HMAC-SHA1 auth_algs HMAC-SHA1 sa shared}
# hsotname.ip.tun0
130.95.13.254 130.95.13.253 tsrc 192.168.13.20 tdst 130.95.13.20 router up
# ike.config
{ label "manduba192-musundo"
  local_addr 192.168.13.20
  remote_addr 130.95.13.20
  p1_xform
   { auth_method preshared oakley_group 5 auth_alg sha1 encr_alg aes }
  p2_pfs 5
}

这将生成如下 SA:

SA: flags=0xc0038000 < X_USED X_PAIRED X_OUTBOUND X_UNIQUE X_TUNNEL >
SRC: Source address (proto=4/ipip)
SRC: AF_INET: port 0, 192.168.13.20 (manduba192.ucc.gu.uwa.edu.au).
DST: Destination address (proto=4/ipip)
DST: AF_INET: port 0, 130.95.13.20 (musundo.ucc.gu.uwa.edu.au).
INS: Inner source address (proto=0/<unspecified>)
INS: AF_INET: port 0, 0.0.0.0 <unspecified>.
IND: Inner destination address (proto=0/<unspecified>)
IND: AF_INET: port 0, 0.0.0.0 <unspecified>.
KMC: Protocol 1, cookie="manduba192-musundo" (3)

Linux

我真的不知道如何在 Linux 中复制此操作。我尝试过以下方法:

spdadd 0.0.0.0/0 0.0.0.0/0 any -P out ipsec
    esp/tunnel/130.95.13.126-192.168.13.20/use
    ah/tunnel/130.95.13.126-192.168.13.20/use;

spdadd 0.0.0.0/0 0.0.0.0/0 any -P in ipsec
    esp/tunnel/192.168.13.20-130.95.13.126/use
    ah/tunnel/192.168.13.20-130.95.13.126/use;

然后我大概可以在其上放置一个 IPIP 隧道?但是由于 SPD 不匹配,IKE 协商失败。

有任何想法吗?

相关内容