วิธีที่ดีที่สุดในการเพิ่มเส้นทางถาวรคืออะไร


11

ฉันต้องเพิ่มเส้นทางที่จะไม่ถูกลบหลังจากรีบูต ฉันอ่านทั้งสองวิธีในการทำ:

เพิ่ม ip 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, .... ) บนเว็บไซต์
Jeff Schaller

คุณขอโทษฉันไม่ได้ระบุว่ามันเป็นระบบ Debian ลินุกซ์ ขอบคุณที่เตือนให้ฉัน
Pozinux

คุณควรใช้คำสั่ง iproute2 เช่นip route add <network> via <IP> dev <DEV>แทนคำสั่งnet-tools (ifconfig, เส้นทาง ฯลฯ )
AdamKalisz

คำตอบ:


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 กำหนดอินเตอร์เฟซไฟล์และeth0 เป็นเครือข่าย 172 สามารถใช้ DHCP ได้เช่นกัน คือที่อยู่ IP ที่กำหนดให้ เป็นที่อยู่ IP ของเราเตอร์eth1eth1eth0172.16.100.10eth1172.16.100.1

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) ให้สร้างตารางเส้นทางที่ระบุชื่อดังกล่าวข้างต้น

/etc/sysconfig/networkไฟล์EL :

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

/etc/sysconfig/network-scripts/ifcfg-eth0ไฟล์EL โดยใช้การกำหนดค่าแบบสแตติก (ไม่มี 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

/etc/sysconfig/network-scripts/ifcfg-eth1ไฟล์EL (ไม่มี 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

/etc/sysconfig/network-scripts/route-eth1ไฟล์EL :

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

/etc/sysconfig/network-scripts/rule-eth1ไฟล์EL :

from 172.16.100.0/24 lookup mgmt

-1

บน Distbian ที่ใช้ 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 distro:

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

3
sudoเป็นความหมายทั้งสองคำสั่งของคุณ ไม่ว่าคุณจะรูทอยู่แล้วดังนั้น>>งานหรือคุณไม่ได้ใช้งานในกรณีที่ผู้>>ใช้ดั้งเดิมของคุณและเฉพาะที่echoทำงานเป็นรูท นอกจากนี้ล้มเหลว dismally /etc/network/interfacesถ้ามีหลายอินเตอร์เฟซที่กำหนดไว้ใน
roaima

1
echo "sth" | ชื่อไฟล์ sudo tee
JSBach

สิ่งนี้ใช้ไม่ได้กับอินสแตนซ์เดเบียนใน gcp
Parv Sharma

แท้จริงเกี่ยวกับรุ่นเดคำสั่งที่ได้รับสูงขึ้นอยู่กับสิ่งที่อินเตอร์เฟซที่มีการกำหนดค่าสุดท้ายในแฟ้ม / etc / เครือข่าย / อินเตอร์เฟซ
Gohu

สคริปต์ใด ๆ ใน Debian ควรใช้คำสั่ง iproute2 เช่นip route add <network> via <IP> dev <DEV>แทนที่จะใช้เส้นทาง net-tools และคำสั่ง ifconfig ที่ไม่ได้ติดตั้งโดยค่าเริ่มต้น
AdamKalisz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.