1. iptablesを使う

1. iptablesを使う

単一のNIC(eth1)に2つのIPを持つLinuxシステム(RHEL 6.7)があります。ベースアドレス(つまり、すべてのトラフィックが発生しているように見えるアドレス)は10.0.0.23です。もう一つは10.0.0.160です。

iptablesを使用して、パケットの宛先アドレスに基づいて送信元IPを変更する方法を探しています。一般的に、トラフィックは10.0.0.23で「発信」しますが、パケットの宛先が10.0.0.1であると仮定すると、パケットは10.0.0.160で「発信」が必要です。

その理由は、ネットワークのファイアウォールが私の制御下にないためです。 10.0.0.160から10.0.0.1まではトラフィックを許可しますが、10.0.0.23から10.0.0.1までは許可しないルールがあります。

私はすべてのトラフィックが10.0.0.160から始まることを望んでおらず、10.0.0.1に行くトラフィックだけを望んでいます。

私はnatテーブルと辞書パスルールを使うつもりですが、ソースアドレスを変更する方法が見つかりませんでした。役に立つ場合は、eth1のエイリアスを作成できますが(eth1とeth1:0がある)、現在の構成にソリューションがあるかどうかを確認したかったです。

どんなアドバイスもよろしくお願いします。

答え1

所望の動作を達成する2つの方法は以下の通りである。

1. iptablesを使う

SNATターゲットを使用すると、iptables要件に応じてソースアドレスを変更できます。マニュアルページiptables 拡張こんな言葉がありますSNAT

このターゲットは、natテーブル、POSTROUTINGおよびINPUTチェーン、およびこれらのチェーンでのみ呼び出されるカスタムチェーンでのみ有効です。これは、パケットの送信元アドレスを変更し(この接続の将来のすべてのパケットも破損する)、ルールチェックを停止する必要があることを指定します。

あなたの質問に応じて、次の規則は次に送信されるパケットの送信元10.0.0.1アドレスを変更します10.0.0.160

$ iptables -t nat -A POSTROUTING --destination 10.0.0.1/32 -j SNAT --to-source 10.0.0.160

2. 静的ルーティングを使用する

iptablesまたは、ルールを使用する代わりに、次の構文を使用して、ターゲットホストへのスタティックルートをルーティングテーブルに追加します。

$ ip route add <destination>/32 via <gateway> src <alias>

あなたが提供した情報に基づいて、以下を使用します。

$ ip route add 10.0.0.1/32 via <gateway> src 10.0.0.160

<gateway>質問にこのアドレスが提供されていないので、ゲートウェイの実際のIPアドレスに置き換えてください。

これで、宛先へのトラフィックがから10.0.0.1始まります10.0.0.160。他のすべてのトラフィックはのデフォルトルートを使用します10.0.0.23

関連情報