लिनक्स पर लगातार आईपी नियम (रेडहैट)


12

मैं ip ruleलिनक्स (विशेष रूप से रेडहैट आधारित डिस्ट्रोस) पर लगातार कैसे कॉन्फ़िगर कर सकता हूं ? क्या कोई विधि निर्मित नहीं है? क्या मेरा एकमात्र विकल्प /etc/rc.d/rc.localअपनी rc.dस्क्रिप्ट जोड़ना या बनाना है ?

संपादित करें: स्पष्टीकरण के लिए मैं जिक्र नहीं कर रहा हूं, iptablesलेकिन ipउपकरण (जो मुझे नहीं लगता कि बहुत से लोग परिचित हैं)। किसी भी मामले में, मैं जिस नियम को जारी रखने की कोशिश कर रहा हूं, उसे निम्नलिखित कमांड के साथ जोड़ा गया है:

# ip rule add fwmark 1 lookup 100
# ip rule
...
32765: from all fwmark 0x1 lookup 100
...

एकमात्र ऐसा करने के लिए मैंने जो संदर्भ पाया है वह नोवेल से है: http://www.novell.com/support/viewContent.do?externalId=7008874&sliceId=1 जो एक rc.dस्क्रिप्ट बनाने की सिफारिश करता है


क्या आप उस आईपी नियम को साझा कर सकते हैं जिसे आप जारी रखना चाहते हैं?
इविविट

नियम हैip rule add fwmark 1 lookup 100
ब्रेंट

जवाबों:


11

जैसा कि प्रथागत है मैं पूछने के तुरंत बाद अपनी समस्या के उत्तर पर ठोकर खाता हूं :) http://grokbase.com/t/centos/centos/099bmc07mq/persisting-iproute2-reses-and-rules पर एक उत्तर मिला

Redhat 5+ पर /etc/sysconfig/network-scripts/ifup-routesस्क्रिप्ट rule-*फाइलों को संभालती है। नीचे दिया गया प्रासंगिक कोड:

# Routing rules
FILES="/etc/sysconfig/network-scripts/rule-$1"
if [ -n "$2" -a "$2" != "$1" ]; then
    FILES="$FILES /etc/sysconfig/network-scripts/rule-$2"
fi

for file in $FILES; do
   if [ -f "$file" ]; then
       { cat "$file" ; echo ; } | while read line; do
           if [[ ! "$line" =~ $MATCH ]]; then
           /sbin/ip rule add $line
       fi
       done
   fi
done

आरएचईएल 6.5 के लिए स्क्रिप्ट (संभवतः 6+ पुराना):

# Routing rules
FILES="/etc/sysconfig/network-scripts/rule-$1 /etc/sysconfig/network-scripts/rule6-$1"
if [ -n "$2" -a "$2" != "$1" ]; then
FILES="$FILES /etc/sysconfig/network-scripts/rule-$2 /etc/sysconfig/network-scripts/rule6-$2"
fi

for file in $FILES; do
   if [ -f "$file" ]; then
       handle_ip_file $file
   fi
done

handle_ip_file() {
    local f t type= file=$1 proto="-4"
    f=${file##*/}
    t=${f%%-*}
    type=${t%%6}
    if [ "$type" != "$t" ]; then
        proto="-6"
    fi
    { cat "$file" ; echo ; } | while read line; do
        if [[ ! "$line" =~ $MATCH ]]; then
            /sbin/ip $proto $type add $line
        fi
    done
}

6

उपरोक्त उत्तर के बारे में 3/4 है - लापता टुकड़ा / आदि / sysconf / नेटवर्क-स्क्रिप्ट / नियम-एथएक्स फ़ाइल को प्रारूपित करने का तरीका है। आपको रूटिंग टेबल को / etc / iproute2 / rt_tables में जोड़ने की आवश्यकता है:

# add a line with a table identifier and name:
100    ISPname

और नियम फ़ाइल / etc / sysconfig / network-script / rule-eth0 जोड़ें:

# rule-eth0
from 1.2.3.4/24 table {table name from /etc/iproute2/rt_tables}
to 1.2.3.4/24 table {table name from /etc/iproute2/rt_tables}

ध्यान दें कि तालिका के नामों का मिलान होना चाहिए, और मामला संवेदनशील है।


1

ध्यान दें कि यदि आप किसी भी नियम के लिए इन नियम फ़ाइलों में प्राथमिकताओं का उपयोग करते हैं, तो आपको सभी नियमों के लिए प्राथमिकताओं का उपयोग करना होगा। अन्यथा, जिन लोगों की कोई प्राथमिकता नहीं है वे सभी प्राथमिकता 0 श्रृंखला में जुड़ जाते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.