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
レーン・ベン・アマール