私はiptablesとそのモジュールに最初に触れました、そしてそれを理解するのに助けが必要です。
質問
大規模なNATルーティングを管理します。 100,000を超える固定IP(および増加している)を処理し、それをN環境の1つにルーティングする必要があります。
ターゲット
目標は、動的DNATルーティングを持つことです。これが意味するものは、次のプロセスを使用して説明できます。
- マシン(Linux)はネットワーク層の要求を受け取ります。
- Netfilterは要求を傍受します。プログラム的に
- Netfilterはターゲットを次に変更します。人々知的財産権
- リクエストの転送
現在のソリューション
現在の実装は静的に実行されます。 IPごとのMASQUERADEで、次のDNATルールを使用してSNATを処理します。
iptables -t nat -A PREROUTING -s {USER-STATIC-IP_1} -j DNAT --to-destination {ENV-IP_1}
...
iptables -t nat -A PREROUTING -s {USER-STATIC-IP_N} -j DNAT --to-destination {ENV-IP_N}
iptables -t nat -A POSTROUTING -j MASQUERADE
質問:
- 拡張 - iptablesルールは永遠に大きくすることはできません。
- レプリケーション - ルールデータは一元化されず、代わりに各システムでキャッシュされます。
- 管理 - N個のルールを管理し、システム間で同期するのは面倒です。
- ロギング - ロギングできますが、ストリーミングはできません。 LOG iptablesモジュールを使用する必要があります
- 直接制御なし - パケットフローに対する実際の制御はありません。静的ルールのみを追加および削除できますが、パケットと対話することはできません。
挑戦
- Netfilterを使用してネットワーク要求を傍受する(プログラミング方法で要求を傍受できる他のモジュールが見つかりません)
- 要求の非同期処理。すべてのIPを一元化するために、IPアドレスをデータベース(高速データベース)に保存したいと思います。
- 更新中バッグ無傷の目的地
- 応答はユーザーに再ルーティングする必要があります(MASQUERADEスタイル)。
- Netfilterとの統合に使用されるプログラミング言語は、高速(コンパイル可能)で、新しいプログラマに精通している必要があります(IPythonそして行く)。
これは非常に複雑な質問であり、私にとっては本当に難しい質問でした。
どんな助けでも大変感謝します。