[网络] 网络代理服务

免责声明:本文仅供本人学习记录之用,并不提供相关服务。请勿转载或者将本文用于其他违法用途。
修订版本:v1.2
修订时间:2025年10月19日23:41:07

00 简介:什么是代理

代理服务器是一个中间人,它接收用户的上网请求并代为访问,再将结果传回给用户。

01 设置代理客户端

1.1 Linux

1.1.1 HTTP/HTTPS代理

HTTP/HTTPS 代理是 Web 流量的常用代理类型。所有 Web 请求首先发送到代理服务器,再由代理服务器转发到目标网站,因此目标网站看到的是代理服务器的 IP 而非您的真实 IP。HTTPS 代理通过加密代理与目标服务器之间的连接,提升了安全性。

1.1.1.1 设置临时 HTTP/HTTPS 代理在当前终端会话中设置临时代理:

export http_proxy=http://example.com:http_port
export https_proxy=http://example.com:https_port
  • 注意
  1. 会话关闭后,代理配置将失效。
  2. 通常 HTTPS 代理也使用 http:// 格式,因为代理连接本身不一定加密(加密发生在代理与目标服务器之间)。
  3. 建议使用小写变量(如 http_proxy),因为许多程序优先识别小写形式。

1.1.1.2 设置永久 HTTP/HTTPS 代理

编辑shell配置文件(如bash)

vim ~/.bashrc

添加以下内容:

export http_proxy=http://example.com:http_port
export https_proxy=http://example.com:https_port

应用配置

source ~/.bashrc

此配置将在所有新终端会话中生效。如果使用其他 shell(如 Zsh),请编辑对应的配置文件(如 ~/.zshrc)。

1.1.2 SOCKS4/SOCKS5 代理

SOCKS 代理(尤其是 SOCKS5)比 HTTP/HTTPS 代理更通用,支持多种网络协议和流量类型。SOCKS5 是 SOCKS4 的升级版,功能更全面。

1.1.2.1 SOCKS4 和 SOCKS5 对比

协议 socks4 socks5
tcp
udp
身份验证
Ipv4
Ipv6
身份验证
在代理服务器解析DNS

因此,SOCKS5 是一种更安全、更灵活的代理模式。

1.1.2.2 通过环境变量使用 SOCKS4/SOCKS5 代理

SOCKS 代理需通过 all_proxy 环境变量设置,而非 http_proxy 或 https_proxy:

# SOCKS4
export all_proxy=socks4://example.com:socks4_port
# SOCKS5(无身份验证)
export all_proxy=socks5://example.com:socks5_port
# SOCKS5(带身份验证)
export all_proxy=socks5://username:password@example.com:socks5_port
  • 注意
    并非所有工具都支持 all_proxy 变量。某些工具(如 curl)支持,但其他程序可能只读取 HTTP/HTTPS 变量,或需单独配置。

1.1.2.3 通过 Proxychains 工具使用 SOCKS4/SOCKS5 代理

以 Ubuntu 22.04 为例:

# 安装 Proxychains
sudo apt install proxychains-ng proxychains4

在配置文件 /etc/proxychains4.conf 末尾添加以下内容之一(注释掉其他默认代理配置):

# SOCKS4
socks4  example.com  socks4_port
# SOCKS5(无验证)
socks5  example.com  socks5_port
# SOCKS5(带验证)
socks5  example.com  socks5_port  username  password

使用时,在命令前添加 proxychains4:

proxychains4 curl example.com
  • 注意
    Proxychains4 不支持 UDP 或 ICMP 流量(如 DNS 查询或 ping),因为它未 hook 相关函数。除非程序使用 TCP(如 TCP DNS),否则这些流量不会走代理。
    Proxychains4 适用于命令行工具,不适合图形界面应用。

