Quy tắc ip liên tục trên Linux (Redhat)


12

Làm cách nào tôi có thể định cấu hình liên tục ip ruletrên Linux (cụ thể là các bản phát hành dựa trên Redhat)? Không có xây dựng trong phương pháp? Là lựa chọn duy nhất của tôi thêm vào /etc/rc.d/rc.localhoặc tạo rc.dtập lệnh của riêng tôi ?

Chỉnh sửa: Để làm rõ, tôi không đề cập đến iptablesnhưng ipcông cụ (mà tôi không nghĩ nhiều người quen thuộc). Trong mọi trường hợp, quy tắc tôi đang cố gắng duy trì được thêm vào bằng lệnh sau:

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

Tài liệu tham khảo duy nhất tôi tìm thấy để làm điều này là từ Novell: http://www.novell.com/support/viewContent.do?externalId=7008874&sliceId=1 khuyên bạn nên tạo rc.dtập lệnh


Bạn có thể chia sẻ quy tắc IP mà bạn muốn duy trì không?
ewwhite

Quy tắc làip rule add fwmark 1 lookup 100
brent

Câu trả lời:


11

Theo thông lệ, tôi vấp phải câu trả lời cho vấn đề của chính mình ngay sau khi hỏi :) Tìm thấy câu trả lời tại http://grokbase.com/t/centos/centos/099bmc07mq/pers hiện-iproute2-routes-and-rules

Trên Redhat 5+ /etc/sysconfig/network-scripts/ifup-routestập lệnh xử lý rule-*tập tin. Mã liên quan dưới đây:

# 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 cho RHEL 6.5 (có thể cũ hơn 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

Trên đây là khoảng 3/4 câu trả lời - phần còn thiếu là cách định dạng tệp / etc / sysconf / network-scripts / rule-ethX. Bạn cũng cần thêm các bảng định tuyến vào / etc / iproute2 / rt_tables:

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

Và thêm tệp quy tắc / 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}

Lưu ý rằng tên bảng phải khớp và phân biệt chữ hoa chữ thường.


1

lưu ý nếu bạn sử dụng mức độ ưu tiên trong các tệp quy tắc này cho bất kỳ quy tắc nào, bạn phải sử dụng mức độ ưu tiên cho tất cả các quy tắc. Mặt khác, những ưu tiên không có bất kỳ ưu tiên nào đều được thêm vào chuỗi 0 ưu tiên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.