LoginSignup
9
8

More than 5 years have passed since last update.

ルーター内のProxyサーバーを経由してブラウザでアクセスする

Last updated at Posted at 2016-01-28

ルーターの設定を変えたりするために、どうしてもブラウザでルーター内のネットワークにアクセスしなければならないことがあります。
そのときに外部サーバーを経由してアクセスできるようにする方法です。
(実は何度も似たような話を書いていますが、自身のための備忘録として書いておきます)

あくまで「こうやればできるよ」なので、セキュリティに関しての説明は省きます。

前提条件

ネットワーク構成としてはこのような感じです。
5ec4cf47-736e-b324-509d-e8198d5c9751.png

  • serverに対してはSSHでアクセスでき、root権限があります。
  • ubuntuにも内部ネットワークからアクセスでき、root権限があります。
  • ubuntuには事前にポートフォファードの設定をしてあり、server経由でSSHアクセスが出来ます。

Proxyサーバーのインストール

Ubuntuにログインして、Squid3をインストールします。
とりあえず設定はデフォルトのままで。

(ubuntu) # apt-get install squid3
(ubuntu) # initctl restart squid3 
squid3 start/running, process 1462

ubuntu(3128) -> server(1132)にポートフォファード

autosshコマンドを使って、ubuntuからserverにポートフォファードをします。
(参考: リモートSSHポートフォファード)

squid3のデフォルトポートは3128です。それをサーバーの1132ポートに割り当てています。

(ubuntu) # autossh admin@www.server.com -M 0 -C -N -f -R 1132:localhost:3128

これで server内で1132ポートにhttpアクセスをすれば、ubuntu内の3128ポート、つまりsquid3にアクセスができるはずです。
curlコマンドで確かめてみましょう。

(server) $ curl -x http://localhost:1132 -L http://192.168.80.1

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"><!-- InstanceBegin template="/Templates/Master_No_Nav.dwt" codeOutsideHTMLIsLocked="false" -->
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <link rel="icon" type="image/png" href="/favicon.png" />
        <meta http-equiv="Cache-Control" CONTENT="no-cache">
        <meta http-equiv="Pragma" CONTENT="no-cache">
        <meta http-equiv="Expires" CONTENT="Mon, 1 Jan 2001 12:00:01 GMT">

        <!-- InstanceBeginEditable name="Page Title" -->
        <title>
            CradlePoint MBR1200 Gateway :

            Administration Login
        </title>
...

おお、とりあえずcurlコマンドで今回アクセスしたい192.168.80.1(ルーター)の管理画面のHTML文字列が返ってきました。
でもまだブラウザではアクセスできないです。

server(1232) -> server(1132) に転送する

ブラウザでproxy設定を http://www.server.com:1132 にしてもアクセス出来ないのは、
リモートSSHポートフォファードが内部からのアクセスしか受け付けないからです。

そこで外部向けポート(server:1232)にアクセスしたら、内部のproxyサーバーポート(server:1132)に転送されるようにします。
ポイントは -gオプション ですね。これによって、外部からのアクセスを内部に転送できます。

(local) $ ssh -A -f admin@www.server.com -t ssh -f -N -C -g -L 1232:localhost:1132 admin@localhost

もちろんのことですけど、外部向けポート(server:1232)は外部からアクセスできるように開放しておかなければなりません

Proxy用のChrome Extension

Google Chromeを使っているなら、Proxy SwitchySharpが使いやすいです。
https://chrome.google.com/webstore/detail/proxy-switchysharp/dpplabbmogkhghncfbfdeeokoefdjegm

Screen Shot 2016-01-28 at 1.41.43 PM.png

結果

おー。できたできた。

Screen Shot 2016-01-28 at 1.43.53 PM.png

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8