SSHポートフォワードで簡単トンネリング
SSHポートフォワード
SSHポートフォワードとは、ルータのポート転送の様な機能です。SSHの暗号化した上に任意のホスト、ポートに対して転送する機能です。この機能を使用すればVPNの様なことが可能になります。
どんなことができるんだよ
何ができるのかというと、teratermなどのSSHクライアントさえつなげれば、簡単にトンネリングができセキュアな通信ができるのだ。基本的には外部から自宅内のLANにアクセスしたいが、外部から直接アクセスは危険な場合に使用するのだ。具体的には、こんなこと
- ルータの設定を変更したい。
- クライアントをリモートコントロールしたい
- メールを安全にやりとりしたい
- むふふなページをみたいが、会社とか学校で遮断されたりログに残したくないから自宅経由で見る
※最後のはプロキシをかませてやります。このページの下に「むふふなページを自宅経由で見る」を参照。
ポートフォワード概念
ポートフォワードは、こんな形で通信を行っています。

まず、SSHでログインしポートフォワードの設定をします。その後はこんな感じ。
- 自分自身にアクセスをする
- SSHのトンネルを通り、SSHサーバへアクセス
- ポートフォワードで設定した、リモート先へSSHからアクセス
- リモート先がSSHサーバへレスポンス
- SSHのトンネルを通り、クライアントへ帰る
- 自分自身からレスポンスが返ってくる
VNCでクライアントをリモートコントロールしてみる
Windowsのリモートデスクトップが使えなかったので、RealVNCを使ってクライアントをリモートコントロールしてみることにした。クライアントにVNCサーバを、接続元にはVNCビューワのインストールをする必要がある。下のサイトからダウンロードしてインストールする。設定は簡単なので省略。基本デフォルトでOK。クライアント側にはWindowsのファイアウォールを設定して外部からアクセスできるようにする必要がある。
http://www.realvnc.com/
SSHサーバの設定
/etc/ssh/sshd_configに以下の設定がされていないとできません。デフォルトYESなので書いてないかもしれません
AllowTcpForwarding yes
その他にもssh_configで細かい設定ができますが、省きます。。
SSHクライアントの設定
SSHで接続
SSHクライアントとしてTeraTermを使用します。SSHの接続設定はSSHでセキュアに書いてあります。SSHサーバへ接続してください。
めにゅー

メニューからポートフォワーディングを選択する。
ポートフォワーディングセットアップ

追加をクリック
SSHポートフォワーディング

ローカルマシンのポートは任意でかまいません。フォワーディング先のリモートマシンはVNCサーバ(192.168.0.3)となり、VNCのデフォルトポート5900になります。
※注意:リモートマシンはSSHサーバではなく、SSHサーバから見たフォワードしたいサーバです。自宅サーバのグローバルIPとか指定しないでねー←これ、結構勘違いする人多いです。
できあがり

以上でポートフォワーディングの設定は終了です。設定ファイルを保存しとくと便利です。
VNCで接続する

SSHでサーバに接続している状態で、VNC Viewerを起動しserverを指定し接続します。上記でローカルマシンのポートを5900以外に設定した場合はポートの指定する必要があります。「localhost:10000」みたいに。接続完了です。
むふふなページを自宅経由で見る
そんなに特殊なことをやらない、ただプロキシを使えばいいってことです。

設定する内容は、こんな感じ。
- 自宅サーバで、SSHとProxyサーバ(squidとか)を起動する
- クライアントからサーバへSSHアクセス
- 以下の設定でポートフォワード
- ローカルマシンのポート:8080 (任意)
- リモートマシン:127.0.0.1 (プロキシとSSHが同一サーバだから)
- リモートマシンのポート:3128 (プロキシサーバのポート)
- クライアントのブラウザでプロキシの設定をする。上のローカルマシンのポートと合わせる
- いざ、むふふな旅へ!!
ただし、プロキシできるアクセス限定です。ストリーミングなどは、クライアントからサーバへ直接アクセスにいっちゃいます。ご注意を。それと、DNSで名前解決は普通にアクセスにいっちゃいます。あまり、DNSで遮断ってのは聞かないのでOKかな?
完全にやるなら、VPNの使用をお勧めします。