以下の方向けの記事になります
海外で日本のサービスを使いたい方 中国にて、速い回線速度、接続数無制限、日本のIPでインタネットを楽しみたい方 Linuxサーバー知識がない方 暗号形式変更により違うバージョンのshadowsocksをインストールする必要が出てきた方
目次
何故、自分専用のVPN(shadowsocks)サーバーを構築するのか
中国のネット規制の回避法である、VPNサービスは多数存在します。
しかし回線速度、接続数に制限があったり、日本のIPではないため日本のサービスが使用不可等の問題があります。
これらの不満点は自分専用のサーバーを構築することで解消することができます。
自前でサーバーを用意するメリット
速度制限が無い。 接続数の制限が無い。 日本のIPとなるため、日本のサービスが利用可能。 価格はVPNサービスと同等の約650円/月
制限がないJPサイトにアクセスする場合でもVPNを使用したほうが圧倒的に速い
shadowsocksについて
GitHub
shadowsocks
shadowsocks is a fast tunnel proxy that helps you bypass firewalls - shadowsocks
中国の規制回避を目的としたソフトウェア。
初期の開発者が逮捕されたり、GitHubが攻撃されたり色々歴史があります。
本解説記事では、比較的容易にインストール出来る、「libev」バージョンを使用します。
暗号方式について
2021年2月、今後Shadowsocksは新しい暗号形式のみ使用すると宣言がありました。
Security update: Yes, we have finally removed support for all stream ciphers , almost 4 years after the proposal of Shadowsocks AEAD . Stay safe! 🦠
https://github.com/shadowsocks/shadowsocks-windows/releases
広く出回っているインストールスクリプト は新しい暗号形式に対応していない旧バージョン です。
従いまして、旧バージョンを使用している方は新しいバージョンに移行しましょう。
導入手順
やることリスト
「さくらインターネット」でVPSを契約 ログイン設定変更でセキュリティ対策の実施 「shadowsocks-libev」をVPSにインストール クライアントソフトウェアを設定
VPS契約
まず、shadowsocks-libevを動かすサーバーが必要なので、さくらインターネットでVPSを契約します。
VPSはバーチャルプライベートサーバー。要はサーバー。
今回の用途であれば、サーバー容量、処理能力は不要なので「最安プラン」で十分です。
クレジットカード決済であれば2週間無料で試せますので、途中で断念しても契約解除すればお金は掛かりません。
既にさくらのVPSを使用しているのであれば、そのサーバーにshadowsocks-libevをインストールしても構いません。
実際このブログ(WordPress)を動かしているVPSにて、shadowsocksを動かしています。
新規追加で簡単に追加できる
VPS設定(OSインストール~セキュリティ設定)
STEP
OSインストール
「さくらのVPS コンソール画面」より、以下の設定でインストール
設定項目 選択 OS CentOS7(Kusanagiでも可) スタータップスクリプト 任意 パケットフィルタ 下図参照 公開鍵 登録しない
言い換えればFirewalld設定なので、設定しないとクライアントが接続できない
STEP
TeraTermをインストール
窓の杜
窓の杜
「Tera Term」定番のターミナルエミュレーター
VPSを操作するのに使用するソフトウェア。
ポータブル版で問題ないです。
上の表にあった「公開鍵の作成」と、「VPNソフトウェアのインストール」に必要となります。
STEP
公開鍵を作成する
セキュリティ向上のため、鍵ファイルを使用してログインするようにするための準備を行います。
Teratermを起動→設定(s)→SSH鍵生成(N)
※ 起動時、新しい接続が出た場合は「キャンセル」で閉じてください。
こんな感じです
鍵作成手順
公開鍵は名前を「authorized_keys 」としておきます。
秘密鍵は名前はどうでもいいのでデフォルトのままにしています。
生成物
STEP
サーバーのセキュリティ対策
初期設定のままだとセキュリティ対策が不十分なので以下の設定変更を行います。
セキュリティ対策
rootでのログイン出来なくする パスワードによるログイン認証を無効とする OSのアップデート TCP BBRの設定(VPNの速度が20倍ほど速くなる)
各種設定は(説明が)面倒なので、シェルスクリプトで処理します。
以下のファイルを作成し、要所を変更してください。
注意
サーバーがLinuxなので文字コードは「UTF-8」、改行は「LF」とする必要があります。
以下の様なテキストエディタを使用し「文字コード」&「改行の形式」を指定して保存してください。
Sakura Editor
Sakura Editor
Japanese text editor for MS Windows
rootSetting.shファイル (クリックで表示されます) ※loginUserName,loginPasswordは任意のものに変更してください
#!/bin/sh
####################################################################
#UserName
UN='loginUserName'
#Password
PW='loginPassword'
####################################################################
set -eu
#User Add
#Passwd info https://qiita.com/momoken/items/bc8236da4396751d8553
useradd ${UN}
echo ${PW} | passwd --stdin ${UN}
usermod -aG wheel ${UN}
#SSH Config Root,Pass LoginNG
sed -i -e 's/\#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i -e 's/\PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i -e 's/\#PermitEmptyPasswords no/PermitEmptyPasswords no/g' /etc/ssh/sshd_config
#mkdir
mkdir /home/${UN}/.ssh
chmod 700 /home/${UN}/.ssh
chown ${UN} /home/${UN}/.ssh
chgrp ${UN} /home/${UN}/.ssh
read -p "End /home/${UN}/.ssh/authorized_keys Upload.Press [Enter] key to resume."
chmod 600 /home/${UN}/.ssh/authorized_keys
chown ${UN} /home/${UN}/.ssh/authorized_keys
chgrp ${UN} /home/${UN}/.ssh/authorized_keys
#update
yum update -y
#TCP BBR Install
wget https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x ./bbr.sh && ./bbr.sh
read -p "Press [Enter] key to reboot."
reboot
シェルスクリプトファイルを作成できたら、TeraTermにてログインしましょう。
「TeraTerm」にてファイル(F)→新しい接続(N)を選択
ホスト(T)にVPSのIPを入力、TCPポートは「22」としOK。
何か聞かれますが「続行」。
ユーザー名は「root」、パスフレーズは右図参照 OSインストール時の設定画面
ユーザ名、パスフレーズは画像を参考に入力。
ログイン成功
まっ黒な画面になったらログイン成功!
次に作成した「rootSetting.sh」ファイルをTeraTermにドラッグ&ドロップします。
色々選べますが、そのままOKを選択。
と入力し「Enter」で実行。
途中で公開鍵をアップロードするようメッセージが出るので、公開鍵「authorized_keys」をドラッグ&ドロップ。
[]は消してねv
転送先は「/home/[loguinUserName]/.ssh/」となります。 例)loguinUserNameがcheloなら「/home/chelo/.ssh/」
OSのアップデートが始まるので10分ほど放置。
サーバー君頑張れ
暫く待つとTCP BBRのインストールが始まるので「Enter」。
終わると再起動を求められるので「y」を入力して「Enter」
再起動する
注意点
BBRインストールは10分程放置しても画面が動かなくなることがあります。
その際は、「ctrl+c」で中断した後、以下のコマンドを実行してください。
TeraTermでのペーストは「Shift + Insキー」になります(Delキーの近くにあります)
wget https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x ./bbr.sh && ./bbr.sh
これでセキュリティ対策等は終了です。
STEP
ログインしてみる
「TeraTerm」にてファイル(F)→新しい接続(N)を選択
ここは前回と同じ。
次は画像のように入力、秘密鍵を選択すればログインできます。
ログインできたらshadowsocks-libev のインストールへ進みましょう。
shadowsocks-libevをサーバーにインストール
「shadowsocks-libev」の設定を行っていきます
まず、シェルスクリプトファイルを作成します。
ss-libev.sh (クリックで表示されます) ※portNumberは「Step2で設定したもの」 ,passwordは任意のものに変更してください ※Step5同様、文字コードは「UTF-8」、改行は「LF」としてください
#!/bin/sh
####################################################################
#usePortNumber
portNumber=15832
#usePasswordk
password='inputYourPassword'
####################################################################
#snapInstall
yum install epel-release snapd -y
systemctl enable --now snapd.socket
wait
ln -s /var/lib/snapd/snap /snap
wait
snap install core
wait
snap install shadowsocks-libev
#setting
mkdir -p /snap/bin/
cat <<EOF > /snap/bin/config.json
{
"server":["[::0]", "0.0.0.0"],
"mode":"tcp_and_udp",
"server_port":$portNumber,
"password":"${password}",
"timeout":60,
"method":"chacha20-ietf-poly1305",
"nameserver":"1.1.1.1"
}
EOF
#autoStartSetting
cat << EOF> /lib/systemd/system/ss.service
[Unit]
Description=Shadowsocks Server
After=network.target
[Service]
Restart=on-abnormal
ExecStart=/snap/bin/shadowsocks-libev.ss-server -c /snap/bin/config.json > /dev/null 2>&1
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable ss.service
systemctl start ss.service
# Get public IP address
get_ip(){
local IP=$( ip addr | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | egrep -v "^192\.168|^172\.1[6-9]\.|^172\.2[0-9]\.|^172\.3[0-2]\.|^10\.|^127\.|^255\.|^0\." | head -n 1 )
[ -z ${IP} ] && IP=$( wget -qO- -t1 -T2 ipv4.icanhazip.com )
[ -z ${IP} ] && IP=$( wget -qO- -t1 -T2 ipinfo.io/ip )
[ ! -z ${IP} ] && echo ${IP} || echo
}
clear
echo "Shadowsocks-Libev Custom server install completed!"
echo "Your Server IP : $(get_ip)"
echo "Your Server Port : $portNumber"
echo "Your Password : ${password}"
echo "Your Method : chacha20-ietf-poly1305"
作成した「ss-libev.sh」ファイルをドラッグ&ドロップします。
そのままOKを選択
無事終われば次のように表示されます
完了!
以上でサーバー側の設定はおしまいです。
shadowsocksクライアント設定
PCで使用するshadowsocksのクライアントを入手しましょう。
GitHub
Releases · shadowsocks/shadowsocks-windows
A C# port of shadowsocks. Contribute to shadowsocks/shadowsocks-windows development by creating an account on GitHub.
下の画像を参考にzipをダウンロード、解凍して「Shadowsocks.exe」を実行。
インジケーターに出てくる紙飛行機を「ダブルクリック」。
すると設定画面が出てくるので必要項目を入力し完了!
お疲れさまでした。
Q&A
何故「さくらサーバー」なのか
以下の点よりさくらサーバーを選択しています。
日本大手のサーバーで唯一「中国からアクセス可能」 古参、大手であることから、トラブル対策の情報が多い 安価
中国からアクセスできるのが最大の理由です。
Firewallの設定はしないでいいの?
「さくらのVPS」のコンソールにあるパケットフィルタがFirewallとして働くため設定不要。
他のサーバーを選択する場合はFirewall設定でポートを開放しないと使えないと思います。
iPhoneでVPNを使用したい
App Store
Potatso Lite
Potatso Lite is a powerful network tool which empowers your phone to have fully customized network environment. It's friendly for both beginners and power user...
このアプリは設定が簡単なのでおすすめです
TeraTermでペーストできない
ペーストは「Shift + Insキー」となります。
InsキーはDelキーの近くにあります。
インストールスクリプト からの乗り換えがうまくいかない
./shadowsocksR.sh uninstall
でshadowsocksRをアンインストールして、サーバーを再起動してみてださい。
同じポートで競合しているだけかもしれませんが、使用しない方はアンインストールしましょう。
クライアントから繋がらなくなった (210704追加)
ポート番号を変更したら繋がるようになりました。
さくらVPS の「パケットフィルタ」、shadowsocksの設定「server_port」を違う番号にしてみましょう。
server_port変更方法
teratermにて以下のコマンドを入力すると変更できます。
vimエディタは初見だと文字入力、保存、閉じることすらままならないため、Qiitaの記事を参照ください。
Qiita
viコマンド(vimコマンド)リファレンス - Qiita
起動
基本
$ vi ファイル名 ...指定して起動
$ vi ファイル名1 ファイル名2 … ファイル名n ...複数ファイル起動
$ vi -R ファイル名 or $ view ファイル名 ...