我正在尝试在位于同一 VPC 但不同子网中的两台 Linux 机器之间建立 IPsec 连接。在两台机器上我都有以下配置:
主机:
conn hostConn
left=%any
right=172.31.48.11
authby=secret
auto=start
leftid=@client
rightid=@host
type=transport
ikev2=insist
keyexchange=ike
ike=aes256-sha2_384;dh20
esp=aes_gcm_c256
客户端配置:
conn clientConn
left=%defaultroute
right=172.31.48.11
authby=secret
auto=start
leftid=@client
rightid=@host
type=transport
ikev2=insist
keyexchange=ike
ike=aes256-sha2_384;dh20
esp=aes_gcm_c256
当我从客户端机器 ping 时,它失败了,但是一旦我从主机 ping 到客户端,则双方 ping 都会成功。
两台机器上的 IPsec 日志显示连接已建立,但需要先从主机 ping 到客户端,才能通过 IPsec 连接开始它们之间的通信。
我是不是漏掉了什么?关于如何调试这个问题有什么建议吗?
答案1
您的配置中我没有看到两件事。
在 VPN 设备上为要访问的网络添加默认路由。如果没有主机特定子网的路由,VPN 设备将通过默认网关转发所有流量,而默认网关会流向 Internet。创建 VPN 连接也不会在路由表中生成路由。
寻找允许广播流量通过 VPN 的选项。您的客户端在收到第一条消息之前不知道主机在哪里。广播流量可以解决此问题,但在速度慢或费用昂贵的连接上转发广播流量是不好的,这就是为什么这是一个选项。
我已经很久没有遇到过这个与 IPsec 相关的问题了,但这两个问题却是我最关心的问题。