web-dev-qa-db-ja.com

異なるサブドメインから異なる内部マシンへの通話の転送

異なるサブドメインから異なる内部IPアドレスにトラフィックをルーティングするにはどうすればよいですか?

1つのパブリックIPとそのIPを指すドメイン名を持つDebianルーターをセットアップしました。異なるサブドメインが異なる内部マシンに到達するようにしたいと思います。

ここではHTTP、SSH、FTPトラフィックについて話していて、Shorewallとdnsmasqがルーターにインストールされています。

たとえば、URL:ftp.example.com内部IP 192.168.1.10を持つ1つのマシンをポイントし、次にdev.example.com別の内部IPにアクセスしたいと思います。 192.168.1.200と言う

どのプロトコルがどのサブドメインで許可されるかを指定し、各プロトコルとポートを内部マシンに明示的にルーティングできればよいでしょう。

1
Joelbitar

一部のプロトコルでは、非標準ポートで実行しない限り、ポート転送だけではこれは不可能です(したがって、ルーター自体はSSHのポート22にあり、内部マシン1はパブリックIPのポート23に表示され、内部マシンなどです。ポート24など)または複数のパブリックアドレスを持っている。

[〜#〜] http [〜#〜]-これはリバースプロキシを使用して実行できます。 nginxのようなものを実行し、最初にポート80に着信するすべてのトラフィックを取得し、プロキシ機能を使用して、要求された(サブ)ドメインに従って関連するマシンに要求をファームアウトします。他のWebサーバーにも同様のプロキシ機能があります(つまり、Apacheですが、必要なのがプロキシ機能だけの場合は、nginxのような小さなものを実行する方が効率的です)。

[〜#〜] https [〜#〜]-接続しているすべてのクライアントがSNIをサポートしている場合は、上記のHTTPで説明したのと同じ方法を使用できます。残念ながら、Windowsで実行されているInternet ExplorerのバージョンはありませんXP SNIをサポートしているため、クライアントベースによってはこれが問題になる可能性があります。影響を受けるブラウザはユーザーに証明書エラーを表示します。依存するのではなく別の回避策SNIは、必要なすべての名前に有効な1つの証明書を取得することです(つまり、理論が非常に異なる名前の場合はマルチネーム証明書、単一のサブドメインの場合はワイルドカード証明書)が、これらは一般に単一よりも高価です名前証明書。

[〜#〜] ssh [〜#〜]-直接不可能です。ただし、ルーターにSSHで接続し、そこからさらにネットワークにSSHで接続することもできます。ポートフォワーディングなどでさえ、呪文を正しく取得すれば、このような複数のホップを介して機能します。 SSHが機能するようになった場合は、多くの場合FTPの実行可能な代替手段であるSFTPまたはSCP overを思い出してください。また、FTPにはない利点があります。

[〜#〜] ftp [〜#〜]-私はかなり長い間FTPサーバーを実行していないので、ここでは専門家ではありません。リバースプロキシオプションがあるかもしれませんが、プロトコルがどのように動作するかについての私の知識からはそれを疑っています。ここでのオプションは、1つのFTPサービスを持ち、ネットワーク共有を介してネットワーク上のさまざまなマシンにアクセスできるようにすることです(これは、認証要件によっては実用的ではない場合がありますが、多くの場合は十分です)。 FTPよりも効率的で安全なSCPまたはSFTP(SSH経由)の使用を検討することもできます。

5
David Spillett

これにはリバースプロキシを使用します。 Apacheのmod_proxy でうまくいくはずです。

0
MDMarra