Linux'ta kalıcı ip kuralı (Redhat)


12

Kalıcı bir ip ruleLinux üzerinde nasıl yapılandırabilirim (özellikle Redhat tabanlı dağıtımlar)? Yerleşik bir yöntem yok mu? Tek seçeneğim /etc/rc.d/rc.localkendi rc.dbetiğime eklemek mi yoksa kendi betiğimi oluşturmak mı?

Düzenleme: Açıklama için ben ( iptablesama ipbir çok insanın aşina olduğunu sanmıyorum) bahsetmiyorum . Her durumda, devam etmeye çalıştığım kural aşağıdaki komutla eklenir:

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

Bunu yapmak için bulduğum tek referans Novell'den: http://www.novell.com/support/viewContent.do?externalId=7008874&sliceId=1 bir rc.dkomut dosyası oluşturulmasını önerir


Kalmasını istediğiniz IP kuralını paylaşabilir misiniz?
ewwhite

Kural ip rule add fwmark 1 lookup 100
brent

Yanıtlar:


11

Alışılmış olduğu gibi, kısa bir süre sonra kendi sorunumun cevabına rastladım :) http://grokbase.com/t/centos/centos/099bmc07mq/persisting-iproute2-routes-and-rules adresinde bir cevap buldum

Redhat 5 ve sonraki sürümlerinde, /etc/sysconfig/network-scripts/ifup-routeskomut dosyası rule-*dosyaları işler . Alakalı kod aşağıdadır:

# 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 için komut dosyası (muhtemelen 6 yaş üstü):

# 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

Yukarıdaki cevap yaklaşık 3/4'tür - eksik parça / etc / sysconf / network-scriptleri / rule-ethX dosyasının nasıl biçimlendirileceği. Ayrıca yönlendirme tablolarını / etc / iproute2 / rt_tables dosyasına eklemeniz gerekir:

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

Ve / etc / sysconfig / network-scripts / rule-eth0 kural dosyasını ekleyin:

# 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}

Tablo adlarının eşleşmesi ve büyük / küçük harf duyarlı olması gerektiğini unutmayın.


1

kurallardan herhangi biri için bu kural dosyalarında öncelikleri kullanırsanız, tüm kurallar için öncelikleri kullanmanız gerektiğini unutmayın. Aksi takdirde, öncelikleri olmayanların tümü öncelik 0 zincirine eklenir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.