如何在centos7上使用shadowsocks配置代理



作为一名程序员,如果不能随时访问国外网站,那将会受到许多限制,由其是技术有关的问题,使用Google搜索能大大提高工作效率,最早的时候
使用的是xx门免费fan qiang,但是极其不稳定,后来用的收费的红杏出墙,感觉还不错,价格也非常便宜,结果用了不到一个月,红杏出墙的作者被请喝茶了,接着用的收费的绿豆vpn,价格虽然便宜,流量也不限,但就是不稳定,你正需要fan qiang的时候,突然不能用了,不需要的时候又能轻松访问,所以坚持了一年果断放弃了,目前用的加速度还不错,一个月18元流量共30G(当然如果是自己买VPS搭建fan qiang服务,18元的价格差不多能用半年了,但是有技术门槛,愿意折腾的人可以试试),稳定性非常好,速度也不错。主流客户端都支持, windows,mac ,安卓和苹果手机 。 虽然官网称linux也支持,但是一直没有测试,直到这两天为了编译Tez,由于网的问题迟迟不不能编译成功,才下定决心,要好好研究一下,如何在linux上设置全局代理,于是就有了今天的这篇文章。



加速度的vpn是通过Shadowsocks代理实现的,Shadowsocks是一款开源的网络代理软件,分客户端和服务端,现在有些卖vpn的网站,其实就是使用的Shadowsocks技术在在他们的VPS服务器上搭建了服务端(ssserver),然后我们购买他们的账号,然后下载对应的客户端(sslocal),输入分配的ip,端口,密码连接成功就可以直接fan qiang了,大致原理就这样。



下面进入正题,看下如何在centos7上配置fan qiang代理,网上的一些文章有些说的非常泛泛,好多没有提服务端和客户端的区别,导致我们都以为自己需要装的是服务端,然后按照文章例子几行命令加个json配置文件就搞定了,最后发现启动都正常,就是不能上网 ,这是一种情况,主要原因是没有理解服务端和客户端的概念。


第二种情况是装的是客户端,启动正常后却依然不能够上网,为什么? 这里需要注意了Shadowsocks仅仅是传输层的代理,也就是和socket相关的TCP/UDP层的代理,我们通常用的都是
http访问,所以是不能直接用的,还需要再次中转,把所有的http请求,给代理转发到对应TCP层或UDP层的端口上,才可以完全代理:比如在centos上执行
curl或者wget走的都是http,以及我们使用的浏览器都是http访问,不再配置个代理中转,是不正确fan qiang的。


Scoks代理和Http的区别:简单来说就是tcp/udp和http的区别,在7层网络模型中也是处于不同的分层中,因为http请求是明文传输,可以被拦截并过滤,所以当走socks代理后会对明文内容进行加密传输,对加密后的内容是没法或非常困难过滤的,所以可以安全传到服务端,同理,服务端响应的时候又是加密通过tcp/udp回复,这样就完成了访问。


有关详细的区别请参考: http://wrfly.kfd.me/SOCKS%E4%BB%A3%E7%90%86%E5%92%8CHTTP%E4%BB%A3%E7%90%86%E7%9A%84%E5%8C%BA%E5%88%AB/



下面介绍下在centos7中如何安装shadowsocks?

### (一)安装组件
1,yum groupinstall "Development Tools"
2,yum install m2crypto python-setuptools
3,easy_install pip
4,pip install shadowsocks


#### (二)配置服务器参数(注意服务端和客户端都能用)
vim /etc/shadowsocks.json
 {
  "server": "0.0.0.0",
  "server_port": 7777,
  "password": "pwd",
  "method": "aes-256-cfb",
  "local_address":"127.0.0.1",
  "local_port":1080
}

注意上面的配置文件,如果你是服务端提供代理的,server的值需要写0.0.0.0
如果你是使用代理的客户端,server值需要写你购买的ss账号的提供的服务器ip,

服务端启动ss服务器命令
ssserver -c /etc/shadowsocks.json 


如果你是客户端,启动命令如下:(注意server这个参数,是你购买的ss账号提供的服务ip,密码和端口都类似)
sslocal  -c /etc/shadowsocks.json  


#### (三)安装privoxy
至此,我们的ss服务已经正常启动,下面要做的就是需要将全局http代理转发到socks5代理。


yum install epel-release
yum install -y privoxy
//删除多安装的无用repo
rm /etc/yum.repos.d/epel-testing.repo 


编辑文件
vi /etc/privoxy/config
搜索 socks5t在下面添加一条转发代理ip
    forward-socks5t   /               127.0.0.1:1080 .
	

然后搜索listen-address,取消注释的ip地址,或者直接新加下面的信息:
   listen-address  127.0.0.1:8118

完事之后,vim ~/.bashrc,加入下面的内容
export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118
export ftp_proxy=http://127.0.0.1:8118

然后source ~/bashrc

最后重启privoxy即可
systemctl restart privoxy.serivce


然后curl www.google.com看到有响应的内容即代表成功了。

注意如果需要,我们可以完全关闭防火墙或者仅仅对指定端口开放即可。
firewall-cmd --zone=public --add-port=8888/tcp --permanent
systemctl restart firewalld.service


当然,如果我们想让maven下载编译的时候也支持代理是需要配置的,否则默认是不会使用的,找到conf/settings.xml文件取消注释稍作修改即可:
<proxy>  
  <id>optional</id>  
  <active>true</active>  
  <protocol>http</protocol>  
  <username></username>  
  <password></password>  
  <host>127.0.0.1</host>  
  <port>8087</port>  
  <nonProxyHosts>localhost|127.0.0.1</nonProxyHosts>  
</proxy> 




参考文章

https://wiki.archlinux.org/index.php/Shadowsocks_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

http://www.auooo.com/2015/06/26/shadowsocks(影梭)不完全指南/

https://mengyixi.com/post/centos7-shadowsocks/

https://blog.phpgao.com/privoxy-shadowsocks.html

http://wrfly.kfd.me/SOCKS%E4%BB%A3%E7%90%86%E5%92%8CHTTP%E4%BB%A3%E7%90%86%E7%9A%84%E5%8C%BA%E5%88%AB/

http://www.cnblogs.com/liuxuzzz/p/5324749.html


有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。

猜你喜欢

转载自qindongliang.iteye.com/blog/2338383