很早之前自己找教程搭建pptpd失败了好几次就没再去搞过了。今天可以说是“旧情复燃”,只不过是换了种方式,没想到却简单得多。
服务器端
2018-3-11更新
建议使用脚本安装服务器端
以我的Centos为例
1. 安装shadowsocks
yum -y install python python-pip
pip install shadowsocks
2. 配置shadowsocks
vim /etc/shadowsocks.json
输入配置内容
{
"server": "服务器的ip",
"local_address": "127.0.0.1",
"local_port":1080,
"port_password": {
"端口1": "密码1",
"端口2": "密码2",
.....
"端口n": "密码n"
},
"timeout": 300,
"method": "aes-256-cfb"
}
2017-10-11 15:42:42 星期三 更新
多端口貌似不能用了,单独一个端口可以继续使用,默认设置多个设备都可以用一个端口。
{
"server": "服务器的ip",
"server_port": 端口号,
"local_address": "127.0.0.1",
"local_port":1080,
"password": "密码",
"timeout": 300,
"method": "aes-256-cfb"
}
然后就是开启/关闭服务
开启服务:sudo ssserver -c /etc/shadowsocks.json -d start
关闭服务:sudo ssserver -c /etc/shadowsocks.json -d stop
Android客户端
自行下载 shadowsocks App
操作也是很简单的
- 配置名称 : 任意
- 服务器 : vps ip
- 远程端口 : vps 开放端口号
- 密码 : 字面意思
- 加密方法 : 与服务器端保持一直
Linux客户端
安装 shadowsocks
yaourt -S shadowsocks-qt5
添加配置基本与android相同
connection -> add -> manually
终端
以我的 Arch 为例
1.安装shadowsocks
yaourt -S python2.7 python-pip
pip install shadowsocks
编辑文件vim /etc/shadowsocks.json
,填写代理信息:
{
"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
}
后台启动/停止shadowsocks
启动:sslocal -c /etc/shadowsocks.json -d start
停止:sslocal -c /etc/shadowsocks.json -d stop
2. sock5转http
Shadowsocks使用socks5协议,而终端很多工具目前只支持http和https等协议,所以我们为终端设置Shadowsocks的思路就是将socks5协议转换成http协议,然后为终端设置即可。
简而言之,我们需要一个代理的代理去支持我的vpn,因为Shadowsocks不支持我们常用的传输协议。
这里我用到的是 privoxy ,附带一个比较详细的博文介绍。
2.1 安装 privoxy
yaourt -S privoxy
2.2 配置 privoxy
终端输入 sudo vim /etc/privoxy/config
修改如下
# listen-address 127.0.0.1:8118 找到这句并改成以下
listen-address 0.0.0.0:8118
# 添加一句
forward-socks5 / 127.0.0.1:1080 .
然后再是重启一下服务 就可以使用代理
sudo systemctl restart privoxy
现在,你可以在某个命令前面加上http_proxy=http://localhost:8118
设置代理。
(8118 端口是 privoxy 的默认端口
2.3 验证代理是否成功
没有挂代理的时候:
curl ip.gs
Current IP / 当前 IP: (手动马赛克)
ISP / 运营商: ChinaTelecom
City / 城市: Wuhan Hubei
Country / 国家: China
挂了代理的时候:
http_proxy=http://localhost:8118 curl ip.gs
Current IP / 当前 IP: (手动马赛克)
ISP / 运营商: digitalocean.com
City / 城市: London
Country / 国家: United Kingdom
如果要在当前shell内一直使用代理,只要设置 export http_proxy=http://127.0.0.1:8118/
即可
如果想在当前shell取消代理,则 $ unset http_proxy
如果想要在终端内一直使用代理,也可以在 ~/.bashrc 中设置一下也可。
vim ~/.bashrc
添加一句
export http_proxy=http://127.0.0.1:8118/
最后是source一下让它立刻生效
source ~/.bashrc
3. Proxychains
无疑,无论是临时使用 http_proxy=http://127.0.0.1:8118/ ,当前shell 设置代理,还是全局设置都不是很方便。这里提供一种方式,你只需要在你想要代理的命令前输入 proxychains4
即可。
3.1 安装
git clone https://github.com/rofl0r/proxychains-ng.git
cd proxychains-ng
./configure
(sudo) make && make install
cp ./src/proxychains.conf /etc/proxychians.conf
cd .. && rm -rf proxychains-ng
3.2 修改配置
vim /etc/proxychains.conf
输入以下操作
strict_chain
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000
localnet 127.0.0.0/255.0.0.0
quiet_mode
[ProxyList]
socks5 127.0.0.1 1080
3.3 测试
proxychains4 curl ip.gs
[proxychains] config file found: /etc/proxychains.conf
[proxychains] preloading /usr/local/lib/libproxychains4.so
Current IP / 当前 IP: (手动马赛克)
ISP / 运营商: digitalocean.com
City / 城市: London
Country / 国家: United Kingdom
如何给Linux下的所有应用挂代理
Linux下的shadowsocks貌似没有全局设置,像telegram这种自带代理设置的还好说,而没有自带代理设置的应用就很蛋疼了。这里说下我的解决方法(应该不是最好的。
直接开终端运行
因为在前文已经配置了终端代理,所以我们可以选择开启一个虚拟终端,然后在终端中以命令行形式启动应用,当然要在前面加个proxychains4
。
举个例子,因为经常需要使用gmail,而我一直使用的邮件客户端是 Nylas Mail(安利一下啦,界面非常美观,如何下载自己去找吧。),而他本身是没有自带代理设置的,它的命令行是nylas-mail
那么就是命令proxychains4 nylas-mail
就ok了。
当然这样的话这个终端就会“废了”,你必须一直开着。这样当然不行,我们可以使用nohup
命令另其在后台运行。命令如下
nohup nylas-mail > /dev/zero 2>&1 &
上面那个命令会忽视所有输出和错误,否则单纯是nohup nylas-mail &
会将输出存到当前目录的nohup.out
文件中。
在*.desktop文件中更改
对于常用的应用上面那个方法还是不方便,最方便的方法是在desktop entry文件中更改。desktop entry文件具体的我说不来啊,我理解的就是一个代替终端启动的格式化脚本。不知道的自己去搜一下了解一下吧。
desktop entry文件都存在/usr/share/applications
目录下,随便找一下就可以了啊。
然后打开这个文件,在Exec
中的最前面加个proxychains4
就行了。
什么原理的话,你只要知道desktop entry文件是什么作用,他的格式是怎么样的,你就知道了。
这个方法有一个缺点就是,你每次更新系统的时候,这个应用一旦被更新,那么他的desktop entry文件也会被更新,暂时没有找到好的解决办法。。