CentOS7 编译安装 ss-libev

文章目录
  1. 1. 安装编译工具
  2. 2. 安装 SS
    1. 2.1. 配置 SS
    2. 2.2. 配置防火墙端口
  3. 3. 运行
  4. 4. 配置开机自启
  5. 5. 更新
  6. 6. BBR 优化
  7. 7. 插件
  8. 8. 附加

CentOS7 编译源码安装 ss-libev, 文章最近更新于 2019年10月11日

安装编译工具

  • CentOS

    1
    yum install epel-release gcc gettext autoconf libtool automake make asciidoc xmlto c-ares-devel libev-devel pcre-devel -y
  • 也放一下 Ubuntu 系列的

    1
    sudo apt-get install --no-install-recommends gettext build-essential autoconf libtool libpcre3-dev asciidoc xmlto libev-dev libc-ares-dev automake -y
  • 常用工具

    1
    yum install git wget vim -y
  • 单独安装 libsodium

    libsodium 是一个先进而且易用的加密库。 主要用于加密、解密、签名和生成密码哈希。
    Note:可以点击这里查看 Libsodium 的最新版本。

  • 1
    2
    3
    4
    5
    6
    7
    8
    export LIBSODIUM_VER=1.0.17
    wget https://download.libsodium.org/libsodium/releases/libsodium-$LIBSODIUM_VER.tar.gz
    tar xvf libsodium-$LIBSODIUM_VER.tar.gz
    pushd libsodium-$LIBSODIUM_VER
    ./configure --prefix=/usr && make
    sudo make install
    popd
    sudo ldconfig
  • 单独安装 mbedtls (SSL和TLS)

    1
    2
    3
    4
    5
    6
    7
    8
    export MBEDTLS_VER=2.6.0
    wget https://tls.mbed.org/download/mbedtls-$MBEDTLS_VER-gpl.tgz
    tar xvf mbedtls-$MBEDTLS_VER-gpl.tgz
    pushd mbedtls-$MBEDTLS_VER
    make SHARED=1 CFLAGS=-fPIC
    sudo make DESTDIR=/usr install
    popd
    sudo ldconfig

安装 SS

前面一些环境搭建好了,现在正式安装我们的主角。

  • 下载源码

    1
    2
    3
    git clone https://github.com/shadowsocks/shadowsocks-libev.git
    cd shadowsocks-libev
    git submodule update --init --recursive
  • 编译源码并安装

    1
    2
    ./autogen.sh && ./configure && make
    sudo make install

ss 已经安装完成, 下面开始配置密码之类的

配置 SS

  • 创建配置文件

    1
    2
    mkdir -p /etc/shadowsocks-libev
    vim /etc/shadowsocks-libev/config.json
  • 复制粘贴以下内容

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    {
    "server": "0.0.0.0",
    "nameserver": "8.8.8.8",
    "server_port": 443,
    "password": "你的密码",
    "method": "chacha20-ietf-poly1305",
    "timeout": 600,
    "no_delay": true,
    "mode": "tcp_and_udp"
    }

local_address 这行要么设置为 0.0.0.0,要么删掉。其它的参数自行斟酌改动。

配置防火墙端口

上面设置了一个 443 端口(你也可以改成其它的),现在需要在防火墙上开放这个 443 端口( 如果不开放,那么所有通过这个 443 端口的外部流量都会被防火墙拦截掉 )

  • 启动 Firewalld 防火墙 (有的 vps 默认安装使用 iptables 这个防火墙 ,关于在 iptables 怎么开放端口请自行搜索折腾)

    1
    2
    systemctl enable firewalld
    systemctl start firewalld
  • 有的 vps 可能没有预装 firewalld ,请先安装再执行上面命令

    1
    yum install firewalld -y
  • 添加开放端口(就是上面配置中的端口号 443 )

    1
    2
    firewall-cmd --permanent --zone=public --add-port=你的端口号/tcp
    firewall-cmd --permanent --zone=public --add-port=你的端口号/udp

