6.7 KiB
title, source, author, published, created, description, tags
| title | source | author | published | created | description | tags | ||||
|---|---|---|---|---|---|---|---|---|---|---|
| shenwei |
|
#ubuntu #proxychains #docker #v2rayn
安装V2RayN
请参考以下文章来安装V2RayN
🟠3X-UI Xray on BandwagonVPS
🟠安装v2rayN
!
验证代理可以科学上网
使用 curl 直接测试(最推荐)
这是最快、最直接的方法。我们可以强制 curl 使用 SOCKS5 代理去访问 Google 的状态页。
执行命令:
Bash
curl -x socks5h://127.0.0.1:10808 -v https://www.google.com
-
参数解释:
-x socks5h://:指定使用 SOCKS5 代理。注意加个h,这表示让代理服务器去解析域名(防止本地 DNS 污染导致测试失败)。-v:(Verbose) 显示详细连接过程。
-
判断标准:
- 如果看到
HTTP/2 200或者大量的 HTML 文本,说明代理成功。 - 如果显示
Connection refused或Timeout,说明端口未开放或 V2Ray 未运行。
- 如果看到
配置 ProxyChains
ProxyChains 是最灵活的工具,它可以让原本不支持代理的终端命令通过代理运行。
-
编辑配置文件:
sudo nano /etc/proxychains4.conf(如果是旧版本可能是
/etc/proxychains.conf) -
修改 ProxyList:
滑动到文件末尾,注释掉默认的 socks4,添加你的 V2Ray 节点信息:
[ProxyList] # 格式: 类型 IP 端口 socks5 127.0.0.1 10808 -
使用方法:
在任何命令前加上 proxychains4 即可。例如:
proxychains4 curl https://www.google.com
使用:
proxychains git clone https://github.com/...
proxychains curl https://google.com
2. 配置 Git 代理
Git 不会自动走系统变量,建议为其设置全局配置。
-
设置 SOCKS5 代理(推荐):
Bash
git config --global http.proxy 'socks5://127.0.0.1:10808' git config --global https.proxy 'socks5://127.0.0.1:10808' -
取消设置:
Bash
git config --global --unset http.proxy git config --global --unset https.proxy
3. 配置 Docker Pull (Daemon 代理)
docker pull 是由 Docker 守护进程(Daemon)执行的,它不读取普通用户的环境变量。
-
创建配置目录:
Bash
sudo mkdir -p /etc/systemd/system/docker.service.d -
创建代理配置文件:
Bash
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf -
添加以下内容:
Ini, TOML
[Service] Environment="HTTP_PROXY=http://127.0.0.1:10808/" Environment="HTTPS_PROXY=http://127.0.0.1:10808/" Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporate.com"(注:这里通常使用 HTTP 代理端口)
-
重启 Docker 服务:
sudo systemctl daemon-reload sudo systemctl restart docker
检查 Docker 守护进程是否加载了代理:
执行命令:
docker info | grep -i proxy
- 预期输出: 如果你配置成功,你应该能看到类似下面的信息:
(注:如果这里没有输出,说明
HTTP Proxy: http://127.0.0.1:10808 HTTPS Proxy: http://127.0.0.1:10808 No Proxy: localhost,127.0.0.1/etc/systemd/system/docker.service.d/http-proxy.conf配置未生效,请记得执行systemctl daemon-reload和systemctl restart docker)
4. 配置 Docker 容器内应用代理
docker-compose.yml里面直接加 env
`environment:
- ALL_PROXY=socks5://172.24.0.1:10808
For example:gi
version: "3.9"
services:
homarr:
image: ghcr.io/homarr-labs/homarr
container_name: homarr
restart: unless-stopped
ports:
- "7575:7575"
volumes:
- /home/shenwei/Docker/homarr/appdata:/appdata
- /var/run/docker.sock:/var/run/docker.sock
environment:
- SECRET_ENCRYPTION_KEY=4a418def4be700be26672aa57a4c3d4b94abd2cf97021b5c4ecd3c1644c1f071
- ALL_PROXY=socks5://172.24.0.1:10808
2个方法知道如何获取docker network gate IP
docker exec -it <container_name_or_id> /bin/bash
- 如果容器没有
bash,可以用sh:
docker exec -it <container_name_or_id> sh
运行以下命令获取network gateway IP:
ip route | awk '/default/ { print $3 }'
For example:
root@shenwei-HP-ZBook-01:/home/shenwei/Docker/homarr# docker exec -it homarr /bin/bash
23c94b2dfeb5:/app# ip route
default via 172.24.0.1 dev eth0
172.24.0.0/16 dev eth0 scope link src 172.24.0.2
23c94b2dfeb5:/app# ip route | awk '/default/ { print $3 }'
172.24.0.1
如果你希望容器内部的程序(如 apt-get、pip)能上网,有两种方案:
方案 A:全局配置(推荐 Docker 17.07+)
修改当前用户的 Docker 客户端配置文件,这样所有 docker run 的容器都会自动带上代理环境变量。
-
编辑配置文件:
Bash
mkdir -p ~/.docker nano ~/.docker/config.json -
添加内容:
JSON
{ "proxies": { "default": { "httpProxy": "http://127.0.0.1:1081", "httpsProxy": "http://127.0.0.1:1081", "noProxy": "localhost,127.0.0.1" } } }注意: 如果你的容器使用的是
bridge网络,127.0.0.1指向的是容器内部。你需要将 IP 改为宿主机的虚拟网桥 IP(通常是172.17.0.1)。
方案 B:运行时临时指定
在启动容器时通过 -e 参数注入环境变量:
Bash
docker run -e HTTP_PROXY="http://宿主机IP:1081" -e HTTPS_PROXY="http://宿主机IP:1081" my_image
总结建议
| 场景 | 推荐方式 |
|---|---|
| 临时终端命令 | proxychains4 <command> |
| Git 操作 | git config --global |
| 下载 Docker 镜像 | 修改 systemd/system/docker.service.d |
| 容器内部业务 | 修改 ~/.docker/config.json |
如果你在配置过程中遇到“连接被拒绝 (Connection Refused)”的问题,请检查 V2Ray 配置文件中是否开启了 HTTP 代理协议,并确认端口号是否正确。
