AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 563544
Accepted
Adrián Jaramillo
Adrián Jaramillo
Asked: 2020-01-23 14:59:54 +0800 CST2020-01-23 14:59:54 +0800 CST 2020-01-23 14:59:54 +0800 CST

`/etc/hosts` 中同一主机的不同 IP:hostName 映射。为什么这行得通?

  • 772

我的场景

我的相关条目/etc/hosts(我按照您在此处看到的相同顺序编写它们)

172.22.5.107    www.wordpress-rend-adri.com
192.168.1.116   www.wordpress-rend-adri.com

我在家里和学校使用笔记本电脑,因此我总是处理 2 个地址空间:

  • 192.168.1.0/24
  • 172.22.0.0/16

所以我有这些条目,因为我有一个带有 Wordpress 的虚拟机来做练习。这样,无论我在哪里,我都可以访问我的 Wordpress(只要 DHCP 显然在两个网络中为我提供了相同的 IP)

我的问题

知道了这一切,现在我可以告诉你,我刚刚在我的配置中进行了该配置,/etc/hosts因为一位老师对我说,我只能有 1 条记录用于指向单个 IP 的名称。他对我说,如果我有一个同名的双寄存器,它总是取第一个,然后停止。但他也对我说我应该试试,所以我做了。

现实情况是,例如在我家(我正在使用的地方192.168.1.0/24),即使第一条记录是针对其他 IP 的,我仍然可以建立连接,并且当我 ping 名称时,正确的 IP 会回答我。是的,我确实试图完全确定这一点,我在一个隐身的 Firefox 窗口中做了,我还尝试评论我家的 IP 行以检查发生了什么。

然后,我尝试交换这两个记录。我的意思是,我只是这样做了:

192.168.1.116   www.wordpress-rend-adri.com
172.22.5.107    www.wordpress-rend-adri.com

所以在这种情况下,显然它仍然有效。

而当我上学时,使用其他地址空间时也发生了同样的情况。

所以...
_/etc/hosts

¿ 在进行最终连接之前,firefox、ping二进制文件或您使用的任何东西是否会进行名称解析的内部过程以检查实际有效的条目是什么?
我问这个是因为例如使用ping,您刚开始从有效的 IP 获得答案。您不会遇到连接失败的情况,例如尝试连接到其他以前的 IP

ping hosts
  • 2 2 个回答
  • 176 Views

