V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
thehorizon
V2EX  ›  问与答

公司内网如何访问阿里云内网?

  •  
  •   thehorizon · 2022-05-31 20:12:03 +08:00 · 1931 次点击
    这是一个创建于 936 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们希望公司内网( 10.0.0.0/8 )能够访问 阿里云内网( 172.16.0.0/12 ,100.64.0.0/10 )实现连通。 这样可以关闭服务器的外网端口提高网络的安全性。

    目前的解决方案是在公司出口路由(命名为 Router01 ), 以及某一台云主机(命名为 ECS01 )上面配置了 Wiregaurd 通过 NAT 方式实现阿里云的访问。

    大致的拓扑结构如下

    公司内网( 10.0.0.0/8 ) => Router01 =Wireguard=> ECS01 => 172.16.0.0/12 或 100.64.0.0/10

    目前可以做到 10.0.0.0/8 访问 172.16.0.0/12 , 但无法访问 100.64.0.0/10 网段的主机。

    已知如下信息:

    1. 172.16.0.0/12 为 ECS 主机网段,而 100.64.0.0/10 为阿里云内部服务的网段(比如容器镜像服务,OSS 服务等等)。
    2. 我们在配置的时候对二者并没有刻意区分, 但一个网段可以访问一个不行。
    3. ECS01 这台接入的主机可以正常访问 100.64.0.0/10 网段,ping 是通的
    4. 公司内网主机 ping 100.64.0.0/10 不通, 但是在 ECS01 上面 tcpdump 抓包可以看见正常的请求以及响应包

    请问可能是什么原因导致的?

    第 1 条附言  ·  2022-06-01 19:27:06 +08:00
    感谢各位大佬的帮助, 统一回复一下,问题 已经找到了。

    大致的连接方式如下:
    公司内网( 10.0.0.0/8 ) => Router01 =Wireguard=> ECS01 => 172.16.0.0/12 或 100.64.0.0/10

    我们是在 ECS01 上面 SNAT , 因此不需要配置路由表。
    根据抓包的结果,100 网段有一部分数据包明确标注禁止分片( Don't Fragment ), 然而 WG 此时会报错 Destination Unreachable ( Fragmentation needed )。


    这就会导致一些诡异的问题, 比如有时候 telnet 可以连接, 一旦发起 https 请求就失败了。

    总结:问题出在 MTU 上面
    11 条回复    2022-06-01 19:22:46 +08:00
    cpstar
        1
    cpstar  
       2022-05-31 20:17:04 +08:00
    不是 ali ,别的网络结构,使用了 GRE 隧道
    sujin190
        2
    sujin190  
       2022-05-31 20:53:05 +08:00
    路由表都配置了么?公司内网是你们控制的所以可以在网关统一配置路由表,但是阿里云这边不行了,除非你们在每台机器上都设置路由表,否则除了搭建 Wireguard 的机器其他都通不了,ecs 还好,rds 这种就完全不行了

    另一种配置就是设置 nat ,源地址重写,Router01 出 Wireguard 网卡时重写来源地址为 Wireguard 网卡 ip ,ECS01 来自 Wireguard 的重写源地址为 ECS01 阿里云给的内网 ip ,这样就可以无需设置路由表就可以从公司访问阿里云所有网段了,从阿里云访问公司内网则倒过来设置即可

    另外估计买阿里云提供的 vpn 服务估计就可以靠路由表配置来完成了
    s609926202
        3
    s609926202  
       2022-05-31 21:21:25 +08:00 via iPhone
    zerotier 组个网
    thehorizon
        4
    thehorizon  
    OP
       2022-05-31 22:05:00 +08:00 via iPhone
    @sujin190 我们就是在 ECS01 上面配置的 NAT 。按照道理只要 ECS01 可以访问 100 的地址,那么隧道也可以访问 rds 。

    我们在公司内网 ping oss 内网 ip ( 100 开头的)在 ECS01 上面抓包,看到的现象也是 NAT 成功了

    可奇怪的是这个包就是回不到公司内网
    sujin190
        5
    sujin190  
       2022-05-31 22:41:43 +08:00 via Android
    @thehorizon 那估计还是 nat 配置的问题,否则不大可能回不来,nat 之后 100 的网断也不能知道你来自隧道的吧
    luoshengdu
        6
    luoshengdu  
       2022-05-31 22:54:39 +08:00
    @thehorizon 你可以反过来试试, [100.64.0.0/10 为阿里云内部服务的网段(比如容器镜像服务,OSS 服务等等) ] 这些机器上面 ping 到你的公司内网

    我感觉是 100.64 的远端(阿里)那边收到了 ping 包,回不来。 就是远端的过来公司的路由有问题
    nealwx
        7
    nealwx  
       2022-05-31 23:06:06 +08:00 via Android
    听起来是阿里服务回来的路由问题,因为阿里服务不知道 10.x.x.x 是你本地服务器,这边要在你的 172.16.x.x 上给 100.64.x.x 做一层 nat 才行
    yaoyao1128
        8
    yaoyao1128  
       2022-05-31 23:08:28 +08:00 via iPhone
    ecs01 上面有没有配置公司网段 ip 的路由?
    vmebeh
        9
    vmebeh  
       2022-05-31 23:18:27 +08:00 via iPhone
    ecs01 上 wg 接口开了 forward 和 masquerade 吗
    killva4624
        10
    killva4624  
       2022-06-01 10:29:57 +08:00
    以前用过阿里云的 IPsec VPN ,楼主可以考虑下。
    https://www.alibabacloud.com/help/zh/vpn-gateway/latest/overview-of-ipsec-vpn
    thehorizon
        11
    thehorizon  
    OP
       2022-06-01 19:22:46 +08:00
    @killva4624 太贵了, 还不如自己弄一个简单的, 公司规模目前对稳定性要求没有到这个地步
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5988 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 03:03 · PVG 11:03 · LAX 19:03 · JFK 22:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.