CentOS8にShadowSocks libevを構築する

CentOS8にShadowSocks libevを構築したのでその構築方法を健忘録として書いていこうと思います。
また、今回は最終的にSoftetherVPNとの共存環境にしたので別記事でまとめようと思います。

ShadowSockslibevとは

そんなの知ってるよ!!という方は読み飛ばして下さい。

ShadowSocks libevとはShadowSocksの派生版で、ShadowSocksをより高機能にしたものです。
特徴として外部拡張を行うことができるようになっています。

じゃあShadowSocksってなんなのって話ですが、ザックリ言うとSOCKS5プロキシです。
厳密に言うとVPNではないですが、VPNと同じように通信の暗号化やリージョン変更(IPアドレスの偽装)等を行うことができます。例えば、ポート制限されていて利用できるネットワークが限られたLAN内からポート制限を回避して通信をすることができます。

C言語で書かれているため動作が軽いらしいですが体感できませんでした。複数人での利用であれば差が出るかもしれないですね。

現在github上で更新が活発なのはShadowSocks libevなので、中国で利用すること前提であればShadowSocks libevの方が対応が早いかもしれないです。

正直ShadowSocks Rの方が構築が簡単なので必要な機能がなければ無理にShadowSocks libevで構築する必要はないかもしれません。

CentOS8の設定

今回は設定を全てrootユーザーで行なっているので、構築が終わったらssh周り、root周りの設定を行ってください。また、rootユーザーでない場合はコマンドの先頭に”sudo”を入れてください。

まずはサーバーを更新します。

dnf -y update

次にSELinuxを無効化します。

#SELinuxの設定を開く
vi /etc/selinux/config

以下がconfigの中身です。

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing//←ここを"disabled"に変更
# SELINUXTYPE= can take one of these three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

vi(vim)の編集後内容は”esc”を入力後
“:w”で保存できます。
“:wq”で保存して終了できます。
“:q!”で保存せず終了できます。

shadowsocks libevをインストール

ShadowSocks libevのインストール方法はSnapを利用する方法と、自分でビルドする方法があります。
今回は推奨されているSnapを利用してインストールします。

snapは最近名前を聞くようになったパッケージマネージャーです。今回初めて利用したのであまりイメージが湧いていないですが、macのHomebrewに近いと思っています。

#snapのインストール一式
dnf install epel-release snapd
systemctl enable --now snapd.socket
ln -s /var/lib/snapd/snap /snap
snap install core

Snapを利用してshadowsocks libevをインストールします。
以下のコマンドでインストールできます。

snap install shadowsocks-libev

shadowsocks libevの設定

インストールされた状態だと設定ファイルが存在しないため作成します。
以下のコマンドで作成します。

vi /snap/bin/config.json

設定ファイルの中身は以下になります。

{
   "server":["[::0]", "127.0.0.1"],
   "mode":"tcp_and_udp",
   "server_port":443,
   "password":"password",
   "timeout":60,
   "method":"chacha20-ietf-poly1305",
   "nameserver":"1.1.1.1",
   "reuse_port": true,
   "no_delay": true,
   "fast_open": true,
   "ipv6_first": true
}

変更が必要な項目は、”password”の中身です。任意のパスワードを入力して下さい。
“method”は暗号化の方式です。必要であれば変更して下さい。

最後にShadowSocks libevの自動起動を設定します。
以下のコマンドでサービスを追加して下さい。

vi /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

以下のコマンドで自動起動を登録、有効にして下さい。

systemctl daemon-reload
systemctl enable ss.service

ファイアーウォールの設定

最後にクライアントからアクセス出来るようにファイアーウォールの設定を行います。

おそらく解放されてると思いますが、以下のコマンドでtcp443ポートを解放して下さい。

firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all

tcp443ポートの解放が確認できればファイアーウォールの設定は完了です。

最後に以下のコマンドでShadowSocksを起動します。

systemctl start ss.service

クライアントから接続できれば設定完了です。

ネットワークの高速化

BBRを利用してTCPを高速化することが可能です。
よければ参考にしてください。

まとめ

今回はshadowsocks libevの構築を行いました。同じサーバー内にSoftetherも構築しているのでよければ参考にして下さい。

また、最終的にはSoftetherとShadowSocksの共存サーバーを構築しました。その構築に関しても記事にしていこうと思っています。

ーーー追記ーーー

SoftetherとShadowSocksの共存サーバー構築を記事にしました。
よければ下記からご覧ください。

健忘録技術
スポンサーリンク
Probiees

コメント

タイトルとURLをコピーしました