2 个回答

  • Voted
  1. roaima
    2020-01-28T05:57:10+08:002020-01-28T05:57:10+08:00

    考虑当你有这些条目时/etc/hosts,

    172.22.5.107    www.wordpress-rend-adri.com
    192.168.1.116   www.wordpress-rend-adri.com
    

    过去,查找www.wordpress-rend-adri.com将(最多)只返回匹配的第一行中的条目,即172.22.5.107在这种情况下。

    在(某些)现代 Linux 发行版上发生的情况是扫描整个/etc/hosts文件以查找匹配项,您不仅会172.22.5.107得到192.168.1.116.

    这让我很惊讶。

    (事实上​​,我已经写了一个完整的答案来证实你老师的观点,只是当我实际测试它时发现它不再正确。)

    1. 查找www.wordpress-rend-adri.com将返回172.22.5.107 并 192.168.1.116
    2. 查找172.22.5.107将返回www.wordpress-rend-adri.com
    3. 查找192.168.1.116将返回www.wordpress-rend-adri.com

    演示,假设这两条记录在本地/etc/hosts

    grep hosts /etc/nsswitch.conf
    hosts:          files dns
    
    tail -n2 /etc/hosts
    192.168.1.116   www.wordpress-rend-adri.com
    172.22.5.107    www.wordpress-rend-adri.com
    
    getent hosts www.wordpress-rend-adri.com
    192.168.1.116   www.wordpress-rend-adri.com
    172.22.5.107    www.wordpress-rend-adri.com
    
    getent hosts 172.22.5.107
    172.22.5.107    www.wordpress-rend-adri.com
    
    getent hosts 192.168.1.116
    192.168.1.116   www.wordpress-rend-adri.com
    

    我推测您可以在任一上下文中使用任一地址的原因是您的 Web 浏览器等正确地尝试了集合中的每个可能的 IP 地址(即172.22.5.107和192.168.1.116),直到它获得成功的连接。

    • 1
  2. Best Answer
    Philippe
    2020-01-28T09:49:02+08:002020-01-28T09:49:02+08:00

    我在我的 debian/wsl 上做了一些测试

    ~$ uname -a
    Linux DESKTOP-OMM8LBC 4.4.0-17763-Microsoft #864-Microsoft Thu Nov 07 15:22:00 PST 2019 x86_64 GNU/Linux
    
    # /etc/hosts
    172.22.5.107   www.wordpress-rend-adri.com # Unreachable IP from my LAN
    216.58.198.164 www.wordpress-rend-adri.com # IP for www.google.com
    192.168.0.12   www.wordpress-rend-adri.com # IP for another running machine on my LAN
    157.240.1.35   www.wordpress-rend-adri.com # IP for www.facebook.com
    
    ~$ ping www.wordpress-rend-adri.com
    PING www.wordpress-rend-adri.com (192.168.0.12) 56(84) bytes of data.
    64 bytes from www.wordpress-rend-adri.com (192.168.0.12): icmp_seq=1 ttl=64 time=49.9 ms
    64 bytes from www.wordpress-rend-adri.com (192.168.0.12): icmp_seq=2 ttl=64 time=5.85 ms
    64 bytes from www.wordpress-rend-adri.com (192.168.0.12): icmp_seq=3 ttl=64 time=5.58 ms
    64 bytes from www.wordpress-rend-adri.com (192.168.0.12): icmp_seq=4 ttl=64 time=6.25 ms
    64 bytes from www.wordpress-rend-adri.com (192.168.0.12): icmp_seq=5 ttl=64 time=6.19 ms
    --- www.wordpress-rend-adri.com ping statistics ---
    5 packets transmitted, 5 received, 0% packet loss, time 9ms
    rtt min/avg/max/mdev = 5.575/14.754/49.919/17.584 ms
    

    因此ping选择了放置在两个工作 WAN IP 之间的本地 IP。

    第二次测试:

    /etc/hosts
    172.22.5.107   www.wordpress-rend-adri.com # Unreachable IP from my LAN
    216.58.198.164 www.wordpress-rend-adri.com # IP for www.google.com
    #192.168.0.12   www.wordpress-rend-adri.com # IP for one running machine on my LAN
    157.240.1.35   www.wordpress-rend-adri.com # IP for www.facebook.com
    
    ~$ ping www.wordpress-rend-adri.com
    PING www.wordpress-rend-adri.com (172.22.5.107) 56(84) bytes of data.
    # Stuck here
    
    

    第三次测试:

    /etc/hosts
    #172.22.5.107   www.wordpress-rend-adri.com # Unreachable IP from my LAN
    216.58.198.164 www.wordpress-rend-adri.com # IP for www.google.com
    #192.168.0.12   www.wordpress-rend-adri.com # IP for one running machine on my LAN
    157.240.1.35   www.wordpress-rend-adri.com # IP for www.facebook.com
    
    ~$ ping www.wordpress-rend-adri.com
    PING www.wordpress-rend-adri.com (216.58.198.164) 56(84) bytes of data.
    64 bytes from www.wordpress-rend-adri.com (216.58.198.164): icmp_seq=1 ttl=54 time=24.5 ms
    64 bytes from www.wordpress-rend-adri.com (216.58.198.164): icmp_seq=2 ttl=54 time=22.4 ms
    64 bytes from www.wordpress-rend-adri.com (216.58.198.164): icmp_seq=3 ttl=54 time=21.7 ms
    64 bytes from www.wordpress-rend-adri.com (216.58.198.164): icmp_seq=4 ttl=54 time=30.5 ms
    
    --- www.wordpress-rend-adri.com ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 7ms
    rtt min/avg/max/mdev = 21.734/24.768/30.457/3.440 ms
    
    

    第四次测试:

    /etc/hosts
    #172.22.5.107  www.wordpress-rend-adri.com # Unreachable IP from my LAN
    216.58.198.164 www.wordpress-rend-adri.com # IP for www.google.com
    192.168.0.12   www.wordpress-rend-adri.com # IP for one running machine on my LAN
    192.168.0.1    www.wordpress-rend-adri.com # IP for my router
    157.240.1.35   www.wordpress-rend-adri.com # IP for www.facebook.com
    
    ~$ ping www.wordpress-rend-adri.com
    PING www.wordpress-rend-adri.com (192.168.0.1) 56(84) bytes of data.
    64 bytes from www.wordpress-rend-adri.com (192.168.0.1): icmp_seq=1 ttl=64 time=1.56 ms
    64 bytes from www.wordpress-rend-adri.com (192.168.0.1): icmp_seq=2 ttl=64 time=1.35 ms
    
    --- www.wordpress-rend-adri.com ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 2ms
    rtt min/avg/max/mdev = 1.349/1.455/1.561/0.106 ms
    
    

    所以我的结论是ping不要一个接一个地尝试IP。它有利于路由器,本地IP而不是WAN IP。

    更新 :

    上面的 IP 选择通过以下 python 命令确认:

    python -c 'import socket;print(socket.gethostbyname("www.wordpress-rend-adri.com"))'
    
    • 1

相关问题

  • ping Raspbian 拉伸似乎忽略了 -w 选项

  • 如何在 Linux 中一直禁用 Ping 响应(ICMP 回显)?

  • /etc/hosts 没有阻止任何东西

  • ping:只显示结果

  • 为什么 ping 解析到与 traceroute 不同的地址?和猞猁?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve