外部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終了」としても機能します。実際には、簡素化、よりきれいな構成、そしてより高いセキュリティのために別々のワイヤガードトンネルを設定し、システムが次のように設定されるようにします。

概要

おすすめ記事