Networking

通過 VTI over IPSec 站點到站點隧道路由一個或多個公共 IP

  • March 30, 2018

我在 OVH 的家庭路由器 (UBNT Edgerouter) 和專用伺服器 (Ubuntu 16.04) 之間成功創建了 VTI over IPSec 站點到站點隧道。我可以通過 VTI 設備路由雙方的內部專用網路並在另一個站點上訪問它(我可以從站點 A 的 NATed 設備(例如從路由器後面的電腦)訪問站點 B 私有範圍設備,這很棒),但是我在通過它路由公共網路時遇到問題。

站點 A:家庭路由器:

公共主IP:89.xx81

私有 IP(NATed 家庭設備):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 ?

好的,我前幾天自己解決了。

站點 A:

通過vti0設備添加了公共 IP 的路由(我想路由到家)

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

站點 B(在兩個選項之一之間進行選擇):

  1. 將公共 IP 路由到家庭路由器

將想要的公共 IP 添加到eth0(或vti0 )設備並通過**vti0創建帶有標記和預設網關的路由表,然後通過iptables標記源輸出流量。

或者 2. 將公共 IP 路由到家庭路由器後面的設備

創建一個DNAT:公共 IP->NATed 設備,然後通過vti0為選定的 NATed 設備創建預設網關的路由表(從設備到 Internet 的所有流量都通過VPN路由)

所以,我得到了我需要的東西。下一步是從站點 A 上的伺服器設置正確的輸出 IP 地址(現在流量從 A 站點的主伺服器 IP 地址退出)。

如果我的解決方案不是最佳實踐,請告訴我。

還有其他方法可以實現我的假設嗎?也許私有 BGP 對等互連將是一個解決方案?

引用自:https://serverfault.com/questions/904239