# SOCKS5代理 > SOCKS5,本地科学上网代理协议,监听 127.0.0.1:10808,在 Mac Mini、Ubuntu1、Ubuntu2 上正常运行,NAS 上仅本机监听。 ## Overview SOCKS5 代理是一种网络协议,通过 SOCKS 代理服务器转发客户端的网络请求,支持 TCP 和 UDP。本方案中各节点通过 v2rayA 或类似代理客户端在本地启动 SOCKS5 代理服务,供本机应用走科学上网通道。 ## Node Status || 节点 | IP | 端口 | 状态 | FRP 暴露 | |------|-----|-----|------|----------| | Mac Mini M4 | 127.0.0.1 | 10808 | ✅ 正常 | — | | Ubuntu Server 1 | 127.0.0.1 | 10808 | ✅ 正常 | — | | Ubuntu Server 2 | 127.0.0.1 | 10808 | ✅ 正常 | — | | Synology NAS | 127.0.0.1 | 20170 | ❌ 仅本机监听 | 否 | ## Usage Patterns ### 终端命令级(ProxyChains) ProxyChains 通过 LD_PRELOAD 劫持 socket 调用,强制任意终端命令走 SOCKS5 代理: ```bash # /etc/proxychains4.conf socks5 127.0.0.1 10808 # 使用 proxychains4 curl https://google.com ``` ### Git 全局代理 Git 不读取系统环境变量,必须显式配置: ```bash git config --global http.proxy socks5://127.0.0.1:10808 git config --global https.proxy socks5://127.0.0.1:10808 ``` ### Docker Daemon 代理 通过 systemd drop-in 文件注入环境变量: ```bash # /etc/systemd/system/docker.service.d/http-proxy.conf [Service] Environment="HTTP_PROXY=socks5://127.0.0.1:10808" Environment="HTTPS_PROXY=socks5://127.0.0.1:10808" ``` ### Docker 容器环境变量 ```bash # 容器内使用 ALL_PROXY 环境变量 docker run -e ALL_PROXY=socks5://172.24.0.1:10808 ... ``` ## Key Distinction: socks5 vs socks5h - **socks5**:DNS 解析在本地完成,可能 DNS 污染 - **socks5h**:DNS 解析由代理服务器完成,防止本地 DNS 污染 ```bash curl -x socks5h://127.0.0.1:10808 https://google.com ``` ## Docker 网络网关 IP Docker 容器内访问宿主机的 IP 不是 127.0.0.1(那是容器自身),而是 Docker 网络网关 IP: - bridge 网络默认:`172.17.0.1` - 自定义网络(如 compose 项目):`172.24.0.1` ## Related Concepts - [[透明代理]] — V2RayA 通过 iptables 劫持系统出站流量 - [[环境变量代理]] — HTTP_PROXY/HTTPS_PROXY/ALL_PROXY 环境变量 - [[Docker-Daemon-Proxy]] — systemd drop-in 方式为 docker pull 配置代理 - [[ProxyChains]] — 终端命令级流量劫持工具 - [[Git 全局代理]] — Git 专用代理配置 ## Related Entities - [[v2rayA]] — NAS 上的 SOCKS5 代理来源(端口20170) - [[Mac Mini M4]] — SOCKS5 代理节点之一 - [[Ubuntu Server]] — SOCKS5 代理节点 - [[Synology NAS DS718]] — v2rayA 部署位置(仅本机监听)