树莓派与局域网内共享代理

Posted by Hsz on June 2, 2018

shadowsock代理

由于众所周知的原因,国内访问国外一部分网站/服务会失效或者速度极低.这种时候就会需要使用代理服务器.

shadowsock是老牌的代理工具,是一个客户端/服务器结构的工具,其原理如下图.这边不做过多介绍.


终端(浏览器等服务) --> ss客户端-->ss服务器--> 你要访问的服务

本文假设读者已经拥有一台服务端的信息,讨论的是如何利用树莓派在局域网中共享由客户端连接服务端获得的代理服务.

为树莓派安装客户端

  1. 为系统安装python-pip

     sudo apt-get install -y python-pip
    
  2. 安装shadowsocks客户端

     sudo pip install shadowsocks
    
  3. 修改其中的文件

    由于openssl的更新,原本代码中有一处字段错误需要手动更新. /usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py52行和111行中的cleanup更新为reset.注意,这个文件是只读的,需要使用sudo命令获得更改权限.

  4. 新建ss的配置目录

     sudo mkdir -p /etc/shadowsocks
    

    我们把配置文件放在这个目录下面,写入配置文件.

     sudo nano /etc/shadowsocks/config.json
    

    然后把下面的配置修改成自己的贴进去

     {
         "server":"服务器ip地址",
         "server_port":服务器端口,
         "local_address":"树莓派局域网ip,不记得使用0.0.0.0即可",
         "local_port":本地端口,
         "password":"密码",
         "timeout":600,
         "method":"aes-256-cfb"
     }
    

到此为止就安装成功了,可以运行命令测试一下

sudo sslocal -c /etc/shadowsocks/config.json

如果ok,按ctrl+c结束

将shadowsocks服务设置为开机自启动

我们希望我们的机器一开机就可以提供代理功能.这可以使用supervisor实现.

  1. 安装supervisor

     sudo apt-get install -y supervisor
    
  2. 用supervisor来管理shadowsocks的进程

     sudo nano /etc/supervisor/conf.d/shadowsocks.conf
    

    写入下面的配置

     [program:shadowsocks-config]
     command=sslocal -c /etc/shadowsocks/config.json
     autorstart=true
    
  3. 运行

     sudo supervisorctl reload  //如果改了ss配置,运行一下这个
     sudo supervisorctl update  //更新配置用的
    

配置终端

终端各个平台不同,但只要记住使用socket类型的代理,其ip为树莓派的ip,端口为配置中设置的本地端口即可.