特定のプログラムのデフォルトゲートウェイを変更しますか?

特定のプログラムのデフォルトゲートウェイを変更しますか?

3つのネットワークインターフェイスを持つデータセンターでホストされているコンピュータがあります。

Interface  network         ip address
eth0       192.168.1.0/24  192.168.1.10
eth1       192.168.2.0/24  192.168.2.10
eth2       192.168.3.0/24  192.168.3.10

私のデフォルトゲートウェイは、データセンターが提供するいくつかのサービス(リポジトリ、ntpなど)にアクセスできる192.168.2.1に設定されています。

ネットワーク192.168.1.0/24には、ドラゴンが住む外部の世界にアクセスできるゲートウェイ192.168.1.1があります。サーバーを離れる必要がある場合は、静的パスを追加するだけです。私はサーバーがどこに接続されているかを知っているので、この設定が大好きです。

これで、誰にでもメールを送信する必要があるメールクライアント(exim4)が作成されました。したがって、理想的にはデフォルトゲートウェイを192.168.1.1に設定する必要があります。この特定のサービスへのトラフィックだけをルーティングする方法はありますか、または単にサーバーのネットワーク構成を変更する必要がありますか?

違いがある場合はDebian 8を使用しています。

ベストアンサー1

ターゲットポート、ソースポート、または所有者の3つの属性のいずれかに基づいて特定のゲートウェイにルーティングするようにファイアウォールを設定できます(動作しない可能性がある、以下を参照)。

まず、特定のアプリケーション用のカスタムルーティングテーブル(ゲートウェイ192.168.1.1)を追加し、マスクされたすべてのパケットをその1テーブルにリダイレクトするルールを作成し、マスク付きのすべてのパケットをソースアドレス迷彩にリダイレクトするiptablesルール生成します。リダイレクト:

ip route add 192.168.1.0/24 dev eth0 table 1
ip route add 0/0 via 192.168.1.1 table 1
ip rule add fwmark 1 table 1
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.10

パッケージの表示には3つのオプションがあります。

宛先ポートにリダイレクトし、eximで使用するサーバーポートと一緒にPORTを請求します。

iptables -t mangle -A OUTPUT -p tcp --dport PORT -j MARK --set-mark 4

ソースポートリダイレクトを介して1つのソースポートしか使用されていない場合は、eximがローカルに使用するポートがPORTアカウントに使用されます。

iptables -t mangle -A OUTPUT -p tcp --sport PORT -j MARK --set-mark 4

EximプロセスのPIDにOWNERを変更して所有者ごとにリダイレクトします(iptables -m owner --helpその他のオプションについては参考資料を参照)。

iptables -t mangle -A OUTPUT -m owner --pid-owner OWNER -j MARK --set-mark 4

所有者別のリダイレクトを検討するwww.frozentux.net:

The pid, sid and command matching is broken in SMP kernels since they use different process lists for each processor. It might be fixed in the future however

したがって、カーネルによっては、この機能は使用できないか破損しています(正しく機能しません)。

おすすめ記事