web-dev-qa-db-ja.com

sshを介してWindowsマシンからLinuxマシンにインターネットを共有する

Windowsマシンを介して安全なLinuxインフラストラクチャにアクセスできます。 Linuxインフラはインターネットにアクセスできませんが、Windowsマシンはインターネットにアクセスできます。

このWindowsマシンには、PuTTYがインストールされており、それを使用してLinuxインフラに接続できます。 WindowsマシンからLinuxインフラへのトンネルを双方向(ローカルとリモート)で設定できます。

私が疑問に思っているのは、PuTTYを使用したリモートトンネルを介して、Windowsホストを介してLinuxインフラストラクチャにインターネットアクセスを提供できるかどうかです。

これはDebianセキュリティアップデートと新しいマシンのプロビジョニング用であるため、http/httpsアクセスのみが必要です(現在、インターネットアクセスがないため、パッケージをインストールできません)。

スキーマは私の頭の中で非常に明確ですが、実際にそれを実装する方法がわかりません。

enter image description here

リモートトンネルが転送するポートでリッスンする、Windowsマシン上の一種のhttpプロキシが必要になると思いますか?

フロントsshマシンを構成して、ゲートウェイとして使用している他のホストがsshトンネルを介して接続するようにするにはどうすればよいですか?

また、この場合、DNSはどのように機能しますか?

ポインタをありがとう!

1
Gui13

SSHサーバーで許可されている場合(ほとんどのLinuxディストリビューションのデフォルト設定)、PuTTY(およびその他のSSHクライアント)で転送するTCP)を設定できます。

  • 使用可能で使用されていないSSHサーバー上のポート(例:8080)を判別します。

  • PuTTYで、SSHを介してSSHサーバー上のそのポート8080からWindowsシステムにTCPトラフィックをトンネリングし、それをプロキシサーバー(proxy.example.comポート8080)に転送するルールを設定します。 :

PuTTY screenshot for remote port forwarding

  • SSHサーバーでhttp_proxyおよびhttps_proxy環境変数を設定すると、多くのアプリケーションがsshポート転送を介してそのプロキシサーバーを使用できるようになります(一部のアプリケーションでは、プロキシを使用するために独自の設定を変更する必要があります) :

    export http_proxy="http://username:password@localhost:8080"
    export https_proxy=$http_proxy
    

    たとえば、次のようにテストします。

    curl -vv http://serverfault.com
    
  • 他のサーバー(ファイアウォールが許可されている場合)では、次を使用できます。

    export http_proxy="http://username:password@<ip-of-ssh-server>:8080"
    

これは設定がテストされていません。

1
HBruijn