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 。
1
bigfei 2023-08-22 10:18:52 +08:00 1
但是无法访问 Oracle 的内网 VPS
---- 应该是 VPS 没禁用严格源地址检查啥的: https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/managingVNICs.htm |
2
bigfei 2023-08-22 10:20:41 +08:00 1
BGP Routing 要你的上游支持才行,或者是 tunneled traffic 。对于你这边来说,site2site vpn 建立好后用 OSPF 就可以了。
|
3
YahWx 2023-08-22 13:11:08 +08:00 via Android
嗯,怎么说,不懂 site2site 的好处,但是我现在 20 台机子都是用的 wireguard 组网,直接用 systemd-network 配置 wireguard ,网状拓扑,任意两台机器之间直连。
好处是什么呢,就是不依赖厂商的基础设施,只要 vps 有公网 ip 就可以组,配置的时候 Oracle 的机子之间连接走 Oracle 内网,Oracle 连其它 vps 走公网,配置很简单。 自己写个脚本批量配置就好了,我用的 Python ,本地一个 yaml 添那些机子为一组,填好 ip ,自动登录 ssh 然后 tee 到 systemd network 目录下,然后重启一切都好了。 当然你说 bgp 隧道,肯定没法比,但是 wireguard 好处就是它通用啊,兼容度高,什么垃圾厂商的 VPS 都能组在一堆。 |
4
YahWx 2023-08-22 13:14:41 +08:00 via Android
之前阿里轻量云华南的我也组过,没问题,你只要不是跑科学都没事的,正常流量可以过强。毕竟 wireguard 也是精准嗅探,😂,那时候搞了个异地 MySQL 集群,流量请求还是有点多。
|
5
bigfei 2023-08-22 19:49:06 +08:00
嗯,但是 wireguard 不套娃的话过不了墙的,一天 10M 流量都能精准识别。。
相反 site2site 的 vpn ,最简单的 ipip tunnel 都可以直接过墙 |
7
moonc5914 OP @bigfei 试了一下还是不太行。而且虽然 Oracle 提供的 VPN 是热备,但是在线率还是很堪忧。一段时间之后甚至完全不通。遂放弃。看来目前要过墙,要么实名过墙,要么就是用各种抗审查的工具了。
|
8
moonc5914 OP @YahWx 可以用各种三方的工具,[Oracle 官方的说明]( https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/configuringCPE.htm)中有一些配置样例。例如 swan 系的 strongstan 、libreswan 、openswan ,以及各种硬件防火墙:思科、Juniper 、NEC 、雅马哈之类的。
|