web-dev-qa-db-ja.com

iptables:natなしでパケットを別のIPにリダイレクトします

ホーム接続に複数のパブリックIPを設定するには、IPの数が少ないVPSをレンタルし、openvpnサーバーを設定し、パブリックIPを必要とする自宅のすべてのサーバーにVPN接続を設定し、DNAT/SNATを実行しています。 VPSで、特定のパブリックIP宛てのトラフィックをopenvpnを介してホームサーバーにリダイレクトします。

-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年以上そのように動作します..、それはかなりクールです

問題が1つだけあります。サーバーの着信パケットは、VPNサーバーのIPで保護されているため、IPに基づくアクセスリストを使用できず、メールサーバーのRBLも使用できません。

NAT)を実行せずにトラフィックをリダイレクトするようにiptableに指示する方法はありますか?

私のクライアントでは、デフォルトゲートウェイはVPNサーバーであるため、パケットは何らかの方法でVPNに返されます。

ありがとう

1
makz

宛先を変更したいがソースは変更したくない場合は、「SNAT」ルールを削除してください。

申し訳ありませんが、質問を十分に注意深く読んでいませんでした。

たとえば、私のサーバーy.y.y.yがx.x.x.xにpingを送信し、VPNサーバーに送信され、宛先x.x.x.xを172.17.0.6に変換し、ホームサーバーでソース172.17.0.1のパケットを取得するとします。

DNAT のみソースではなく、接続の宛先を変更します。 172.17.0.1のソースが表示されている場合は、パケットに影響を与えている、質問にリストされていない別のSNATまたはMASQUERADEルールが必要です。そのルールを削除するか、スコープを制限して、ホームサーバーに着信する接続に影響を与えないようにする必要があります。

さらにサポートが必要な場合は、関連性があると思われるルールだけでなく、サーバーのiptablesルールの完全なリストを投稿してください。

それは私のVPNに戻り、snatをy.y.y.yに戻します

いいえ、(疑似)接続の最初のパケットが処理されたときに確立された状態追跡を使用して逆変換されます。 iptables natテーブルは、接続の最初のパケットに対してのみ処理されます。

3
plugwash