Постійне правило ip для Linux (Redhat)


12

Як я можу налаштувати стійкий ip ruleна Linux (зокрема дистрибутив на основі Redhat)? Чи немає вбудованого методу? Моя єдина можливість додати /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
...

Єдина посилання, яку я знайшов для цього, - це від Novell: http://www.novell.com/support/viewContent.do?externalId=7008874&sliceId=1, яка рекомендує створити rc.dсценарій


Чи можете ви поділитися правилом IP, яке ви хочете зберегти?
ewwhite

Правилоip rule add fwmark 1 lookup 100
brent

Відповіді:


11

Як зазвичай, я натрапляю на відповідь на власну проблему незабаром після запитання :) Знайшов відповідь на http://grokbase.com/t/centos/centos/099bmc07mq/persisting-iproute2-routes-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

Сценарій для RHEL 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 відповіді - пропущений фрагмент полягає в тому, як відформатувати файл / etc / sysconf / network-script / правило-ethX. Вам також потрібно додати таблиці маршрутизації до / 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 та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.