Files
nexus/wiki/sources/ubuntu-server科学上网.md

5.0 KiB
Raw Blame History

title, type, tags, date
title type tags date
Ubuntu Server科学上网 source
docker
proxychains
ubuntu
v2rayn
2025-12-29

Source File

Summary (用中文描述)

  • 核心主题Ubuntu Server 终端场景下的科学上网多方案配置,涵盖 ProxyChains、Git 全局代理、Docker Daemon 代理、Docker 容器内代理四种场景
  • 问题域:如何让 Ubuntu Server 上的各种命令行工具git clone、docker pull、apt-get和容器内应用通过代理访问国外资源
  • 方法/机制:按场景分:① ProxyChains 劫持任意命令 ② Git 全局配置 ③ Docker Daemon systemd 注入 ④ Docker 容器环境变量注入
  • 结论/价值:提供了完整的"Ubuntu Server 终端代理"工具箱,针对不同工具有不同最优方案

Key Claims (用中文描述)

  • ProxyChains 通过 LD_PRELOAD 劫持动态链接库的 socket 调用,使原本不支持代理的终端命令(如 curl、wget、git clone自动走 SOCKS5 代理
  • Git 不读取系统环境变量 http_proxy/HTTP_PROXY必须通过 git config --global 设置 socks5:// 代理
  • Docker Daemondockerd以 systemd 服务运行,不读取普通用户环境变量,必须通过 systemd drop-in 文件注入 HTTP_PROXY 环境变量
  • Docker 容器默认 bridge 网络模式下127.0.0.1 指向容器内部而非宿主机,需使用 Docker 网络网关 IP通常是 172.17.0.1 或 172.24.0.1
  • Docker 客户端配置文件 ~/.docker/config.json 的 proxies.default 字段仅影响 docker run 新启动的容器,不影响已运行的容器

Key Quotes

"curl -x socks5h://127.0.0.1:10808 -v https://www.google.com" — 推荐的最快最直接的代理验证方法socks5h 的 h 表示让代理服务器解析 DNS 避免本地 DNS 污染 "proxychains4 git clone https://github.com/..." — ProxyChains 使用方法,在任意命令前加前缀即可 "git config --global http.proxy 'socks5://127.0.0.1:10808'" — Git 全局代理配置,必须显式设置 "Environment="HTTP_PROXY=http://127.0.0.1:10808/"" — Docker Daemon systemd drop-in 配置格式 "ALL_PROXY=socks5://172.24.0.1:10808" — Docker 容器内应用代理,使用 Docker 网络网关 IP 而非 127.0.0.1

Key Concepts

  • ProxyChains:通过 LD_PRELOAD 技术劫持动态链接库的 socket 函数,使终端命令自动走代理的工具,支持 socks4/socks5/HTTP 代理类型
  • Git 全局代理Git 不读取系统环境变量,必须通过 git config --global 设置代理配置,支持 socks5 和 HTTP 代理
  • Docker Daemon Proxy:通过 systemd drop-in 文件注入环境变量使 dockerd 走代理的配置方式,配置文件位于 /etc/systemd/system/docker.service.d/http-proxy.conf
  • Docker 网络网关 IPDocker bridge 网络模式下容器访问宿主机的 IP 地址,通常为 172.17.0.1(默认 bridge或 172.24.0.1(自定义网络),不能用 127.0.0.1
  • SOCKS5h 代理SOCKS5 协议的 h 变体socks5h表示 DNS 解析由代理服务器完成,防止本地 DNS 污染导致的连接失败
  • 环境变量代理:通过 HTTP_PROXY/HTTPS_PROXY/ALL_PROXY 环境变量让应用走代理的配置方式,适用于 Docker 容器场景

Key Entities

  • v2rayN:提供 SOCKS5 和 HTTP 代理端口(默认 10808的跨平台代理客户端本文档所有场景的代理来源Ubuntu Server 上通过 v2rayN 提供代理服务
  • 代理客户端运行在终端设备上提供本地代理服务的软件v2rayN 是典型产品
  • SOCKS5 协议:一种代理协议,相比 HTTP 代理更通用,可代理任意 TCP 连接
  • Docker容器化平台dockerd 守护进程本身需要代理配置才能 pull 国外镜像

Connections

Contradictions

  • 群晖nas科学上网方法 差异:
    • 冲突点群晖方案强调透明代理V2RayA iptables 分流本方案强调显式终端代理ProxyChains/Git/Docker Daemon 配置)
    • 当前观点Ubuntu Server 终端场景下,显式配置代理比透明代理更可控、更可预测
    • 对方观点:群晖 NAS 场景下,透明代理可以一次性解决所有应用的科学上网问题,无需逐个配置