ip コマンドではなく設定ファイルを使用して仮想インターフェースに静的ルートを追加する

ip コマンドではなく設定ファイルを使用して仮想インターフェースに静的ルートを追加する

/etc/sysconfig/network-scripts/route-ethx ファイルを使用してルートを静的に割り当てます。キックスタート プロセス中に (ポスト スクリプトによって) ルートを追加するため、ルートの管理がかなり簡単になります。ルートが変わることはほとんどなく、更新が必要な場合は変更をプッシュし、ビルド スクリプトを更新して新しいルートを含めるだけです。

最近、お客様から、固有の IP を持つ仮想インターフェイス (eth0:0) を求める声が寄せられました。このインターフェイスは、1 つのネットワークに排他的に接続する必要があります。eth0 に最初に割り当てられた IP が、他のすべてのトラフィックを処理します。

これまで見たものはすべて を使用してルートを追加する方法を述べていますip route addが、特定の IP またはネットワークに送信されるものすべてにソース IP を設定できるようにする方法がよくわかりません。 ip コマンドを使用すると、ルート ファイルが更新されますか、それとも再起動後も保持されるように別の場所に保存されますか? eth0:0 のルート ファイルにエントリを追加する必要がある場合、行はどのようになる必要がありますか?

だから基本的に:

10.0.0.2 に接続する場合は、ソースとして IP 10.0.1.3 を使用します。それ以外の場所に接続する場合は、ソースとして IP 10.0.1.2 を使用します。

これは可能ですか? どうすれば実現できますか?

答え1

あなたの質問が明確に理解できれば、次のようなことを試してみてはいかがでしょうか

# ip route add 10.0.0.2 via xxx.xxx.xxx.xxx src 10.0.1.3
# ip route add default via yyy.yyy.yyy.yyy src 10.0.2.2

他に検討すべき方法はありますか?

iptablesを使ってみるのもいいでしょう

# iptables -t nat -I PREROUTING -d 10.0.0.2 -j SNAT --to-source 10.0.1.3

答え2

これは、最近同じことを行った同僚によって明らかにされました。

route-eth0:0 ファイルに入力される 1 つのルートの形式は次のとおりです。

10.0.0.2/32 via 10.0.1.1 dev eth0:0 src 10.0.1.3

eth0 を通過する他のすべてのトラフィックは、デフォルトで 10.0.1.2 からのものとしてタグ付けされます。10.0.1.1 はデフォルトのルートですが、パケットには適切にタグ付けされた送信元 IP が含まれます。

関連情報