如何使用 ip 命令 |
在很长一段时间内,ifconfig 命令是配置网络接口的默认方法。它为 Linux 用户提供了很好的服务,但是网络很复杂,所以配置网络的命令必须健壮。ip 命令是现代系统中新的默认网络命令,在本文中,我将向你展示如何使用它。 ip 命令工作在 OSI 网络栈 的两个层上:第二层(数据链路层)和第三层(网络 或 IP)层。它做了之前 net-tools 包的所有工作。 安装 ipip 命令包含在 iproute2util 包中,它可能已经在你的 Linux 发行版中安装了。如果没有,你可以从发行版的仓库中进行安装。 ifconfig 和 ip 使用对比ip 和 ifconfig 命令都可以用来配置网络接口,但它们做事方法不同。接下来,作为对比,我将用它们来执行一些常见的任务。 查看网口和 IP 地址如果你想查看主机的 IP 地址或网络接口信息,ifconfig (不带任何参数)命令提供了一个很好的总结。 1. $ ifconfig 2. 3. eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 4. ether bc:ee:7b:5e:7d:d8 txqueuelen 1000 (Ethernet) 5. RX packets 0 bytes 0 (0.0 B) 6. RX errors 0 dropped 0 overruns 0 frame 0 7. TX packets 0 bytes 0 (0.0 B) 8. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 9. 10. lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 11. inet 127.0.0.1 netmask 255.0.0.0 12. inet6 ::1 prefixlen 128 scopeid 0x10<host> 13. loop txqueuelen 1000 (Local Loopback) 14. RX packets 41 bytes 5551 (5.4 KiB) 15. RX errors 0 dropped 0 overruns 0 frame 0 16. TX packets 41 bytes 5551 (5.4 KiB) 17. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 18. 19. wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 20. inet 10.1.1.6 netmask 255.255.255.224 broadcast 10.1.1.31 21. inet6 fdb4:f58e:49f:4900:d46d:146b:b16:7212 prefixlen 64 scopeid 0x0<global> 22. inet6 fe80::8eb3:4bc0:7cbb:59e8 prefixlen 64 scopeid 0x20<link> 23. ether 08:71:90:81:1e:b5 txqueuelen 1000 (Ethernet) 24. RX packets 569459 bytes 779147444 (743.0 MiB) 25. RX errors 0 dropped 0 overruns 0 frame 0 26. TX packets 302882 bytes 38131213 (36.3 MiB) 27. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 新的 ip 命令提供了类似的结果,但命令是 ip address show,或者简写为 ip a: 1. $ ip a 2. 3. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 4. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 5. inet 127.0.0.1/8 scope host lo 6. valid_lft forever preferred_lft forever 7. inet6 ::1/128 scope host 8. valid_lft forever preferred_lft forever 9. 2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000 10. link/ether bc:ee:7b:5e:7d:d8 brd ff:ff:ff:ff:ff:ff 11. 3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 12. link/ether 08:71:90:81:1e:b5 brd ff:ff:ff:ff:ff:ff 13. inet 10.1.1.6/27 brd 10.1.1.31 scope global dynamic wlan0 14. valid_lft 83490sec preferred_lft 83490sec 15. inet6 fdb4:f58e:49f:4900:d46d:146b:b16:7212/64 scope global noprefixroute dynamic 16. valid_lft 6909sec preferred_lft 3309sec 17. inet6 fe80::8eb3:4bc0:7cbb:59e8/64 scope link 18. 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 命令使用 up 或 down 关键字来实现: 1. # ifconfig eth0 up 或者你可以使用一个专用命令: 1. # ifup eth0 ip 命令使用 set 子命令将网络设置为 up 或 down 状态: 1. # ip link set eth0 up 开启或关闭地址解析功能(ARP)使用 ifconfig,你可以通过声明它来启用: 1. # ifconfig eth0 arp 使用 ip,你可以将 arp 属性设置为 on 或 off: 1. # ip link set dev eth0 arp on ip 和 ipconfig 的优缺点ip 命令比 ifconfig 更通用,技术上也更有效,因为它使用的是 Netlink 套接字,而不是 ioctl 系统调用。 ip 命令可能看起来比 ifconfig 更详细、更复杂,但这是它拥有更多功能的一个原因。一旦你开始使用它,你会了解它的内部逻辑(例如,使用 set 而不是看起来随意混合的声明或设置)。 最后,ifconfig 已经过时了(例如,它缺乏对网络命名空间的支持),而 ip 是为现代网络而生的。尝试并学习它,使用它,你会由衷高兴的! |