介绍
在管理和故障排除Linux服务器时,了解基本的网络工具至关重要,虽然有些工具主要用于监控,但其他低级用途则用于配置网络连接本身并执行默认设置。
传统上,一组不相关的工具被称为net-tools
,它们通常被包装在一起,以提供完整的功能覆盖,但它们的开发和使用策略因工具而异。
由于不一致,以及停止维护,一系列名为iproute2
的工具被用来取代这些单独的工具。
在本指南中,我们将讨论如何使用iproute2工具来配置,操纵和收集有关您的网络的信息. 我们将使用Ubuntu 12.04 VPS来展示,但大多数现代的Linux发行版应该提供相同的功能水平。
虽然查询命令通常可以作为非特权用户执行,但必须使用根权限来修改设置。
如何查看网络接口、地址和路线
iproute2套件的最基本的职责之一是管理实际界面。
通常,接口本身将被命名为eth0
,eth1
,lo
,等等.传统上,ifconfig
命令被用来配置该区域中的项目。
使用 ifconfig,您可以通过键入无参数的命令来收集有关网络接口当前状态的信息:
1ifconfig
1eth0 Link encap:Ethernet HWaddr 54:be:f7:08:c2:1b
2 inet addr:192.168.56.126 Bcast:192.168.56.255 Mask:255.255.255.0
3 inet6 addr: fe80::56be:f7ff:fe08:c21b/64 Scope:Link
4 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
5 RX packets:114273 errors:0 dropped:0 overruns:0 frame:0
6 TX packets:58866 errors:0 dropped:0 overruns:0 carrier:0
7 collisions:0 txqueuelen:1000
8 RX bytes:73490903 (73.4 MB) TX bytes:14294252 (14.2 MB)
9 Interrupt:20 Memory:f7f00000-f7f20000
10
11lo Link encap:Local Loopback
12 inet addr:127.0.0.1 Mask:255.0.0.0
13 inet6 addr: ::1/128 Scope:Host
14 UP LOOPBACK RUNNING MTU:65536 Metric:1
15 RX packets:3942 errors:0 dropped:0 overruns:0 frame:0
16 TX packets:3942 errors:0 dropped:0 overruns:0 carrier:0
17 collisions:0 txqueuelen:0
18 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:114829 errors:0 dropped:0 overruns:0 frame:0 TX packets:59007 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:73598364 (73.5 MB) TX bytes:14325245 (14.3 MB) Interrupt:20 Memory:f7f00000-f7f20000
我们可以使用 iproute2 套件中的子命令复制此功能。
要查看每个接口附加的地址,请键入「ip addr」而没有参数:
1ip addr
11: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
2 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
3 inet 127.0.0.1/8 scope host lo
4 valid_lft forever preferred_lft forever
5 inet6 ::1/128 scope host
6 valid_lft forever preferred_lft forever
72: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
8 link/ether 54:be:f7:08:c2:1b brd ff:ff:ff:ff:ff:ff
9 inet 192.168.56.126/24 brd 192.168.56.255 scope global eth0
10 valid_lft forever preferred_lft forever
11 inet6 fe80::56be:f7ff:fe08:c21b/64 scope link
12 valid_lft forever preferred_lft forever
要获得一个特定的界面,你可以使用这个语法:
ip addr show eth0
2: eth0: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
命令:
1ip link
11: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
2 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
32: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
4 link/ether 04:01:13:8a:a2:01 brd ff:ff:ff:ff:ff:ff
要获取有关特定接口的信息,您需要添加关键字显示
,然后是接口名称:
1ip link show eth0
要获取有关接口如何通信的统计数据,您可以通过将 s
选项传输到链接子命令来查询每个接口的统计数据:
1ip -s link show eth0
12: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
2 link/ether 04:01:13:8a:a2:01 brd ff:ff:ff:ff:ff:ff
3 RX: bytes packets errors dropped overrun mcast
4 853144 14672 0 0 0 0
5 TX: bytes packets errors dropped carrier collsns
6 91257 537 0 0 0 0
那么我们如何找到我们的路由表呢?路由表中包含有关到其他网络位置的路径的内核信息。
1ip route show
1default via 107.170.58.1 dev eth0 metric 100
2107.170.58.0/24 dev eth0 proto kernel scope link src 107.170.58.162
这表明,通过eth0
接口和地址,我们可以通过该接口访问这个服务器,我们的接口地址是107.170.58.162.
如何配置网络接口和地址
现在你已经熟悉如何获取与它们相关的界面和地址的信息,下一步是找出如何修改他们的状态。
第一步是配置接口本身. 您可以使用ip link
子命令再次执行此操作. 但是,这一次,您可以通过设置
而不是显示操作来修改值。
例如,我们可以通过发出这些来提高或降低网络界面:
ip link set eth1 up ip link set eth1 down
注:小心不要意外地将您连接到您的服务器的界面。
您还可以使用ip 链接
子命令来设置界面上的属性,例如,如果您想为您的界面更改插入或关闭多发行旗,您可以键入:
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
如果您正在配置的界面处于下位状态,则可以调整与设备相关的界面名称和arp旗:
ip link set eth1 name eth10 ip link set eth1 arp on
为了调整与接口相关联的地址,我们再次使用ip addr
子命令。
我们可以通过键入一个设备添加一个地址:
ip addr add ip_address/net_prefix brd + dev interface
命令的brd +
部分会自动设置广播地址,每个接口可以添加多个地址,无需任何问题。
我们可以通过反向操作来删除地址. 要删除与接口相关的特定地址,您可以这样使用它:
ip addr del ip_address/net_prefix dev interface
可选地,您可以忽略该地址,并且将删除与该界面相关的第一个列出的地址。
您还可以调整服务器的路由,使用ip 路由 [addĝi 更改 eBay 取代 eBay 删除 ]
语法,但我们不会在这里涵盖这一点,因为大多数人不会定期调整这一点。
IPRoute2的其他功能
IPRoute2 有一些额外的功能,我们将无法在本指南中深入讨论,相反,我们将讨论这些功能是什么以及您可能发现它们有用的情况。
IP路由规则的想法很难谈论,因为它非常取决于情况,基本上,你可以根据多个领域来决定如何路由流量,包括目标地址,源地址,路由协议,包大小等。
我们使用ip 规则
子命令访问此功能. 基本查询遵循其他子命令的一般模式:
1ip rule show
10: from all lookup local
232766: from all lookup main
332767: from all lookup default
这些三条路由规则是内核配置的默认规则。第一行匹配任何流量,用于路由高优先级流量。第二行是处理正常路由的主要规则。
通过 IPRoute2 软件配置的路由规则存储在路由策略数据库中,该规则通过匹配规则组进行选择。我们可以使用相应的操作添加或删除规则。
1man ip # search for "ip rule"
我们将简要讨论的另一件事是通过这些工具处理arp信息,处理这些信息的子命令称为ip neigh。
1ip neigh
1107.170.58.1 dev eth0 lladdr 00:00:5e:00:01:68 DELAY
默认情况下,这至少应该列出您的网关 Arp 是一个用于收集通过本地网络访问的物理设备信息的协议。
基本上,每当需要访问 IP 地址时,一个 arp 请求都会通过本地网络传输。匹配的 IP 地址会响应,然后本地计算机知道向该 IP 地址发送信息的地方。
结论
虽然许多指南和教程仍然提到旧的实用程序,部分是因为熟练的系统管理员经常使用旧的工具长大,但本指南讨论的命令将在未来几年内接管。
在你发现自己在系统上已切换到这些命令(Arch Linux已经在2011年完全转换)上遇到故障排除问题之前,现在要熟悉这些命令很重要。一般来说,它们更一致,你可以指望在所有命令中都有某些惯例。