搭建自由的网络环境

对一个程序员来说,能够无障碍的上网是非常重要的,毕竟现在的计算机科学的重心依然在国外.面对越来越严苛的封锁,提高自己的架梯子技术迫在睫眉.

服务器端

VPS我购买的是vultr:

vultr
最便宜的是2.5刀一个月,东京的服务器延迟还可以接受,系统使用的是ubuntu server 16.04 服务器上安装的是python版本的shadowsocks, 最近发现还有go语言版本的,下次安装一个试试 安装方式很简单:

apt-get install update

apt-get install install python-setuptools && easy_install pip

pip install shadowsocks

安装完成以后,需要你手动撸一个配置文件:

{
    "server":"45.32.37.200",  //服务器的IP地址    
    "local_address":"127.0.0.1",
    "local_port":1080,
    "port_password":{  //对外的端口以及对应的密码
         "8388":"foobar1",  
         "8389":"foobar2",
         "8390":"foobar3",
         "8391":"foobar4"
    },
    "timeout":300,
    "method":"aes-256-cfb",  //加密方式
    "fast_open": false
}

保存在~/c.json. 配置好了以后就可以启动shadowsocks了:

ssserver -c ss.json -d start  

客户端

OSX

客户端的选择很多,我使用的是shadowsocksX-NG:

osx

安装好了以后,在服务器设置里面加入你的配置:
注意我给服务器绑定了域名,这样的好处是以后更换服务器不需要再改客户端配置,只要改下dns的设置就可以

osx

要注意加密方式以及端口和密码的对应.
这样子设置好了以后,打开shadowsocksX-NG就可以畅游网络了.

命令行

对于普通人来说,上面的步骤基本就能满足需求了,但是对一个程序员来说还是不够的,尤其是特别依赖命令行交互的后端开发.由于shadowsocksX- NG为我们自动设置好了HTTP代理,由于我用的是zsh,因此只需要在~/.zshrc中加入这样一行:

alias pp='env http_proxy=http://127.0.0.1:1087 https_proxy=http://127.0.0.1:1087'

设置好了以后,在需要走代理的命令前面加入pp.如:

curl ip.gs #直接连接
pp curl ip.gs ## 走代理  

效果如下:

▶ curl ip.sb
112.64.63.157
▶ pp curl ip.sb
45.76.101.67  

可以看到,加了pp以后,显示的ip是我们VPS的ip.

SOCK5代理转HTTP代理

如果你用的客户端软件不会自动把sock5代理转成http/https代理,那么我们需要额外做一些工作,借助polipo这个软件手动把代理类型转换一下:

brew install polipo  

安装好了以后,只需要告诉polipo sock5代理的端口:

alias pp='env http_proxy=http://127.0.0.1:8123 https_proxy=http://127.0.0.1:8123'  #8123 是polipo默认的端口
alias startpp='nohup polipo socksParentProxy=127.0.0.1:1086 proxyAddress=0.0.0.0 &'  

只要在系统启动的时候,执行一次startpp,以后就可以使用pp来代理你需要的命令了.

GIT

在使用git来提交代码的时候,你会发现如果使用的是https协议的话,那么加pp是可以走代理的,但是如果使用的是git协议,因为git协议走的是ssh,因此我们需要修改ssh的配置,配置文件在~/.ssh/config:

Host github.com
User git
ProxyCommand nc -x 127.0.0.1:1086 %h %p   #1086是你的http协议的端口,如果使用polipo转换,那么就是默认的8123端口  

感受一下极速clone代码的快感吧.

iOS & Android

移动设备上配置方式也类似,iOS的代理软件推荐surge,shadowrockets, Android上也有类似的软件,配置方式也可参考OSX的配置.

Comments

comments powered by Disqus