searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Linux搭建全局代理

2024-07-10 09:44:35
42
0

工作环境中,不同网络之间不能互相访问,需要先登录跳板机,再由跳板机去访问其他机器。

如果想像局域网那样去访问另一个网络的任意节点,则需要借助全局代理来进行流量转发。

1,全局代理

Windows系统可以使用Xshell和Proxifier来搭建全局代理,那Linux系统下,要怎样搭建全局代理呢?

首先,搭建全局代理,需要三样东西:

1)代理服务器

2)转发器

3)转发规则

Windows系统可以用Xshell来搭建一个sock5的代理服务器,然后用Proxifier充当转发器和转发规则,使用起来非常方便。

Linux系统可以用ssh命令代替Xshell来搭建socks5代理服务器,然后用 redsocks + iptables 来代替Proxifier做全局代理。

2,Linux方案

本方案场景如下图所示,本地机器(Linux)的浏览器需要访问 172.16.1.4:8080 

步骤1:ssh搭建socks5代理服务器

可能在很多人印象中,ssh命令只是用来登录远程机器的,其实不是,ssh的本质是在本地和远程机器之间建立一个网络隧道,我们平时只是用这条隧道来登录服务器,其实它还有很多作用,例如正向代理、反向代理、socks5代理等。

执行以下命令

ssh -D :6000 -Ngf 用户名@123.45.67.89

相关参数说明:

  • -D:表示搭建socks5代理
  • -N:表示静默连接(即建立了连接,但看不到具体的会话)
  • -f:表示放到后台运行(一般N和f是一起用)
  • -g:加了g表示允许其他机器使用这个socks5代理,否则只有本机器可以使用
  • :6000:表示这个socks5代理服务的监听端口

步骤2:配置redsocks全局代理

Debian 系列可以执行如下命令安装

sudo apt-get install redsocks -y

Redhat 系列可以执行如下命令安装

sudo yum install redsocks -y

或者使用源码安装 github.com/darkk/redsocks

安装完成后,配置 /etc/redsocks/redsocks.conf

base {
        log_debug = off;
        log_info = on;
        log = "file:/tmp/reddi.log";

        daemon = on;
        redirector = iptables;
}

redsocks {
        # 请求来源
        local_ip = 127.0.0.1;
        local_port = 12345;

        # 转发目标地址
        ip = 127.0.0.1;
        port = 6000;
        type = socks5;
}

这个配置的意思是:将来自127.0.0.1:12345的数据包全部转发到目标地址,即步骤1中的socks5代理服务器

配置完成后重启redsocks

sudo systemctl restart redsocks

步骤3:iptables配置转发规则

配置思路是,将要访问 172.16.1.0/24 的数据包全部转发到 步骤2的请求来源地址(127.0.0.1:12345)

sudo iptables -A OUTPUT -p tcp -m tcp -d 172.16.1.0/24 -j REDIRECT --to-ports 12345  # 符合条件的转发
sudo iptables -A OUTPUT -p tcp -m tcp -j RETURN   # 其他的放行

到这里,全局代理服务器就搭建好了,

打开本地浏览器,就能直接访问172.16.1.4:8080 了。

0条评论
0 / 1000