Linux中使用ShadowSocks+Privoxy代理

ShadowSocks 最近几年大火, 其简单的配置和优秀的速度让大陆地区的墙内用户爱不释手本篇文章不讨论Mac & Windows 等图形界面下的应用, 而是让 linux 在命令行界面下, http/https 访问也能登上梯子, 看一看外面的大千世界

最近公司的服务器连接 docker hub hub.docker.com 仓库和 node.js nodejs.org 仓库极其缓慢, 使用了各种国内的各种加速服务才勉强解决了燃眉之急(分别使用了 daocloud 的镜像加速和淘宝的加速服务)

本篇文章就是介绍如何实现 Linux 中的 http/https 请求翻墙的需求

安装 ss 客户端

shadowsocks安装时是不分客户端还是服务器端的, 只不过安装后有两个脚本一个是sslocal代表以客户端模式工作,一个是ssserver代表以服务器端模式工作

yum install python-pip

pip install shadowsocks

在后台启动 ss 客户端

nohup sslocal -s your_server_ip -p your_server_port -l 1080 -k your_server_passwd -t 600 -m rc4-md5 > /dev/null 2>&1 &

注意:

  • 使用的是 sslocal 这个命令,表示 shadowsocks 以客户端模式工作
  • 将上述命令里的 your_server_ip, your_server_port, your_server_passwd 换成自己的, 这三个分别代表服务器ip, 服务器上 shadowsocks 的端口以及密码.后面的 rc4-md5 加密方式也要换成跟 server 端一致。
  • 前面的nohub 和最后的 & 表示后台执行且关闭 session 后仍然在后台执行,否则将会阻塞shell端口.为了更方便, 建议新建一个.json的文件, 将上述信息放里面,如新建/etc/shadowsocks.json文件, 内容为:

    {
        "server":"your_server_ip", #ss服务器IP
        "server_port":your_server_port, #端口
        "local_address": "127.0.0.1", #本地ip
        "local_port":1080, #本地端口
        "password":"your_server_passwd",#连接ss密码
        "timeout":300, #等待超时
        "method":"rc4-md5", #加密方式
        "fast_open": false, # true 或 false。如果你的服务器 Linux 内核在3.7+,可以开启 fast_open 以降低延迟。开启方法: echo 3 > /proc/sys/net/ipv4/tcp_fastopen 开启之后,将 fast_open 的配置设置为 true 即可
        "workers": 1 # 工作线程数
    }
    

    然后运行一下命令启动shadowsocks

    nohup sslocal -c /etc/shadowsocks.json /dev/null 2>&1 &
    
  • 如果想增加开启自动启动,执行:echo "nohup sslocal -c /etc/shadowsocks.json /dev/null 2>&1 &" /etc/rc.local

  • 执行ps aux |grep sslocal |grep -v "grep"查看后台sslocal是否运行

安装Privoxy

上述安好了shadowsocks,但它是 socks5 代理,我门在 shell 里执行的命令,发起的网络请求现在还不支持 socks5 代理,只支持 http/https 代理。为了我门需要安装 privoxy 代理,它能把电脑上所有http请求转发给 shadowsocks

yum install privoxy -y
  • 查看 vim /usr/local/etc/privoxy/config 文件,先搜索关键字 listen-address 找到 listen-address 127.0.0.1:8118 这一句,保证这一句没有注释,8118就是将来http代理要输入的端口。然后搜索 forward-socks5t, 将 #forward-socks5t / 127.0.0.1:1080 . 此句前面的注释去掉, 意思是转发流量到本地的1080端口, 而1080端口正是 ss 监听的端口

启动privoxy

systemctl restart privoxy > systemctl enable privoxy

转发配置

写在 profile 中

> vim /etc/profile
export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118
> source /etc/profile

在当前 session 执行

export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118

测试翻墙

curl www.google.com

问题解决

如果不能访问, 请重启机器, 依次打开shadowsocks和privoxy再测试

> nohup sslocal -c /etc/shadowsocks.json /dev/null 2>&1 &
> privoxy --user privoxy /usr/local/etc/privoxy/config

Linux中使用ShadowSocks+Privoxy代理