Regola ip permanente su Linux (Redhat)


12

Come posso configurare un persistente ip rulesu Linux (in particolare distribuzioni basate su Redhat)? Non esiste un metodo integrato? La mia unica opzione è aggiungere /etc/rc.d/rc.localo creare il mio rc.dscript?

Modifica: per chiarimenti non mi riferisco iptablesma allo ipstrumento (che non credo che molte persone abbiano familiarità). In ogni caso, la regola che sto cercando di persistere viene aggiunta con il seguente comando:

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

L'unico riferimento che ho trovato per fare questo è da Novell: http://www.novell.com/support/viewContent.do?externalId=7008874&sliceId=1 che consiglia di creare uno rc.dscript


Puoi condividere la regola IP che desideri persistere?
ewwhite,

La regola èip rule add fwmark 1 lookup 100
brent

Risposte:


11

Come di consueto mi imbatto nella risposta al mio problema poco dopo averlo chiesto :) Ho trovato una risposta su http://grokbase.com/t/centos/centos/099bmc07mq/persisting-iproute2-routes-and-rules

Su Redhat 5+ lo /etc/sysconfig/network-scripts/ifup-routesscript gestisce i rule-*file. Codice pertinente di seguito:

# 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

Script per RHEL 6.5 (possibilmente più vecchio di 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

Quanto sopra è circa 3/4 della risposta - il pezzo mancante è come formattare il file / etc / sysconf / network-scripts / rule-ethX. È inoltre necessario aggiungere le tabelle di routing a / etc / iproute2 / rt_tables:

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

E aggiungi il file delle regole / etc / sysconfig / network-scripts / 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}

Si noti che i nomi delle tabelle devono corrispondere e fanno distinzione tra maiuscole e minuscole.


1

nota se usi le priorità in questi file di regole per una qualsiasi delle regole, devi usare le priorità per tutte le regole. Altrimenti, quelli che non hanno alcuna priorità vengono tutti aggiunti alla catena di priorità 0.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.