Linux에서 영구 IP 규칙 (Redhat)


12

ip ruleLinux 에서 지속성 을 구성하려면 어떻게해야합니까 (특히 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=1rc.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-scripts / rule-ethX 파일을 포맷하는 방법입니다. 또한 / etc / iproute2 / rt_tables에 라우팅 테이블을 추가해야합니다.

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

규칙 파일 / 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}

테이블 이름은 일치해야하며 대소 문자를 구분합니다.


1

이 규칙 파일에서 규칙에 우선 순위를 사용하는 경우 모든 규칙에 우선 순위를 사용해야합니다. 그렇지 않으면, 우선 순위가없는 것이 우선 순위 0 체인에 추가됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.