在coreos中如何使用shadowsocks 客户端?

首先明确一点,我放弃在coreos通过容器的方式启动shadowsocks客户端的方案了。

封装shadowsocks客户端不是问题,但在宿主机终端环境中,无法通过shadowsocks客户端翻墙,我猜测原因可能是容器中shadowsocks绑定的是socks5协议,但在宿主机端,docker绑定的是tcp协议,造成两者协议不匹配。后期我会考虑在镜像中进行协议转换,看看是不是这个问题。

12.20 update  
的确是因为协议不同导致的转发失效,我构建了一个docker image来解决这个问题:vikings/shadowsocks
执行下面命令来启动镜像:
docker run -d -p 8118:8118 vikings/shadowsocks -s <server ip> -p port -k password  
然后再终端设置:
export http_proxy=http://127.0.0.1:8118  
export https_proxy=http://127.0.0.1:8118  

在没有解决这个问题之前,可以考虑直接使用二进制文件的解决方案。

shadowsocks官方是python编写的,我fork了一份golang版本的shadowsocks库,本来是用来修改server端的,现在正好可以构建client端。

点击这里下载客户端

解压后将程序放到/opt/bin目录中,然后编辑配置文件:

{  
    "server":"my ip",  
    "server_port":port,  
    "local_port":1080,  
    "password":"my password",  
    "timeout":600,  
    "method":"aes-256-cfb"  
}
/opt/bin/shadowsocks-local-linux64-1.1.5 -c config.json -d start

如果日志没有报错,那么就说明启动成功了。

下一步,在终端环境中修改环境变量:

export http_proxy="socks5://127.0.0.1:1080"  
export https_proxy="socks5://127.0.0.1:1080"  

试试吧,应该没问题了!