注意:如果你的 ssh 登录的端口不是默认的 22 ,一定要再把你的 ssh 端口也添加上去, 否则可能导致你登录不了 VPS, 然后刷新下ssh 服务,如果还有 ftp 端口也是一样。

1
systemctl restart sshd.service
  • 使端口生效 (再看一遍上面的注意提示,如果没有把 登录 vps 的端口加上去,执行完下面命令后,你可能登不了 vps, 最后只能从 vps 服务商的管理后台登录)

    1
    firewall-cmd --reload
  • 查看已开放的端口(可跳过)

    1
    firewall-cmd --list-all

运行

到此已经完成所有安装,启动 ss 有两种方式,任选一种方式

  • 第一种:通过使用上面我们创建好的配置文件来启动 ( 推荐 )

    1
    ss-server -c /etc/shadowsocks-libev/config.json
  • 第二种:通过命令行参数启动

    1
    ss-server -s 服务器IP -p 端口 -k 密码 -m chacha20-ietf-poly1305 -u -l 1080 -t 600 --fast-open true

如果上面你的端口已经在防火墙开放了,密码也设置好了;不出意外应该可以遨游世界了。。

如果你想设置开机自启(推荐),为了避免后续设置开机自启可能出现问题,请暂时先不要通过 ss-server -s 命令启动(方式2启动)
Note: 注意 ss-server -c 和 ss-server -s 的区别

配置开机自启

  • 创建一个 Service 服务文件(service 是一种默默在后台认真工作的一种脚本文件)

    1
    vim /etc/systemd/system/ss.service
  • 往该文件粘贴以下一种方式内容:

    1
    2
    3
    4
    5
    6
    7
    8
    [Unit]
    Description=Shadowsocks Server
    After=network.target
    [Service]
    ExecStart=/usr/bin/ss-server -c /etc/shadowsocks-libev/config.json
    Restart=on-abort
    [Install]
    WantedBy=multi-user.target

注意 ss-server 所在的路径,避免出现找不到 ss-server 文件的情况 ,如果前面已经能遨游世界了,这里基本就没什么问题了

  • 运行该自启服务
    1
    2
    3
    systemctl daemon-reload
    systemctl enable ss.service
    systemctl start ss.service

每次修改 service 文件, 都必须执行

daemon-reload``` 以重新加载; 修改 ss 的 config.json 文件不需要,但都要执行 ``` systemctl restart ss ```
1
2
3
4
5
6
7



# 问题排查
- **出现 active running** 绿色代表可用(注意:终端的主题不一样,颜色可能不一样以 active running 关键字为准)
```bash
systemctl status ss.service

  • 不能运行时,重启 SS 的自启服务文件试试

    1
    systemctl restart ss.service
  • 显示 active running 但客户端连不上,请重启 VPS

    1
    sudo shutdown -r now
  • 重启之后再次查看 SS 运行状态

    1
    systemctl status ss.service
    • 如果重启之后,显示 active running,但是客户端依然连接不上,这种情况有可能是开放端口的问题,请尝试文章前面的端口设置部分,尝试更换端口号,同时务必记得向防火墙开放该端口号。

    • 如果重启之后,显示的红色,可能是配置文件的格式没有配置正确,或者相关插件配置错误,请仔细查看 Error 部分的日志确定问题所在,想插件所在的目录,插件的可执行行权限是否正确。

    • 仔细检查:编译过程是否出错(再编译一遍) 、 配置文件没有配置正确 、 端口没有开放 、插件目录不正确、 插件不是可执行权限、 插件配置 。

更新

  • 先停止运行

    1
    systemctl stop ss.service
  • 进入到安装目录进行 pull 更新安装

    1
    2
    3
    4
    cd shadowsocks-libev
    git pull
    ./configure make
    make install
  • 更新完记得启动

    1
    systemctl start ss.service

BBR 优化

插件

附加