%20%E3%82%92%20DIY%20VPS%20%E3%83%9B%E3%82%B9%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%99%E3%82%8B%20.png)
ご意見ありがとうございます。
私がしたいこと: たとえば、自分自身と 2 人のクライアント用に、いくつかのアプリケーション (Web と電子メール) を 1 つの静的 IP アドレスでホストし、主に学習し、場合によっては、少数のユーザーを持つ長期クライアント数名向けに限定的なホスティングを検討したいと考えています。
私が持っているもの 私は、32GB の RAM を搭載した XenServer Xeon を 100MB の接続で単一の静的 IP で稼働しています。
私が理解しようとしていること 私は、xenserver 上にいくつかの仮想マシンを設定し、IBM Lotus Domino (複数のポートを使用) を実行する実験をしたいと考えています。たとえば、80、25、1352 などです。そのため、ドメイン名に基づいて適切なサーバーにトラフィックを転送する方法を理解する必要があります。たとえば、
単一の外部 WAN IP -> domain1.com:80 -> VM1:80 単一の外部 WAN IP -> domain1.com:1352 -> VM1:1352
単一の外部 WAN IP -> domain2.com:80 -> VM2:80 単一の外部 WAN IP -> domain2.com:1352 -> VM2:1352
単一の外部 WAN IP -> domain3.com:80 -> VM3:80 (Web ホスティング用の Cpanel を実行)
リバース プロキシが方法である可能性は理解しています。NGINX または POUND ですが、これは Web アプリケーション専用で、他のアプリケーションには適していないようです。Citrix Netscaler も試してみましたが、完全に混乱してしまいました。DD-WRT の iptables か何かを使用する方法もわかりました。これを行う方法があるはずです。どなたかご意見をお聞かせいただければ幸いです。きっと誰かがどこかでこれを実行しているはずです。
カスタムまたはその他のルーター、仮想またはその他のアプライアンスも検討していますが、仮想アプライアンスなどのソフトウェア ベースのものも検討しています。何かアイデアはありますか?
ありがとう
シェーン
答え1
そこで、ドメイン名に基づいて適切なサーバーにトラフィックを転送する方法を見つける必要があります。
これは、アプリケーション層の仕様 (HTTP の Host ヘッダーなど) がない限り不可能です。その IP がなければ、DNS について何も知らないため、それに基づいて転送することはできません。
先日のほぼ同じ質問をご覧ください:プライベート NAT アドレスで DNS を使用できますか?
答え2
まず、IPv6 を設定し、各 VM に /60 をルーティングすることをお勧めします。こうすることで、トラフィックが目的のホストに直接ルーティングされるため、IPv6 を持つユーザーはプロキシに関連する問題を一切経験しなくなります。
さらに、VM に IPv6 を設定すると、トラフィックをプロキシするアドレスが提供されます。プロキシはバックエンドを見つけるために DNS に依存できるため、設定によってはこれが簡単になります。
HTTP トラフィックにはリバース プロキシが最適です。リバース プロキシは、クライアントとプロキシの両方が SNI をサポートしている限り、HTTPS トラフィックも処理できます。Web サーバーが SNI をサポートしていない場合でも、この方法は機能します。ポート 80 と 443 に限定する必要はありません。プロキシは、任意のポートでトラフィックを受信するように構成できます。
SMTP は、IPv4 アドレスにメール リレーをインストールすることで処理できます。スパムのリレーに悪用されないように注意する必要があります。リレーが外部の SMTP サーバーに接続できないようにファイアウォール ルールを設定することをお勧めします。ファイアウォールは、外部からリレーへの SMTP 接続、IPv6 経由でのリレーから VM への SMTP 接続、および VM から IPv6 または IPv4 (明らかに NAT を経由する必要がある) として外部への SMTP 接続を許可できます。
DNS は原則としてサポートできますが、まだ誰かがサポートを実装しているかどうかはわかりません。
他の特定のプロトコルを念頭に置いている場合は、そのサポート方法について喜んで提案させていただきます。ドメイン名に基づいてフロントエンドがディスパッチできるほど早くドメイン名を送信する他のプロトコルについては知りませんが、他のプロトコルについて学びたいと思います。
私は実装しました1つ私自身もそのようなフロントエンドを開発していますが、現時点ではサポートするのが最も簡単なプロトコルである HTTP と HTTPS のみです。