Linux SSR

因为一个需求,所以研究了下——Linux终端下如何使用SSR优雅的出国访问优质(恩……)的国外网站,本笔记的实验环境是Center OS,其他Linux发行版本类似

SSR

安装SSR

  1. 作为懒癌患者首选GitHub上的CharlesScripts项目的安装脚本

    1
    wget https://github.com/the0demiurge/CharlesScripts/raw/master/charles/bin/ssr
  2. 将该脚本移至$PATH环境变量包含的目录,如:/usr/local/bin;并修改文件权限为可执行权限

    1
    2
    mv ssr /usr/local/bin/ssr
    chmod +x /usr/local/bin/ssr
  3. 安装

    1
    ssr install

    执行命令后会自动安装到:$HOME/.local/share/shadowsocksr

配置SSR

  1. 使用命令: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
  2. 常用命令

    • ssr help
      查看帮助信息
    • ssr start
      启动ssr
    • ssr stop
      关闭ssr
    • ssr restart
      重启ssr
    • ssr uninstall
      卸载ssr

安装proxychins4

根据上一节末的提示信息(You may install proxychains4 and configure it properly to test net delay)可知没有安装proxychins4所以无法进行延迟测试

  1. 克隆proxychins-ng
    1
    git clone https://github.com/rofl0r/proxychains-ng.git
  2. 安装
    1
    2
    3
    4
    5
    cd proxychains-ng
    ./configure --prefix=/usr --sysconfdir=/etc
    make
    sudo make install
    sudo make install-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
    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
  3. 修改配置文件
    1
    vim /etc/proxychains.conf
    proxychains默认使用的是9050端口,而我们SSR配置中使用的是1080端口,所以要将配置文件最底部的socks4 127.0.0.1 9050改为socks4 127.0.0.1 1080
    安装完成后再次运行ssr test即可看到延迟测试信息了

Privoxy

安装

  • Center OS
    1
    2
    yum 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. 获取脚本
    1
    wget https://github.com/SAMZONG/gfwlist2privoxy/raw/master/gfwlist2privoxy
  2. 执行
    1
    bash gfwlist2privoxy
    这里会提示需要输入ip地址及端口,输入你ssr配置的本地地址及端口即可,测试内容如下:
    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/"
  3. 后续操作
    1
    2
    cp -af gfw.action /etc/privoxy/
    echo 'actionsfile gfw.action' >> /etc/privoxy/config
  4. 设置http、https监听的端口及不监听的端口,Privoxy 默认监听端口是是8118
    1
    2
    3
    export 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/profileDebian则是修改~/.bashrc文件)文件,在文件末尾加上上面的3条export命令重新连接服务器即可
  5. 启动服务
    1
    systemctl start privoxy.service
  6. 测试
    1
    curl www.google.com
    能看到Google网页的源码就说明穿墙成功了

参考文章

  1. https://github.com/the0demiurge/CharlesScripts/blob/master/charles/bin/ssr
  2. 在Linux终端使用SSR服务实现科学上网
  3. Ubuntu 16.04 ProxyChains4编译安装

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×