跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 阿里云服务器与办公室内网无法通信,目测防火墙问题,该如何排查故障
未分類
11 3 月 2021

阿里云服务器与办公室内网无法通信,目测防火墙问题,该如何排查故障

阿里云服务器与办公室内网无法通信,目测防火墙问题,该如何排查故障

資深大佬 : minsheng 10

问题描述:

  • 阿里云上同一个 VPC 内,有两台 ECS 服务器,其中一台为自己搭的 VPN 网关
  • 办公室路由器通过 WireGuard 连接阿里云的 VPN 网关
  • 家里路由器亦通过 WireGuard 连接阿里云的 VPN 网关
  • 阿里云的网关 ECS 可以与办公室、家里的内网设备正常通信:
    • 可互 ping
    • 可互相访问 HTTP 服务、SSH 服务
    • 因此我判断路由表设置应该都是正确的。
  • 另一台 ECS 无法访问办公室内网设备。
  • 两台 ECS 处于同一 VPC 内,两个可用区,可互相通信。
  • 在 VPC 路由表内设置了办公室和家庭网络的内网地址块,下一跳设置为网关 ECS 。
  • 在另一台 ECS 内可以 ping 办公室的设备。
  • 办公室的设备不可以 ping ECS 的服务器。
  • 无法在 ECS 和 办公室设备内建立任何 TCP 连接。
  • 网关 ECS 的 iptables,FORWARD 表默认 ACCEPT,除了 Docker 也没有其他条目了。

两件比较离奇的事情:

  • 我在网关服务器上的 Docker 里开了一个子网,里面的 curl 可以访问另外一台 ECS 。
  • 在今天之前,办公室其实是可以和另一台 ECS 通信的。但是,上一次 setup 也曾经短暂出现过类似的现象,只不过在 VPC 路由表里添加了办公室路由条目后,过了几分钟自己就解决了。
  • 在出问题之前,我今天刚刚第一次购买了 RDS 实例一份,不知道有没有关系。

完全不懂 Linux 的小白一枚,想问问有没有什么办法可以排查故障?

大佬有話說 (17)

  • 主 資深大佬 : minsheng

    在办公室的路由器上 tracepath,能连接到网关服务器,拿到的是 VPN 里的地址,然后就统一 no reply 了。

  • 資深大佬 : Qetesh

    这种网络架构建议考虑 nat 或者在其他 ecs 启用 wireguard

  • 主 資深大佬 : minsheng

    @Qetesh 是有在考虑 NAT 了,不过还是想先排查一波问题。只有网关服务器有公网访问(最外面放了阿里云的 NAT 网关),所以每个 ECS 塞一个 WireGuard 感觉不太现实……

  • 資深大佬 : saytesnake

    按照这样的需求,NAT to NAT 才是正解。

    https://anyisalin.github.io/2018/11/21/fast-flexible-nat-to-nat-vpn-wireguard/

  • 資深大佬 : AIFNI45Mdxn

    排查方向:
    1 、首先需要对两端的网络环境检查下,是否有网段冲突,如果两段的网络有重叠,这个肯定是不行的。
    2 、第一个情况排除后,需要检查 两端 充当网关设备配置的路由是否 ok 。
    3 、两端的路由正常的话,一般就没有什么大问题的,就需要具体问题具体看了。

    两台同 VPC 的 ECS,一台创建了 Docker,容器内可以访问另外一台主机,这个是因为 ECS 之间路由、ECS 与容器的路由都是有的,肯定就可以通信。

  • 主 資深大佬 : minsheng

    @AIFNI45Mdxn
    谢谢。
    1. 网段全部都是我自己分配的,没有任何问题,阿里云是 172.X,公司是 10.X 。
    2. 公司端路由目测是没有问题,因为家里部署了一摸一样的系统,通过阿里云中转,家里和公司互相通信成功。阿里云里的网关本身的程序也可以访问公司内部。目前阿里云网关跑了一个 GitLab,在公司有一个 GitLab Runner,正常使用。以及两边都用 cURL 跑过,可以访问。
    3. 所以就难受了……

    关于 Docker,其实我是因为比较确信路由都是对的,所以才试了一下,但也不能说明什么。

  • 主 資深大佬 : minsheng

    我犯了一个错,我没有在 VPC 的路由表里添加 WireGuard 客户端的网段。我画一次我的网络拓扑图吧

  • 主 資深大佬 : minsheng

    现在阿里云内部设备可以访问公司的路由器了,算是进步

  • 資深大佬 : huangmingyou

    一层一层的 tcpdump 抓包

  • 資深大佬 : podel

    阿里云 VPC 设置静态路由表。 本地内网网段指向 VPN 网关。

  • 資深大佬 : podel

    我给我们公司就是这么配置的
    阿里云 VPC <-> VPN 网关(ECS,使用 OpenVPN Server) <-> 本地服务器(OpenWrt 系统,使用 OpenVPN Client)

    其中阿里云 VPC 需要设置 静态路由。 本地局域网设置静态路由。

  • 資深大佬 : podel

    对了 另外 使用的是 OpenVPN 的 TAP 设备做二层转发。 之前 TUN 设备路由上死活弄不过去。
    ECS 上面也要设置好 指向本地内网 静态路由。

  • 資深大佬 : zyzll1234

    因为公司防火墙上只能用 symetiric NAT 吧

  • 主 資深大佬 : minsheng

    @podel 我之前就是这么干的。我刚刚才发现一个问题,就是公司路由器不知道为什么自动的做了一次 NAT,我明明没有配置 NAT 。总之我的问题在把 VPN 网段(不是内网网段)加进 VPC 路由后得到了解决。但是不知道为什么阿里云非 VPN 服务器依然无法连接公司内网设备,虽然可以 ping 通。还要再试试。

  • 主 資深大佬 : minsheng

    Okay,公司内部的 NAT 我破案了,我是直接用 systemd-networkd 配置的,VPN + 路由,然后在对应的 LAN 网络上我直接开启了 IPMasquerade = true,也就是 SNAT 模式了。

    @podel 你说的 TAP 、TUN 、二层转发我还看不太懂,我自己再摸索摸索。

  • 主 資深大佬 : minsheng

    @saytesnake 谢谢老哥,最终懒得折腾了,还是走你的双 NAT 道路……

  • 主 資深大佬 : minsheng

    所以,大致破案了,总结一下。我的网络架构是:

    * 阿里云 VPC,公司内网路由到网关服务器 A ;
    * 网关服务器 A 通过 WireGuard 连接到公司 /家庭路由器;
    * 公司 /家庭路由器,对 LAN 的全部设备做了一层 NAT,NAT 背后是公司 /家庭的设备。这是通过 systemd-networkd 设置的,并没有根据目标地址 /设备选择性关闭。

    我犯了两个错误:

    * 我没有把 WireGuard 的网段添加到 VPC 的路由表里,导致从公司内部发出的被 NAT 的包(用的是 WireGuard 的 IP ),找不到回传的地址,所以无法建立从公司到 VPC 的连接。
    * 我没有对来自 VPC 的非网关服务器的包做 NAT 。我不知道为什么这会导致问题,但是反正它就是不能 work

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具