私人专线PROXY的搭建

使用google cloud设置socks5,http/https

Posted by Oscar Zhang on December 7, 2017

科学上网对于科研工作者格外重要。我在网上买过科学服务,最基础的每月30块,还不稳定。借着google cloud的活动,可以免费使用1年的服务,就算过了1年活动没了,相较于网上的价格也只有几分之一。自己搭建的服务可以自己掌管,非常可靠高,是为久长之际。

科学上网的关键有两点:

  1. 找到一个公网ip的主机。这部分依靠google cloud上租借vm实例实现。
  2. 在该主机上设置代理(转发信息)。这里采用socks5类型,通过ShadowSocks实现。
  3. 有些特殊情况可能只允许http/https类型的代理,这里也做了一个简要介绍。

一、创建google cloud账号

该填啥填啥,需要绑定一张信用卡
img

创建VM实例(做代理最小型机器就可以)
img

防火墙设置
img
关键项如下
img

二、SOCKS5

通过VM实例SSH进入服务器系统 img
img

shadowsocks官方

安装shadowsocks

1
2
3
sudo apt-get update  
sudo apt-get install python-pip     
sudo pip install shadowsocks

配置.json文件

server单端口,及client:

1
2
3
4
5
6
7
8
9
10
{
    "server":"my_server_ip",
    "server_port":8388,
    "local_address": "127.0.0.1",
    "local_port":1080,
    "password":"mypassword",
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open": false
}

下载链接

1
wget -P /etc https://raw.githubusercontent.com/zbhoscar/storage/master/shadowsocks.json

server多端口:

1
2
3
4
5
6
7
8
9
10
11
{
    "server": "0.0.0.0",
    "port_password": {
        "8381": "foobar1",
        "8382": "foobar2",
        "8383": "foobar3",
        "8384": "foobar4"
    },
    "timeout": 300,
    "method": "aes-256-cfb"
}

下载链接

1
wget -P /etc https://raw.githubusercontent.com/zbhoscar/storage/master/shadowsocks-multi.json

单次启动shadowsocks

1
ssserver -c /etc/shadowsocks-server.json -d start

单端口启动也可以简化为:

1
ssserver -p 8388 -k mypassword -m aes-256-cfb -d start

写入/etc/rc.local开机自启

注意: /etc/rc.local中不需要sudo(默认root); 2.需要写全路径,可通过which ssserver查看

1
/usr/local/bin/ssserver -c /etc/shadowsocks.json -d start  

可以添加如下几行, 输出诊断信息到log,写在执行语句之前。切不要盲目修改/etc/rc.local

1
2
3
exec 2> /tmp/rc.local.log      # send stderr from rc.local to a log file
exec 1>&2                      # send stdout to the same log file
set -x                         # tell sh to display commands before execution

服务器定时重启

/etc/crontab中设置系统定时重启,增加ssserver稳定性:

1
30 22 * * 1,4 root sleep 70 || /sbin/reboot          

注意: 照猫画虎,注意时区换算(uptime, last reboot, 服务器22:3即北京6:30, 每周1,4)

使用现成脚本设置SS服务器

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

直接进入设置界面,记好自己的设置

windows配置客户端

img
img
该怎么连就怎么连
Enjoy!

Linux/Ubuntu配置客户端

三、HTTP/HTTPS

配置相关软件并编辑

1
2
sudo apt-get install squid3     
sudo vim /etc/squid3/squid.conf

对文件做相应修改

1
2
3
4
5
6
7
8
9
                --- 文件内容修改部分 ---
# http_access deny all          # 位于1060行, 注视掉
http_port 10086                 # 再翻几页,个性化端口id
                --- 文件末尾添加部分 ---
acl allcomputers src 0.0.0.0/0.0.0.0
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid3/passwords
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated allcomputers

设置用户名密码认证

1
2
3
4
5
sudo apt-get install apache2-utils
sudo htpasswd -c -d /etc/squid3/passwords <自定义用户名>
> 设置密码,连输两次 <
sudo chmod o+r /etc/squid3/passwords
sudo service squid3 restart                 # or start, stop

验证代理是否起作用

1
2
3
4
tail -f /var/log/squid3/access.log
> 另台linux机器打开shell <
export http_proxy="http://用户名:密码@代理IP:代理端口"
curl -l "http://www.baidu.com"

如果代理配置正确,会输出html,同时代理服务器上的access.log会记录这次请求