linux查询ip地址

 人参与 | 时间:2026-10-17 06:51:08

linux查询ip地址

ip addr show 这条命令,我用了十年才真正看懂它。刚接触Linux那会儿,我总记不住这命令,因为Windows下查IP就是ipconfig,干净利落。Linux下呢?你得先敲ip addr,然后屏幕上刷出一堆以数字编号开头的段落,lo、eth0、ens33,看着就头大。

后来我明白了,这堆输出里藏着Linux的网络哲学。每个网卡都是一个独立的网络接口,拥有自己的配置和状态。lo是回环接口,永远指向本机,IP固定是127.0.0.1。真正干活的是后面的物理接口,名字可能叫eth0、enp3s0或者wlp2s0,取决于你的硬件和发行版。

查IP最直接的方式就是:ip addr show。输出里找到那个物理接口,看inet后面的数字。比如inet 192.168.1.100/24,斜杠后面是子网掩码的简写,24代表255.255.255.0。就这么简单。但如果你只想看某个接口,可以精确指定,比如ip addr show eth0,输出会干净很多。

老派一点的命令是ifconfig,很多教程还在教这个。ifconfig确实直观,但早就不维护了,而且有些新系统压根没装net-tools包。我见过一个生产服务器,ifconfig输出去找不到IP,急得运维满头汗,最后发现是没装工具包。所以,用ip命令吧,它是iproute2套件的一部分,所有现代Linux发行版默认都有。

还有个场景你得知道——服务器上配置了多个IP,或者有虚拟接口。这时候ip addr show输出会很长,每个接口下可能挂着好几个inet行。别慌,用ip -4 addr show只看IPv4,或者ip -6 addr show只看IPv6。要是想快速拿到某个接口的IP,用awk或者grep过滤一下也行,比如ip addr show eth0 | grep inet | awk '{ print $2}',直接输出IP/掩码,省得肉眼找。

我工作中经常要写脚本去拿本机IP,最稳的方式是hostname -I,这命令直接输出所有非回环接口的IP,空格分隔,干净利落。但注意,它不区分IPv4和IPv6,如果你只要IPv4,得配合hostname -I | awk '{ print $1}'或者用ip -4 addr show | grep -oP '(?<=inet\s)\d+(\.\d+){ 3}'这类正则去抓。说实话,正则写多了头疼,但偶尔用一次还挺爽。

还有个坑得提醒你,有些云主机默认开了DHCP,IP是动态分配的。你查到的IP可能过几天就变了。这时候别慌,去查ip route看默认网关,或者cat /etc/resolv.conf看DNS,这些信息能帮你定位网络配置问题。

最后说个我踩过的雷。有次在容器里查IP,用ip addr show居然报错,说找不到命令。容器镜像为了省空间,可能没装iproute2。这时候用cat /etc/hosts或者hostname -i凑合着看,但最靠谱的是装个iproute2,一条apt install iproute2或者yum install iproute就解决了。别像我一样,当时在容器里折腾了半天,最后发现是基础镜像太精简。

说白了,查IP这事儿,记住ip addr show就够日常用了。剩下的,都是遇到具体问题时再翻手册的活儿。

顶: 973踩: 167