梯子

动手准备

  • 首先淘宝一个海外的服务器,图便宜就买了香港低配云主机一台。
  • 虽然windows的操作比较简单,但是为了难为自己还是选了个CentOS。
  • 然而,刚到手的系统连python的pip都没有,并且centos没有apt的包管理。
  • 了解到这个操作系统是用yum命令来更新软件包的,语法和apt的差不多。

正常步骤

登录

ssh root@103.228.131.75

安装python-setuptools

$ wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-12.0.3.tar.gz#md5=f07e4b0f4c1c9368fcd980d888b29a65
$ tar -zxvf setuptools-12.0.3.tar.gz
$ cd setuptools-12.0.3
$ python setup.py install

安装python-pip

$ wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate
$tar -xzvf pip-1.5.4.tar.gz
$cd pip-1.5.4
$python setup.py install

安装shadowsocks

$pip  install shadowsocks

新建config.json配置文件

$vi config.json
{   
 "server":"0.0.0.0",
 "server_port":8388,
 "local_address":"127.0.0.1",
 "local_port":1080,
 "password":"123456",
 "timeout":300,
 "method":"aes-256-cfb",
 "fast_open":false
}

开启shadowsocks服务端

$ ssserver -c config.json

遇到问题

当然事情总不是那么一帆风顺,我特么遇到了一堆问题

1.ssserver能启动,但特么就是连不上

  • 想到了防火墙的问题,可以添加规则,或者直接把防火墙关掉 $ service iptables stop

2.ssserver 报错socket.error: [Errno 98] Address already in use

  • 好像是因为请求过多,百度到了解决方案 http://blog.csdn.net/chenyulancn/article/details/8181238

3.mac上的shadowsocks客户端开启了全局代理,并且网卡也设置了代理,然而chrome的请求还是不可达

  • ssserver已经收到了一些请求,不过并不是本地浏览器产生的,猜测是浏览器代理问题,设置浏览器代理 socks5://127.0.0.1:1080

4.当服务器上的ssh回话退出后,ssserver也结束运行

  • ssserver的父进程为ssh的shell,当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程

  • 解决方案:$ nohup command & 可以不挂断运行命令,忽略HUP信号

$ vi proxy.sh

#!/bin/sh
ssserver -c config.json

$ nohup ./proxy.sh &

参考

在Windows下搭建Shadowsocks服务器
https://soha.moe/post/build-shadowsocks-server-on-windows.html

将CentOS的yum源更换为国内的阿里源
http://www.centoscn.com/CentOS/config/2015/0416/5189.html

python下setuptools安装
http://blog.chinaunix.net/uid-26000296-id-4769414.html

pip安装使用详解
http://www.ttlsa.com/python/how-to-install-and-use-pip-ttlsa

shadowsocks客户端配置
http://www.jeyzhang.com/how-to-install-and-setup-shadowsocks-client-in-different-os.html

如何实现SSH断开后 进程仍然在后台运行
http://blog.csdn.net/v1v1wang/article/details/6855552

解决socket.error: [Errno 98] Address already in use问题
http://blog.csdn.net/chenyulancn/article/details/8181238