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


2

据我所知,基本网络配置进入/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地址的第一部分。但是,子网和各个网络的地址部分没有改变。在/etc/network/interfaces.d/该杰西机器上的目录是空的。

/etc/iproute2/rt_tables 在Jessie

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

/etc/iproute2/rt_tables 在Squeeze

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

/etc/rc.local 在Jessie

#!/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 在Squeeze

#!/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 在Jessie

# 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 在Squeeze

# 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

这个问题太广泛而难以回答......也许您希望我们比较这两种配置并找出他们为什么设置不同的路由?
Marki555 2015年

@ Marki555:我添加了两个配置和生成的路由表
sigy 2015年

你想要的结果是什么?我看到默认路由的主要区别...当你添加gateway选项时,它意味着通过该接口的默认路由。您确定要通过2个接口进行默认路由吗?同样对于eth0 / eth1,网关就是你的服务器本身......为什么?
Marki555 2015年

在Squeeze上生成的路由按预期“正常工作”。本地网络是143.103.155.0/24,我希望这台机器可以处理所有流量。所有其他流量应通过其他接口转发到外部网关。我想我已经尝试省略143.103.155.0/24的默认网关,但是仍然没有自动添加通过27.126.19.193的默认路由。
sigy 2015年

因此,当您gateway 143...从Jessie中删除时,它根本没有任何默认路由条目route -nip route
Marki555 2015年

Answers:


1

您的/ etc / network / interfaces文件都包含一个相同的错误:默认网关被指定两次。

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

相反,您在同一个表 main中为每个接口指定一个。所以我们在这里看到的是iproute2包的实现以及它如何响应错误的细微差别。

Jessie的情况下,它建立了第一个提到的网关143.103.155.254,作为唯一的网关,因为它首先被提到。当第二个网关27.126.19.193的声明发生时,没有任何反应,因为它不在前面

      ip route del default

相反,Squeeze以不同的方式处理错误:它将第二个网关的范围限制为链接本地。有关范围的更多信息,请参阅iproute2手册,其中说明:

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

维基百科指出:

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

因此,该范围(不精确的同义词范围所述第二网关的)已被非常局限于其网段(,它的广播域143.103.155.0/24)。因此,Jessie也以不同的方式处理了同一路由表中多个网关的错误声明。

当然,包没有处理错误的预期行为。设置/ etc / network / interfaces文件的正确方法是省略该语句

   gateway 143.103.155.254

完全(这也很奇怪,因为它说你自己的电脑的网关本身!)。要看到一个很好的解释,请阅读初始解决方案段落 ; 稍后,还解释了如何使用多个路由表添加多个网关。

如果您声称,

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

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

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

照顾那个),或者因为你的iptables规则阻止了转发。


正如我在其他评论中提到的,当我尝试它时它没有用,因为简单的/etc/init.d/networking重启似乎还不够。之后我没有任何默认路线。但是,在重新启动整个系统后,路由设置正确。
sigy 2015年

1

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

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

iproute2可以跟踪多个路由表

ip route show all

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

是的,您可以设置永久路线,/etc/network/interfaces使用up如下:

up ip route add 1.2.3.4/24 via 1.2.3.1

如果ifconfig不知道多个网关配置但是在Squeeze中使用我不应该看到相反的情况吗?Squeeze是生成两个默认路由的操作系统。
sigy 2015年

你安装了iproute2,这是我能看到的唯一原因。但是看看scope link第二个网关。另一个是真正的默认网关
maxxvw 2015年

你能澄清一下你的意思吗?如果不是ifconfig,谁创建第二个默认路由?如果它是ip为什么它不会在Jessie上创建?我必须承认我现在有点困惑...
sigy 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.