ip 命令(现代)vs ifconfig(旧)

新系统都用 ipifconfig 在新发行版可能要装 net-tools 才有。

# 看所有接口 IP
ip addr            # 简写 ip a
ip -br addr        # 简洁版

# 看路由表
ip route           # 简写 ip r

# 看连接状态
ip link            # 简写 ip l

常用查询

# 看自己的 IP
ip -br addr
# lo               UNKNOWN        127.0.0.1/8 ::1/128
# eth0             UP             192.168.1.100/24

# 看默认网关
ip route | grep default
# default via 192.168.1.1 dev eth0

# 看 DNS(由 systemd-resolved 管理时)
resolvectl status
# 或老式:
cat /etc/resolv.conf

临时改 IP(重启失效)

sudo ip addr add 192.168.1.200/24 dev eth0
sudo ip addr del 192.168.1.200/24 dev eth0

sudo ip route add default via 192.168.1.1

sudo ip link set eth0 down       # 关接口
sudo ip link set eth0 up         # 开接口

永久改 IP

不同发行版方式不同。

Ubuntu Server(netplan)

/etc/netplan/00-installer-config.yaml:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: false
      addresses:
        - 192.168.1.100/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [223.5.5.5, 8.8.8.8]

应用:

sudo netplan apply

RHEL / CentOS / Rocky(NetworkManager)

nmcli con show
nmcli con mod "eth0" ipv4.addresses 192.168.1.100/24
nmcli con mod "eth0" ipv4.gateway 192.168.1.1
nmcli con mod "eth0" ipv4.dns "223.5.5.5,8.8.8.8"
nmcli con mod "eth0" ipv4.method manual
nmcli con up "eth0"

或直接编辑 /etc/sysconfig/network-scripts/ifcfg-eth0

DNS 配置

# 立即测试某 DNS
dig @8.8.8.8 example.com

# 当前用的 DNS
resolvectl status     # systemd-resolved
cat /etc/resolv.conf  # 兼容老用法

国内常用 DNS:

服务 IPv4 备注
阿里 223.5.5.5 / 223.6.6.6 国内速度快
DNSPod(腾讯) 119.29.29.29 / 182.254.116.116 国内
114DNS 114.114.114.114 国内老牌
Google 8.8.8.8 / 8.8.4.4 海外
Cloudflare 1.1.1.1 / 1.0.0.1 海外

hosts 文件:本地强制解析

/etc/hosts:

127.0.0.1   localhost
192.168.1.50   db.local
192.168.1.51   redis.local

# 临时屏蔽
0.0.0.0   bad-site.com

hosts 优先于 DNS——开发 / 调试时强制把某域名指到某 IP 极有用。

检查网络栈

# 看本机所有 TCP 监听端口
sudo ss -tlnp

# 看建立的连接
sudo ss -tnp

# 看 UDP
sudo ss -ulnp

# 看 socket 总数
ss -s

下一篇:网络出问题怎么诊断。