1.1.2.4 使用 SSH 通过端口转发创建 SOCKS5 代理(推荐

通过 SSH 隧道创建 SOCKS5 代理:

# -f:后台运行
# -N:不执行远程命令,仅转发
# -D:创建 SOCKS5 隧道
# ServerAliveInterval:客户端检查服务器存活间隔(秒)
# ServerAliveCountMax:最大无响应次数
ssh -f -N -D 1080 user@host -o ServerAliveInterval=30 -o ServerAliveCountMax=3

此命令在本地监听端口 1080,并通过 SSH 隧道将流量转发到远程服务器。配置本地应用使用 localhost:1080 作为 SOCKS5 代理即可。

1.1.3 其他代理参数

1.1.3.1 ftp_proxy
用于指定 FTP 连接的代理服务器:

# HTTP 协议
export ftp_proxy=http://example.com:ftp_port
# SOCKS5 协议
export ftp_proxy=socks5://example.com:socks5_port

1.1.3.2 all_proxy
默认代理变量,适用于所有类型的网络连接(包括 HTTP、HTTPS 和 FTP)。如果未指定具体协议变量,程序将回退到 all_proxy:

# HTTP
export all_proxy=http://example.com:http_port
# HTTPS
export all_proxy=https://example.com:https_port
# SOCKS4
export all_proxy=socks4://example.com:socks4_port
# SOCKS5(带验证)
export all_proxy=socks5://username:password@example.com:socks5_port

1.1.3.3 no_proxy

指定不走代理的主机名、域名或 IP 列表(逗号分隔)。匹配时将直接连接:

# 示例:不代理本地主机和 example.com 域名
export no_proxy="localhost,127.0.0.1,example.com"
# 示例:不代理 example.com 和以 .internal 结尾的域名
export no_proxy="example.com,*.internal"

1.2 Windows

1.2.1 HTTP/HTTPS 代理

1.2.1.1 系统设置 HTTP/HTTPS 代理

  1. 打开“设置” > “网络和 Internet” > “代理”。
  2. 在“手动代理设置”下,启用“使用代理服务器”。
  3. 输入代理地址和端口(例如,example.com:http_port)。
  4. 选中“不要将此代理用于本地(Intranet)地址”。
  5. 点击“保存”。

1.2.1.2 使用第三方工具

您可以使用第三方工具(如 Proxifier 或 Fiddler)进行更高级的代理配置,需自行查找和安装。
注意:Windows 系统代理设置适用于大多数浏览器和系统应用,但某些程序可能需要单独配置。

1.2.2 SOCKS4/SOCKS5 代理

Windows 原生支持 SOCKS 代理(兼容 SOCKS4 和 SOCKS5)。

1.2.2.1 系统设置 SOCKS 代理

  1. 打开“控制面板” > “网络和 Internet” > “Internet 选项”。
  2. 切换到“连接”选项卡,点击“局域网 (LAN) 设置”。
  3. 勾选“为 LAN 使用代理服务器”,然后点击“高级”。
  4. 在“Socks”字段中,输入代理服务器的 IP 地址和端口(例如,example.com:socks_port)。
  5. 点击“确定”保存。

1.2.2.2 使用第三方工具

第三方工具(如 Proxifier 或 SocksCap)可提供更细粒度的 SOCKS 代理控制,需自行查找和安装。

1.2.2.3 使用 SSH 通过端口转发创建 SOCKS5 代理(推荐

与 Linux 相同,使用 SSH 工具(如 PuTTY 或 OpenSSH for Windows)创建 SOCKS5 代理:

# 在 Windows 的命令行(需安装 OpenSSH)或 PuTTY 中运行
ssh -f -N -D 1080 user@host -o ServerAliveInterval=30 -o ServerAliveCountMax=3

此命令在本地监听端口 1080,通过 SSH 隧道转发流量。配置应用使用 localhost:1080 作为 SOCKS5 代理。
注意:Windows 系统中,PuTTY 提供图形界面配置动态端口转发(Dynamic Port Forwarding),适合不熟悉命令行的用户。

02 设置代理服务器

2.1 Linux

2.1.1 使用 Squid 提供 HTTP/HTTPS 代理服务器

Squid 是一款功能强大的开源代理服务器,支持 HTTP/HTTPS。

  1. 安装
sudo apt install squid
  1. 编辑配置文件
vim /etc/squid/squid.conf
  1. 添加基本配置
http_port 3128
http_access allow localhost
http_access deny all
  • http_port 3128:监听端口(可修改)。
  • http_access allow localhost:允许本地访问。
  • http_access deny all:拒绝其他访问。
  1. 访问控制
acl localnet src 192.168.1.0/24
http_access allow localnet
  • acl localnet src 192.168.1.0/24: 定义一个名为 localnet 的 ACL,匹配源 IP 地址在 192.168.1.0/24 网段内的客户端。
  • http_access allow localnet: 允许匹配 localnet ACL 的客户端访问代理。
  1. 重启服务
sudo systemctl restart squid

注意:支持 HTTPS 流量需启用 ssl-bump 和配置 SSL 证书,过程复杂,建议参考官方文档。

2.1.2 Nginx 提供http/https代理服务器

Nginx 主要用于反向代理,但也可配置为正向代理(功能不如 Squid 全面,如缺少高级缓存和认证)。

  1. 编辑配置文件(例如 /etc/nginx/sites-enabled/proxy.conf):
server {
    listen 8888;
    resolver 8.8.8.8;  # DNS 解析服务器
    location / {
        proxy_pass $scheme://$host$request_uri;
    }
}
  1. 重启Nginx
sudo systemctl restart nginx

2.1.3 Dante 提供 Socks代理服务器

Dante 是一款高效的 SOCKS 服务器。

  1. 安装
sudo apt install dante-server
  1. 编辑 /etc/danted.conf,添加示例配置:
logoutput: syslog
internal: 0.0.0.0 port = 1080
external: eth0  # 替换为您的网络接口
clientmethod: none
socksmethod: none
user.privileged: root
user.unprivileged: nobody

client pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: connect disconnect error
}

socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: connect disconnect error
}
  1. 重启
sudo systemctl restart danted

2.1.4 3proxy 提供 Socks代理服务器

3proxy 是轻量级多协议代理服务器。

  1. 安装
sudo apt install 3proxy
  1. 编辑 /etc/3proxy/3proxy.cfg,添加:
daemon
log /var/log/3proxy.log D
auth none
socks -p1080
  1. 启动
sudo 3proxy /etc/3proxy/3proxy.cfg

2.2 Windows

2.2.1 使用 CCProxy 提供 HTTP/HTTPS/FTP/SOCKS 代理服务

CCProxy 是 Windows 专用的易用代理软件,支持多种协议。

官网:CCProxy
下载最新版本并安装(避免使用旧链接)。安装后,通过图形界面配置代理端口和访问规则。

2.2.2 WinGate 提供HTTP/HTTPs/FTP/Socks代理服务

WinGate 是功能丰富的代理服务器。
官网:WinGate
下载最新版本并安装。配置类似 CCProxy,通过界面设置。

2.2.3 一些开源代理软件(不补充)

某些开源的,S开头、C开头和V开头的开源应用,即可以当做服务器也可以当做客户端,此处不过多提及

posted on 2025-04-20 20:31  风惊庭前叶  阅读(725)  评论(0)    收藏  举报