CentOS7下编译安装Shadowsocks-libev

CentOS7下编译安装Shadowsocks-libev

前言:

Shadowsocks是一种基于Socks5代理方式的加密传输协议,也可以指实现这个协议的各种开发包。在中国大陆,本工具广泛用于解决长城防火墙的未知错误而导致的Google、YouTube、Facebook等正常境外网站不能正常访问。网上有大量热心网友提供了各种版本的一键安装脚本,用于支持那些非计算机从业人员快速方便的在服务器上搭建服务端。但是某些情况下,一键脚本的安全性难以保证;另一方面,使用一键脚本不能让我们具体了解到这个工具是如何工作的。而本文则提供了一步一步从源代码手动编译安装Shadowsocks-libev的过程。

阅读本文,您可能需要基本的Linux系统操作技术与网络技术基础。

步骤:

  1. 准备编译环境,在CentOS7下运行以下两条命令完成环境准备。

     yum install epel-release -y
     yum install gcc gettext autoconf libtool automake make pcre-devel asciidoc xmlto c-ares-devel libev-devel libsodium-devel mbedtls-devel -y
  2. 安装Git,并从GitHub下载源码。

     yum install git -y
     cd /usr/local/src
     git clone https://github.com/shadowsocks/shadowsocks-libev.git
  3. 配置并编译源代码。

     cd shadowsocks-libev
     git submodule update --init --recursive
     sh autogen.sh
     ./configure --disable-documentation
     make
     make install
  4. 配置Shadowsocks服务端配置文件,文件位于 .../shadowsocks-libev/debian/config.json,将此文件复制到/etc/shadowsocks-libev/config.json

     mkdir /etc/shadowsocks-libev
     cp ./debian/config.json /etc/shadowsocks-libev/config.json
  5. 使用vi编辑器打开/etc/shadowsocks-libev/config.json

     vi /etc/shadowsocks-libev/config.json
  6. 按照自己的需求填写服务端参数。

     {
     "server":"0.0.0.0",    //服务端IP地址,Linux系统下0.0.0.0表示本地
     "server_port":8388,    //服务端端口号
     "local_port":1080,     //本地端口号
     "password":"barfoo!",   //密码
     "timeout":10,    超时时长(秒)
     "method":"chacha20-ietf-poly1305"     //加密方式
     }
     #加密方式据说有如下几种:
     aes-256-gcm
     aes-192-gcm
     aes-128-gcm
     aes-256-ctr
     aes-192-ctr
     aes-128-ctr
     aes-256-cfb
     aes-192-cfb
     aes-128-cfb
     camellia-128-cfb
     camellia-192-cfb
     camellia-256-cfb
     chacha20-ietf-poly1305
     chacha20-ietf
     chacha20
     rc4-md5
  7. shadowsocks-libev.default文件复制到/etc/sysconfig/shadowsocks-libev
    shadowsocks-libev.service文件复制到/usr/lib/systemd/system/目录。因为本例中编译安装的程序文件位置为/usr/local/bin/,需要修改一下文件中的启动命令。

    cp /usr/local/src/shadowsocks-libev/rpm/SOURCES/systemd/shadowsocks-libev.default /etc/sysconfig/shadowsocks-libev
    cp /usr/local/src/shadowsocks-libev/rpm/SOURCES/systemd/shadowsocks-libev.service /usr/lib/systemd/system/
    vi /usr/lib/systemd/system/shadowsocks-libev.service

    将以下一行:

    ExecStart=/usr/bin/ss-server -c "$CONFFILE" $DAEMON_ARGS

    替换成以下内容,按ESC键输入:wq,按Enter键保存退出即可。

    ExecStart=/usr/local/bin/ss-server -c "$CONFFILE" $DAEMON_ARGS
  8. 运行服务,检查服务是否正常运行,若服务运行正常,即显示:Active: active (running)

    systemctl start shadowsocks-libev
    systemctl status shadowsocks-libev
  9. 确定服务正常后,将服务添加到开机启动。这时我们在客户端中输入服务器的IP地址等配置信息后就可以使用了,若依然不可以,请检查配置信息是否填写正确,并检查服务端防火墙配置。

    systemctl enable shadowsocks-libev

防火墙配置:

