どっかの元高専生の技術備忘録

10割自分の備忘録用のブログ。

ShadowsocksサーバーをUbuntu Serverで立ち上げる

やりたいこと

検閲回避のために
知的好奇心から、Shadowsocksサーバーを立ち上げて外部からアクセスしてみたい。
ファイヤーウォール(ufw)の設定方法は、別の記事で解説済みなのでそっち見てみてください。
ポート開放の仕方は各自の環境によって変わってくるので、頑張ってください。

環境

  • 22.04.3 LTS (Jammy Jellyfish) 64bit
  • RaspberryPi 4 ModelB

目次

Shadowsocks-libevのインストール

Debian系なら公式リポジトリで提供されているのでaptでインストールするだけ。
詳しくは公式ドキュメント

sudo apt update && sudo apt install shadowsocks-libev

config.jsonの編集

/etc/shadowsocks-libev/config.jsonに設定ファイルがあります。
パスワードとリッスンポートは変更しておきましょう。
一応PWはランダム生成ですが、念のため。
また外部からアクセスする場合は、IPアドレス127.0.0.1から0.0.0.0に変更しておきましょう。 methodはchacha20-ietf-poly1305推奨らしいので変更不要ですが、エラーが起きたら公式ドキュメントを見ながら編集してください。

{
    "server":["::1", "0.0.0.0"],
    "mode":"tcp_and_udp",
    "server_port":ポート番号,
    "local_port":1080,
    "password":"パスワード",
    "timeout":86400,
    "method":"chacha20-ietf-poly1305"
}

Shadownsocksの起動と自動起動

Shadownsocksサーバーの起動と、OS起動時に自動的に起動するようにしていきます。

sudo systemctl restart shadowsocks-libev.service
sudo systemctl enable shadowsocks-libev.service

これでサーバーの起動と自動起動の設定ができます。
systemctl status shadowsocks-libev.serviceを実行して、Active: active (running)になっていたら問題ありません。

おまけ

crontabを使ってDDNS NowにIPアドレスを自動的に通知する。

DDNS Nowを使ってSSHやShadowsocksサーバーにアクセスできるようにしたいので、1分ごとにIPアドレスを通知するようにする。
crontab -eを実行して以下を末尾に追記する。

# IPv4
0-59 * * * * wget -O DDNSNow_update.log "https://f5.si/update.php?domain=ユーザーID&password=パスワードかAPIトークン"
#IPv6
0-59 * * * * wget -O DDNSNow_update.log "https://v6.f5.si/update.php?domain=ユーザーID&password=パスワードかAPIトークン"

ちなみに、ユーザーIDは.f5.siを抜いた文字列のこと。

参考

shadowsocks.org

www.linuxbabe.com

www.linode.com