
そのシステムから開始されない接続のためにRedhatシステムを離れるTCP / 514トラフィックの送信元IPを書き換えたいと思います。
マシンはインターフェイス(例:10.10.0.20)からTCP / 514トラフィックを受信し、応答が10.10.0.15(マシンに割り当てられていない)から来たかのようにトラフィックを返そうとします。
接続を開始する場合は、natテーブルを使用して次のことができます。
iptables -A POSTROUTING -t nat -p tcp --sport 514 -j SNAT --to=10.10.0.15
..しかし、着信トラフィックに応答しているので(私が知っている限り)natテーブルに到達することはできません。理由を無視するなぜこれをしなければならないのですが、どうすればいいですか?
追加の背景:
これは、Netscaler VIPの後ろに座ってTCP(UDPではない)を介してsyslogトラフィックを受信するRedhat 7システムです。 VIPでクライアントIPパススルーを使用しています。ファイアウォールはVIPのIPではなくsyslogサーバーのIPからの戻りトラフィックを見ているため、ファイアウォールはトラフィックを破棄するため、VIPのIPアドレスから出るようにsyslogサーバーのTCP応答を書き直そうとします。バックエンドサーバーからトラフィックが入っていないため、natテーブルは利用できないようです(したがって動作しません
-j SNAT
)。
今私が見るものは次のとおりです。
13:13:45.439683 IP 10.10.0.8.31854 > 10.10.0.20.514: Flags [S], seq 544116376, win 8190, options [mss 1460], length 0
13:13:45.439743 IP 10.10.0.20.514 > 10.10.0.8.31854: Flags [S.], seq 4163333198, ack 544116377, win 14600, options [mss 1460], length 0
私が見たいことは:
13:13:45.439683 IP 10.10.0.8.31854 > 10.10.0.20.514: Flags [S], seq 544116376, win 8190, options [mss 1460], length 0
13:13:45.439743 IP 10.10.0.15.514 > 10.10.0.8.31854: Flags [S.], seq 4163333198, ack 544116377, win 14600, options [mss 1460], length 0
答え1
DSR方式
最も効果的な方法は、NetScalerで直接サーバーリターンモードを適切に設定することです。ここで、NetScalerはターゲットVIPアドレス(10.10.0.15)を変更せずにsyslogサーバーへのMACベースの配信を実行します。
NetScalerから転送されたパケットを受信するには、syslogサーバーにもこのVIPアドレスが必要です。このアドレスは、lo
などのすべての内部インターフェイスに割り当てることができますdummy0
。
ip addr add 10.10.0.15/32 dev lo
eth0
そしてこれを防ぐために、着信インターフェイスにいくつかのsysctlsを設定する必要があります(ここで想定しています)。VIP ARPの問題(望むより6.7.治療:2.6.xカーネル - arp_ignore/arp_announce)。以下を追加し/etc/sysctl.conf
て実行しますsysctl -p
。
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
arp_ignore
/on設定はarp_announce
何も役に立ちませんlo
。
DNAT法
NetScalerが着信トラフィックに対してDNATを実行している場合、syslogサーバーはリターントラフィックもNetScalerに転送して接続追跡リソースを取得できます。これはアドレス変換を実行する最も自然な方法です。
この場合、syslogサーバーのポリシールーティングを利用できます。この機能により、「ポート 514 から発信される TCP パケット」などの特定の条件下で、パケットに特別なルーティング テーブルを適用できます。
以下のように、Linuxアドバンストルーティングに関するHOWTOドキュメントがあります。私はあなたが次の指示を理解するために次のミニハウト(mini-HOWTO)を読むことをお勧めします。
VIP
まず、ランダムIDで指定された特別なルーティングテーブルを定義します/etc/iproute2/rt_tables
。
1 VIP
VIP
このテーブルにVIP(10.10.0.15)へのデフォルトパスを追加します。
ip route add default via 10.10.0.15 table VIP
ポート514から送信されたTCPパケットをmangle
表示するには、iptablesテーブルにエントリを追加します。1
iptables -t mangle -A OUTPUT -p tcp --sport 514 -j MARK --set-mark 1
VIP
マーク付きのパケットのルーティングテーブルを見つけるためのルールを追加します1
。
ip rule add from all fwmark 1 table VIP
これまでに定義されたルールを表示できますip rule list
。ルールは優先順位の値の昇順で処理されます(0が最も高い優先順位)。
# ip rule list
0: from all lookup local
32765: from all fwmark 0x1 lookup VIP
32766: from all lookup main
32767: from all lookup default
次のように、各ルーティングテーブルの内容を確認できます。
# ip route ls table local
# ip route ls table VIP
# ip route ls table main