放弃 ifconfig,拥抱 ip 命令转载

2021年2月11日04:46:40来源:Linux 中国650 3514字阅读11分42秒

在很长一段时间内,ifconfig 命令是配置网络接口的默认方法。它为 Linux 用户提供了很好的服务,但是网络很复杂,所以配置网络的命令必须健壮。ip 命令是现代系统中新的默认网络命令,在本文中,我将向你展示如何使用它。

ip 命令工作在 OSI 网络栈 的两个层上:第二层(数据链路层)和第三层(网络 或 IP)层。它做了之前 net-tools 包的所有工作。

安装 ip

ip 命令包含在 iproute2util 包中,它可能已经在你的 Linux 发行版中安装了。如果没有,你可以从发行版的仓库中进行安装。

ifconfig 和 ip 使用对比

  • 查看网口和 IP 地址

如果你想查看主机的 IP 地址或网络接口信息,ifconfig (不带任何参数)命令提供了一个很好的总结。

  1. $ ifconfig
  2. eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
  3.        ether bc:ee:7b:5e:7d:d8  txqueuelen 1000  (Ethernet)
  4.        RX packets 0  bytes 0 (0.0 B)
  5.        RX errors 0  dropped 0  overruns 0  frame 0
  6.        TX packets 0  bytes 0 (0.0 B)
  7.        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  8. lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
  9.        inet 127.0.0.1  netmask 255.0.0.0
  10.        inet6 ::1  prefixlen 128  scopeid 0x10<host>
  11.        loop  txqueuelen 1000  (Local Loopback)
  12.        RX packets 41  bytes 5551 (5.4 KiB)
  13.        RX errors 0  dropped 0  overruns 0  frame 0
  14.        TX packets 41  bytes 5551 (5.4 KiB)
  15.        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  16. wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
  17.        inet 10.1.1.6  netmask 255.255.255.224  broadcast 10.1.1.31
  18.        inet6 fdb4:f58e:49f:4900:d46d:146b:b16:7212  prefixlen 64  scopeid 0x0<global>
  19.        inet6 fe80::8eb3:4bc0:7cbb:59e8  prefixlen 64  scopeid 0x20<link>
  20.        ether 08:71:90:81:1e:b5  txqueuelen 1000  (Ethernet)
  21.        RX packets 569459  bytes 779147444 (743.0 MiB)
  22.        RX errors 0  dropped 0  overruns 0  frame 0
  23.        TX packets 302882  bytes 38131213 (36.3 MiB)
  24.        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

新的 ip 命令提供了类似的结果,但命令是 ip address show,或者简写为 ip a:

  1. $ ip a
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  3.    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  4.    inet 127.0.0.1/8 scope host lo
  5.       valid_lft forever preferred_lft forever
  6.    inet6 ::1/128 scope host
  7.       valid_lft forever preferred_lft forever
  8. 2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
  9.    link/ether bc:ee:7b:5e:7d:d8 brd ff:ff:ff:ff:ff:ff
  10. 3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
  11.    link/ether 08:71:90:81:1e:b5 brd ff:ff:ff:ff:ff:ff
  12.    inet 10.1.1.6/27 brd 10.1.1.31 scope global dynamic wlan0
  13.       valid_lft 83490sec preferred_lft 83490sec
  14.    inet6 fdb4:f58e:49f:4900:d46d:146b:b16:7212/64 scope global noprefixroute dynamic
  15.       valid_lft 6909sec preferred_lft 3309sec
  16.    inet6 fe80::8eb3:4bc0:7cbb:59e8/64 scope link
  17.       valid_lft forever preferred_lft forever
  • 添加 IP 地址

使用 ifconfig 命令添加 IP 地址命令为:

  1. $ ifconfig eth0 add 192.9.203.21

ip 类似:

  1. $ ip address add 192.9.203.21 dev eth0

ip 中的子命令可以缩短,所以下面这个命令同样有效:

  1. $ ip addr add 192.9.203.21 dev eth0

你甚至可以更短些:

  1. $ ip a add 192.9.203.21 dev eth0
  • 移除一个 IP 地址

添加 IP 地址与删除 IP 地址正好相反。

使用 ifconfig,命令是:

  1. $ ifconfig eth0 del 192.9.203.21

ip 命令的语法是:

  1. $ ip a del 192.9.203.21 dev eth0
  • 启用或禁用组播

使用 ifconfig 接口来启用或禁用 组播(multicast):

  1. # ifconfig eth0 multicast

对于 ip,使用 set 子命令与设备(dev)以及一个布尔值和 multicast 选项:

  1. # ip link set dev eth0 multicast on
  • 启用或禁用网络

每个系统管理员都熟悉“先关闭,然后打开”这个技巧来解决问题。对于网络接口来说,即打开或关闭网络。

ifconfig 命令使用 updown 关键字来实现:

  1. $ ifconfig eth0 up
  2. ## 或者你可以使用一个专用命令:
  3. $ ifup eth0

ip 命令使用 set 子命令将网络设置为 updown 状态:

  1. # ip link set eth0 up
  • 开启或关闭地址解析功能(ARP)

使用 ifconfig,你可以通过声明它来启用:

  1. # ifconfig eth0 arp

使用 ip,你可以将 arp 属性设置为 onoff

  1. # ip link set dev eth0 arp on

ip 和 ipconfig 的优缺点

ip 命令比 ifconfig 更通用,技术上也更有效,因为它使用的是 Netlink 套接字,而不是 ioctl 系统调用。

ip 命令可能看起来比 ifconfig 更详细、更复杂,但这是它拥有更多功能的一个原因。一旦你开始使用它,你会了解它的内部逻辑(例如,使用 set 而不是看起来随意混合的声明或设置)。

最后,ifconfig 已经过时了(例如,它缺乏对网络命名空间的支持),而 ip 是为现代网络而生的。尝试并学习它,使用它,你会由衷高兴的!

继续阅读
weinxin
微信公众号
博客微信公众号,欢迎关注。
avatar
  • 版权声明 本文源自 Linux 中国 整理 发表于 2021年2月11日04:46:40
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接。
稳定云服务器,香港VPS_美国VPS,高防服务器 稳定云服务器,香港VPS_美国VPS,高防服务器 硅云免费虚拟主机
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:6   其中:访客  6   博主  0
    • avatar zeruns 4

      666666厉害

      • avatar 老张博客 4

        新年快乐呀!

        • avatar 奥秘Sir 0

          新年快乐啊老哥

          • avatar 风陌 2

            新年快乐!

            • avatar 阿小州 6

              新年快乐

              • avatar 小石 2

                我就知道一句ip a🤣🤣🤣