स्थायी मार्ग जोड़ने का सबसे अच्छा तरीका क्या है?


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
ऐसा लगता है कि आप लिनक्स सिस्टम पर ध्यान केंद्रित कर रहे हैं? (हमारे पास साइट पर AIX, HPUX, Irix, Solaris, ....) है।
जेफ स्कालर

आपको सही खेद है कि मैंने निर्दिष्ट नहीं किया कि यह एक लिनक्स डिबियन सिस्टम पर था। इसे याद दिलाने के लिए धन्यवाद।
पॉज़िनक्स

आप की तरह iproute2 आदेशों का उपयोग करना चाहिए ip route add <network> via <IP> dev <DEV>बजाय नेट उपकरण आदेश (ifconfig, मार्ग आदि)
AdamKalisz

जवाबों:


14

आपने उल्लेख किया है /etc/network/interfaces, इसलिए यह एक डेबियन प्रणाली है ...

नामित रूटिंग तालिका बनाएँ। उदाहरण के रूप में, मैंने नीचे "एमजीएमटी" नाम का उपयोग किया है।

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
#

नीचे, एक डेबियन 7/8 इंटरफेस फ़ाइल को परिभाषित करता है eth0और eth1eth1172 नेटवर्क है। eth0DHCP का भी उपयोग कर सकता है। 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

रिबूट या पुनः आरंभ नेटवर्किंग।

अपडेट - ईएल पर एक्सपाउंडिंग

मैंने एक टिप्पणी में ध्यान दिया कि आप "आरएचईएल के लिए भी सोच रहे थे।" एंटरप्राइज़ लिनक्स ("ईएल" - आरएचईएल / सेंटोस / एट अल) में, ऊपर वर्णित के रूप में एक नामित रूटिंग टेबल बनाएं।

ईएल /etc/sysconfig/networkफ़ाइल:

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

ईएल /etc/sysconfig/network-scripts/ifcfg-eth0फ़ाइल, एक स्थिर कॉन्फ़िगरेशन (नेटवर्क मैनजर के बिना और उदाहरण के लिए, "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फ़ाइल (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फ़ाइल:

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फ़ाइल:

from 172.16.100.0/24 lookup mgmt

-1

डेबियन आधारित डिस्ट्रो पर आप स्थैतिक मार्ग को स्थायी रूप से इस प्रकार जोड़ सकते हैं:

 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दोनों अपने दो आदेशों में अर्थहीन है। या तो आप पहले से ही रूट हैं, इसलिए >>काम करता है, या आप नहीं हैं, जिस स्थिति >>में आपके मूल उपयोगकर्ता के रूप में लागू किया जाता है और केवल echoरूट के रूप में चलाया जाता है। इसके अलावा, अगर यह एक से अधिक इंटरफेस में परिभाषित किया गया है तो यह पूरी तरह से विफल हो जाता है /etc/network/interfaces
रोज़ा

1
गूंज "sth" |
सुडो

यह gcp में डेबियन उदाहरणों के लिए काम नहीं कर रहा है
Sharma

वास्तव में, डेबियन संस्करण के विषय में, दी गई कमांड अत्यधिक इस बात पर निर्भर करती है कि फाइल / आदि / नेटवर्क / इंटरफेस में अंतिम रूप से कौन सा इंटरफ़ेस कॉन्फ़िगर किया गया है
Gohu

डेबियन की किसी भी स्क्रिप्ट को अब ip route add <network> via <IP> dev <DEV>net-tools मार्ग के बजाय iproute2 कमांड्स का उपयोग करना चाहिए और ifconfig कमांड्स जो डिफ़ॉल्ट रूप से स्थापित नहीं हैं।
एडमकिलीज़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.