刚接手一台Linux服务器,第一件要确认的事往往是IP地址,不管是配置远程连接、部署服务,还是排查网络故障,命令行里一条指令就能得到答案。查Linux服务器IPv4地址最直接的方式是执行 ip addr,从输出里找到网卡名对应的 inet 字段,斜杠前的数字就是你要的IPv4地址。
linux查看ip地址命令有哪些
Linux系统里查IP的老牌命令和新派命令各占半壁江山,如果你问一个老运维,他大概率会甩给你一句 ifconfig;但你要是看官方文档或最新教程,ip 命令才是这个时代的主流,这两条命令测出来的结果完全一致,区别在于输出格式和安装情况。
| 命令 | 输出特点 | 适用场景 |
|---|---|---|
| ip addr | 清晰分段,网卡信息集中,带颜色 | 主流Linux发行版默认自带 |
| ifconfig | 信息简洁直观,老运维习惯用 | 部分精简系统需先安装net-tools |
| hostname -I | 只打印IP,不带任何干扰信息 | 适合脚本调用和快速确认 |
| ip route | 显示路由表,从默认网关反推网段 | 排查多网卡路由问题时使用 |
绝大多数场景下,用 ip addr 就够了,命令不存在的情况偶尔也会遇到,那多半是系统做了最小化安装,后面会展开说对应的处理办法。
用ip addr和ifconfig看IP:认准inet字段
先跑一遍最常见的 ip addr,看输出是长什么样的。
网卡名那一行下面,会跟着一串物理地址(MAC)和两行协议地址,IPv4对应的就是 inet 这一行,IPv6则是 inet6,假如服务器是云主机或虚拟机,你还会看到 lo 这个虚拟网卡,对应的IP永远是 0.0.1,那是环回地址,代表“本机自己”,不是服务器对外提供服务的IP。
实际服务器上,网卡名一般是
eth0、ens33、eno1,或者云厂商自定义的名字比如 ens5、eth1,系统版本不同、物理机还是虚拟机不同,网卡名不会完全一样,所以别死记网卡名,认准 “后面跟着IP的那个” 就行。
$ ip addr
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
link/ether 00:0c:29:7a:4b:5e brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global ens33
168.1.100/24 里的 168.1.100 就是这台服务器的IPv4地址,/24 表示子网掩码,如果只想看IPv4,用 ip -4 addr 能把IPv6信息过滤掉,看着更干净。
ifconfig 的用法更简单,如果你是CentOS 6时代走过来的老运维,这套肌肉记忆早就刻在骨子里了,直接在终端敲:
$ ifconfig
输出里同样是找 inet 字段注意,老版本ifconfig输出里 inet 后面就是IP,即使没有 /24 这种前缀,那一串数字也认得出来。
linux查ip提示command not found的应急方案
有些服务器为了安全或精简资源,安装系统时装的是最小化版本,这类系统里没有 ifconfig,甚至连 ip 命令都未必有,报错画面很有代表性:
$ ifconfig bash: ifconfig: command not found
多数时候只缺 ifconfig,而 ip 命令还在,某些云镜像甚至把ip命令也瘦身掉了,这时候分两步走。
系统里还有 ip 的情况下,直接执行:
$ ip addr $ ip route
ip route 的输出里能看到 default via 192.168.1.1 dev ens33,via 后面是网关地址,dev 后面是网卡名,结合这两个信息,也能确定这台机器所在的内网网段。
如果连 ip 都不存在,先用 hostname -I 顶一阵子:
$ hostname -I 192.168.1.100
这条命令只输出IP地址,不加网卡名、不带子网掩码,干净利落,你要是写自动化脚本批量采集服务器IP,这条命令比 ip addr 更适合,因为输出格式固定,方便程序处理。
应急方案解决之后,建议顺手把工具装齐。CentOS系用 yum install -y net-tools iproute,Ubuntu和Debian系用 apt install -y net-tools iproute2。 装上之后 ifconfig、ip 就都能用了,顺便提一嘴:国内不少公司还在用CentOS 7,CentOS查看IP地址的命令和本文完全通用,按这套操作走不会踩坑。
分清内网IP和公网IP:查到的地址能用在哪
很多人查完IP,发现自己用的远程工具连不上,怀疑是不是查错了,这里边有个常见误会:ip addr 查出来的,绝大多数情况是内网IP,而不是公网IP。
云服务器厂商(简米云、酷番云、华为云等等)的默认网络架构里,公网IP是做在网关设备上的,服务器网卡上只能看到内网IP,比如你买了一台带公网IP的云主机,远程连接软件里填的是 0.0.8,但登录服务器执行 ip addr,看到的却是 16.0.5,这是正常的,不是服务器出故障。
判断方法很简单:
- 以 、
16.到31.、168.开头的IP是内网地址,企业内部局域网、云主机VPC网络都属于这一类。 - 其他不在上述范围的公网可路由IP,才是真正对互联网开放的公网地址。
服务器要对外提供服务,靠的是公网IP或云平台的端口转发,机房物理机一般有独立公网IP,ip addr 查出来的就是全球唯一地址,云服务器则要区分这两种IP,内网IP用于服务器之间的私网互通,公网IP用于用户从互联网访问,两者用途完全不同。
想确认服务器出口用的是哪个公网IP,一条命令就能达成:
$ curl ifconfig.me
这个接口会返回出口网关的公网IP,如果你所处的网络环境有NAT(很多办公网络和云主机都是),返回结果和 ip addr 里的内网IP自然对不上,业内的通用做法是:查内网IP用本机命令,查公网IP用外部接口。
linux服务器ipv4地址怎么查最稳
结合以上操作,最稳妥的组合是先用 ip addr 确认网卡和内网IP,再用 curl ifconfig.me 确认公网出口IP,两步都做完,服务器地址信息就完整了,只关心内网IP就执行 hostname -I,一步到位。
查到的IP地址和远程连接的地址不一样是怎么回事
这问题在云服务器上尤其常见,远程连接软件里填的IP,是云控制台显示的“公网IP”,这是云平台通过NAT网关映射出来的地址;服务器内部直连网卡,看到的只有私网IP,想验证也不难:关闭服务器上的服务,再用公网IP从外部访问,如果访问不通,基本能断定是NAT模式。
ifconfig和ip addr输出结果不一样该信哪个
两条命令读的是同一份内核网络配置,正常情况下结果一定一致,如果显示不一样,大概率是网卡没拿到IP,或者存在多网卡,而你只看了一个网卡的输出,检查一下有没有加载了多个网卡驱动,以及是否是DHCP还没下发到地址,多数情况下,重启网络服务就能解决:
$ systemctl restart network
Ubuntu/Debian系统的网络服务名可能是 networking,写法类似,命令执行完毕再跑一遍 ip addr,IP地址通常就正常了。
查IP是Linux运维的基本功,也是排查网络问题的起点。ip addr 看 inet 字段,配一条 hostname -I 做备份,这套方法能应对绝大多数查IPv4地址的需求。 服务器换了一台又一台,命令技能不会变,积累下来的判断能力才值钱。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/696601.html





