添加永久路线的最佳方法是什么?


11

我需要添加重新启动后不会删除的路由。我阅读了以下两种方法:

添加 up route add -net 172.X.X.0/24 gw 172.X.X.X dev ethX到文件 /etc/network/interfaces

要么

使用以下命令创建文件/etc/network/if-up.d/route

#!/bin/sh
route add -net 172.X.X.0/24 gw 172.X.X.X dev ethX

并使其可执行:

chmod +x /etc/network/if-up.d/route

所以我很困惑。最好的方法是什么?


1
看起来您专注于Linux系统?(我们在站点上有AIX,HPUX,Irix,Solaris等)。
杰夫·谢勒

对不起,我没有指定它在Linux Debian系统上。感谢您提醒我。
Pozinux

Answers:


14

您提到过/etc/network/interfaces,所以这是一个Debian系统...

创建一个命名路由表。例如,我在下面使用了名称“ mgmt”。

echo '200 mgmt' >> /etc/iproute2/rt_tables

以上,内核支持许多路由表,并通过编号为0-255的唯一整数来引用这些路由表。还为该表定义了名称mgmt。

下面是默认值/etc/iproute2/rt_tables,表明保留了一些数字。这个答案中的200个选择是任意的;一个人可以使用任何尚未使用的数字1-252。

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#

下面是Debian 7/8接口文件定义eth0eth1eth1是172网络。eth0也可以使用DHCP。172.16.100.10是要分配给的IP地址eth1172.16.100.1是路由器的IP地址。

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The production network interface
auto eth0
allow-hotplug eth0
# iface eth0 inet dhcp 
# Remove the stanzas below if using DHCP.
iface eth0 inet static
  address 10.10.10.140
  netmask 255.255.255.0
  gateway 10.10.10.1

# The management network interface
auto eth1
allow-hotplug eth1
iface eth1 inet static
  address 172.16.100.10
  netmask 255.255.255.0
  post-up ip route add 172.16.100.0/24 dev eth1 src 172.16.100.10 table mgmt
  post-up ip route add default via 172.16.100.1 dev eth1 table mgmt
  post-up ip rule add from 172.16.100.10/32 table mgmt
  post-up ip rule add to 172.16.100.10/32 table mgmt

重新启动或重新启动网络。

更新-关于EL的说明

我在评论中注意到您“也很喜欢RHEL”。在Enterprise Linux(“ EL”-RHEL / CentOS / et al)中,如上所述创建一个命名路由表。

EL /etc/sysconfig/network文件:

NETWORKING=yes
HOSTNAME=host.sld.tld
GATEWAY=10.10.10.1

接下来是EL /etc/sysconfig/network-scripts/ifcfg-eth0文件,它使用静态配置(没有NetworkManager,并且在下面的示例中未指定“ HWADDR”和“ UUID”)。

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTOCOL=none
IPADDR=10.10.10.140
NETMASK=255.255.255.0
NETWORK=10.10.10.0
BROADCAST=10.10.10.255

EL /etc/sysconfig/network-scripts/ifcfg-eth1文件(下面没有示例,没有NetworkManager并且未指定“ HWADDR”和“ UUID”)。

DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTOCOL=none
IPADDR=172.16.100.10
NETMASK=255.255.255.0
NETWORK=172.16.100.0
BROADCAST=172.16.100.255

EL /etc/sysconfig/network-scripts/route-eth1文件:

172.16.100.0/24 dev eth1 table mgmt
default via 172.16.100.1 dev eth1 table mgmt

EL /etc/sysconfig/network-scripts/rule-eth1文件:

from 172.16.100.0/24 lookup mgmt

0

在基于Debian的发行版上,您可以按以下方式永久添加静态路由:

 echo "up route add -net 172.X.X.X/24 gw 172.X.X.X dev ethX" | sudo tee --append /etc/network/interfaces

在基于RHEL的发行版上:

echo "172.X.X.X/24 via 172.X.X.X" | sudo tee --append /etc/sysconfig/network-scripts/route-ethX

3
sudo在您的两个命令中都没有意义。要么您已经是root用户,要么是>>工程人员,要么您不是root用户,在这种情况下,则将>>用作原始用户,而只有echo是以root身份运行。另外,如果在中定义了多个接口,此操作将失败/etc/network/interfaces
roaima

1
回声 sudo tee文件名
JSBach

这不适用于gcp中的debian实例
Parv Sharma

实际上,关于Debian版本,给定的命令高度取决于文件/ etc / network / interfaces中最后配置的接口
Gohu
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.