12 votos

Ip persistentes regla en Linux (Redhat)

¿Cómo puedo configurar una persistente ip rule en Linux (específicamente basada en Redhat distros)? No hay un método integrado? Es mi única opción de agregar a /etc/rc.d/rc.local o crear mi propia rc.d script?

Edit: Para clarificar, no me estoy refiriendo a iptables pero ip herramienta (que yo no creo que un montón de personas están familiarizadas con el). En cualquier caso, la regla estoy tratando de persistir se agrega con el siguiente comando:

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

La única referencia que he encontrado para hacer esto es de Novell: http://www.novell.com/support/viewContent.do?externalId=7008874&sliceId=1 que recomienda la creación de un rc.d script

12voto

ididak Puntos 4208

Como es costumbre, me tropiezo en la respuesta a mi propio problema, poco después de preguntar :) Encontraron una respuesta en http://grokbase.com/t/centos/centos/099bmc07mq/persisting-iproute2-routes-and-rules

En Redhat 5+ /etc/sysconfig/network-scripts/ifup-routes script controla rule-* archivos. Código correspondiente a continuación:

# 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 para red hat enterprise linux 6.5 (posiblemente más de 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
}

7voto

Rubin Bennett Puntos 31

El de arriba es de aproximadamente 3/4 de la respuesta - la pieza que falta es cómo el formato de /etc/sysconf/network-scripts/regla-ethX archivo. También es necesario agregar las tablas de enrutamiento a /etc/iproute2/rt_tables:

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

Y agregar la regla archivo /etc/sysconfig/network-scripts/regla-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}

Tenga en cuenta que la tabla de nombres deben coincidir, y son sensibles a las mayúsculas.

1voto

sabujp Puntos 169

nota si utiliza las prioridades en estos archivos de reglas para cualquiera de las reglas, usted tiene que usar las prioridades para todas las reglas. De lo contrario, los que no tienen ninguna prioridades de todos los añadidos a la prioridad 0 de la cadena.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: