先让 ifconfig 歇会吧,试试值得收藏的 IpRoute2 简明指南
转自:高效运维
前言
介绍
net-tools
。虽然 net-tools
工具包提供了相当完善的功能,但是包内工具的开发却是相互独立的,它们的使用方式也各不相同。net-tools
包内工具的使用方式大相径庭,并且包内的部分工具也已经停止维护,因此使用名为 iproute2
的新工具包来替换原来 net-tools
。iproute2
包内的各个工具被统一开发维护,并且他们之间的使用方式也非常相似。另外,这些工具也可以很好地互相配合一起使用。iproute2
来对你的网络进行配置、维护和信息查看。我们将会使用 Ubuntu 12.04 VPS 来进行演示,不过大多数其它现代 Linux 发行版都提供了相同的功能。如何查看网络接口、地址、路由
一般来说,本机的网络接口通常会被命名成像是 eth0
,eth1
,lo
这样的名称。在过去,常常使用 net-tools
包提供的 ifconfig
命令来配置网络接口。而使用 iproute2
时,通常可以使用子命令 ip addr
和 ip link
来完成相同的功能。
使用 ifconfig 时,你可以通过输入不带参数的如下命令来查看本机当前所有网络接口的状态:
ifconfig
eth0 Link encap:Ethernet HWaddr 54:be:f7:08:c2:1b
inet addr:192.168.56.126 Bcast:192.168.56.255 Mask:255.255.255.0
inet6 addr: fe80::56be:f7ff:fe08:c21b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:114273 errors:0 dropped:0 overruns:0 frame:0
TX packets:58866 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:73490903 (73.4 MB) TX bytes:14294252 (14.2 MB)
Interrupt:20 Memory:f7f00000-f7f20000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:3942 errors:0 dropped:0 overruns:0 frame:0
TX packets:3942 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:668121 (668.1 KB) TX bytes:668121 (668.1 KB)
ifconfig eth0
eth0 Link encap:Ethernet HWaddr 54:be:f7:08:c2:1b
inet addr:192.168.56.126 Bcast:192.168.56.255 Mask:255.255.255.0
inet6 addr: fe80::56be:f7ff:fe08:c21b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:114273 errors:0 dropped:0 overruns:0 frame:0
TX packets:58866 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:73490903 (73.4 MB) TX bytes:14294252 (14.2 MB)
Interrupt:20 Memory:f7f00000-f7f20000
使用 iproute2 包提供的子命令,我们可以实现相同的功能。
如果想要查看每个网络接口被配置的地址,可以输入不带参数的 ip addr 命令:
ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 54:be:f7:08:c2:1b brd ff:ff:ff:ff:ff:ff
inet 192.168.56.126/24 brd 192.168.56.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::56be:f7ff:fe08:c21b/64 scope link
valid_lft forever preferred_lft forever
如果想要查看某个特定网络接口的地址信息,你可以使用如下格式的命令:
ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 54:be:f7:08:c2:1b brd ff:ff:ff:ff:ff:ff
inet 192.168.56.126/24 brd 192.168.56.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::56be:f7ff:fe08:c21b/64 scope link
valid_lft forever preferred_lft forever
事实上,ip addr
只是 ip addr show
命令的别名。
如果你只关心网络接口本身,而不在意它们被配置的地址,那么你可以使用 ip link 子命令:
ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 04:01:13:8a:a2:01 brd ff:ff:ff:ff:ff:ff
ip link show eth0
如果想要获得网络接口如何通信的统计数据,那么你可以给 link
子命令传入 -s
选项:
ip -s link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 04:01:13:8a:a2:01 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
853144 14672 0 0 0 0
TX: bytes packets errors dropped carrier collsns
91257 537 0 0 0 0
ip route show
default via 107.170.58.1 dev eth0 metric 100
107.170.58.0/24 dev eth0 proto kernel scope link src 107.170.58.162
如何配置网络接口和地址
既然你已经熟悉了如何获取网络接口信息和与它们关联的地址信息,那么下一步就应该是了解如何修改网络接口的状态了。
首先需要了解如何配置接口本身。你仍然可以使用 ip link 子命令,不过这次你需要传入 set
而不是 show
来修改配置。
例如,我们可以通过使用以下命令来打开或关闭网络接口:
ip link set eth1 up
ip link set eth1 down
注意:当心不要意外关闭了你正连接的 VPS 的网络接口!
ip link set eth1 multicast on
ip link set eth1 multicast off
你也可以输入如下的命令来修改 MTU 和分组队列的长度:
ip link set eth1 mtu 1500
ip link set eth1 txqueuelen 1000
如果你正配置的网络接口是关闭(down)状态,那么你可以修改网络接口的名称和与之关联的 arp 标志:
ip link set eth1 name eth10
ip link set eth1 arp on
如果要修改网络接口的地址,那么我们可以再次使用 ip addr 子命令。
通过输入以下命令我们可以为网络接口添加一个地址:
ip addr add IPADDRESS/NETPREFIX brd + dev INTERFACE
该命令的 brd +
部分会自动设置广播地址。每个网络接口都可以添加多个地址而不会出现任何问题。
我们也可以执行相反的操作来删除网络地址。要删除指定网络接口的某个地址,可以使用如下命令:
ip addr del IPADDRESS/NETPREFIX dev INTERFACE
你也可以省略输入地址,这样与该网络接口关联的第一个被列出的地址将被删除。
通过使用 ip route [add | change | replace | delete ] 语法,你也可以删除路由规则。但我们不会在这里介绍,因为大多数人不会定期对此进行调整。
IpRoute2 的其他功能
ip rule show
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
man
查看 ip rule 的手册来进行进一步的学习。man ip # search for "ip rule"
ip neigh
107.170.58.1 dev eth0 lladdr 00:00:5e:00:01:68 DELAY
结语
现在,你应该对如何使用 iproute2 包中的工具有了一个很好的了解了。
尽管许多指南和教程仍然引用旧的 net-tools 工具包,部分原因是有经验的系统管理员过去经常使用旧的工具包,但本指南中讨论的命令将在未来几年内逐步替代 net-tools 工具。
重要的是,现在你必须熟悉这些命令,然后才能在已切换到这些命令的系统上解决网络问题(Arch Linux 早在 2011 年就已经完全切换到了新工具)。新工具用法更加一致,你可以指望在所有命令中都可以使用类似的用法。你使用这些命令的次数越多,它们对你而言就越自然。
By Justin Ellingwood.
END
官方站点:www.linuxprobe.com
Linux命令大全:www.linuxcool.com
刘遄老师QQ:5604215
Linux技术交流群:2636170
(新群,火热加群中……)
想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!
微信扫码关注该文公众号作者