通过 IPSec 站点到站点隧道上的 VTI 路由一个或多个公共 IP

通过 IPSec 站点到站点隧道上的 VTI 路由一个或多个公共 IP

我成功地在家用路由器 (UBNT Edgerouter) 和 OVH 的专用服务器 (Ubuntu 16.04) 之间创建了 VTI over IPSec 站点到站点隧道。我可以通过 VTI 设备路由每一方的内部专用网络,并在另一个站点上访问它(我可以从站点 A 上的 NAT 设备(例如从路由器后面的计算机)访问站点 B 专用范围设备,这很棒),但我无法通过它路由公共网络。

站点 A:家庭路由器:

公共主 IP:89.xx81

私有 IP(NAT 家庭设备):10.100.10.1/24

VTI: 10.255.12.1/30

~# ip r
default via 89.x.x.1 dev eth0  proto zebra 
10.100.10.0/24 dev eth1  proto kernel  scope link  src 10.100.10.1 
10.255.12.0/30 dev vti0  proto kernel  scope link  src 10.255.12.1 
89.x.x.0/22 dev eth0  proto kernel  scope link  src 89.x.x.81 
172.16.0.0/12 dev vti0  proto zebra 

~# ip tunnel
vti0: ip/ip remote 51.x.x.136 local 89.x.x.81 ttl inherit nopmtudisc ikey 0 okey 1234
ip_vti0: ip/ip remote any local any ttl inherit nopmtudisc key 0

站点 B:OVH 的服务器:

公网 IP:51.xx136

已分配/路由到服务器的公共 IP 块:51.xx128/28(服务器上仅配置了 .136)

私有 IP(OVH vRack):172.16.0.1/12

VTI :10.255.12.2/30

~# ip r
10.100.10.0/24 dev vti0  scope link 
10.255.12.0/30 dev vti0  proto kernel  scope link  src 10.255.12.2 
51.x.x.142 dev eth0  scope link 
172.16.0.0/12 via 172.16.0.1 dev eth0  scope link 
172.16.0.0/12 dev eth0  proto kernel  scope link  src 172.16.0.1

~# ip tunnel
ip_vti0: ip/ip  remote any  local any  ttl inherit  nopmtudisc key 0
vti0: ip/ip  remote 89.x.x.81  local 51.x.x.136  ttl inherit  nopmtudisc key 1234

目标:

通过家庭路由器上的 VTI 设备从 OVH 服务器块(51.xx128/28)配置一个或多个公共 IP(然后我将在那里进行 1:1 NAT 以将 IP 分配给路由器后面的服务器)或者直接在家庭路由器后面的设备上配置(如果可能)。

在 VTI 上是可能的,或者我应该考虑从 VTI 改为 GRE,然后按照以下步骤操作:https://serverfault.com/a/557949

答案1

好的,几天前我自己解决了这个问题。

地点A:

通过以下方式添加了公共 IP(我想将其路由到家里)的路由虚拟接口设备

~# ip r
...
51.x.x.134 dev vti0  scope link 

地点 B(两个选项任选其一):

  1. 将公有 IP 路由至家庭路由器

    将想要的公网 IP 添加到eth0(或者虚拟接口)设备并通过创建带有标记和默认网关的路由表虚拟接口,然后标记来源输出流量iptables

    或者

  2. 将公共 IP 路由至家庭路由器后面的设备

    创建一个基因转移酶:公共 IP->NAT 设备,然后通过以下方式为默认网关创建路由表虚拟接口对于选定的 NAT 设备(从设备到互联网的所有流量都通过VPN

所以,我得到了我需要的东西。下一步是从站点 A 上的服务器设置正确的输出 IP 地址(现在流量从主站点 A 服务器的 IP 地址流出)。

如果我的解决方案不是最佳实践,请告诉我。

还有其他方法可以实现我的假设吗?也许私有 BGP 对等连接是一种解决方案?

相关内容