V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wujieyuan
V2EX  ›  程序员

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

  •  
  •   wujieyuan · 2020-07-20 15:11:59 +08:00 · 3232 次点击
    这是一个创建于 1599 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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