導入
安全でないネットワークや、非常に制限の厳しいファイアウォールが設置されたネットワークに接続していて、トラフィックを誰にも見られたくないと思うことがあるかもしれません。解決策の一つは、Ubuntu 22.04 / 20.04 / 18.04でVPNを設定することですが、多くのVPNでは特別なクライアントソフトウェアのインストールが必要で、インストール権限がない場合もあります。しかし、安全にWebを閲覧したいだけなら、手軽で無料、そして便利な代替手段があります。それは、SOCKS 5プロキシトンネルです。.
SOCKSプロキシは、設定されたアプリケーションがトラフィックをルーティングする暗号化されたSSHトンネルです。サーバー側では、プロキシがトラフィックをパブリックインターネットに転送します。VPNとは異なり、SOCKSプロキシはクライアントデバイス上でアプリケーションごとに設定する必要がありますが、アプリケーションがSOCKSプロキシに対応していれば、特別なクライアントソフトウェアなしでアプリケーションを起動できます。サーバー側では、SSHの設定のみが必要です。.
このチュートリアルでは、Ubuntu 22.04(SSH経由でアクセスできるLinuxディストリビューションであればどれでも使用可能です)を実行するサーバーと、クライアントアプリケーションとしてFirefoxウェブブラウザを使用します。このチュートリアルを完了すると、暗号化されたSSHトンネルを介してウェブサイトを閲覧できるようになります。.
前提条件
- Ubuntu(他のディストリビューションでも動作)を実行するLinuxサーバーとユーザー
須藤および SSH アクセス。. - Firefox Web ブラウザなどの SOCKS プロキシを設定するプログラム。.
- Windows ユーザーの場合は、PuTTY ツールまたは Windows Subsystem for Linux (WSL) も必要になります。.
Windows ユーザーの場合、プロキシ トンネルを設定するには PuTTY を使用します。macOS または Linux ユーザーには、トンネルを設定するためのツールがプリインストールされています。.
ステップ1 (macOS/Linux) – トンネルの設定
ローカルコンピュータで、SSHキーを使ってドロップレットを作成していない場合は、SSHキーを生成します。キーが生成されたら、SSHドロップレットの「authorized_keys」ファイルに公開鍵が追加されていることを確認してください。その後、ターミナルアプリケーションを開き、SOCKSプロキシを有効にしたSSHトンネルを作成します。.
次のコマンドでトンネルを開始します。
ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain証明の説明
-私: ホストに接続するためのSSHキーパス-D: 指定されたポート番号でSOCKSトンネルが必要であることをSSHに伝えます(1025から65536までの番号を選択できます)。-f: プロセスをバックグラウンドに移動する-C: 送信前にデータを圧縮します-q: サイレントモードを使用する-N: トンネルが閉じられた後はコマンドが送信されないことを SSH に伝えます。
次のコマンドでトンネルが実行されていることを確認します。
ps aux | grep ssh出力には次のような行が表示されます。
Output
sammy 14345 0.0 0.0 2462228 452 ?? Ss 6:43AM 0:00.00 ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain
ターミナルアプリケーションを終了しても、トンネルはアクティブなままです。これは、SSHセッションをバックグラウンドで実行する -f 引数を使用しているためです。
ステップ1(Windows) - トンネルの設定
PuTTYを開きます。まだインストールしていない場合は、PuTTYをダウンロードして任意の場所に保存してください。PuTTYのインストールには管理者権限は必要ありません。 .。EXE ダウンロードして実行します。.
トンネルを設定するには、次の手順に従います。
セッション セクションから、サーバーのホスト名 (または IP アドレス) と SSH ポート (通常は 22) を追加します。.
左側で、「接続」>「SSH」>「トンネル」に移動します。
1025 ~ 65536 の間の任意の送信元ポート番号 (例: 1337) を入力します。
ダイナミックラジオボタンを選択します。
[追加]ボタンをクリックします。
左側のセッションに戻ります。
「保存されたセッション」フィールドに名前を追加し、「保存」ボタンをクリックします。
次に、「開く」ボタンをクリックして接続を確立します。
ユーザー名 須藤 サーバーのパスワードを入力してログインします
ステップ2 – トンネルを使用するようにFirefoxを設定する
SSHトンネルが構築できたので、次はFirefoxでそのトンネルを使用するよう設定しましょう。SOCKS 5トンネルを動作させるには、トンネルを実装できるローカルアプリケーションを使用する必要があることに注意してください。Firefoxにはこの機能があります。
この手順は Windows、macOS、Linux で同じです。.
SSHコマンドで使用したポート番号を確認してください。例では1337を使用しました。.
(以下の手順は Firefox バージョン 80 で実行されましたが、オプションの場所は異なる場合がありますが、他のバージョンでも機能するはずです。)
Firefox を開きます。
- 右上隅のハンバーガーアイコンをクリックして、Firefox メニューにアクセスします。.
- [環境設定] または [オプション] メニュー項目をクリックします。.
- 下にスクロールして、[ネットワーク設定] セクションの [設定...] ボタンを選択します。.
- 「インターネットへのプロキシ アクセスを構成する」という見出しの下で、「手動プロキシ構成」を選択します。.
- SOCKS ホストには localhost または 127.0.0.1 を入力し、ポートにはトンネルで指定されたカスタム ポート 1337 を使用します。.
- 下部にある「SOCKS v5使用時のDNSプロキシ」のボックスにチェックを入れます。
- 「OK」ボタンをクリックして設定を保存して閉じます。
Firefoxで別のタブを開き、ウェブブラウジングを始めましょう。SSHトンネルを介して安全にブラウジングする準備が整っているはずです。ウェブサイトから受信するデータは暗号化されています。さらに、プロキシDNSオプションにチェックを入れているため、DNSルックアップも暗号化され、ISPはあなたが閲覧しているページやその取得元を把握できません。.
プロキシを使用していることを確認するには、Firefoxのネットワーク設定に戻り、別のポート番号を入力して設定を保存します。これでウェブを閲覧しようとすると、「プロキシサーバーが接続を拒否しています」というエラーメッセージが表示されるはずです。これは、Firefoxがデフォルトの接続ではなく、プロキシを使用していることを示しています。あるいは、ipecho.netなどのパブリックIPサイトにアクセスして、返されるIPアドレスがSSH DropletのIPアドレスであることを確認してください。これは、現在プロキシとして機能しているからです。.
ステップ3 – Firefoxでプロキシをリセットする
SSHトンネルのプライバシー保護が必要なくなったら、Firefoxのネットワークプロキシ設定に戻ります。「システムのプロキシ設定を使用する」ラジオボタンをクリックし、「OK」をクリックします。これでFirefoxはSOCKSトンネルを使用しなくなったので、これも無効にできます。トンネルはそのままにして、Firefoxでプロキシの有効/無効を切り替えることもできますが、トンネルを長時間アイドル状態にしておくと、自動的に閉じてしまう可能性があります。.
トンネルを閉じる (macOS/Linux)
ローカルマシンに先ほど作成したトンネルはバックグラウンドに送られたため、トンネルを開くために使用したターミナルウィンドウを閉じてもトンネルは終了しません。トンネルを終了するには、psコマンドを使用してプロセスID(PID)を確認し、 殺す プロセスを終了しましょう。.
マシン上のアクティブな ssh プロセスをすべて検索してみましょう。
ps aux |grep ssh先ほどトンネルを作成するために入力したコマンドに似た行を見つけてください。出力例を以下に示します。
Output
sammy 14345 0.0 0.0 2462228 452 ?? Ss 6:43AM 0:00.00 ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain行頭の最初の2列のうち1列目に、3~5桁の数字があります。これがPIDです。例では14345のPIDが強調表示されています。.
PIDがわかったので、killコマンドを使ってトンネルを切断できます。プロセスを強制終了する際には、PIDを使用してください。
kill 14345トンネルを閉じる(Windows)
トンネルの作成に使用したPuTTYウィンドウを閉じます。これで完了です。.
ステップ4(macOS/Linux) – 頻繁に使用するショートカットを作成する
macOSまたはLinuxシステムの場合、エイリアスを作成するか、スクリプトを作成してトンネルを素早く作成できます。トンネル作成プロセスを自動化する方法は2つあります。
これらのショートカット方法はどちらも、サーバーへのパスワード/パスフレーズなしの SSH キー認証が必要です。
クリック可能なBASHスクリプト
クリックするとトンネルが開始されるアイコンが必要な場合は、小さなBASHスクリプトを作成してその機能を実行できます。このスクリプトはトンネルを開始し、Firefoxを起動します。ただし、最初にFirefoxでプロキシ設定を手動で追加する必要があります。.
macOSでは、コマンドラインから起動できるFirefoxのバイナリはFirefox.app内にあります。アプリケーションがアプリケーションフォルダ内にあると仮定すると、バイナリは次の場所にあります。 /アプリケーション/Firefox.app/コンテンツ/MacOS/firefox 見つかりました。.
Linuxシステムでは、リポジトリからFirefoxをインストールした場合、またはすでにインストールされている場合、その場所は次のとおりです。 /usr/bin/firefox Firefox が標準の場所にない場合は、いつでも find firefox コマンドを使用して、システム上の Firefox の場所を見つけることができます。.
このスクリプトでは、Firefoxのパスをお使いのシステムに適したパスに置き換えてください。また、トンネルを確立するために先ほど成功したコマンドを反映するように、SSH行を調整する必要があるかもしれません。.
テキストエディタの使用
nano を使用して新しいファイルを作成します。
nano ~/socks.sh次の行を追加します。
#!/bin/bash -e
ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@`your_domain`
/Applications/Firefox.app/Contents/MacOS/firefox &
- ポート番号を希望の番号に置き換えます。
1337(Firefoxで設定した内容と一致する必要があります) - SSHユーザー@ホスト名またはIPを置き換えます
sammy@your_domainする /アプリケーション/Firefox.app/コンテンツ/MacOS/firefoxシステムの Firefox バイナリ パスに置き換えます。
スクリプトを保存します。nanoの場合は、Ctrl + o と入力し、終了するにはCtrl + x と入力します。.
スクリプトを実行可能にして、ダブルクリックで実行されるようにします。コマンドラインからchmodコマンドを使用して実行権限を追加します。
chmod +x /path/to/socks.shmacOSでは、.shファイルをエディタで開かずにプログラムとして実行するようにmacOSに指示するために、追加の手順が必要になる場合があります。これを行うには、socks.shファイルを右クリックし、「情報を見る」を選択します。.
「このアプリケーションで開く」セクションを探し、三角形が下向きになっていない場合はクリックしてドロップダウンメニューを表示します。Xcodeがデフォルトのアプリケーションとして設定されている可能性があります。.
これをTerminal.appに変更してください。Terminal.appがリストにない場合は、「その他」を選択し、「アプリケーション」>「ユーティリティ」>「Terminal.app」に進みます(「アクティブ」ドロップダウンメニューを「推奨アプリケーション」から「すべてのアプリケーション」に設定する必要がある場合があります)。.
SOCKSプロキシを開くには、ファイルをクリックします ソックス ダブルクリックしてください。スクリプトはターミナルウィンドウを開き、SSH接続を開始してFirefoxを起動します。この時点でターミナルウィンドウを閉じても問題ありません。Firefoxのプロキシ設定が維持されている限り、安全な接続でブラウジングを開始できます。
このスクリプトはプロキシをすぐに停止するのに役立ちますが、ssh プロセスを見つけて終了したら強制終了するには、上記の手動の手順に従う必要があります。.
コマンドラインエイリアス
頻繁にコマンドラインでトンネルを起動する必要がある場合は、コマンドラインエイリアスを作成してその作業を自動化できます。エイリアスを作成する上で最も難しいのは、エイリアスコマンドをどこに保存するかを決めることです。.
LinuxディストリビューションやmacOSのバージョンによって、エイリアスが保存される場所は異なります。以下のいずれかのファイルを探して、 エイリアス 他のエイリアスが現在どこに保存されているか検索します。機能には以下が含まれます。
- ~/.bashrc
- ~/.zshrc
- ~/.bash_aliases
- ~/.bash_profile
- ~/.プロファイル
正しいファイルを見つけたら、既存のファイル、またはファイルの末尾に以下のエイリアスを追加します。以下の例では、SOCKSトンネルを表すために「firesox」というエイリアスを使用していますが、エイリアスには任意の単語を使用できます。
alias firesox='ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain && /Applications/Firefox.app/Contents/MacOS/firefox &'- 1337 を希望のポート番号に置き換えます(Firefox に入力したものと一致する必要があります)。
- sammy@your_domain を SSH ユーザーのホスト名または IP に置き換えます。
- /Applications/Firefox.app/Contents/MacOS/firefox を Firefox バイナリへのパスに置き換えます。
エイリアスは新しいシェルを起動した時にのみ読み込まれるので、ターミナルセッションを閉じて新しいシェルを起動してください。次のように入力すると、
firesoxこれにより、トンネルエイリアスが設定され、Firefoxが起動してコマンドラインに戻ります。Firefoxがプロキシを使用するように設定されていることを確認してください。これで安全にブラウジングできます。.
ステップ5(オプション) - トラブルシューティング:ファイアウォールのバイパス
接続がうまくいけば、準備完了です。ここまで読んでいただいても結構です。ただし、ファイアウォールの制限によりSSH接続が確立できない場合は、トンネルの確立に必要なポート22がブロックされている可能性があります。SSHプロキシサーバーの設定を制御できる場合(DigitalOcean Dropletのルート権限があれば可能です)、SSHがポート22以外のポートでリッスンするように設定できます。.
ブロックされていないポートはどれを使用できますか?
頻繁に開かれるポートには、80 (一般的な Web トラフィック) と 443 (TLS、安全な Web トラフィック) が含まれます。.
SSH サーバーが Web コンテンツを提供していない場合は、SSH にデフォルトのポート 22 ではなく、これらの Web ポートのいずれかを使用して通信するように指示できます。このポートではトラフィックが暗号化されることが予想されるため、443 が最適です。SSH トラフィックは暗号化されます。.
ファイアウォールのない場所から、プロキシに使用している DigitalOcean Droplet に SSH で接続するか、Digital Ocean コントロール パネルの組み込みコンソールを使用します。.
SSH サーバーの設定を編集します。
sudo nano /etc/ssh/sshd_configポート 22 の行を探します。.
「22」を完全に置き換えるか、SSHがリッスンする2つ目のポートを追加することもできます。SSHが複数のポートをリッスンするように選択したので、ポート22の下にポート443という新しい行を追加します。例を以下に示します。
. . . Port 22 Port 443 . . .
SSHを再起動して、編集したSSH設定をリロードしてください。ディストリビューションによってはSSHサーバのghostの名前が異なる場合がありますが、sshまたはsshdである可能性が高いです。どちらかが機能しない場合は、もう一方を試してください。
sudo service ssh restart新しい SSH ポートが機能していることを確認するには、新しいシェルを開き (誤ってロックアウトされないように、現在のシェルはまだ閉じないでください)、新しいポートを使用して SSH を開きます。
ssh sammy@your_domain -p 443
成功した場合は、両方のシェルを終了し、新しいポートを使用して SSH トンネルを開くことができます。
ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain -p 443Firefox の設定は、SSH ポートに依存せず、トンネル ポート (上記の 1337) のみに依存すため、同じになります。.
結果
現代では、カフェの公衆Wi-Fiネットワークなど、潜在的に危険なネットワーク上でも安全にブラウジングする方法は数多くあります。多くの場合、VPNを使用してすべてのトラフィックを安全に保護できる場合は、VPNを使用することをお勧めします。しかし、SOCKSトンネルがあれば、VPNを使用できない、または信頼できない場合でも、ウェブブラウジングに必要なセキュリティを確保できます。SOCKSトンネルは設定が簡単で使いやすく、完全に制御できます。安全なブラウジングのための優れた選択肢です。.












