外部IPアドレスのWireguard転送

外部IPアドレスのWireguard転送

IPアドレスが98.XX.XX.XXのWireguardを持つ外部サーバー(ホスト)と、Wireguardが192.168.0.2の内部サーバー(クライアント)があります。

クライアント側にWebサーバー(nginx、phpfpm)をインストールします。ホストでは、すべてのポートがクライアントに転送されます。 192.168.0.2 から 98.XX.XX.XX IM 応答を受信すると、Web サーバーのページです。すべて問題ありませんが、クライアントログファイル内のすべての接続のIPアドレスは192.168.0.1(ゲートウェイwiregusrdホスト98.XX.XX.XX)です。

私はクライアントルールを使ってこれをやろうとしています。

Table = 1
PostUp = ip rule add pref 500 from 192.168.0.2 lookup 1
PostDown = ip rule del pref 500

サーバー側ルール

Address = 195.168.0.1/24
SaveConfig = true
PostUp = iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostUp = iptables -t nat -A PREROUTING -d 98.XX.XX.XX -p tcp -m multiport --dports 80,443,25,53,21,20,110,113,465,587,993,995,4747,3306,4200 -j DNAT --to-destination 195.168.0.2
PostUp = iptables -t nat -A PREROUTING -d 98.XX.XX.XX -p tcp -m multiport --dports 5432,43,143,123,8002 -j DNAT --to-destination 195.168.0.2
PostDown = iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -t nat -D PREROUTING -d 98.XX.XX.XX -p tcp -m multiport --dports 80,443,25,53,21,20,110,113,465,587,993,995,4747,3306,4200 -j DNAT --to-destination 195.168.0.2
PostDown = iptables -t nat -D PREROUTING -d 98.XX.XX.XX -p tcp -m multiport --dports 5432,43,143,123,8002 -j DNAT --to-destination 195.168.0.2
ListenPort = 51823
PrivateKey =
[Peer]
PublicKey = 
AllowedIPs = 195.168.0.0/24

ただし、クライアント 192.168.0.2 で ping を送信またはパケットを送信すると、外部 IP が存在し、プロバイダの IP アドレスは 169.XX.XX.XX です。 IPアドレス98.XX.XX.XX(ホスト)Wireguardからパケットを送信する必要があります。

私に必要なシンプルなソリューション

クライアントIP 24.18.22.12 - > Wireguardホスト(98.XX.XX.XX) - >内部Webサーバー(192.168.0.2)(内部WebサーバーはクライアントIPソース24.18.22.12を確認し、Wireguardゲートウェイなし)

内部Webサーバー(192.168.0.2)のデータをGoogleまたは一部のWebサイトに公開すると、Wireguardホスト(98.XX.XX.XX)のIPアドレスを取得しますが、プロバイダのIPアドレス169.XX.XXを取得できません。 .ダブルX

内部Webサーバー(192.168.0.2) - > google.com(GoogleではWireguardホスト(98.XX.XX.XX)を確認)

必要なのは簡単です。 nat(wireguard)の背後にあるWebサーバーでは、すべてのhttp GET ipは24.18.22.12(実際のクライアントIP)192.168.0.2の代わりにIPアドレスwireguard getaway(192.168.0.2)を取得します。 -[08/May/2022:14:15:14 +0300] "GET /view.php?show=body HTTP/1.0" 200 2803 "https://site.domain/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36" すべての要求、Get、出版などIP 192.168.0.2があります。

私は必要です

答え1

クライアントIP 24.18.22.12 - > Wireguardホスト(98.XX.XX.XX) - >内部Webサーバー(192.168.0.2)(内部WebサーバーはクライアントIPソース24.18.22.12を確認し、Wireguardゲートウェイなし)

まあ、あなたはNATをしています。文字通り、ネットワークアドレスは次のとおりです。翻訳された。したがって、あなたが望むことは不可能です。

したがって、NAT を実行すると同時に NAT を実行することはできません。

Wireguardはレイヤ3トンネルです。つまり、実際にはIP(v4またはv6)パケットのみを転送できます。クライアントがホストのIPアドレスのパケットを処理できるようにするには、ホストでそのタスクを実行するか、NAT(必要ありません)。クライアントに対して別々のパブリックIPアドレスを公開できない場合、他のアプローチは見えません。

したがって、ホスト(98.xxx)でHTTP処理を実行し、設定したすべてのNATルールを削除し、nginxを次に設定する必要があります。リバースプロキシ、TLS接続を処理し、接続時間を大幅に短縮し、内部(たとえばWireguard)クライアントのIPアドレスを使用するWireguardトンネルを介して実際のWebサーバーと通信することもできます。

内部Webサーバー(192.168.0.2) - > google.com(GoogleではWireguardホスト(98.XX.XX.XX)を確認)

これは可能です。必要に応じて、ホストはクライアントの発信接続のNAT「VPN終了」としても機能します。実際には、簡素化、よりきれいな構成、そしてより高いセキュリティのために別々のワイヤガードトンネルを設定し、システムが次のように設定されるようにします。

概要

答え2

こんにちは、これは実際に非常に簡単です!

私の考えでは、これはプロキシを使用してヘッダーを追加するよりも「ベスト」アプローチです。このポリシーアプローチは、Webサーバーだけでなくすべてに適用されます。

Fail2banやその他のIP関連ホワイトリストで使用するために、正しい送信元IPでメールサーバーをホストするために使用します。 (私のISPはポート25をブロックしているので)

---仮想ネットワークレイアウト--- |場所ラインバッカー---| 46.123.123.0 | | [RGO]ランダムな人々オンライン64.123.123.0 |

ここでの目標は、VPS IPを使用するときにホームサーバーでホストされているRGOアクセスWebページを持つことです。

- - 足跡 - -

まず、トラフィックをホームサーバー(VPSから)にルーティングするためにDNATルールを追加する必要があります。

次のようなものが簡単な設定に適しています。

iptables -t nat -I PREROUTING 1 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.200:80

デフォルトでは、iptablesはポート80を介して受信したパケットをキャプチャし、デフォルトのルーティングプロセスを独自に上書きするように要求します。

パケットは一方向に流れますが、応答は正しくルーティングされないため、マスターがデータを送信しようとしたときにパケットが再び流れるようにSNATを実行する代わりに、ポリシールーティングを使用してパケットを正しくルーティングします。

デフォルトでは、パケットを表示し、Wireguard トンネルを再利用するためにデフォルトルートをオーバーライドします。

したがって、これを達成するには、Wireguardクライアント(ホームサーバー)設定ファイルに次のものを追加する必要があります。

[Interface]
PrivateKey = <Wireguard Private Key HERE>
Address = 10.0.0.200
Table = 123

PreUp = ip rule add from 10.0.0.200 table 123 priority 456
PostDown = ip rule del from 10.0.0.200 table 123 priority 456

[Peer]
PublicKey = <Wireguard Peer PubKey HERE>
Endpoint = 46.123.123.0:51822
AllowedIPs = 0.0.0.0/0 # This is required for this method to work
PersistentKeepalive = 25

- 結果 -

RGO IP が DNAT ルールを使用して VPS IP から何かを要求すると、ホーム サーバーのサービスに RGO IP が表示されます。

良い一日をお過ごしください。
1年遅れてもこれが役に立つことを願っています:D

レーン・ベン・アマール

関連情報