自宅の接続に複数のパブリックIPを持つために、複数のIPを持つVPSをリースし、openvpnサーバーとパブリックIPを必要とする自宅のすべてのサーバーを設定し、VPN接続を備えたDNAT / SNATを実行しています。 VPSからopenvpnを介して特定のパブリックIPに向かうトラフィックを自分のホームサーバーにリダイレクトします。
-A PREROUTING -d xxx.xxx.xxx.xxx/32 -j DNAT --to-destination 172.17.0.6
-A POSTROUTING -s 172.17.0.6/32 -j SNAT --to-source xxx.xxx.xxx.xxx
メールサーバー/ネットワークなどで1年以上こういうふうに動作してきたのですが…かなりカッコいいですね。
一つの問題があります。私のサーバーに着信するパケットはVPNサーバーのIPに関連付けられているため、IPベースのアクセスリストは利用できず、メールサーバーでRBLを使用することもできません。
NATなしでトラフィックをリダイレクトするようにiptableに指示する方法はありますか?
私のクライアントでは、デフォルトゲートウェイはVPNサーバーなので、とにかくパケットはVPNに戻ります。
ありがとう
答え1
ソースの代わりにターゲットを変更するには、「SNAT」ルールを削除します。
質問を注意深く読めず、申し訳ありません。
私のサーバーyyyyがxxxxをpingしていて、私のVPNサーバーに表示され、「ターゲットxxxxを172.17.0.6に送信し、私のホームサーバーからソースが172.17.0.1のパケットを受信します」としましょう。
DNATただソースではなく接続の宛先を変更します。表示されるソースが172.17.0.1の場合は、パケットに影響を与える問題に記載されていない他のSNATまたはMASQUERADEルールが必要です。ホームサーバー接続に影響を与えないようにルールを削除するか、その範囲を制限する必要があります。
追加のサポートが必要な場合は、関連していると思われるルールだけでなく、サーバーの完全なiptablesルールのリストも公開してください。
私のVPNに戻って再び奪われますyyyy
いいえ、(疑似)接続の最初のパケットを処理するときに確立されたステータストレースを使用して逆変換を実行します。 iptables natテーブルは、接続の最初のパケットのみを処理します。