如何使用 IPRoute2 工具管理 Linux VPS 上的网络配置

介绍

在管理和故障排除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年完全转换)上遇到故障排除问题之前,现在要熟悉这些命令很重要。一般来说,它们更一致,你可以指望在所有命令中都有某些惯例。

By Justin Ellingwood
Published At
Categories with 技术
comments powered by Disqus