Linux 怎么查 IP?ip addr 和 ifconfig 的区别
新装的 CentOS 或者 Ubuntu 上敲 ifconfig,回一句 command not found。
不是命令错了,是这套工具已经被淘汰了。
ip addr 是现在该用的
ip addr
输出的每一段对应一张网卡。重点看两行:inet 后面跟着的是 IPv4 地址和掩码,state UP 说明这张卡是启用的。
只想要地址,用 ip -4 addr show,输出干净很多。
看某一张具体的卡:ip addr show eth0。网卡名现在多数是 ens33、enp0s3 这种,不确定就用 ip link 列出来。
ifconfig 还能用,但要装
老系统自带,新系统一般要装 net-tools:
yum install net-tools # CentOS
apt install net-tools # Debian/Ubuntu
输出比 ip addr 更简洁,习惯的人可以继续用。
两者读的是同一份内核信息,结果不会不一样,只是显示方式不同。
输出里哪些地址要忽略
127.0.0.1 是回环,自己跟自己通信用的。
inet6 开头的是 IPv6,别和 IPv4 混着看。
169.254.x.x 是链路本地地址,说明 DHCP 没拿到地址,网络其实不通。
剩下的才是真正在用的地址。
内网地址还是公网地址
如果显示 10.x、172.16-31.x、192.168.x,那是内网。
想确认这台机器对外是什么地址,得发请求出去看,本地命令查不到——NAT 之后的公网地址不在网卡上。
最省事的办法是 curl https://t.bt.cn/ip_api.php?ip= 后面留空,或者直接打开 IP 地址查询,页面会把这次访问的源地址和归属地一起告诉你。
一个常见误判
ip addr 里显示了公网 IP,不代表外面能连进来。云厂商的安全组、本机防火墙任何一层没放开,都连不上。
先确认端口,再确认 IP。