若服务端与客户端配置均正确,依然无法建立连接,我们便需要检查是否服务端防火墙导致。若服务器系统配置了防火墙并已经启动,那么在配置防火墙开放对应服务端口前,自然是无法与服务器建立连接的。其实我们作为服务器的管理人员,自然应该知道自己服务器是否有开启防火墙的。

  1. 我们可以使用此网站检查某个端口是否可以访问。输入IP地址和端口号后点击Check即可检测。若提示Port XX is open on x.x.x.x 即表示端口已经打开。反之 close即表示端口没有反应。此时我们进一步检查防火墙。

  2. 检查防火墙服务是否运行,CentOS7默认将原来CentOS6时代的防火墙iptables升级为了firewalld。使用以下命令检查防火墙运行状态。若回显信息提示:running,则表示防火墙运行中。

    firewall-cmd --state
  3. 为Shadowsocks在防火墙中添加规则,开放对应端口的TCP和UDP通信。下以上文配置文件中的8388端口为例,具体按自己需求修改。到此为止,我们便完成了防火墙的配置。

    firewall-cmd --zone=public --add-port={8388/tcp,8388/udp} --permanent
    firewall-cmd --reload

本文到此结束。下附Ubuntu安装:

Ubuntu下编译安装Shadowsocks-libev

安装各种编译需要的库、工具等:

sudo apt install --no-install-recommends build-essential autoconf libtool libssl-dev gawk debhelper dh-systemd init-system-helpers pkg-config asciidoc xmlto apg libpcre3-dev zlib1g-dev libev-dev libudns-dev libsodium-dev libmbedtls-dev libc-ares-dev automake

拉取源代码:

sudo apt install git
git clone https://github.com/shadowsocks/shadowsocks-libev.git
cd shadowsocks-libev
git submodule update --init
./autogen.sh && ./configure --disable-documentation && make
sudo make install

创建配置文件:

创建配置文件目录:

sudo mkdir /etc/shadowsocks-libev

单用户配置文件:

sudo vi /etc/shadowsocks-libev/config.json
{
     "server":"0.0.0.0",
     "server_port":8388,
     "local_port":1080,
     "password":"mypassword",
     "timeout":300,
     "method":"aes-256-gcm" ,
     "fast_open": false
 }

多用户配置文件:

sudo vi /etc/shadowsocks-libev/manager_config.json
{
     "server":"0.0.0.0",
     "local_port":1080,
     "method":"aes-256-gcm" ,
     "timeout":300,
     "fast_open": true,
     "port_password": {
        "8388": "barfoo1",
        "8389": "barfoo2"
    }
 }

创建Systemd服务文件:

单用户:

sudo vi /etc/systemd/system/shadowsocks-libev.service
[Unit]
Description=Shadowsocks-libev Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/ss-server -c /etc/shadowsocks-libev/config.json -u
Restart=on-abort

[Install]
WantedBy=multi-user.target

多用户:

[Unit]
Description=Shadowsocks-libev Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/ss-manager -c /etc/shadowsocks-libev/manager_config.json -u
Restart=on-abort

[Install]
WantedBy=multi-user.target

启动并设置开机自启:

sudo systemctl start shadowsocks-libev
sudo systemctl enable shadowsocks-libev

参考:

  1. shadowsocks-libev-GitHub项目页

标签: none

已有 2 条评论

  1. [...]参考: A virtual machine fails to power on with the error: Unsupported and/or invalid disk type (1028943) CentOS7下编译安装Shadowsocks-libevEnable TCP BBR in Ubuntu 16.04/Ubuntu 18.04[...]

  2. litongjava litongjava

    出现错误如下

    [root@iZfnvq1155t68jZ shadowsocks-libev-3.3.4]# ./autogen.sh libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `auto'. libtoolize: copying file `auto/ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'. libtoolize: copying file `m4/libtool.m4' libtoolize: copying file `m4/ltoptions.m4' libtoolize: copying file `m4/ltsugar.m4' libtoolize: copying file `m4/ltversion.m4' libtoolize: copying file `m4/lt~obsolete.m4' configure.ac:244: error: required file 'libbloom/Makefile.in' not found configure.ac:244: error: required file 'libcork/Makefile.in' not found configure.ac:244: error: required file 'libipset/Makefile.in' not found autoreconf: automake failed with exit status: 1

添加新评论

(头像使用Gravatar服务,如需自定义,请访问Gravatar.com)