有时查查资料得上Google,今儿个折腾了一下,记录与此。
由于CentOS7坑太多,把VPS系统换成Ubuntu16.04了。

服务端设置

安装

 apt install python-pip && pip install shadowsocks

写配置文件

/etc/shadowsocks.json写入如下内容。

{
    "server":"my_server_ip", #服务器公网IP
    "server_port":8388, #服务器对外提供的端口,用来给客户端连接。
    "local_address": "127.0.0.1",
    "local_port":1080,
    "password":"mypassword", #设置连接密码
    "timeout":300, 
    "method":"aes-256-cfb",
    "fast_open": false
}

设置为服务

ExecStart这行是运行ss,由于Ubuntu上ssserver命令的绝对路径不一致需要更改为/usr/local/bin/ssserver,可以用type -a ssserver查看命令具体位置。

创建文件vi /etc/systemd/system/shadowsocks.service并回车,内容如下:

[Unit]
Description=Shadowsocks
[Service]
TimeoutStartSec=0
ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks.json
[Install]
WantedBy=multi-user.target

服务写入完整来开启服务,如果上面内容没有写错,一般情况不会报错。

systemctl enable shadowsocks #设置开机自启命令
systemctl start shadowsocks #启动命令
systemctl status shadowsocks #查看状态命令

发现启动失败?把你配置文件中,ExecStart这行等号后面的命令复制出来执行,看看报错信息,再对比一下文末的报错是否一致, 点这里

ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks.json

客户端设置

安装ss

apt install python-pip && pip install shadowsocks

写配置文件
输入mkdir /root/ss && cd /root/ss && vim ssserver.json写入如下内容。

{
    "server":"my_server_ip", #服务器的IP
    "server_port":8388, #服务器的端口
    "local_address": "127.0.0.1", #通过本地传输
    "local_port":1080, #数据通过1080端口传输
    "password":"mypassword", #连接到服务器的密码
    "timeout":300, 
    "method":"aes-256-cfb", #和服务器加密方式保持一直
    "fast_open": false
}

proxychains设置
编辑下面文件

vim /etc/proxychains.conf

dynamic_chain注释取消,在[ProxyList]下面添加你代理本地信息

socks5 127.0.0.1 1080

调试完成后来连接vps,运行有问题请看 这里

sslocal -c ~/ss/ssserver.json

设置代理,和proxychains保持一致。
设置代理
在屏幕右上角快捷菜单中开启手动模式
开启代理
访问成功
view_page.png

每次查资料都要手动运行sslocal -c ~/ss/ssserver.json,太麻烦了,跟配置server一样把它也加入服务中去吧。
/etc/systemd/system/shadowsocks.service添加如下内容,要注意的是ExecStart这行,命令是sslocal绝对路径(type -a sslocal查看),命令后面是跟着你ss配置文件路径,不要复制成我的了。

[Unit]
Description=Shadowsocks Client Service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/sslocal -c /root/ss/ssserver.json #注意配置文件路径别复制错!
[Install]
WantedBy=multi-user.target

添加开机自启后,重启机器查看是否开启服务

systemctl enable shadowsocks #设置开机自启命令
systemctl start shadowsocks #启动命令
systemctl status shadowsocks #查看状态命令

qt5图形化使用

自启动用的挺舒服,图形化有机会再补充...

浏览器插件使用

Proxy SwitchyOmega,这个文档足够详细。

一些小坑

sslocal -c ~/ss/ssserver.json或运行服务端用systemctl查看服务状态,如果有报一大堆错误,你可以对比报错信息是不是一致,比如我这边第一行加载libcrypto.so这个库文件,不要盲目修改。如果我俩都是加载这个库文件报错,就可以确定是要修改Python文件啦。

2019-04-30 20:39:01 INFO     loading libcrypto from libcrypto.so.1.1
Traceback (most recent call last):
  File "/usr/local/bin/sslocal", line 10, in <module>
    sys.exit(main())
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/local.py", line 39, in main
    config = shell.get_config(True)
  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/openssl.py", line 76, in __init__
    load_openssl()
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py", line 52, in load_openssl
    libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,)
  File "/usr/lib/python2.7/ctypes/__init__.py", line 379, in __getattr__
    func = self.__getitem__(name)
  File "/usr/lib/python2.7/ctypes/__init__.py", line 384, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: /lib/x86_64-linux-gnu/libcrypto.so.1.1: undefined symbol: EVP_CIPHER_CTX_cleanup

修正Python报错

vim  /usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py

将下面两行cleanup更改为reset,在编辑器里输入num+G就可以调到对应行,比如51+G就跳到51行。

#待更改
libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,) #52行
libcrypto.EVP_CIPHER_CTX_cleanup(self._ctx)  #111行

#更改后
libcrypto.EVP_CIPHER_CTX_reset.argtypes = (c_void_p,)
libcrypto.EVP_CIPHER_CTX_reset(self._ctx) 

v2ray

另一个好用的工具,文档在这里。



参考:通过配置文件配置sslocal客户端运行报错在CENTOS 7上搭建Shadowsocks图文教程kali 代理之shadowsocks & proxychainsLinux安装配置Shadowsocks客户端及开机自动启动ShadowSocksWiki

标签: none

添加新评论