通過 VTI over IPSec 站點到站點隧道路由一個或多個公共 IP
我在 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(在兩個選項之一之間進行選擇):
- 將公共 IP 路由到家庭路由器
將想要的公共 IP 添加到eth0(或vti0 )設備並通過**vti0創建帶有標記和預設網關的路由表,然後通過iptables標記源輸出流量。
或者 2. 將公共 IP 路由到家庭路由器後面的設備
創建一個DNAT:公共 IP->NATed 設備,然後通過vti0為選定的 NATed 設備創建預設網關的路由表(從設備到 Internet 的所有流量都通過VPN路由)
所以,我得到了我需要的東西。下一步是從站點 A 上的伺服器設置正確的輸出 IP 地址(現在流量從 A 站點的主伺服器 IP 地址退出)。
如果我的解決方案不是最佳實踐,請告訴我。
還有其他方法可以實現我的假設嗎?也許私有 BGP 對等互連將是一個解決方案?