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