在linux上使用SSR

在linux上使用SSR

在windows上使用SSR的教程比较多,而在linux上的比较少,尤其是作为客户端,SS的作者被请去喝茶,SSR后起之秀,用起来也更稳定。

wget --no-check-certificate https://www.djangoz.com/ssr 
wget https://onlyless.github.io/ssr
sudo mv ssr /usr/local/bin
sudo chmod 766 /usr/local/bin/ssr
ssr install
ssr config

安装过程中可能会有下面的问题:

问题1

INFO: loading config from /etc/shadowsocks.json
Traceback (most recent call last):
  File "/usr/local/bin/ssserver", line 11, in <module>
    load_entry_point('shadowsocks==2.8.2', 'console_scripts', 'ssserver')()
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/server.py", line 34, in main
    config = shell.get_config(False)
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/shell.py", line 262, in get_config
    check_config(config, is_local)
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/shell.py", line 124, in check_config
    encrypt.try_cipher(config['password'], config['method'])
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py", line 44, in try_cipher
    Encryptor(key, method)
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py", line 83, in __init__
    random_string(self._method_info[1]))
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py", line 109, in get_cipher
    return m[2](method, key, iv, op)
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/sodium.py", line 62, in __init__
    load_libsodium()
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/sodium.py", line 42, in load_libsodium
    raise Exception('libsodium not found')
Exception: libsodium not found

解决办法如下:
因为没有 libsodium,libsodium 是 chacha20 加密算法所需要的一个包。所以接下来就安装它:

$ wget https://download.libsodium.org/libsodium/releases/LATEST.tar.gz
tar zxf LATEST.tar.gz
cd libsodium*
./configure
sudo make && sudo make install
``
编译的时候又报错了:

`configure: error: no acceptable C compiler found in $PATH`
这是因为没有 C 编译器。所以继续安装:

`$ sudo apt-get install build-essential`
安装成功之后再编译
`$ sudo make && sudo make install`

问题2

在ssr start时候出现

IPv6 support
Traceback (most recent call last):
  File "local.py", line 81, in <module>
    main()
  File "local.py", line 43, in main
    config = shell.get_config(True)
  File "/usr/local/share/shadowsocksr/shadowsocks/../shadowsocks/shell.py", line 299, in get_config
    check_config(config, is_local)
  File "/usr/local/share/shadowsocksr/shadowsocks/../shadowsocks/shell.py", line 129, in check_config
    encrypt.try_cipher(config['password'], config['method'])
  File "/usr/local/share/shadowsocksr/shadowsocks/../shadowsocks/encrypt.py", line 46, in try_cipher
    Encryptor(key, method)
  File "/usr/local/share/shadowsocksr/shadowsocks/../shadowsocks/encrypt.py", line 90, in __init__
    random_string(self._method_info[1]))
  File "/usr/local/share/shadowsocksr/shadowsocks/../shadowsocks/encrypt.py", line 119, in get_cipher
    return m[2](method, key, iv, op)
  File "/usr/local/share/shadowsocksr/shadowsocks/../shadowsocks/crypto/sodium.py", line 71, in __init__
    load_libsodium()
  File "/usr/local/share/shadowsocksr/shadowsocks/../shadowsocks/crypto/sodium.py", line 40, in load_libsodium
    'libsodium')
  File "/usr/local/share/shadowsocksr/shadowsocks/../shadowsocks/crypto/util.py", line 83, in find_library
    lib = CDLL(path)
  File "/usr/lib64/python2.7/ctypes/__init__.py", line 360, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: libsodium.so.23: cannot open shared object file: No such file or directory

解决办法:

  1. 如果共享库文件安装到了/lib或/usr/lib目录下, 那么需执行一下ldconfig命令

ldconfig命令的用途, 主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib.so), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 缓存文件默认为/etc/ld.so.cache, 此文件保存已排好序的动态链接库名字列表.

  1. 如果共享库文件安装到了/usr/local/lib(很多开源的共享库都会安装到该目录下)或其它"非/lib或/usr/lib"目录下, 那么在执行ldconfig命令前, 还要把新共享库目录加入到共享库配置文件/etc/ld.so.conf中, 如下:
# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
# echo "/usr/local/lib" >> /etc/ld.so.conf
# ldconfig

参考:

原文地址:https://www.cnblogs.com/hulichao/p/linux_ssr.html