Was ist der beste Weg, um eine permanente Route hinzuzufügen?


11

Ich muss eine Route hinzufügen, die nach dem Neustart nicht gelöscht wird. Ich habe diese zwei Möglichkeiten gelesen:

In up route add -net 172.X.X.0/24 gw 172.X.X.X dev ethXin der Datei /etc/network/interfaces

oder

Erstellen Sie die Datei /etc/network/if-up.d/route mit:

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

und machen Sie es ausführbar:

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

Also bin ich verwirrt. Was ist der beste Weg, dies zu tun?


1
Sieht aus, als ob Sie sich auf ein Linux-System konzentrieren? (Wir haben AIX, HPUX, Irix, Solaris, ....) auf der Website.
Jeff Schaller

Es tut Ihnen leid, dass ich nicht angegeben habe, dass es sich um ein Linux-Debian-System handelt. Danke, dass du mich daran erinnert hast.
Pozinux

Antworten:


14

Sie haben erwähnt /etc/network/interfaces, es ist also ein Debian-System ...

Erstellen Sie eine benannte Routing-Tabelle. Als Beispiel habe ich den Namen "mgmt" unten verwendet.

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

Oben unterstützt der Kernel viele Routing-Tabellen und verweist auf diese durch eindeutige Ganzzahlen mit den Nummern 0-255. Ein Name, mgmt, ist ebenfalls für die Tabelle definiert.

Unten /etc/iproute2/rt_tablesfolgt ein Blick auf eine Standardeinstellung , die zeigt, dass einige Nummern reserviert sind. Die Wahl in dieser Antwort von 200 ist willkürlich; Man kann eine beliebige Nummer verwenden, die noch nicht verwendet wird, 1-252.

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

Unten definiert eine Debian 7/8-Schnittstellendatei eth0und eth1. eth1ist das 172 Netzwerk. eth0könnte auch DHCP verwenden. 172.16.100.10ist die IP-Adresse, der zugewiesen werden soll eth1. 172.16.100.1ist die IP-Adresse des Routers.

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

Starten Sie das Netzwerk neu oder starten Sie es neu.

Update - Erläutern von EL

Ich habe in einem Kommentar bemerkt, dass Sie sich "auch für RHEL gewundert haben". Erstellen Sie unter Enterprise Linux ("EL" - RHEL / CentOS / et al.) Eine benannte Routing-Tabelle wie oben erwähnt.

Die EL- /etc/sysconfig/networkDatei:

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

Die EL- /etc/sysconfig/network-scripts/ifcfg-eth0Datei mit einer statischen Konfiguration (ohne NetworkManager und ohne Angabe von "HWADDR" und "UUID" für das folgende Beispiel) folgt.

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

Die EL- /etc/sysconfig/network-scripts/ifcfg-eth1Datei (ohne NetworkManager und ohne Angabe von "HWADDR" und "UUID" für das folgende Beispiel) folgt.

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

Die EL- /etc/sysconfig/network-scripts/route-eth1Datei:

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

Die EL- /etc/sysconfig/network-scripts/rule-eth1Datei:

from 172.16.100.0/24 lookup mgmt

1

In der Debian-basierten Distribution können Sie eine statische Route wie folgt dauerhaft hinzufügen:

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

Auf RHEL-basierter Distribution:

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

3
Das sudoist in beiden Befehlen bedeutungslos. Entweder bist du bereits root, also >>funktioniert das, oder du bist es nicht. In diesem Fall >>wird das als dein ursprünglicher Benutzer angewendet und nur das echowird als root ausgeführt. Dies schlägt auch düster fehl, wenn mehrere Schnittstellen in definiert sind /etc/network/interfaces.
Roaima

1
Echo "etw" | sudo tee
filename

Dies funktioniert nicht für Debian-Instanzen in gcp
Parv Sharma

In Bezug auf die Debian-Version hängt der angegebene Befehl stark davon ab, welche Schnittstelle zuletzt in der Datei / etc / network / interfaces konfiguriert wurde
Gohu
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.