扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
查找主机。
创新互联是专业的蜀山网站建设公司,蜀山接单;提供成都做网站、网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行蜀山网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
ls:用来显示指定目录下的内容,列出指定目录下所含的文件及子目录。host命令是常用的分析域名查询工具,是一个DNS查找实用程序,用于查找域名的IP地址。
lshost是linux的常用通配符号,用途代码查询。
域名查询(Domain Name Query)在Linux上的执行主要由glibc库函数 gethostbyname 与 gethostbyaddr 来完成,通过 strace 跟踪可知 gethostbyname 的执行流程如下:
注:关于DNS与 dig 命令的介绍请阅读 阮一峰 老师的文章 DNS原理入门 。
先介绍下我的系统环境:
在 没有 配置 nscd 的服务器上,用 strace 追踪 gethostbyname ,其大致流程摘录如下(省略的部分用 ...... 表示)。库函数 gethostbyname 的使用可参考 该页面 。
要想查看某个程序是否调用 gethostbyname ,只需用 ltrace 命令跟踪一下查看其库函数调用即可:
注:在 man gethostbyname 中有一句:
笔者所在公司的服务器上并没有配置 nscd ,但笔者的阿里云个人服务器上却默认配置了 nscd 。从 man nscd 摘录如下:
Linux服务器上一般都会配置 dnsmasq 服务,用于缓存DNS请求结果,节省应用程序的域名解析时间。笔者的笔记本 Ubuntu 16.04 LTS 也默认配置了 dnsmasq ,同样笔者的 macOS Sierra 上也默认有一个叫 mDNSResponder 的服务。 dnsmasq 简介如下:
dnsmasq 通常会绑定本地 127.0.0.1:53 ,假设配置的DNS服务器是Google Public DNS,则 dnsmasq 的配置 /etc/dnsmasq.conf 一般如下:
这样, /etc/resolv.conf 的配置如下。注意第一项 nameserver 是本地IP 127.0.0.1 ,也就利用上了 dnsmasq 的DNS缓存功能。
网络上广泛使用的DNS服务器通常是 bind ,简介如下:
用 strace 追踪可知, dig 命令是通过读配置文件 /etc/resolv.conf ,然后向其中列出的DNS服务器发出DNS请求。
在日常开发和学习中,遇到问题或对某个东西感到疑惑的时候,对程序进行调用跟踪和对网络进行抓包,是非常有效的分析方式。
用 strace 来跟踪系统函数调用,细节请参考 man strace 。
用 ltrace 来跟踪库函数调用,细节参考 man ltrace 。
用 wireshark (GUI)、 tshark 、 tcpdump 来进行网络抓包,细节参考各自的 man 说明页。
更加强大和复杂的动态追踪技术,请参考 SystemTap 和DTrace( DTrace for Linux 2016 , wikipedia ),我还没尝试过。还可以阅读大神章亦春(春哥)写的文章 动态追踪技术漫谈 。
直接使用命令hostname,查看本机的主机名,\x0d\x0a配置文件在/etc/sysconfig/network下的HOSTNAME项,修改后重启,方能起效。\x0d\x0a\x0d\x0a主机名静态查询表:/etc/hosts 对应IP和域名\x0d\x0a这里稍微解释一下主机名(hostname)与域名(domain)的区别:主机名通常在局域网内使用,通过hosts文件,主机名就可以解析到对应的IP上;域名通常是在internet上使用,通过公网的DNS来解析。
实际工作或者维护过程中常常需要通过域名反查下其对应的IP地址。解决方法有多种,既可以通过网上提供的域名反查IP查询工具查询,也可以在 Linux系统 中通过命令进行查询。
本教程主要讲解如何在Linux系统中通过命令查看域名对应的IP地址,主要讲解以下5个命令:
dig命令它是一个功能强大且灵活的命令行工具,用于查询 DNS 名称服务器。它执行 DNS 查询,并显示来自查询的名称服务器的返回信息。大多数 DNS 管理员使用 dig 命令来解决 DNS 问题,因为它灵活、易用且输出清晰。
如何使用 dig 命令查找域的 IP 地址呢?看示例:
输出:
当然如果你需要一次查询多个域名的IP地址,可以通过将多个域名信息放到一个文本文件中,每行一个,然后编写shell脚本进行读取文件然后循环批量查询输出。
shell脚本命令类似如下:
host 命令可用于执行 DNS 查询。它通常用于将名称转换为 IP 地址,反之亦然。如果未提供任何参数或选项, host 将打印它的命令行参数和选项摘要。
输出:
同理,可以通过编写shell脚本实现批量查询,示例如下:
nslookup 命令是一个用于查询互联网域名服务器(DNS)的程序。
nslookup 有两种模式,分别是交互式和非交互式。交互模式允许用户查询名称服务器以获取有关各种主机和域的信息,或打印域中的主机列表。非交互模式用于仅打印主机或域的名称和请求的信息。
它是一个网络管理工具,可以帮助诊断和解决 DNS 相关问题。命令示例如下:
输出:
同理,使用以下 bash 脚本查找多个域的 IP 地址
fping 命令是类似 ping 之类的程序,它使用互联网控制消息协议(ICMP)echo 请求来确定目标主机是否响应。
fping 与 ping 不同,因为它允许用户并行 ping 任意数量的主机。另外,它可以从文本文件输入主机。
fping 发送 ICMP echo 请求,并以循环方式移到下一个目标,并且不等到目标主机做出响应。
如果目标主机答复,那么将其标记为活动主机并从要检查的目标列表中删除;如果目标在特定时间限制和/或重试限制内未响应,那么将其指定为不可访问。
fping命令程序并不默认安装在 Linux发行版 中,一般需要进行安装,常见的发行版安装命令如下:
Ubuntu / Debian / LinuxMint
Fedora / CentOS / RHEL
fping默认使用示例:
输出:
更多关于fping的使用方法可以通过在终端中键入 man fping 来学习。
ping 命令(数据包互联网抓手Packet Internet Groper)是一个网络程序,用于测试 Internet 协议(IP)网络上主机的可用性/连接性。
ping命令通过向目标主机发送互联网控制消息协议(ICMP)Echo 请求数据包并等待 ICMP Echo 应答来验证主机的可用性。
它基于发送的数据包、接收的数据包、丢失的数据包,通常包含最小/平均/最大时间来汇总统计结果。
命令示例:
输出:
我们可以看到输出内容中起对应的IP地址,如果需要过滤输出,增加更多相应的命令处理:
输出:
以上内容为在 Linux系统 中使用5个命令来获取域名对应的IP地址。建议你可以在自己的服务器或者自己的Linux同上进行尝试,也可以通过编写shell脚本进行批量处理或通过相应的命令对输出进行处理输出自己想要的内容。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流