Linux(特にRedhatベースのディストリビューション)で永続的なip rule
を構成するにはどうすればよいですか?組み込みのメソッドはありませんか?私の唯一のオプションは/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
スクリプトの作成を推奨します
慣例として、私は質問した直後に自分の問題の答えに遭遇しました:) 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
}
上記は答えの約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}
テーブル名は一致する必要があり、大文字と小文字が区別されることに注意してください。
これらのルールファイルでいずれかのルールに優先度を使用する場合は、すべてのルールに優先度を使用する必要があります。それ以外の場合、優先度のないものはすべて優先度0のチェーンに追加されます。