前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux实现socks终端代理、全局代理

Linux实现socks终端代理、全局代理

原创
作者头像
RokasYang
修改2022-01-12 02:40:19
13.1K2
修改2022-01-12 02:40:19
举报
文章被收录于专栏:RokasYangRokasYangRokasYang

一、使用场景

GFW对于特定国外IP段会进行拦截阻断,导致我们无法访问对端,而我们需要用到socks协议的正向代理功能,负责为我们将请求转发到国外可用服务器,之后这台服务器将请求转发给你要访问的任何外网资源,最关键的部分就是这台国外服务器进行流量中转,如下图:

因此跨越GFW拦截大前提是你有一台运行在境外的socks服务端,关于socks服务端搭建本文不提,很多代理软件都能实现,请查阅相关资料,同时只是科学上网需求更建议使用稳定机场,不建议单独购买一台境外服务器搭建,性价比低容错率低。

以下操作建立在机器备案合规的前提下。

二、socks支持的代理协议

socks运行在会话层,能代理TCP、UDP本身及基于它们之上的协议,如http/https over tcp,http3 over udp(quic),无法代理icmp,因此你通过socks无法ping通谷歌,不要觉得是代理软件或节点的问题,是你的问题!

三、客户端安装

socks协议代理很多软件能够实现,本文讲述众所周知的ss/ssr代理,将shadowsocksR项目克隆到本地即可:

$ cd /usr/share
$ git clone https://github.com/RokasUrbelis/shadowsocksr 
$ cd ./shadowsocksr

初始化环境:bash initcfg.sh

客户端路径在./shadowsocks/local.py

客户端配置文件:user-config.json

四、写sytemd服务

仅用于支持systemd服务的linux发行版,其他发行版请查阅相关发行版的服务管理软件

$ mkdir -p ~/.config/systemd/user   #创建用于存放systemd服务目录
$ vim ~/.config/systemd/user/ssr-client.service
[Unit]
Description=Shadowsocks R Client Service
After=default.target
[Service]
ExecStart=/usr/bin/python /usr/share/shadowsocksr/shadowsocks/local.py -c /usr/share/shadowsocksr/shadowsocks/user-config.json  #以你实际路径为准
Restart=on-abort
[Install]
WantedBy=default.target
$

通过systemd管理服务

$ systemctl --user daemon-reload      #reload守护进程,写完systemd后执行一次即可,后续不需要执行
$ systemctl --user status ssr-client  #查看运行状态
$ systemctl --user start ssr-client   #重启ssr客户端
$ systemctl --user restart ssr-client #重启ssr客户端

如果没有systemd服务也不想写成服务,你也可以使用懒人一行式:

$ { nohup /usr/share/shadowsocksr/shadowsocks/local.py -c /usr/share/shadowsocksr/shadowsocks/user-config.json &> /dev/null; } &
$ alias ssrstart='{ nohup /usr/share/shadowsocksr/shadowsocks/local.py -c /usr/share/shadowsocksr/shadowsocks/user-config.json &> /dev/null; } &' 

五、ssr-config.json/user-config.json配置格式

ssr:

{
    "server": "blog.linux-code.com",
    "local_address": "127.0.0.1",
    "local_port": 1080,
    "timeout": 300,
    "workers": 1,
    "server_port": 3071,
    "password": "test",
    "method": "rc4-md5",
    "obfs": "http_simple",
    "obfs_param": "download.linux-code.com",
    "protocol": "origin",
    "protocol_param": ""
}

ss:

{
        "server": "blog.linux-code.com",
        "local_address": "127.0.0.1",
        "local_port": 1080,
        "timeout": 300,
        "workers": 1,
        "server_port": 3071,
        "password": "test",
        "method": "rc4-md5",
        "plugin": ""
}

六、代理测试

服务正常运行后,使用如下命令临时测试下连通性:

$ export http_proxy=http://127.0.0.1:1080
$ export http_proxy=https://127.0.0.1:1080   #export只针对你当前终端(pts/tty)有效,莫慌

想设置为全局代理,将上面两个命令加入到~/.bashrc即可,其他解释器放到各自的配置文件内,zsh则为~/.zshrc

接下来访问谷歌看看:

$ telnet google.com 80
Trying 93.46.8.90...
Connected to google.com.
Escape character is '^]'.

能通,说明已经正常运行,且节点状态正常:

取消当前终端代理,使用unset http_proxy https_proxy即可

七、Proxychains

使用proxychains配合ss/ssr客户端,将更方便更具针对性的管理你的socks代理

1)安装

$ git clone https://github.com/rofl0r/proxychains-ng.git
$ cd proxychains-ng
$ ./configure
$ make && sudo make install
$ sudo cp ./src/proxychains.conf /etc/proxychains.conf

2)修改配置文件

$ sudo vim /etc/proxychains.conf
socks5 127.0.0.1 1080       #根据实际情况更改,这里以ssr代理为例
socks5 127.0.0.1 1081
http  xx.xx.xx.xx  9000     #添加http代理
$

3)配置文件参数说明

  • strict_chain(默认on)

按照后面列表中出现的代理服务器的先后顺序组成一条链,要求所有的代理服务器都是有效的。

  • dynamic_chain(默认off)

按照列表中出现的代理服务器的先后顺序组成一条链,如果有代理服务器失效,则自动将其排除,但至少要有一个是有效的。

  • random_chain (默认off)

列表中的任何一个代理服务器都可能被选择使用,这种方式很适合网络扫描操作(参数chain_len只对random_chain有效)。

  • proxy_dns(默认on)

代理dns请求。

  • ProxyList

添加代理列表,如http、socks4/5、auth user/pass等。

4)使用方法

命令面前加proxychains即可,同样不能代理icmp,因为proxychainssocks,想代理icmp等全协议,建议用vpn相关软件

wget谷歌主页:

$ proxychains4 -q wget google.com

youtube视频下载:

$ proxychains4 -q youtube-dl https://www.youtube.com/watch?v=W76ZGZGCpPs

加速git clone:

$ proxychains4 -q https://github.com/RokasUrbelis/System-security-testing

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、使用场景
  • 二、socks支持的代理协议
  • 三、客户端安装
  • 四、写sytemd服务
  • 五、ssr-config.json/user-config.json配置格式
  • 六、代理测试
  • 七、Proxychains
    • 1)安装
      • 2)修改配置文件
        • 3)配置文件参数说明
          • 4)使用方法
          相关产品与服务
          云服务器
          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档