我成功地在家用路由器 (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(两个选项任选其一):
将公有 IP 路由至家庭路由器
将想要的公网 IP 添加到eth0(或者虚拟接口)设备并通过创建带有标记和默认网关的路由表虚拟接口,然后标记来源输出流量iptables。
或者
将公共 IP 路由至家庭路由器后面的设备
创建一个基因转移酶:公共 IP->NAT 设备,然后通过以下方式为默认网关创建路由表虚拟接口对于选定的 NAT 设备(从设备到互联网的所有流量都通过VPN)
所以,我得到了我需要的东西。下一步是从站点 A 上的服务器设置正确的输出 IP 地址(现在流量从主站点 A 服务器的 IP 地址流出)。
如果我的解决方案不是最佳实践,请告诉我。
还有其他方法可以实现我的假设吗?也许私有 BGP 对等连接是一种解决方案?