Openswan 连接到多个正确子网不起作用

Openswan 连接到多个正确子网不起作用

我正在尝试使用 Openswan(版本 2.6.37)将 IPsec VPN 从本地网络连接到远程站点。当我只想连接到远程站点上的单个子网时,一切正常。但是,远程站点还有一个我想要访问的额外子网。

这是我的配置:

conn myConn
        type=tunnel
        left=192.168.139.14
        leftsubnet=192.168.139.0/24
        leftxauthclient=yes
        right=X.X.X.X
        rightsubnet=172.16.1.0/24
        keyexchange=ike
        auth=esp
        authby=secret
        phase2alg=3des-sha1
        pfs=yes

当我替换rightsubnet为时rightsubnets,如下所示:

rightsubnets={172.16.1.0/24 192.168.3.0/24}

...然后连接已成功创建,但只有列表中的最后一个子网可用。任何尝试 ping172.16.1.0子网上的任何内容都会失败。如果我交换子网的顺序,那么我可以 ping 通172.16.1.X,但无法 ping 通其他子网上的任何内容。就好像 Openswan 仅使用列表中的最后一个子网来创建连接。

我在这里做错了什么吗?

我忽略提及的一些额外信息(尽管我不确定它是否相关):我的 Openswan 客户端位于使用 NAT 的路由器后面,并且我的文件nat_traversal=yes中有该信息。ipsec.conf

答案1

看起来和平常一样多个子网的分隔符是逗号,但至少 openswan-2.6.32 也可以使用空格。

应记录有趣的信息/var/log/secure,其中可能包含其不起作用的线索。还发布ip x s sh和的输出ip x p sh

答案2

conn为隧道两个端点上的每个子网进行部分配置。其中只有一个(第一个启动的)将启动 SA 协商,第二个(或更多)将仅为其他子网创建新的 SPD。

答案3

看起来 OpenSwan 中存在一个错误,子网列表需要在末尾添加一个额外的逗号才能正常工作。尝试:

rightsubnets={172.16.1.0/24,192.168.3.0/24,}

请注意末尾多余的逗号。

答案4

应该是这样的

rightsubnets={172.16.1.0/24,192.168.3.0/24}

使用逗号 ( ,) 而不是空格来分隔条目。

相关内容