Oracle Site-Site VPN 三个机器配置相同只有一个内网通

261 天前
 moonc5914

Oracle 有 Site-Site VPN 可以白嫖,所以想试试能不能把几个机器通过 VPN 组网。皆是使用 Static Routing 。但由于网络知识及相关工具知识匮乏,没法白嫖成功,遂有以下疑问。

问题描述

先后在 A ( AWS HK ,192.168.0.2/24 ),B ( Tencent HK ,192.168.10.2/24 ),C (国内托管,192.168.20.2/24 )三个服务器上按照 Oracle 的教程创建了 vti 网卡,手动 C 机器( Ubuntu22.04 不能安装 quagga 了)/A 、B 机器使用 zebra 添加了路由规则,详细路由如下:

root@ip-172-31-21-142:/home/ubuntu# ip route
default via 172.31.16.1 dev ens5 proto dhcp src 172.31.21.142 metric 100
10.0.0.0/24 proto zebra scope link metric 20
       nexthop dev vti0 weight 1
       nexthop dev vti1 weight 1
172.31.16.0/20 dev ens5 proto kernel scope link src 172.31.21.142
172.31.16.1 dev ens5 proto dhcp scope link src 172.31.21.142 metric 100
192.168.0.0/24 dev vti0 proto kernel scope link src 192.168.0.2
192.168.0.0/24 dev vti1 proto kernel scope link src 192.168.0.4
192.168.10.0/24 proto zebra scope link metric 20
       nexthop dev vti0 weight 1
       nexthop dev vti1 weight 1
192.168.20.0/24 proto zebra scope link metric 20
       nexthop dev vti0 weight 1
       nexthop dev vti1 weight 1

其中10.0.0.0/24是用来访问 Oracle 的 VPS(10.0.0.79)的。其他的都是各机器子网的路由。三台机器的ip route除过本机必须条目之外其他都相同。

网卡的信息如下(AWS 的默认网卡 mtu 为 9000 ,其他两个为 1500):

