Apa cara terbaik untuk menambahkan rute permanen?

11

Saya perlu menambahkan rute yang tidak akan dihapus setelah reboot. Saya membaca dua cara melakukannya:

Tambahkan up route add -net 172.X.X.0/24 gw 172.X.X.X dev ethXke file /etc/network/interfaces

atau

Buat file /etc/network/if-up.d/route dengan:

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

dan membuatnya dapat dieksekusi:

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

Jadi saya bingung. Apa cara terbaik untuk melakukannya?

Pozinux
sumber
1
Sepertinya Anda fokus pada sistem Linux? (kami memiliki AIX, HPUX, Irix, Solaris, ....) di situs.
Jeff Schaller
Anda benar, maaf saya tidak menentukan bahwa itu pada sistem linux Debian. Terima kasih telah mengingatkannya pada saya.
Pozinux

Jawaban:

14

Anda sebutkan /etc/network/interfaces, jadi itu adalah sistem Debian ...

Buat tabel routing bernama. Sebagai contoh, saya telah menggunakan nama, "mgmt," di bawah ini.

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

Di atas, kernel mendukung banyak tabel routing dan merujuknya dengan bilangan bulat unik bernomor 0-255. Nama, mgmt, juga didefinisikan untuk tabel.

Di bawah, tampilan pada default /etc/iproute2/rt_tablesberikut, menunjukkan bahwa beberapa nomor dicadangkan. Pilihan dalam jawaban 200 ini adalah arbitrer; seseorang dapat menggunakan nomor apa pun yang belum digunakan, 1-252.

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

Di bawah, file antarmuka Debian 7/8 menentukan eth0dan eth1. eth1adalah jaringan 172. eth0bisa menggunakan DHCP juga. 172.16.100.10adalah alamat IP untuk ditugaskan eth1. 172.16.100.1adalah alamat IP router.

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

Mulai ulang atau mulai ulang jaringan.

Perbarui - Menguraikan EL

Saya perhatikan dalam komentar bahwa Anda "bertanya-tanya untuk RHEL juga." Di Enterprise Linux ("EL" - RHEL / CentOS / et al), buat tabel routing bernama seperti yang disebutkan di atas.

File EL /etc/sysconfig/network:

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

File EL /etc/sysconfig/network-scripts/ifcfg-eth0, menggunakan konfigurasi statis (tanpa NetworkManager dan tidak menentukan "HWADDR" dan "UUID" untuk contoh, di bawah) berikut.

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

/etc/sysconfig/network-scripts/ifcfg-eth1File THE EL (tanpa NetworkManager dan tidak menentukan "HWADDR" dan "UUID" sebagai contoh, di bawah) mengikuti.

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

File 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

File EL /etc/sysconfig/network-scripts/rule-eth1:

from 172.16.100.0/24 lookup mgmt
Christopher
sumber
0

Pada distro berbasis Debian Anda dapat menambahkan rute statis secara permanen sebagai berikut:

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

Pada distro berbasis RHEL:

echo "172.X.X.X/24 via 172.X.X.X" | sudo tee --append /etc/sysconfig/network-scripts/route-ethX
GAD3R
sumber
3
Tidak sudoada artinya dalam kedua perintah Anda. Entah Anda sudah melakukan root, jadi >>berfungsi, atau tidak, dalam hal >>ini diterapkan sebagai pengguna asli Anda dan hanya echodijalankan sebagai root. Juga, ini gagal gagal jika ada beberapa antarmuka didefinisikan dalam /etc/network/interfaces.
roaima
1
gema "sth" | sudo tee filename
JSBach
ini tidak berfungsi untuk instance debian di gcp
Sharma
Memang, mengenai versi Debian, perintah yang diberikan sangat tergantung pada antarmuka apa yang dikonfigurasi terakhir dalam file / etc / network / interfaces
Gohu