Edited at

踏み台サーバを介して、内部ネットワーク上のWEBサーバをブラウザ等で閲覧する方法

More than 1 year has passed since last update.


やりたいこと


  • 「ローカルPC -> SSH踏み台サーバ -> 内部ネットワーク上のWEBサーバ」で接続したい

  • ブラウザのアドレスバーやローカルのWEBサーバからcURLでWebAPIを叩く際にhoge.example.comと入力したら繋がるようにしたい

※ SSHで接続するところまでは大体できるよって人向けの記事です。

※ コマンドラインオプションなどの詳細は他の記事やSSHのドキュメントをご覧ください。

※ 公的なドキュメント :link:SSH (1) が常に正です。


やり方の概要

SSHのダイナミックポートフォワーディングでトンネリングした上で、

ローカルマシンをProxyとして扱うことで接続します。


ローカルの設定


sshクライアント設定



  • :link:puttyの場合


    • 踏み台サーバにつながるようにSSHを設定。

    • Connection -> SSH -> Tunnels を開いて次のように設定します。


      • Source port 8080

      • Destinationは空欄


      • Dynamicを選択



    • 設定箇所と、その内容のイメージは次の通りです。
      2018-07-13-001_PuttySettings01.png
      ※ この設定はssh -D localhost:8080 と等価です。




  • SSHコマンドラインの場合


    • ssh hogehoge -fND localhost:8080




hosts設定



  • C:\Windows\System32\drivers\etc\hosts を開きます。

  • 最後尾に下記の記述を行います。


hosts

# Example Settings for viewing protected web server

127.0.0.1 *.example.com
::1 *.example.com


proxy設定

WEBブラウザの設定でもいいですし、

Chromeのアプリケーションを使ってもいいです。


主要な設定

下記の通りです。


  • プロキシサーバの種類はSOCKS(5)

  • プロキシサーバのアドレスは`localhost


  • port: 8080


Chromeで :link:SwitchyOmegaを使用する場合


  • メニューからproxyを選択し、Proxy serversの項目に設定を記述します。
    2018-07-13-001_SwitchyOmegaSettings01.png


  • 左側のメニューの Apply changes をクリックし、設定を保存します。



Laravelの\GuzlleHttp\Clientで接続する場合

下記のように記述します。


test.php

use \GuzzleHttp\Client;

(中略)

$client = new Client(
[
'base_uri' => 'hoge.example.com',
]
);

$method = 'GET';
$endpoint = '/';
$options = [
'query' => [],
'headers' => [],
'http_errors' => false,
'proxy' => [
'http' => 'socks5h://localhost:8080',
//'https' => 'socks5h://localhost:9124',
'no' => [],
],
];

$response = $this->client->request(
$method,
$endpoint,
$options
);