vti0: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 8981
       inet 192.168.0.2  netmask 255.255.255.0  destination 192.168.0.2
       inet6 fe80::5efe:ac1f:158e  prefixlen 64  scopeid 0x20<link>
       tunnel   txqueuelen 1000  (IPIP Tunnel)
       RX packets 1575  bytes 115015 (115.0 KB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 1902  bytes 107800 (107.8 KB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

vti1: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 8981
       inet 192.168.0.4  netmask 255.255.255.0  destination 192.168.0.4
       inet6 fe80::5efe:ac1f:158e  prefixlen 64  scopeid 0x20<link>
       tunnel   txqueuelen 1000  (IPIP Tunnel)
       RX packets 1269  bytes 94250 (94.2 KB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 1306  bytes 69848 (69.8 KB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

为了避免其他问题,A ,B 机器系统为新装 Ubuntu20.04 ,C 为 22.04 ,且防火墙出入方向全部放行,除过 C 机器有 Docker 以外且是公网 IP 直接分配给网卡,另外两个都是全新系统且内网 IP 。可以确认的是每个机器的 VPN 肯定都是通的,在 Oracle 的 Network Visualizer 功能中查看三者的拓扑情况,也是相同的。其余可能没有区别。附图如下:

现有问题

1.A 机器可以 ping 通 Oracle 的内网 VPS ,可以 ping 通 VPN 的 OCI 端 IP ,但是无法 ping 通另外两个网段的机器。

2.B 机器可以 ping 通 VPN 的 OCI 端 IP ,但是无法访问 Oracle 的内网 VPS ,另外两个网段也不通。mtr 10.0.0.79的结果如下:

                         Packets               Pings
 Host                     Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. 192.168.10.5          0.0%     3   49.2  49.2  49.2  49.2   0.0
 2. 140.91.206.60         0.0%     3   53.9  54.0  53.9  54.0   0.0
 3. (waiting for reply)

3.C 机器仅可以 ping 通本机分配给 vti 网卡的 IP (必然嘛),其余皆是no route to host。但是这台机器昨天第一次测试的时候是可以访问 Oracle VPS 的,只是分配给它的网段是10.0.10.0/24,而 Oracle 的 VCN 网段是10.0.0.0/16,建立时会有提示就改到了192.168.20.0/24段。

那么还有什么原因会造成上述的奇怪问题呢?由于担心篇幅太长没人看,所以把三台机器的信息只放了其中一个,如果需要补充的话我可以再补充一下。为了避免是自己粗心大意造成这种问题我已经检查了数遍,应该不会有此原因包含在内。

按理来说,建立好 VPN 后,三台机器间,以及和 Oracle 内网 VPS 间都是可以互通的,但是现在如此奇怪。自己对计算机也只是闲余时间折腾而已,没有系统地学习过课程,还请各位大佬不吝赐教。

其他疑问

不知道放在 Linux 分区合适不,本来想放在 internet 区,但是想了一下可能更适合分享给懂 linux 工具的大佬们。

国内的托管机器用这种 VPN 连接,应该不会被查水表吧。

最后问一下,BGP Routing 是不是只有在网络提供商允许的情况下才可以使用?三台机器的 BGP Routing 都是没办法正常连接的,BGP 端口状态一直是SYN_SENT,随放弃。如果要用的话难道只能是有自有 ASN 才行?但是试了一下 Oracle 提供的连接 AWS 的 Site-Site VPN 的方法,确实可以建立 BGP Routing ,而且使用的是 65412 的保留 ASN 。

1432 次点击
所在节点    Linux
8 条回复
bigfei
261 天前
但是无法访问 Oracle 的内网 VPS
----
应该是 VPS 没禁用严格源地址检查啥的:
https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/managingVNICs.htm
bigfei
261 天前
BGP Routing 要你的上游支持才行,或者是 tunneled traffic 。对于你这边来说,site2site vpn 建立好后用 OSPF 就可以了。
YahWx
260 天前
嗯,怎么说,不懂 site2site 的好处,但是我现在 20 台机子都是用的 wireguard 组网,直接用 systemd-network 配置 wireguard ,网状拓扑,任意两台机器之间直连。
好处是什么呢,就是不依赖厂商的基础设施,只要 vps 有公网 ip 就可以组,配置的时候 Oracle 的机子之间连接走 Oracle 内网,Oracle 连其它 vps 走公网,配置很简单。
自己写个脚本批量配置就好了,我用的 Python ,本地一个 yaml 添那些机子为一组,填好 ip ,自动登录 ssh 然后 tee 到 systemd network 目录下,然后重启一切都好了。

当然你说 bgp 隧道,肯定没法比,但是 wireguard 好处就是它通用啊,兼容度高,什么垃圾厂商的 VPS 都能组在一堆。
YahWx
260 天前
之前阿里轻量云华南的我也组过,没问题,你只要不是跑科学都没事的,正常流量可以过强。毕竟 wireguard 也是精准嗅探,😂,那时候搞了个异地 MySQL 集群,流量请求还是有点多。
bigfei
260 天前
嗯,但是 wireguard 不套娃的话过不了墙的,一天 10M 流量都能精准识别。。
相反 site2site 的 vpn ,最简单的 ipip tunnel 都可以直接过墙
YahWx
260 天前
@bigfei site2site ,没了解过,有那些厂商支持?有空研究研究
moonc5914
236 天前
@bigfei 试了一下还是不太行。而且虽然 Oracle 提供的 VPN 是热备,但是在线率还是很堪忧。一段时间之后甚至完全不通。遂放弃。看来目前要过墙,要么实名过墙,要么就是用各种抗审查的工具了。
moonc5914
236 天前
@YahWx 可以用各种三方的工具,[Oracle 官方的说明]( https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/configuringCPE.htm)中有一些配置样例。例如 swan 系的 strongstan 、libreswan 、openswan ,以及各种硬件防火墙:思科、Juniper 、NEC 、雅马哈之类的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/967236

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX