我有两台专用服务器,我已将它们配置为要求其(公共)IP 地址之间使用 AH 和 ESP,并且我已使用 racoon 设置了 isakmp。它们之间的 IPsec 隧道运行良好 - 我可以看到它们之间的所有流量都已加密(即,无论我在它们之间发送何种流量,tcpdump 都只显示 AH 和 ESP 标头)。
现在,我有点担心,在某个时候可能会发生一些事情,配置我的安全策略的 setkey 服务可能会在两台服务器上都关闭。或者可能发生一些事情,有人刷新了安全策略。然后,我在服务器之间的所有流量都会在数周或数月内处于未加密状态,直到有人(希望)注意到。
问题:我该怎么做才能避免这两台服务器之间的流量未加密?
我的愚蠢的解决方案:我想到实现此目的的一种方法是给它们每个分配一个私有 IP(为了简单起见,假设为 192.168.0.1 和 192.168.0.2),然后让我所有需要与其他服务器通信的应用程序使用这些私有 IP 而不是公共 IP,然后使这些私有 IP 仅在 IPsec 隧道启动时才可路由。
问题:这是可行的方法吗?我需要 GRE 吗?或者我可以用简单的“ip route add 192.168.0.2/32 via [public ip 2] dev eth0”(从服务器 1)来完成吗?有必要吗?实现它的最佳方法是什么?
答案1
最简单的方法是安装防火墙(在服务器上或路径上),阻止发往其他服务器的任何非协议 50 (ESP) 或 UDP/500 (ISAKMP) 的流量。不清楚您为什么需要 AH,我猜您不需要。
话虽如此,对于私人服务来说,使用私人寻址总是明智的,尽管依赖路由并不是一个安全机制。
在您的 IPSEC 配置中,您应该有两个与流量相关的设置,一个是网关(在每种情况下都是另一台服务器),另一个是允许通过 VPN 的流量,称为感兴趣的流量。目前这是您服务器的公网地址,您可以将其更改为您的私有地址。
要路由流量,你只需要将其推出正确的接口,它将匹配感兴趣的流量IPSEC 配置中的规则,并加密并发送到网关(另一台服务器)。
所以这应该足够了:
ip route add 192.168.0.2/32 dev eth0