ابزارهای خط فرمان پروکسی سیستم را نمیخوانند. اینجا پیکربندی رایجترینها یکجا جمع شده تا هر چه لازم دارید بردارید.
فرض بر این است که پورت mixed شما 7897 است (در تنظیمات پورت Clash Verge ببینید؛ پیشفرض نسخهها فرق دارد).
اول متغیرهای محیطی — بیش از نیمی را پوشش میدهند
بیشتر ابزارهایی که از عرف یونیکس پیروی میکنند اینها را رعایت میکنند:
# macOS / Linux / WSL
export http_proxy=http://127.0.0.1:7897
export https_proxy=http://127.0.0.1:7897
export all_proxy=socks5://127.0.0.1:7897
export no_proxy="localhost,127.0.0.1,::1,*.local,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16"# Windows PowerShell (نشست جاری)
$env:HTTP_PROXY = "http://127.0.0.1:7897"
$env:HTTPS_PROXY = "http://127.0.0.1:7897"
$env:NO_PROXY = "localhost,127.0.0.1,::1,*.local":: Windows CMD
set HTTP_PROXY=http://127.0.0.1:7897
set HTTPS_PROXY=http://127.0.0.1:7897به شکل دو تابع پوسته درش بیاورید:
# ~/.zshrc یا ~/.bashrc
proxyon() {
export http_proxy=http://127.0.0.1:7897
export https_proxy=$http_proxy
export all_proxy=socks5://127.0.0.1:7897
export no_proxy="localhost,127.0.0.1,::1,*.local"
echo "✓ proxy on"
}
proxyoff() {
unset http_proxy https_proxy all_proxy no_proxy
echo "✗ proxy off"
}Git
Git سامانهٔ تنظیمات خودش را دارد. متغیرهای محیطی برای HTTPS کار میکنند ولی برای SSH نه.
# HTTPS
git config --global http.proxy http://127.0.0.1:7897
git config --global https.proxy http://127.0.0.1:7897
# برگرداندن
git config --global --unset http.proxy
git config --global --unset https.proxy
# دیدن
git config --global --get-regexp proxyفقط یک میزبان را پروکسی کنید (پیشنهادی، تا سرور Git سازمانی از آن نرود):
git config --global http.https://github.com.proxy http://127.0.0.1:7897Git روی SSH (به شکل [email protected]:xxx.git) گزینهٔ http.proxy را نادیده میگیرد و به تنظیم SSH نیاز دارد:
# ~/.ssh/config
Host github.com
HostName github.com
User git
Port 22
# macOS / Linux
ProxyCommand nc -X connect -x 127.0.0.1:7897 %h %p
# Windows (در Git Bash فایل connect.exe هست)
# ProxyCommand connect -H 127.0.0.1:7897 %h %pnpm / yarn / pnpm
# npm
npm config set proxy http://127.0.0.1:7897
npm config set https-proxy http://127.0.0.1:7897
npm config delete proxy && npm config delete https-proxy # برگرداندن
# yarn (نسخهٔ ۱)
yarn config set proxy http://127.0.0.1:7897
yarn config set https-proxy http://127.0.0.1:7897
# pnpm
pnpm config set proxy http://127.0.0.1:7897
pnpm config set https-proxy http://127.0.0.1:7897تنظیمها در ~/.npmrc مینشینند و مستقیم قابل ویرایشاند:
proxy=http://127.0.0.1:7897
https-proxy=http://127.0.0.1:7897
noproxy=localhost,127.0.0.1,.company.comPython / pip
# یکباره
pip install --proxy http://127.0.0.1:7897 requests
# دائمی
pip config set global.proxy http://127.0.0.1:7897
pip config unset global.proxyمحل فایل تنظیمات:
- ویندوز:
%APPDATA%\pip\pip.ini - مک/لینوکس:
~/.config/pip/pip.conf
[global]
proxy = http://127.0.0.1:7897
index-url = https://pypi.org/simpleکتابخانهٔ requests هم متغیرهای محیطی را میخواند و در کد هم میشود صریح گفت:
proxies = {
"http": "http://127.0.0.1:7897",
"https": "http://127.0.0.1:7897",
}
requests.get(url, proxies=proxies)Go
# ماژولهای Go از پروکسی رسمی (معمولاً کافی است، پروکسی محلی لازم نیست)
go env -w GOPROXY=https://proxy.golang.org,direct
# یک آینهٔ منطقهای
go env -w GOPROXY=https://goproxy.cn,direct
# مخازن خصوصی از پروکسی نروند
go env -w GOPRIVATE=*.company.com,github.com/myorg/*
# وقتی واقعاً پروکسی محلی لازم است (مثلاً کشیدن مخزن خصوصی گیتهاب)
go env -w GOPROXY=direct
export HTTPS_PROXY=http://127.0.0.1:7897دستور go get متغیرهای HTTP_PROXY و HTTPS_PROXY را رعایت میکند.
Java / Maven / Gradle
Maven (فایل ~/.m2/settings.xml):
<settings>
<proxies>
<proxy>
<id>clash</id>
<active>true</active>
<protocol>http</protocol>
<host>127.0.0.1</host>
<port>7897</port>
<nonProxyHosts>localhost|127.0.0.1|*.company.com</nonProxyHosts>
</proxy>
</proxies>
</settings>Gradle (فایل ~/.gradle/gradle.properties):
systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=7897
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=7897
systemProp.http.nonProxyHosts=localhost|127.0.0.1|*.company.comپرچمهای خط فرمان JVM:
java -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=7897 \
-Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=7897 \
-Dhttp.nonProxyHosts="localhost|127.0.0.1" -jar app.jarRust / Cargo
فایل ~/.cargo/config.toml:
[http]
proxy = "http://127.0.0.1:7897"
[https]
proxy = "http://127.0.0.1:7897"curl / wget
# curl، یکباره
curl -x http://127.0.0.1:7897 https://example.com
curl --socks5 127.0.0.1:7897 https://example.com
# curl، دائمی (~/.curlrc)
echo 'proxy = "http://127.0.0.1:7897"' >> ~/.curlrc
# wget، دائمی (~/.wgetrc)
cat >> ~/.wgetrc <<'EOF'
use_proxy = on
http_proxy = http://127.0.0.1:7897
https_proxy = http://127.0.0.1:7897
EOFمدیران بستهٔ سیستم
# apt (فایل /etc/apt/apt.conf.d/95proxy)
echo 'Acquire::http::Proxy "http://127.0.0.1:7897";' | sudo tee /etc/apt/apt.conf.d/95proxy
echo 'Acquire::https::Proxy "http://127.0.0.1:7897";' | sudo tee -a /etc/apt/apt.conf.d/95proxy
# dnf/yum (به /etc/dnf/dnf.conf اضافه کنید)
# proxy=http://127.0.0.1:7897
# Homebrew (مک) — محیط را میخواند
export ALL_PROXY=socks5://127.0.0.1:7897
brew install xxxیک جدول مرجع سریع
| ابزار | نحوهٔ تنظیم | متغیر محیطی میخواند |
|---|---|---|
| curl / wget | سوییچ -x یا .curlrc | ✅ |
| Git (HTTPS) | git config http.proxy | ✅ |
| Git (SSH) | ProxyCommand در ~/.ssh/config | ❌ |
| npm / yarn / pnpm | فایل .npmrc | ⚠️ در بعضی نسخهها |
| pip | فایل pip.conf | ✅ |
| Go | متغیر محیطی بهعلاوهٔ GOPROXY | ✅ |
| Maven | فایل settings.xml | ❌ |
| Gradle | فایل gradle.properties | ❌ |
| Cargo | فایل .cargo/config.toml | ✅ |
| دیمون Docker | drop-in برای systemd | ❌ |
| apt / dnf | فایل تنظیمات خودشان | ⚠️ زیر sudo از دست میرود |
| Homebrew | متغیرهای محیطی | ✅ |
چرا گاهی متغیرهای محیطی کاری نمیکنند
راه سادهتر: روشن کردن TUN
همهٔ بالاییها روی هم جمع میشود، و هر ابزار تازهای که نصب کنید شاید دوباره تنظیم بخواهد.
با روشن بودن حالت TUN، هر ابزار خط فرمانی خودکار پروکسی میشود و هیچکدام تنظیم نمیخواهد.
بهایش دسترسی کارت مجازی است، بهعلاوهٔ یادآوری اینکه بازههای خصوصی را به قواعد مستقیم اضافه کنید:
prepend-rules:
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- DOMAIN-SUFFIX,company.com,DIRECTسنجش
# IP خروجی من چیست
curl https://api.ipify.org
# آیا Git از پروکسی میرود (سوییچ -v جزئیات اتصال را چاپ میکند)
GIT_CURL_VERBOSE=1 git ls-remote https://github.com/git/git 2>&1 | head -20
# تنظیمات npm
npm config list | grep -i proxyمیتوانید صفحهٔ اتصالها را در Clash Verge باز کنید و هنگام اجرای دستور مراقب مدخلهای تازه باشید — پیدا شدن یکی یعنی ترافیک از اینجا گذشته.
خلاصه
- اول متغیرهای محیطی را امتحان کنید؛ curl و pip و Go و Cargo و Homebrew و خیلی چیزهای دیگر را پوشش میدهند
- Git و npm و Maven و Gradle و Docker سامانهٔ تنظیمات خودشان را دارند و باید جداگانه انجام شوند
- SSH به ProxyCommand نیاز دارد، یا به رفتن روی پورت ۴۴۳
no_proxyاجباری است، وگرنه سرویسهای محلی و داخلی همه میشکنند- با
sudoسوییچ-Eرا یادتان باشد - اگر همهٔ اینها زیادی است، TUN را روشن کنید — ولی قواعد مستقیم بازههای خصوصی را بگذارید
بیشتر بخوانید: پروکسی Docker و WSL2 و توضیح قواعد فرایندی.
مستندات مرتبط
نشانی 127.0.0.1 داخل کانتینر همان میزبان نیست. پیکربندی برای هر سه سناریوی Docker — کشیدن تصویر توسط دیمون، زمان ساخت و زمان اجرا — بهعلاوهٔ دو رویکرد برای حالتهای شبکهٔ متفاوت WSL2.
بدون هیچ تنظیمی برای تکتک دستگاههای خانه. بدهبستان سه رویکرد (روتر جانبی، TProxy، TUN)، پیکربندی کامل و سرویس systemd، قواعد فایروال، و تابآوری تا اهل خانه آنلاین بمانند.
تمام RESTful API که external-controller باز میکند: تعویض گره، بازرسی اتصالها، بارگذاری دوبارهٔ پیکربندی، استقرار پنل وب، و چند اسکریپت خودکارسازی کاربردی.