出先にいながら自宅にいるようにインターネットをする方法

(Last Updated On: 2018年8月1日)

(6/14 11:00 間違いに気付いたので大幅に直しました)
(2018年08月01日 間違いに気付いたので少し追記しました)

自宅のSSHd + SOCKS serverを介してインターネットにアクセスすれば,公開鍵暗号を破られない限り,自分の管理していないFirewallやProxyに通信を閲覧されることがなくなります.
また,SSHが通っていれば簡単に使えるので手軽です.

ローカル:出先(会社,研究室)のLinux
リモート:自宅のLinux

と呼ぶことにします.

まず,ローカルからリモートへSSHでトンネルを掘りましょう

ssh -D 1080 -p 22 user@jitakuhogehoge.com

ポート番号は適宜読み変えてください.

ローカルのFirefoxを以下のように設定します

↑(2018年08月01日 追記 上記画像はやや間違えていて、SOCKS Hostの項目だけ設定すれば十分です)

SSL Proxyの項目は設定しないでください.SSLセッションは元々暗号化されているので,SOCKS通すと上手く通信できなくなります.

tcpdumpでパケットを見てみると,SOCKSを通さない場合は通信内容が丸見えです.
以下は,https://team2ch.orgを表示したときのものです.


sudo tcpdump -t -n -X -s 1000 port 80 > no_socks
cat no_socks

※一部抜粋

0x0000: 4500 028b 38bf 4000 4006 ed40 8299 0db0 E...8.@.@..@....
0x0010: 77f5 0a2f aa73 0050 6623 713b 7bc8 0a43 w../.s.Pf#q;{..C
0x0020: 8018 00b6 5868 0000 0101 080a 000d 74e6 ....Xh........t.
0x0030: 3e43 d1c0 4745 5420 2f69 6e64 6578 2e63 >C..GET./index.c
0x0040: 6769 2048 5454 502f 312e 310d 0a48 6f73 gi.HTTP/1.1..Hos
0x0050: 743a 2074 6561 6d32 6368 2e6f 7267 0d0a t:.team2ch.org..
0x0060: 5573 6572 2d41 6765 6e74 3a20 4d6f 7a69 User-Agent:.Mozi
0x0070: 6c6c 612f 352e 3020 2858 3131 3b20 553b lla/5.0.(X11;.U;

SOCKSを通せば


sudo tcpdump -t -n -X -s 1000 port 22 > socks_haita
cat socks_haita

※一部抜粋


0x0000: 4500 0104 c652 4000 3706 6a34 77f5 0a2f E....R@.7.j4w../
0x0010: 8299 0db0 a2e4 856a 628f d7eb f933 c721 .......jb....3.!
0x0020: 8018 0266 48c7 0000 0101 080a 0a5f 9a0d ...fH........_..
0x0030: 000e 0bc9 3049 7fb9 b473 7a4e 47d9 d50e ....0I...szNG...
0x0040: e8a4 15b4 ee8c 0d60 9506 c829 170e 2d26 .......`...)..-&
0x0050: 4fa2 d2e5 fc49 14c3 9f27 5b83 9a27 f5bf O....I...'[..'..
0x0060: 0368 db97 a2d1 187d f180 2f42 f631 c525 .h.....}../B.1.%
0x0070: 6fea 9341 019a 4f6a 1d7f bb0e 52ea 82fa o..A..Oj....R...

実際にパケットを見ても,通信内容について推測することは(公開鍵暗号を破らない限り)できません.
もし仮にパケット内容を暗号化している共通鍵が解読されたとしても,共通鍵は使い捨てなので,盗聴されたパケットは氷山の一角にすぎません.

ssh -Xはローカルネットワーク内であれば有効ですが,WAN越しだと描画速度の面から実用的ではありません.
この方法でSOCKSを使えば,ローカルから直接接続するのとあまり変わりない描画速度/回線速度で,Firewallを誤魔化しながら通信をすることができます.
もっとも,回線速度に関してはリモートの回線速度にも大きく依存すると考えられます.また,FirewallでSOCKSによる通信をしゃ断されたら使えないというデメリットもあります.

コメントを残す

メールアドレスが公開されることはありません。