我有一台托管 OpenVZ 容器的服务器。硬件节点 (HN) 上配置了 IPsec 隧道,我想让远程网络在容器 (CT) 中可用。我该怎么做?
当前设置如下:
- HN 在 eth0 上有一个公共地址
- HN 在别名 eth0:0 上有一个私有地址 192.168.100.1
- 远程网络是 192.168.200.0/24,HN 能够 ping 通此网络上的主机
- CT 在 venet0 上有一个公共地址,可以从外部世界访问,并且可以访问外部主机
- CT 有一个私有地址 192.168.100.101。它可以通过私有地址 192.168.100.1 ping 其 HN
- 未配置防火墙
CT 无法访问远程 192.168.200.0/24 网络上的主机,我不确定该怎么做。可以使用容器的 venet 接口来实现这一点吗,还是我必须切换到 veth?这是 HN 上缺少的路由吗?我必须在 HN 上启用某种 NAT 吗?
任何帮助将不胜感激。
更新:如果 CT 从其私有地址发送 ping,我可以在主机的 venet0 接口上使用 tcpdump 查看 icmp 请求/回复。看起来传出流量没有问题,但传入流量被阻止了。
答案1
为了使主机的 IPsec 隧道可供您的容器使用,您需要在容器中运行此命令:
sysctl -w net.ipv4.conf.venet0.disable_policy=1
这将禁用 VZ 接口上的 IPSEC 策略 (SPD) 检查。如果容器中使用了 veth 设备,则需要进行调整。
更多详细信息请参阅: