哪些配置文件影响 Debian 系统的路由表

哪些配置文件影响 Debian 系统的路由表

据我所知,基本网络配置进入/etc/network/interfaces,系统根据这些信息生成路由表。我还被告知,通常/etc/network/interfaces是永久添加自定义命令来操作路由表的地方(有时也建议是/etc/rc.local或 中的自定义脚本/etc/network/if-up.d/)。此外,还可以在 中指定自定义路由表/etc/iproute2/rt_tables

  • 还有其他地方会影响(主)路由表吗?
    • 具体来说,除了/etc/network/interfaces使手动添加/删除的路线永久保留之外,还有其他可能性吗?
  • 具有多个 NIC 的系统是否有以下概念:基本的辅助网络接口或者这些只是用来帮助用户的措辞?(在设置过程中,必须选择主要的 if 并且/etc/network/interfaces将包含适当的注释。)如果存在这样的概念,那么可以在哪里配置它?
  • Debian Squeeze 和 Debian Jessie 的路由表概念有何不同?

我的问题的背景是,我有一个旧的 Debian Squeeze 系统和一个新的 Debian Jessie 系统,它们启动时使用不同的路由表,但(据我所知)配置相同。我可以手动操作路由表以满足我的需求,并使更改永久生效,/etc/network/interfaces但我想了解发生了什么。

编辑

这是两台机器的配置文件。出于隐私原因,我更改了每个 IP 地址的前部分。但是,子网和相应网络的地址部分没有更改。Jessie/etc/network/interfaces.d/机器上的目录是空的。

/etc/iproute2/rt_tables关于杰西

#
# reserved values
#
255 local
254 main
253 default
0   unspec
#
# local
#
#1  inr.ruhep

/etc/iproute2/rt_tables挤压

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep

/etc/rc.local关于杰西

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0

/etc/rc.local挤压

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0

/etc/network/interfaces关于杰西

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

auto eth1
iface eth1 inet static
    address 143.103.155.254
    netmask 255.255.255.0
    network 143.103.155.0
    gateway 143.103.155.254

# The primary network interface
auto eth2
iface eth2 inet static
    address 27.126.19.194
    netmask 255.255.255.248
    network 27.126.19.192
    broadcast 27.126.19.199
    gateway 27.126.19.193
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 143.103.5.1
    dns-search subdomain.domain.de

/etc/network/interfaces挤压

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface

auto eth0
iface eth0 inet static
        address 143.103.155.254
        netmask 255.255.255.0
        network 143.103.155.0
        gateway 143.103.155.254

auto eth2
iface eth2 inet static
        address 27.126.19.194
        netmask 255.255.255.248
        network 27.126.19.192
        broadcast 27.126.19.199
        gateway 27.126.19.193

ip route show table mainJessie的输出

default via 143.103.155.254 dev eth1 
143.103.155.0/24 dev eth1  proto kernel  scope link  src 143.103.155.254 
27.126.19.192/29 dev eth2  proto kernel  scope link  src 27.126.19.194

ip route show table mainSqueeze的输出

27.126.19.192/29 dev eth2  proto kernel  scope link  src 27.126.19.194
143.103.155.0/24 dev eth0  proto kernel  scope link  src 143.103.155.254
default via 27.126.19.193 dev eth2
default via 143.103.155.254 dev eth0  scope link

route -nJessie的输出

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         143.103.155.254  0.0.0.0         UG    0      0        0 eth1
143.103.155.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
27.126.19.192  0.0.0.0         255.255.255.248 U     0      0        0 eth2

route -nSqueeze的输出

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
27.126.19.192  0.0.0.0         255.255.255.248 U     0      0        0 eth2
143.103.155.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         27.126.19.193  0.0.0.0         UG    0      0        0 eth2
0.0.0.0         143.103.155.254  0.0.0.0         UG    0      0        0 eth0

答案1

你们两个/etc/网络/接口文件包含同一个错误:默认网关被指定了两次。

只有在非常特殊的情况下(忽略指标),您才可以拥有多个默认网关:您有多个路由表,每个路由表都在文件中指定/etc/iproute2/rt_tables,但每个路由表应有一个单身的默认网关。

相反,您可以为每个接口指定一个同一张桌子 主要的。因此,我们在这里看到的是iproute2包,以及它如何响应错误。

如果是杰西,它将第一个提到的网关 143.103.155.254 确立为唯一网关,仅仅是因为它是第一个被提及的。当声明第二个网关 27.126.19.193 时,什么也不会发生,因为它是不是之前

      ip route del default

相反,Squeeze 以不同的方式处理错误:它限制范围第二个网关本地链接. 欲了解更多信息范围, 看iproute2 手册,其中指出:

范围链接 --- 该地址是链接本地,仅在此设备上有效。

维基百科指出:

在计算机网络中,链路本地地址是仅对主机所连接的网段(链路)或广播域内的通信有效的网络地址。

因此,范围(不精确的同义词范围)的第二个网关已经非常限制在其网络段(IE,其广播域为 143.103.155.0/24)。因此,Jessie 也以不同的方式应对了您在同一个路由表中错误声明多个网关的情况。

当然,没有预期行为了解包如何处理错误。正确的方法是设置/etc/网络/接口文件是省略语句

   gateway 143.103.155.254

(这也很奇怪,因为它说你自己电脑的网关是……它自己!)。要查看对此的详细解释,请阅读初始解决方案段落在此处;稍后还解释了如何添加多个网关,以及多个路由表。

如果如你所说,

我可以再试一次来验证,但我很确定我已经尝试过了,但仍然无法访问任何外部 IP。

这很可能是因为您不允许 IPv4 从一个接口转发到另一个接口(如 sudo:

     echo 1 > /proc/sys/net/ipv4/ip_forward

处理该问题),或者因为你的 iptables 规则阻止了转发。

答案2

Squeeze 和 Jessie 之间的主要区别在于ip命令要求ifconfig第一个和iproute2最后一个。

ifconfig 不知道多个网关配置,至少没有指标。这就是为什么您会看到两个ip route命令之间的差异(或route -n(已弃用))

iproute2 可以跟踪多个路由表

ip route show all

主网络接口和次网络接口的概念只是一种区分它们的方式,通常称为 eth0(第一个)和 eth1(第二个),但顺序可能会有所不同!

是的,您可以通过以下方式设置永久/etc/network/interfaces路线up

up ip route add 1.2.3.4/24 via 1.2.3.1

相关内容