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?


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

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.