V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
wujieyuan
V2EX  ›  程序员

关于同内网下服务器域名的疑惑

  •  
  •   wujieyuan · Jul 20, 2020 · 4054 views
    This topic created in 2114 days ago, the information mentioned may be changed or developed.

    在腾讯云同一个局域网下, 一台服务器部署业务, 一台服务器部署数据库, 两台服务器都有外网 ip, 数据库外网 ip 使用域名解析, 我直接在业务服务器上 ping 数据库的域名,延迟很低, 说明直接通过内网访问的. 所以我有个疑问, 业务系统中是否可以直接使用域名连接数据库, 不必区分内网 /外网地址, 这样开发部署的时候都很省事. 但是我发工单问腾讯云的客服, 他们说用外网域名 /ip 就走的外网,不会走内网, 有点搞不懂了.

    27 replies    2020-07-23 22:43:31 +08:00
    Oktfolio
        1
    Oktfolio  
       Jul 20, 2020
    我直接在业务服务器上 ping 数据库的域名,延迟很低, 说明直接通过内网访问的

    延迟低怎么就得出“直接通过内网访问的”这个结论的?
    sha4yu
        2
    sha4yu  
       Jul 20, 2020
    可以用 traceroute 或者 besttrace 确认下网络路由路径
    wangritian
        3
    wangritian  
       Jul 20, 2020
    外网域名解析到外网 ip,实际访问一定走外网
    你提到“这样开发部署的时候都很省事”,难道你开发线上用的都是这台数据库?
    wujieyuan
        4
    wujieyuan  
    OP
       Jul 20, 2020
    @Oktfolio 测试出来的啊, 其他不在同一局域网下的域名延迟 10ms+, 但是同内网下是 1ms 以内, 基本可以确定
    wujieyuan
        5
    wujieyuan  
    OP
       Jul 20, 2020
    @wangritian 个人项目, 为了省事和省钱, 就一台数据库
    wujieyuan
        6
    wujieyuan  
    OP
       Jul 20, 2020
    @sha4yu 好的,谢谢, 我测试看看
    opengps
        7
    opengps  
       Jul 20, 2020
    “ping 数据库的域名,延迟很低, 说明直接通过内网访问的”。这个结论真的不准,最起码你 ping 一个大包才多少有点说服力
    我可以给你举个实际测试过的例子,同为联通线路,我在一楼的独立联通入户网络,ping 三楼的独立联通入户网络。ping 结果为 6ms
    monsterxx03
        8
    monsterxx03  
       Jul 20, 2020
    你 dig 下那个域名,看解析出来的是内网 ip 还是外网 ip 不就知道了..哪有用 ping 来判断的
    wujieyuan
        9
    wujieyuan  
    OP
       Jul 20, 2020
    @opengps 这个不用杠了, ping 我敢肯定是走内网的, 因为我测试的机器都是腾讯云的, 根据经验 1ms 内绝对是走的内网, 但是我不确定数据库连接是不是走的内网
    aihimmel
        10
    aihimmel  
       Jul 20, 2020 via Android
    楼上都说了叫你 traceroute 一下
    CodeCodeStudy
        11
    CodeCodeStudy  
       Jul 20, 2020   ❤️ 1
    修改业务服务器的 /etc/hosts,把数据库服务器的域名指向其内网 IP
    wujieyuan
        12
    wujieyuan  
    OP
       Jul 20, 2020
    @CodeCodeStudy 厉害了, 这个确实是个非常好的办法
    Astralis
        13
    Astralis  
       Jul 20, 2020
    https://s1.ax1x.com/2020/07/20/UhIh4A.png
    https://s1.ax1x.com/2020/07/20/UhIWAH.png
    https://s1.ax1x.com/2020/07/20/UhIfNd.png
    刚用腾讯云试了一下 ping 内网 ip 和外网 ip 延迟是有点区别的,ping 外网 ip 走的也不是内网 ip
    byzf
        14
    byzf  
       Jul 20, 2020   ❤️ 1
    我记得 go 里有个库, 要加一个 /etc/nsswitch.conf 才会去用 hosts... 我曾经被恶心过一次.

    总之 ping 的, dig 的, 你所使用的网络库最后解析出来的 ip, 都可能是不一样的...

    一般都会把内网域名加到 hosts 的. 或者你内网自己弄个 dns. 否则内网的 https 的 api, 没法用 ip 地址请求.
    opengps
        15
    opengps  
       Jul 20, 2020   ❤️ 2
    @wujieyuan 既然我这算杠,那我就不评论了,楼层里有人告诉你判断内外网的方法了
    XiaoxiaoPu
        16
    XiaoxiaoPu  
       Jul 20, 2020   ❤️ 1
    @opengps 哈哈,心疼。

    访问外网 IP,至少要走到机房的外网超级核心的,只不过从外网超级核心直接又走回到内网超级核心了,网络包没有出机房,当然 ping 的延迟很低。但是毕竟走了外网超核,外网带宽、外网流量肯定要算的。
    yelocat
        17
    yelocat  
       Jul 20, 2020
    /etc/host 解决问题
    hulushangxian
        18
    hulushangxian  
       Jul 20, 2020
    @opengps 心痛
    goodryb
        19
    goodryb  
       Jul 20, 2020
    所以没人提醒一下楼主,为何数据库会暴露在外网呢

    一般原则
    1 、应用与数据库部署在同一台机器上,数据库应该监听 127.0.0.1
    2 、应用与数据库分开独立部署的,数据库应该监听内网地址
    wujieyuan
        20
    wujieyuan  
    OP
       Jul 20, 2020
    @goodryb 个人项目, 省钱方便为主
    goodryb
        21
    goodryb  
       Jul 20, 2020
    @wujieyuan #20 恩。

    不过建议数据库还是不要暴露在外网,如果不加防火墙规则或者白名单,爆破是早晚的事
    Tink
        22
    Tink  
    PRO
       Jul 21, 2020 via iPhone
    延迟很低就是走内网?
    xmr68yahoo
        23
    xmr68yahoo  
       Jul 21, 2020 via iPhone   ❤️ 1
    直接改 hosts
    你这个情况标准的 端口回流
    小于 1ms 不代表不计费
    locoz
        24
    locoz  
       Jul 21, 2020 via Android   ❤️ 1
    所以你是为了使用域名同时在外网和内网访问对应的服务?各类云应该都有提供内网 DNS 功能吧,直接用那个内网 DNS 设置个内网 IP,顶掉原先的外网 IP 就好了。设置完之后内网设备走内网,外网设备走外网,没有任何影响。
    如果没有提供这种功能的话,就 hosts 或者自己用 dnsmasq 搭一个都可以,看你需不需要考虑后续的扩展性。

    访问外网 IP 是一定走的外网的,延迟低只能说明人家机房做了回流,也就是封包走到外层交换机之后,交换机发现是个内网设备,就又给你送回来了。
    wujieyuan
        25
    wujieyuan  
    OP
       Jul 21, 2020
    @locoz 嗯, 用 hosts 可以完美解决我的需求
    z5864703
        26
    z5864703  
       Jul 21, 2020
    楼主没有基本网络知识,路由和交换机怕是都不知道干嘛用的,还理直气壮怼人,厉害了
    楼上很多都说出答案了,ping 只能代表网络链路延迟,和是否内外网以及数据包路径没半毛钱关系
    wakzz
        27
    wakzz  
       Jul 23, 2020
    楼主用一下 traceroute 命令,看一下请求域名的报文经过的路由就知道有没有走公网了。像阿里云下的主机域名,被其他阿里云主机请求时,实际上并没有走公网,报文仅在阿里云内部网络传输。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1204 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 85ms · UTC 17:12 · PVG 01:12 · LAX 10:12 · JFK 13:12
    ♥ Do have faith in what you're doing.