使用shadowsocks和proxychains做全局代理

2018-07-28 1998 0

安装shadowsocks-go

安装go版shadowsocks,首先安装go执行环境。

https://redirector.gvt1.com/edgedl/go/go1.9.2.linux-amd64.tar.gz 下载并解压到/data/zhangkai/go,设置GOROOT和GOPATH环境变量

  1. export GOROOT=/data/zhangkai/go
  2. export GOPATH=/data/zhangkai/go/src

下载shadowsocks-go

  1. git clone https://github.com/shadowsocks/shadowsocks-go.git
  2. cd shadowsocks-go
  3. # on server
  4. go get github.com/shadowsocks/shadowsocks-go/cmd/shadowsocks-server
  5. # on client
  6. go get github.com/shadowsocks/shadowsocks-go/cmd/shadowsocks-local

shadowsocks有服务端和客户端版本,将config.json中的server改成服务器的ip,然后在服务端和客户端分别运行

  1. # on server
  2. go run cmd/shadowsocks-server/server.go
  3. # on client
  4. go run cmd/shadowsocks-local/local.go

shadowsocks连接上之后,在客户端ip上使用 socks5: 127.0.0.1 1080 即可。

安装shadowsocks-libev

如果有root权限,最好使用shadowsocks-libev一键安装脚本:

  1. wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh
  2. chmod +x shadowsocks-all.sh
  3. ./shadowsocks-all.sh

详细安装步骤:
https://zoomyale.com/2016/vultr_and_ss/

开启BBR

Ubuntu18.04内核自带BBR,可使用如下命令开启:

  1. echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
  2. echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
  3. sysctl -p
  4. sysctl net.ipv4.tcp_available_congestion_control

如果内核不自带BBR,可以选择安装锐速或者BBR魔改版。

安装锐速(可选):

http://www.gaoshilei.com/2017/11/06/SSR/

  1. # 安装锐速支持内核
  2. apt-get install linux-image-extra-3.13.0-48-generic -y
  3. # 列出所有内核
  4. dpkg -l | grep linux-image
  5. # 卸载其他内核
  6. apt-get purge linux-image-3.13.0-139-generic linux-image-generic -y
  7. # 更新grub并重启
  8. update-grub && reboot
  9. # 安装锐速
  10. wget -N --no-check-certificate https://github.com/91yun/serverspeeder/raw/master/serverspeeder-v.sh && bash serverspeeder-v.sh Ubuntu 14.04 3.13.0-48-generic x64 3.11.20.4 serverspeeder_3272

安装BBR魔改版(可选)

由于内核问题,锐速和BBR只能二选一。

  1. apt-get install software-properties-common
  2. add-apt-repository ppa:ubuntu-toolchain-r/test
  3. apt-get update
  4. apt-get install gcc-5 g++-5
  5. ln -s /usr/bin/gcc-5 /usr/bin/gcc -f
  6. ln -s /usr/bin/g++-5 /usr/bin/g++ -f
  7. wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/YankeeBBR/master/bbr.sh && bash bbr.sh install
  8. bash bbr.sh start

关闭防火墙

如果是centos7,默认使用firewall作为防火墙,可以替换为iptables防火墙,然后开启相应端口。

  1. systemctl stop firewalld.service #停止firewall
  2. systemctl disable firewalld.service #禁止firewall开机启动
  3. yum install iptables-services #安装
  4. systemctl restart iptables.service #最后重启防火墙使配置生效
  5. systemctl enable iptables.service #设置防火墙开机启动

安装proxychains-ng

在Linux上设置环境变量http_proxy和https_proxy可以作为全局http代理,但是有些软件仍然不会使用代理。proxychains可以给所有软件包上一层,让其都通过代理访问互联网。

  1. git = https://github.com/rofl0r/proxychains-ng.git
  2. command = ./configure --prefix=/usr/local --sysconfdir=/usr/local/etc --fat-binary && make -j10 && make install && make install-config

默认的配置写在了/usr/local/etc/proxychains.conf下,可以拷贝到用户配置.proxychains/proxychains.conf,修改最后一行为socks5 127.0.0.1 1080

然后在软件前加上proxychains4即可,如

  1. proxychains4 curl http://www.baidu.com

当然,也可以加一个别名

  1. alias pc='proxychains4'

如果你还是觉得每次使用都要输入proxychains4或其别名,比较麻烦。你还可以用proxychains-ng代理一个shell,在shell中执行的命令就会自动使用代理了。

方法一: 手动设置环境变量

  1. $ export PROXYCHAINS_CONF_FILE=~/.proxychains-ng/4.11/etc/proxychains.conf
  2. $ export DYLD_INSERT_LIBRARIES=/usr/local/Cellar/proxychains-ng/4.11/lib/libproxychains4.dylib
  3. $ export DYLD_FORCE_FLAT_NAMESPACE=1

方法二: proxychains-ng直接调用SHELL

BASH

  1. $ proxychains4 -q /bin/bash

ZSH

  1. $ proxychains4 -q /bin/zsh

这样在当前 shell 中运行的所有程序的网络请求都会走代理了。可以把上面的命令加入到用户目录的.bashrc或者.zshrc中,用户登录后自动代理一个shell,这就类似一个全局代理了。在这个SHELL下的所有命令都可以使用代理了。