Proxy

概述

参考:

在计算机网络中,Proxy server(代理服务器) 是一种服务器应用程序,充当资源请求的客户端和提供该资源的服务器之间的中介。

Proxy(代理) 有很多种理解,还可以表示一种服务、一个概念。

Proxy 服务在整个 IT 圈子中非常常见,隧道、VPN 等等都可以看做是代理的一种。

Forward/Reverse proxy

Forward proxy(正向代理)Reverse proxy(反向代理)

正向代理反向代理
代理对象客户端服务端
隐藏对象客户端 IP服务端 IP
主要用途突破限制、匿名访问负载均衡、安全防护、加速
典型工具Clash, Squid, ShadowsocksNginx, HAProxy, Cloudflare

[!Note] 在 Web 中还有一个 User-Agent 的概念,Agent 可以看作是一种代理,只不过代理形式与 Proxy 有点不太一样,Agent 更强调作为用户的代理人执行操作。虽然都是代替真实人类发起网络请求,Agent 更靠近人类。

比如我可以这么描述:DesistDaydream 通过 Chrome 这个 Agent,利用 Clash 这个 Forward proxy 访问 Google 网站,Google 网站使用 Nginx 这个 Reverse proxy 返回其站点的资源给我的 Agent 后,由 Agent 展现给我。

Squid

参考:

Squid 是一款老牌的可以提供代理服务的程序。Squid 版本 1.0.0 于 1996 年 7 月发布。

在服务端安装完成后,将 /etc/squid/squid.conf 文件中的 http_access deny all 修改为 http_access allow all;之后在客户端通过 Linux 代理配置 指定服务端的 3128 端口即可。

关联文件与配置

/etc/squid/

  • ./squid.conf # 主要配置文件

GOST

参考:

GO Simple Tunnel(Go 简单隧道,简称 GOST) 是 Go 语言编写的,实现了简单隧道的程序。

[!Tip] 甚至可以把 GOST 当作没有实现 Secure Shell ProtocolOpenSSH 程序

架构

https://gost.run/concepts/architecture/

TODO

最佳实践

gost -L http://:8080 -L socks5://:1080 使用命令直接启动一个简单的代理。

  • 然后在 Shell 中配置代理即可
export hostip="192.168.254.254"
export http_proxy="http://${hostip}:1080"
export https_proxy="http://${hostip}:1080"
export all_proxy="sock5://${hostip}:1080"

实现 SSH 的远程转发功能

环境: A 可以访问 B,B 不可以访问 A。

诉求: B 想要访问 A 的 3100 端口

B 上执行(这其实就类似启动了一个不带 ssh 能力的 sshd 服务。)

/usr/local/bin/gost -L "relay://:13100?bind=true"

A 上执行

/usr/local/bin/gost -L rtcp://${B-IP}:3100/${A-IP}:3100 \
  -F relay://${B-IP}:13100

解释:

  • 本地使用随机端口,与 ${B-IP}:13100 建立连接。假如端口是 12345
  • rtcp://${B-IP}:3100 # 告诉 B 的 GOST,在本地开启 3100 监听
  • B:3100 上收到的数据包会转发给 B:13100,传输到 A:12345。然后,A 的 GOST 将 A:12345 收到的数据包转发到 A:3100

[!Attention] 有时候有防火墙,B 在防火墙后面,A 只能通过防火墙映射的端口访问到 B 的 13100。在这种情况下

/usr/local/bin/gost -L rtcp://0.0.0.0:3100/${A-IP}:3100 -F relay://${映射-IP}:${映射-PORT}

其他

GitHub 项目,vacuityv/vacproxy

  • Go 语言编写,简单的 http 代理

proxychains

项目地址: https://github.com/haad/proxychains

凡是通过 proxychains 程序运行的程序都会通过 proxychains 配置文件中设置的代理配置来发送数据包。

apt install proxychains 即可

修改配置文件

sock5 127.0.0.1 10808 # 指定本地代理服务所监听的地址

proxychains /opt/google/chrome/chrome # 即可通过代理打开 chrome 浏览器

proxychains curl -I https://www.google.com 会成功

Reverse Proxy(反向代理)

参考:

Nginx

FRP

https://github.com/yosebyte/nodepass


最后修改 February 10, 2026: proxy gost (bcc7b9a3)