最近、自宅で内部的にアクセス可能なシステムにFreeIPAをセットアップしました。 LANの外部にあるネットワークからこのWeb UIを管理したいのですが、同時に、このWeb UIをパブリックインターネットに公開する必要はありません。 SSHトンネルを介してアクセスする方法はありますか?
注:ssh
を使用したトンネルの設定に精通しています&です-L
次のように切り替えます。
$ ssh -L 12345:ipa.local.net:80 mysshserver
ただし、このアプローチはこのシナリオでは機能しません。FreeIPAにアクセスするには、ポート443と80の両方を使用してWeb UIにアクセスできることに加えて、サーバーの実際のホスト名を使用する必要があるためです。
これを達成する別の方法はありますかssh -L
?
SSHトンネリングを実行すると、すべての用語で少し混乱する可能性がありますが、-L
には補足的な機能があり、単一のポートではなくローカルにソケットを割り当てることにより、ポートを「動的に」割り当てることができます。
Manページから:
-D [bind_address:]port
Specifies a local ``dynamic'' application-level port forwarding. This works by
allocating a socket to listen to port on the local side, optionally bound to the
specified bind_address. Whenever a connection is made to this port, the connection
is forwarded over the secure channel, and the application protocol is then used to
determine where to connect to from the remote machine. Currently the SOCKS4 and
SOCKS5 protocols are supported, and ssh will act as a SOCKS server. Only root
can forward privileged ports. Dynamic port forwardings can also be specified in
the configuration file.
ソケットを割り当てることにより、DNSクエリを含むすべてのトラフィックをリモートサイトに到達させることができます。
手始めに、次のように(インターネット上のパブリックIPアドレスを介して)LANへの接続を開く必要があります。
$ ssh -D 1234 myserver
注:これは、パブリックインターネットIPアドレスを介してアクセス可能なサーバーにSSHで接続できることを前提としています。
それがセットアップされたら、別の端末で、このトンネルを利用するようにWebブラウザーを構成する必要があります。 注:このタイプのトンネルはソケットを提供しているため、それに接続するには、すべてのトラフィックをプロキシするようにWebブラウザに指示する必要がありますこのソケット。これは通常、プロキシの SOCKSまたはSOCKS v5接続タイプ として表示されます。
この例では、CLIを介してChromiumで実行する方法を示します。
$ ./Chromium --proxy-server="socks5://localhost:1234"
ここでは、Chromiumを起動して、ローカルホストのポート1234で以前に構成したSSHトンネルをポイントしています。これにより、LANに構成されているサーバーのURLにアクセスしようとすると、そのリダイレクトが表示されます:
すべての主要なブラウザーがこの機能を提供し、SuperUserなどの他のSEサイトでかなり広範囲にカバーされています。
さまざまなブラウザの拡張機能を利用して、特定のトラフィックのみを選択的にプロキシし、他のすべてのものを通常のインターネット接続経由でルーティングすることもできます。
たとえば、ProxySwitchy!を使用できます。 Chromeこれを正確に行うには: