V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
moonc5914
V2EX  ›  Linux

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

  •  1
     
  •   moonc5914 · 249 天前 · 1411 次点击
    这是一个创建于 249 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 。

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

    当然你说 bgp 隧道,肯定没法比,但是 wireguard 好处就是它通用啊,兼容度高,什么垃圾厂商的 VPS 都能组在一堆。
    YahWx
        4
    YahWx  
       249 天前 via Android
    之前阿里轻量云华南的我也组过,没问题,你只要不是跑科学都没事的,正常流量可以过强。毕竟 wireguard 也是精准嗅探,😂,那时候搞了个异地 MySQL 集群,流量请求还是有点多。
    bigfei
        5
    bigfei  
       248 天前
    嗯,但是 wireguard 不套娃的话过不了墙的,一天 10M 流量都能精准识别。。
    相反 site2site 的 vpn ,最简单的 ipip tunnel 都可以直接过墙
    YahWx
        6
    YahWx  
       248 天前 via Android
    @bigfei site2site ,没了解过,有那些厂商支持?有空研究研究
    moonc5914
        7
    moonc5914  
    OP
       224 天前
    @bigfei 试了一下还是不太行。而且虽然 Oracle 提供的 VPN 是热备,但是在线率还是很堪忧。一段时间之后甚至完全不通。遂放弃。看来目前要过墙,要么实名过墙,要么就是用各种抗审查的工具了。
    moonc5914
        8
    moonc5914  
    OP
       224 天前
    @YahWx 可以用各种三方的工具,[Oracle 官方的说明]( https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/configuringCPE.htm)中有一些配置样例。例如 swan 系的 strongstan 、libreswan 、openswan ,以及各种硬件防火墙:思科、Juniper 、NEC 、雅马哈之类的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3028 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 08:28 · PVG 16:28 · LAX 01:28 · JFK 04:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.