Linux(Redhat)での永続的なIPルール


12

ip ruleLinux(特にRedhatベースのディストリビューション)で永続を設定するにはどうすればよいですか?組み込みメソッドはありませんか?/etc/rc.d/rc.local自分のrc.dスクリプトに追加または作成する唯一のオプションはありますか?

編集:明確にするためにiptablesip私はツールではなく(多くの人が精通しているとは思わない)。いずれにせよ、私が永続化しようとしているルールは次のコマンドで追加されます:

# 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
ブレント

回答:


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.