Linux SSR
因为一个需求,所以研究了下——Linux终端下如何使用SSR优雅的出国访问优质(恩……)的国外网站,本笔记的实验环境是Center OS,其他Linux发行版本类似
SSR
安装SSR
作为懒癌患者首选GitHub上的CharlesScripts项目的安装脚本
1
wget https://github.com/the0demiurge/CharlesScripts/raw/master/charles/bin/ssr
将该脚本移至
$PATH
环境变量包含的目录,如:/usr/local/bin
;并修改文件权限为可执行权限1
2mv ssr /usr/local/bin/ssr
chmod +x /usr/local/bin/ssr安装
1
ssr install
执行命令后会自动安装到:
$HOME/.local/share/shadowsocksr
配置SSR
使用命令:
ssr config
打开配置文件,按照以下类似配置保存即可1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25{
"server": "103.114.161.160", // 服务器ip
"server_ipv6": "::",
"server_port": 667, // 服务器端口
"local_address": "127.0.0.1",
"local_port": 1080, // 本地端口,记住这个,后续Privoxy将代理这个端口
"password": "ntdtv.com", // 服务器密码
"method": "AES-256-CFB", // 加密方式
"protocol": "origin", // 加密协议
"protocol_param": "",
"obfs": "plain", // 混淆方式
"obfs_param": "",
"speed_limit_per_con": 0,
"speed_limit_per_user": 0,
"additional_ports" : {}, // only works under multi-user mode
"additional_ports_only" : false, // only works under multi-user mode
"timeout": 120,
"udp_timeout": 60,
"dns_ipv6": false,
"connect_verbose_info": 0,
"redirect": "",
"fast_open": false
}保存后,可看到自动提示的信息,输出如下类似内容就是配置成功了:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29[root@sssssssss home]# ssr config
IPv6 not support
2018-12-21 01:09:09 ERROR shell.py:50 [Errno 2] No such file or directory: '/var/run/shadowsocksr.pid'
2018-12-21 01:09:09 ERROR daemon.py:146 not running
IPv6 not support
2018-12-21 01:09:09 INFO util.py:85 loading libcrypto from libcrypto.so.10
started
Testing Connection...
local_port is 1080; if any exceptions orrured, please install jq
connection information:
{
"ip": "103.114.161.160",
"city": "Suqian",
"region": "Jiangsu",
"country": "CN",
"loc": "33.9492,118.2960",
"postal": "223800",
"org": "AS40676 Psychz Networks"
}
IP : 103.114.161.160
地址 : 美国 加利福尼亚州 洛杉矶
运营商 : hosteons.com
数据二 : 美国 | 新加坡HostEONS私人有限公司(美芝路5001号黄金坊04-01号)美国Psychz数据中心洛杉矶节点
数据三 : 美国加利福尼亚洛杉矶
URL : http://www.cip.cc/103.114.161.160
You may install proxychains4 and configure it properly to test net delay常用命令
ssr help
查看帮助信息ssr start
启动ssrssr stop
关闭ssrssr restart
重启ssrssr uninstall
卸载ssr
安装proxychins4
根据上一节末的提示信息(You may install proxychains4 and configure it properly to test net delay
)可知没有安装proxychins4所以无法进行延迟测试
- 克隆proxychins-ng
1
git clone https://github.com/rofl0r/proxychains-ng.git
- 安装输出信息
1
2
3
4
5cd proxychains-ng
./configure --prefix=/usr --sysconfdir=/etc
make
sudo make install
sudo make install-config1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39[root@izuf6f5j6kravfwcn9kgtqz home]# git clone https://github.com/rofl0r/proxychains-ng.git
正克隆到 'proxychains-ng'...
remote: Enumerating objects: 17, done.
remote: Counting objects: 100% (17/17), done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 1211 (delta 6), reused 4 (delta 0), pack-reused 1194
接收对象中: 100% (1211/1211), 626.98 KiB | 58.00 KiB/s, done.
处理 delta 中: 100% (788/788), done.
[root@izuf6f5j6kravfwcn9kgtqz home]# cd proxychains-ng
[root@izuf6f5j6kravfwcn9kgtqz proxychains-ng]# ./configure --prefix=/usr --sysconfdir=/etc
checking whether we have GNU-style getservbyname_r() ... yes
checking whether $CC defines __APPLE__ ... no
checking whether $CC defines __FreeBSD__ ... no
checking whether $CC defines __OpenBSD__ ... no
checking whether $CC defines __sun ... no
checking whether we can use -Wl,--no-as-needed ... yes
checking what's the option to use in linker to set library name ... --soname
Done, now run make && make install
[root@izuf6f5j6kravfwcn9kgtqz proxychains-ng]# make
cc -DSUPER_SECURE -DHAVE_GNU_GETSERVBYNAME_R -Wall -O0 -g -std=c99 -D_GNU_SOURCE -pipe -DLIB_DIR=\"/usr/lib\" -DSYSCONFDIR=\"/etc\" -DDLL_NAME=\"libproxychains4.so\" -fPIC -c -o src/nameinfo.o src/nameinfo.c
printf '#define VERSION "%s"\n' "$(sh tools/version.sh)" > src/version.h
cc -DSUPER_SECURE -DHAVE_GNU_GETSERVBYNAME_R -Wall -O0 -g -std=c99 -D_GNU_SOURCE -pipe -DLIB_DIR=\"/usr/lib\" -DSYSCONFDIR=\"/etc\" -DDLL_NAME=\"libproxychains4.so\" -fPIC -c -o src/version.o src/version.c
cc -DSUPER_SECURE -DHAVE_GNU_GETSERVBYNAME_R -Wall -O0 -g -std=c99 -D_GNU_SOURCE -pipe -DLIB_DIR=\"/usr/lib\" -DSYSCONFDIR=\"/etc\" -DDLL_NAME=\"libproxychains4.so\" -fPIC -c -o src/core.o src/core.c
cc -DSUPER_SECURE -DHAVE_GNU_GETSERVBYNAME_R -Wall -O0 -g -std=c99 -D_GNU_SOURCE -pipe -DLIB_DIR=\"/usr/lib\" -DSYSCONFDIR=\"/etc\" -DDLL_NAME=\"libproxychains4.so\" -fPIC -c -o src/common.o src/common.c
cc -DSUPER_SECURE -DHAVE_GNU_GETSERVBYNAME_R -Wall -O0 -g -std=c99 -D_GNU_SOURCE -pipe -DLIB_DIR=\"/usr/lib\" -DSYSCONFDIR=\"/etc\" -DDLL_NAME=\"libproxychains4.so\" -fPIC -c -o src/libproxychains.o src/libproxychains.c
cc -DSUPER_SECURE -DHAVE_GNU_GETSERVBYNAME_R -Wall -O0 -g -std=c99 -D_GNU_SOURCE -pipe -DLIB_DIR=\"/usr/lib\" -DSYSCONFDIR=\"/etc\" -DDLL_NAME=\"libproxychains4.so\" -fPIC -c -o src/allocator_thread.o src/allocator_thread.c
cc -DSUPER_SECURE -DHAVE_GNU_GETSERVBYNAME_R -Wall -O0 -g -std=c99 -D_GNU_SOURCE -pipe -DLIB_DIR=\"/usr/lib\" -DSYSCONFDIR=\"/etc\" -DDLL_NAME=\"libproxychains4.so\" -fPIC -c -o src/ip_type.o src/ip_type.c
cc -DSUPER_SECURE -DHAVE_GNU_GETSERVBYNAME_R -Wall -O0 -g -std=c99 -D_GNU_SOURCE -pipe -DLIB_DIR=\"/usr/lib\" -DSYSCONFDIR=\"/etc\" -DDLL_NAME=\"libproxychains4.so\" -fPIC -c -o src/hostsreader.o src/hostsreader.c
cc -DSUPER_SECURE -DHAVE_GNU_GETSERVBYNAME_R -Wall -O0 -g -std=c99 -D_GNU_SOURCE -pipe -DLIB_DIR=\"/usr/lib\" -DSYSCONFDIR=\"/etc\" -DDLL_NAME=\"libproxychains4.so\" -fPIC -c -o src/hash.o src/hash.c
cc -DSUPER_SECURE -DHAVE_GNU_GETSERVBYNAME_R -Wall -O0 -g -std=c99 -D_GNU_SOURCE -pipe -DLIB_DIR=\"/usr/lib\" -DSYSCONFDIR=\"/etc\" -DDLL_NAME=\"libproxychains4.so\" -fPIC -c -o src/debug.o src/debug.c
cc -fPIC -Wl,--no-as-needed -ldl -lpthread -Wl,--soname,libproxychains4.so \
-shared -o libproxychains4.so src/nameinfo.o src/version.o src/core.o src/common.o src/libproxychains.o src/allocator_thread.o src/ip_type.o src/hostsreader.o src/hash.o src/debug.o
cc -DSUPER_SECURE -DHAVE_GNU_GETSERVBYNAME_R -Wall -O0 -g -std=c99 -D_GNU_SOURCE -pipe -DLIB_DIR=\"/usr/lib\" -DSYSCONFDIR=\"/etc\" -DDLL_NAME=\"libproxychains4.so\" -fPIC -c -o src/main.o src/main.c
cc src/main.o src/common.o -o proxychains4
[root@izuf6f5j6kravfwcn9kgtqz proxychains-ng]# sudo make install
./tools/install.sh -D -m 644 libproxychains4.so /usr/lib/libproxychains4.so
./tools/install.sh -D -m 755 proxychains4 /usr/bin/proxychains4
[root@izuf6f5j6kravfwcn9kgtqz proxychains-ng]# sudo make install-config
./tools/install.sh -D -m 644 src/proxychains.conf /etc/proxychains.conf - 修改配置文件proxychains默认使用的是9050端口,而我们SSR配置中使用的是1080端口,所以要将配置文件最底部的
1
vim /etc/proxychains.conf
socks4 127.0.0.1 9050
改为socks4 127.0.0.1 1080
安装完成后再次运行ssr test
即可看到延迟测试信息了
Privoxy
安装
- Center OS
1
2yum install -y epel-release
yum install -y privoxy - Debian
1
apt-get install -y privoxy
PAC模式
进行全局代理会大大的影响我们访问国内地址,所以我们使用PAC模式来进行流量代理。根据GFWList(由AutoProxy官方维护)来判断哪些网站被我们的超级安全防御墙(超级ma fan的wall)挡在门外
这里我们使用@Otokaze 的shell自动转换脚本来获取GFWList配置
- 获取脚本
1
wget https://github.com/SAMZONG/gfwlist2privoxy/raw/master/gfwlist2privoxy
- 执行这里会提示需要输入ip地址及端口,输入你ssr配置的本地地址及端口即可,测试内容如下:
1
bash gfwlist2privoxy
1
2
3
4
5
6
7[root@izuf6f5j6kravfwcn9kgtqz ~]# bash gfwlist2privoxy
proxy(socks5): 127.0.0.1:1080
{+forward-override{forward-socks5 127.0.0.1:1080 .}}
=================================================================
"cp -af /root/gfw.action /etc/privoxy/" - 后续操作
1
2cp -af gfw.action /etc/privoxy/
echo 'actionsfile gfw.action' >> /etc/privoxy/config - 设置http、https监听的端口及不监听的端口,Privoxy 默认监听端口是是8118只在本次连接会话有效,重新连接服务器后需要重新设置
1
2
3export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118
export no_proxy=localhost
永久有效配置方式:编辑1
vim /etc/profile
/etc/profile
(Debian则是修改~/.bashrc
文件)文件,在文件末尾加上上面的3条export命令重新连接服务器即可 - 启动服务
1
systemctl start privoxy.service
- 测试能看到Google网页的源码就说明穿墙成功了
1
curl www.google.com
参考文章
- 本文标题:Linux SSR
- 本文作者:Thomas Woo
- 发布时间:2018-12-21 12:59
- 最后更新:2020-06-20 15:40
- 本文链接:http://smileorigin.site/linux/ssr/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY 4.0 许可协议。转载请注明出处!