このチュートリアルでは、UbuntuでShadowsocksプロキシサーバーを設定する方法を説明します。 Shadowsocksは、インターネット検閲を回避するための軽量で高速かつ安全なSocks5プロキシです。サーバー側をセットアップする方法と、Ubuntuでデスクトップクライアントを構成する方法を学習します。 Shadowsocksには多くの実装があります。このチュートリアルでは、Shadowsocks-libevの使用方法を示します。
- Cで記述されており、ローエンドのマシンでも非常に高速です。
- 手入れが行き届いています。
- これは最も機能が豊富な実装です。 TCPファストオープン、マルチユーザー、管理API、リダイレクトモード、トンネルモード、UDPリレー、AEAD暗号、およびプラグインがすべてサポートされています。
前提条件
このチュートリアルを完了するには、次のものが必要です。
- VPS(仮想プライベートサーバー)。 Vultrをお勧めします。月額わずか2.5ドルで512Mメモリの高性能VPSを提供します。これは、プライベートプロキシサーバーに最適です。
- 次に、VPSにUbuntuをインストールします。
ステップ1:UbuntuにShadowsocks-libevサーバーをインストールする
リモートUbuntuサーバーにSSHで接続します。 Shadowsocks-libev
17.04以降Ubuntuリポジトリに含まれているため、次のコマンドでインストールできます:
sudo apt update sudo apt install shadowsocks-libev
Ubuntu 16.04ユーザーは、次のコマンドを実行してPPAからインストールできます。 software-properties-common
PPAからソフトウェアをインストールする場合に必要です。 Ubuntuサーバーにない可能性があります。
sudo apt install software-properties-common -y sudo add-apt-repository ppa:max-c-lv/shadowsocks-libev -y sudo apt update sudo apt install shadowsocks-libev
ナトリウム暗号ライブラリ(libsodium)は、shadowsocks-libevと一緒にインストールされます。安全で高速なChaCha20-Poly1305暗号化方式を使用する場合は必須です。インストールしたら、構成ファイルを編集します。
sudo nano /etc/shadowsocks-libev/config.json
ファイルのデフォルトの内容は次のとおりです。
{ "server":["::1", "127.0.0.1"], "mode":"tcp_and_udp", "server_port":8388, "local_port":1080, "password":"ACRrobo9ymXb", "timeout":60, "method":"chacha20-ietf-poly1305" }
127.0.0.1
を変更する必要があります 0.0.0.0
へ 、したがって、Shadowsocks-libevサーバーはパブリックIPアドレスをリッスンします。次に、 server_port
を変更します 8888などの他のポート番号に。パスワードはランダムに生成されたため、そのままにしておくことができます。
ファイルを保存して閉じます。次に、shadowsocks-libevサービスを再起動して、変更を有効にします。
sudo systemctl restart shadowsocks-libev.service
起動時に自動起動を有効にします。
sudo systemctl enable shadowsocks-libev.service
ステータスを確認してください。実行されていることを確認してください。
systemctl status shadowsocks-libev.service
次のエラーが表示された場合。
This system doesn't provide enough entropy to quickly generate high-quality random numbers. The service will not start until enough entropy has been collected.
このエラーは、 rng-tools
をインストールすることで修正できます。 。
sudo apt-get install rng-tools
次に実行します
sudo rngd -r /dev/urandom
これで、Shadowsocks-libevサービスを開始できます。
ステップ2:ファイアウォールを構成する
サーバーでiptablesファイアウォールを使用している場合は、ShadowsocksがリッスンしているTCPおよびUDPポートへのトラフィックを許可する必要があります。たとえば、ポート8888がShadowsocksで使用されている場合は、次のコマンドを実行します。
sudo iptables -I INPUT -p tcp --dport 8888 -j ACCEPT sudo iptables -I INPUT -p udp --dport 8888 -j ACCEPT
UFWファイアウォールを使用している場合は、次のコマンドを実行します。
sudo ufw allow 8888
AWSまたはGoogleCloudを使用している場合は、ウェブベースのコントロールパネルでファイアウォールを設定する必要があります。
ステップ3:Shadowsocks-libevクライアントをインストールして構成する
Ubuntuデスクトップ
shadowsocks-libev
パッケージには、サーバーソフトウェアとクライアントソフトウェアの両方が含まれています。 Ubuntu 20.04、18.04デスクトップで、次のコマンドを実行してShadowsocks-libevをインストールします。
sudo apt update sudo apt install shadowsocks-libev
Ubuntu 16.04デスクトップで、次のコマンドを実行してShadowsocks-libevをインストールします。
sudo add-apt-repository ppa:max-c-lv/shadowsocks-libev -y sudo apt update sudo apt install shadowsocks-libev
Shadowsocks-libev(サーバー)はインストール後に自動的に起動します。 UbuntuデスクトップでShadowsocksサーバーを停止する必要があります。
sudo systemctl stop shadowsocks-libev
また、起動時に自動起動を無効にします。
sudo systemctl disable shadowsocks-libev
Shadowsocksクライアントバイナリの名前はss-local
。そのためのテンプレートsystemdサービスユニットがあります: / lib / systemd / system / [email protected]
。クライアントを起動する前に、クライアント側の構成ファイルを作成する必要があります。 Shadowsocks-libevサーバー構成をクライアント構成ファイルにコピーできます。
sudo cp /etc/shadowsocks-libev/config.json /etc/shadowsocks-libev/location-of-your-server.json
location-of-your-server
を置き換えることができます SFO、LAXのようなもので。次に、クライアント構成ファイルを編集します。
sudo nano /etc/shadowsocks-libev/location-of-your-server.json
サーバーアドレスをサーバーのパブリックIPアドレスに変更し、次の行を追加して、クライアントに127.0.0.1でリッスンするように指示します。
"local_address":"127.0.0.1",
したがって、クライアント構成ファイルは次のようになります。
{ "server":"your-server-ip-address", "mode":"tcp_and_udp", "server_port":8888, "local_address":"127.0.0.1", "local_port":1080, "password":"ACRrobo9ymXb", "timeout":60, "method":"chacha20-ietf-poly1305" }
ファイルを保存して閉じます。次に、次のコマンドでクライアントを起動できます:
sudo systemctl start [email protected]location-of-your-server.service
また、起動時に自動起動を有効にします。
sudo systemctl enable [email protected]location-of-your-server.service
ステータスを確認してください。実行されていることを確認してください。
systemctl status [email protected]location-of-your-server.service
これで、ss-localプロセスはUbuntuデスクトップの127.0.0.1:1080でリッスンし、Shadowsocksサーバーに接続されます。
Windowsデスクトップ
Windowsユーザーは、このShadowsocksクライアントをダウンロードできます。インストールしたら、クライアントソフトウェアに新しいサーバーを追加できます。サーバーのIPアドレス、ポート、およびパスワードを指定します。 適用コード>をクリックします ボタン
複数のプロキシサーバーがある場合は、[追加コード>]をクリックできます ボタンをクリックして、プロキシサーバーを追加します。一度に使用するプロキシサーバーは1つだけであることに注意してください。
ステップ4:Socksプロキシを使用するようにWebブラウザを設定する
プログラムでsocksプロキシを使用するには、プログラムがsocksプロキシをサポートしている必要があります。 Firefox、Google Chrome、Dropboxなどのプログラムを使用すると、ユーザーはプロキシを使用できます。 FirefoxとGoogleChromeの設定方法を紹介します。
Firefox
Firefoxで、編集に移動します>設定>一般 (またはツール ->オプション ->一般 )。次に、一番下までスクロールして、[設定]をクリックします ネットワークプロキシ 。 接続設定 ウィンドウで、手動プロキシ設定を選択します 。次に、 SOCKS v5を選択します ShadowsocksはSocks5プロキシであるためです。 127.0.0.1
と入力します SOCKSHostフィールドと1080
ポートフィールドで。 SOCKSv5を使用する場合はプロキシDNSを確認してください 有効になっています。 OKをクリックします これらの変更を適用します。
Google Chrome
コマンドラインからGoogleChromeおよびChromiumブラウザーのプロキシを構成できますが、プロキシを管理するためにProxySwitchyOmega拡張機能をインストールすることをお勧めします。
拡張機能がGoogleChromeにインストールされたら、次のようにプロキシサーバーを構成します。
-
SOCKS5
を選択します プロトコル。 -
127.0.0.1
を設定します サーバーアドレスとして。 -
1080
を設定します ポート番号として。
変更を適用します。次に、右上隅にある拡張機能アイコンをクリックし、 Proxy SwithyOmega
をクリックします。 。
デフォルトでは、SwithyOmegaはオペレーティングシステムのプロキシ設定を使用します。 システムプロキシ
から変更する必要があります プロキシ
へ 。
これで、プロキシが機能するはずです。
ステップ5:DNSリークテスト
dnsleaktest.comにアクセスします。 ShadowsocksサーバーのIPアドレスが表示されます。これは、プロキシが機能していることを示しています。
標準テストをクリックします。ローカルISPがテスト結果に含まれていないことを確認してください。
コマンドラインのプロキシ
コマンドラインプログラムでプロキシを使用できるようにするには、 tsocks
をインストールします。 。
sudo apt install tsocks
次に、構成ファイルを編集します。
sudo nano /etc/tsocks.conf
次の行を見つけます:
server = 192.168.0.1
に変更
server = 127.0.0.1
ファイルを保存して閉じます。これで、コマンドラインプログラムで次のようにShadowsocksプロキシを使用できるようになります。
sudo tsocks apt update
プロキシチェーンと呼ばれる同様のプログラムもあります。
TCPファストオープンを有効にする
TCP Fast Openを有効にすることで、Shadowsocksを高速化できます。 TCPはコネクション型プロトコルです。つまり、データは接続が確立された後にのみ交換できます。これは、3ウェイハンドシェイクを介して行われます。言い換えると、従来、データは3ウェイハンドシェイクが完了した後にのみ交換できます。 TCPファストオープン(TFO)は、3ウェイハンドシェイクが完了する前にデータを交換できるメカニズムであり、最大1ラウンドトリップ時間(RTT)を節約します。
TCPファストオープンのサポートは、バージョン3.7以降Linuxカーネルに統合され、バージョン3.13以降はデフォルトで有効になっています。次のコマンドを実行して、カーネルのバージョンを確認できます。
uname -r
UbuntuサーバーでTCPファストオープン構成を確認するには、
を実行します。cat /proc/sys/net/ipv4/tcp_fastopen
4つの値を返すことができます。
- 0は無効を意味します。
- 1は、(クライアントとして)発信接続が有効になっていることを意味します。
- 2は、(サーバーとしての)着信接続が有効になっていることを意味します。
- 3は、発信接続と着信接続の両方で有効になっていることを意味します。
すべてのUbuntuVPS(仮想プライベートサーバー)が 1
を返しました 上記のコマンドを実行した後。サーバーでtcp_fastopenを3に設定する必要があります。これを実現するために、sysctl構成ファイルを編集できます。
sudo nano /etc/sysctl.conf
次に、ファイルの最後に次の行を貼り付けます。
net.ipv4.tcp_fastopen=3
変更を有効にするためにsysctl設定を再ロードします。
sudo sysctl -p
次に、Shadowsocks構成ファイルでTCPファストオープンを有効にする必要もあります。
sudo nano /etc/shadowsocks-libev/config.json
次の行を追加します。
"fast_open": true
したがって、Shadowsocksサーバー構成ファイルは次のようになります。
{ "server":"your-server-ip-address", "server_port":8388, "local_port":1080, "password":"focobguph", "timeout":60, "method":"chacha20-ietf-poly1305", "fast_open": true }
最後の構成行にはコンマがないことに注意してください。ファイルを保存して閉じます。次に、Shadowsocksサーバーを再起動します。
sudo systemctl restart shadowsocks-libev
実行されているかどうかを確認します。 (構成ファイルにエラーがあると、再起動できなくなる可能性があります。)
systemctl status shadowsocks-libev
また、Shadowsocksクライアント構成ファイルを編集して再起動し、UbuntuデスクトップでTCPファストオープンを有効にする必要があります。
TCPBBRを有効にする
TCP BBRは、接続速度を大幅に向上させることができるTCP輻輳制御アルゴリズムです。次のチュートリアルを確認してください。
- TCPBBRを有効にしてUbuntuネットワークのパフォーマンスを簡単に向上させる方法
Shadowsocksのその他の使用法については、マニュアルを確認してください。
man shadowsocks-libev
トラブルシューティング
時々、Shadowsocks-libevプロキシが機能しなくなり、 systemctl
でステータスを確認すると、サーバー側に次のエラーが表示されます。 。
ERROR: server recv: Connection reset by peer
クライアント側では、 systemctl
によって返されるエラー は:
ERROR: remote_recv_cb_recv: Connection reset by peer
なぜ発生するのかわかりませんが、 shadowsocks-libev
を再起動します サーバー上のサービスでこの問題を修正できます。
sudo systemctl restart shadowsocks-libev
毎回手動でサービスを再起動したくないので、cronジョブを追加して定期的に再起動します。
sudo crontab -e
ファイルの最後に次の行を入力します。
0 */3 * * * /bin/systemctl restart shadowsocks-libev
これにより、3時間ごとにサービスが再開されます。つまり、再起動は午前12時、午前3時、午前6時、午前9時などに発生します。時間はcronによって決定されることに注意してください。サービスの実行時間を計算しても決定されません。
Shadowsocks-libevログに次のエラーが表示された場合。
ERROR: unable to resolve www.youtube.com
これは、Shadowsocks-libevサーバーがDNSを正常に解決できないことを意味します。 /etc/shadowsocks-libev/config.json
でDNSサーバーを指定すると便利です ファイル。ファイルに次の行を追加して、shadowsocks-libevサービスを再起動するだけです。
"name_server":"1.1.1.1",
Shadowsocksサーバーで独自のDNSリゾルバーを実行している場合は、ネームサーバーとして127.0.0.1を指定できます。
"name_server":"127.0.0.1",
JSONファイルでは、最後の行がカンマで終わっていないことに注意してください。
それでおしまい!このチュートリアルが、UbuntuにShadowsocks-libevプロキシをインストールするのに役立つことを願っています。いつものように、この投稿が役に立った場合は、無料のニュースレターを購読して、より多くのヒントやコツを入手してください🙂