我正在尝试使用 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}
使用逗号 ( ,
) 而不是空格来分隔条目。