科学上网

2016-05-23 fishedee 后端

1 概述

Socks代理协议,socks代理是一直执行在运输层与应用层之间的代理协议,与HTTP代理不同的是,socks处理的TCP/UDP包,所以,其能代理任意的应用层协议,而不只是HTTP协议。

Socks代理协议有两个,分别是socks4与socks5协议,socks4协议只支持TCP协议,而且不支持加密,socks5协议同时支持TCP/UDP协议,而且支持加密~

2 服务器端

2.1 ss

Shadowsocks是一个创建socks5代理服务器的代理工具,安装非常简单

sudo apt-get install software-properties-common -y
sudo add-apt-repository ppa:max-c-lv/shadowsocks-libev -y
sudo apt-get update
sudo apt install shadowsocks-libev

在ubuntu上几行代码就能安装shadowsocks

sudo nohup ss-server -p 8000 -k password -m aes-256-cfb &

启动shadowsocks,8000是监听端口,password是密码,aes-256-cfb是加密方式。

2.2 ssh

ssh -qTfnN -D 8000 user@host

可以使用ssh作为代理,8000作为监听端口,user作为远程服务名,host作为远程服务器

3 客户端

3.1 Windows

客户端下载利用gui建立一个本地代理服务器,连接socks5服务器的IP和端口,以及建立1080端口作为本地浏览器的http与https代理即可。

Chrome浏览器上使用SwitchySharp搭建1080的代理,就可以随时切换了。

3.2 Linux

apt-get install python-pip
pip install shadowsocks

两行代码安装shadowsocks

sslocal -s serverip -p 8000 -b 127.0.0.1 -l 1080 -k password -m aes-256-cfb -d start
sslocal -s serverip -p 8000 -b 127.0.0.1 -l 1080 -k password -m aes-256-cfb -d stop

两行代码启动或关闭shadowsocks client,8000是远程服务端口,1080是本地服务端口,password是密码,aes-256-cfb是加密方式,1080是本地的socks端口。以上命令就可以将远程的shadowsocks服务,代理到本地的1080端口。

apt-get install tsocks
vim /etc/tsocks.conf
server = 127.0.0.1 # SOCKS 服务器的 IP
server_type = 5 # SOCKS 服务版本
server_port = 1080 #SOCKS 服务使用的端口

然后安装tsocks服务,设置tsocks配置,然后以后执行tsocks + 命令就能运行以走代理的方式运行了。

3.3 Mac

Mac下的shadowsocks客户端还算比较简单的,找一个叫goagentx的东西安装好了。 可惜goagentx将远程的socks映射到本地后,还是socks代理,毕竟很多都不支持socks代理,只支持http代理的。我们希望有一个程序可以将所有的网络都转到socks代理上,就是全局代理技术了,这个时候就要用到proximac

sudo nvram boot-args="debug=0x146 kext-dev-mode=1
brew install libuv
brew install python@2

安装前先设置好依赖的库

curl -fsSL https://raw.githubusercontent.com/proximac-org/proximac-install/master/install.py |sudo python

下载好代码并安装

{
    "local_port":8016,
    "local_address":"127.0.0.1",
    "proximac_port":8558,
    "VPN_mode":1,
    "proxyapp_name":"ss-local"
}

将以上的配置写入到一个文件config.json中,local_port和local_address就是goagentx代理到本地的socks地址,proximac_port是固定的8558,不能变更。VPN_mode是全局代理的配置,proxyapp_name就是goagentx的代理出口进程名,这是为了避免代理所有进程的网络数据造成死循环的问题。

proximac start -c config.json

然后就是启动proximac了,就这么简单。全局的socks5代理,不需要程序自身的支持,默认就走代理通道。

4 对象存储服务资源中转

有时候有很严格的机制,不允许科学上网,即使换了端口也没用,这个时候你就要曲线救国了。

qshell rput fishwall acme.sh.tar.gz acme.sh.tar.gz

先在梯子下载好资源,然后手动上传到对象服务器

qshell get fishwall acme.sh.tar.gz

然后在目标服务器下载下来,解压就可以了

这个方法几乎一定可行,唯一缺点是只支持下载文件

5 git代理

github代理配置

[http]
    proxy=socks5://127.0.0.1:7890
[https]
    proxy=socks5://127.0.0.1:7890

配置 ~/.gitconfig文件

Host github.com
Hostname github.com
ProxyCommand nc -v -x 127.0.0.1:7890 %h %p

配置~/.ssh/config文件,Mac

Host github.com *.github.com
User git
Port 22
Hostname %h
ProxyCommand "C:/Program Files/Git/mingw64/bin/connect" -S 127.0.0.1:7890 %h %p
IdentityFile "~\.ssh\id_rsa"
TCPKeepAlive yes
IdentitiesOnly yes

配置~/.ssh/config文件,Windows

相关文章