Aturan ip persisten di Linux (Redhat)


12

Bagaimana saya dapat mengkonfigurasi persistent ip ruledi Linux (khususnya distro berbasis Redhat)? Apakah tidak ada metode bawaan? Apakah satu-satunya pilihan saya menambah /etc/rc.d/rc.localatau membuat rc.dskrip saya sendiri ?

Sunting: Untuk klarifikasi saya tidak mengacu pada iptablestetapi ipalat (yang saya pikir tidak banyak orang kenal). Bagaimanapun, aturan yang saya coba pertahankan ditambahkan dengan perintah berikut:

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

Satu-satunya referensi yang saya temukan untuk melakukan ini adalah dari Novell: http://www.novell.com/support/viewContent.do?externalId=7008874&sliceId=1 yang merekomendasikan pembuatan rc.dskrip


Bisakah Anda membagikan aturan IP yang ingin Anda pertahankan?
ewwhite

Aturannya adalahip rule add fwmark 1 lookup 100
brent

Jawaban:


11

Seperti biasa saya menemukan jawaban untuk masalah saya sendiri segera setelah bertanya :) Menemukan jawaban di http://grokbase.com/t/centos/centos/099bmc07mq/persisting-iproute2-routes-and-rules

Pada Redhat 5+ /etc/sysconfig/network-scripts/ifup-routesscript menangani rule-*file. Kode yang relevan di bawah ini:

# 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 untuk RHEL 6.5 (mungkin lebih tua 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

Di atas adalah sekitar 3/4 dari jawaban - bagian yang hilang adalah bagaimana memformat file / etc / sysconf / network-scripts / rule-ethX. Anda juga perlu menambahkan tabel routing ke / etc / iproute2 / rt_tables:

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

Dan tambahkan file aturan / 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}

Perhatikan bahwa nama tabel harus cocok, dan peka huruf besar-kecil.


1

perhatikan jika Anda menggunakan prioritas dalam file aturan ini untuk salah satu aturan, Anda harus menggunakan prioritas untuk semua aturan. Jika tidak, yang tidak memiliki prioritas semua ditambahkan ke rantai prioritas 0.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.