چگونه پروکسیهای IPRoyal Shadowsocks را در لینوکس برای ترافیک CLI و مرورگر متمرکز بر حریم خصوصی پیکربندی کنیم
IPRoyal Shadowsocks را روی لینوکس با shadowsocks-libev راهاندازی کنید، آن را به عنوان سرویس systemd اجرا کنید، IP خروجی خود را تأیید کنید، و ترافیک curl، Git، Python و مرورگر را از طریق یک پروکسی SOCKS5 محلی مسیردهی کنید.
مرور کلی
Shadowsocks یک پروتکل پروکسی رمزنگاریشده مبتنی بر SOCKS5 است. در لینوکس، یک کلاینت محلی Shadowsocks روی 127.0.0.1:1080 گوش میدهد، ترافیک را رمزنگاری میکند و آن را به یک نقطه پایانی Shadowsocks راه دور ارسال میکند. این به شما اجازه میدهد ابزارهای CLI انتخابشده، مرورگرها یا ترافیک سیستم را از طریق یک نقطه پایانی IPRoyal Shadowsocks مسیردهی کنید بدون تغییر کل پشته شبکه خود.
این آموزش نشان میدهد چگونه پروکسیهای IPRoyal Shadowsocks را در لینوکس با استفاده از shadowsocks-libev پیکربندی کنید، کلاینت را به عنوان سرویس systemd اجرا کنید، IP خروجی خود را تأیید کنید، و ابزارهای رایج مانند curl، git، Python و Firefox را از طریق شنونده SOCKS5 محلی مسیردهی کنید. IPRoyal به عنوان ارائهدهنده مثال استفاده میشود زیرا پروکسیهای مسکونی، ISP و دیتاسنتر را با پشتیبانی HTTP، SOCKS5 و Shadowsocks فهرست میکند. اگر از ارائهدهنده دیگری استفاده میکنید، اعتبارنامهها و جزئیات سرور را با موارد خود جایگزین کنید.
پیشنیازها
- یک توزیع لینوکس با systemd، مانند Ubuntu، Debian، Fedora، Arch Linux، یا یک سرور یا دسکتاپ سازگار.
- دسترسی
sudoیا root برای نصب و مدیریت سرویس. - یک حساب IPRoyal با اعتبارنامههای Shadowsocks: آدرس سرور، پورت سرور، رمز عبور، و روش رمزنگاری.
- آشنایی اولیه با ترمینال و ویرایشگرهای متن مانند
nanoیاvim. - اختیاری:
curlبرای تست.
چگونه IPRoyal Shadowsocks در یک راهاندازی لینوکس قرار میگیرد
Shadowsocks یک پروکسی HTTP نیست. این یک تونل رمزنگاریشده به یک نقطه پایانی راه دور ایجاد میکند و یک پروکسی SOCKS5 محلی را نمایان میسازد. برنامههای شما باید برای استفاده از آن پروکسی SOCKS5 محلی پیکربندی شوند، یا میتوانید بهصورت انتخابی ترافیک را از طریق آن مسیردهی کنید.
یک جریان معمولی:
- یک برنامه به
127.0.0.1:1080متصل میشود. - کلاینت محلی Shadowsocks درخواست را رمزنگاری میکند.
- درخواست رمزنگاریشده به نقطه پایانی IPRoyal Shadowsocks میرود.
- نقطه پایانی درخواست را به سایت مقصد ارسال میکند.
- پاسخ از طریق همان تونل بازمیگردد.
از آنجا که شنونده محلی SOCKS5 است، میتوانید از آن با ابزارهایی که از SOCKS5 یا socks5h (SOCKS5 با حل DNS راه دور) پشتیبانی میکنند استفاده کنید. از socks5h استفاده کنید زمانی که میخواهید پرسوجوهای DNS از طریق پروکسی حل شوند نه روی دستگاه محلی شما.
مراحل
مرحله ۱: نصب یک کلاینت Shadowsocks در لینوکس
shadowsocks-libev را نصب کنید، که کلاینت ss-local را فراهم میکند و به خوبی با systemd کار میکند.
برای Debian یا Ubuntu:
sudo apt update
sudo apt install shadowsocks-libev
برای Fedora یا توزیعهای خانواده RHEL:
sudo dnf install shadowsocks-libev
برای Arch Linux:
sudo pacman -S shadowsocks-libev
اگر توزیع شما shadowsocks-libev را بستهبندی نکرده است، میتوانید shadowsocks-rust را از مدیر بسته خود نصب کنید یا آن را از منبع بسازید. مفاهیم پیکربندی زیر یکسان هستند، هرچند نامهای باینری ممکن است متفاوت باشند.
مرحله ۲: ایجاد فایل محیطی IPRoyal Shadowsocks
یک فایل محیطی ایجاد کنید که حاوی جزئیات نقطه پایانی IPRoyal Shadowsocks باشد. مقادیر جانگهدار را با سرور، پورت، رمز عبور و روش دقیق از داشبورد IPRoyal خود جایگزین کنید.
sudo mkdir -p /etc/iproyal
sudo nano /etc/iproyal/shadowsocks.env
مقادیر زیر را اضافه کنید:
SS_SERVER=YOUR_IPROYAL_SERVER
SS_PORT=8388
SS_PASSWORD=YOUR_IPROYAL_PASSWORD
SS_METHOD=aes-256-gcm
SS_LOCAL_ADDRESS=127.0.0.1
SS_LOCAL_PORT=1080
نکات:
- از روش رمزنگاری دقیقاً همانطور که توسط IPRoyal ارائه شده استفاده کنید. روشهای رایج شامل
aes-256-gcm،chacha20-ietf-poly1305وaes-128-gcmهستند، اما نقطه پایانی باید از روشی که انتخاب میکنید پشتیبانی کند. - اگر IPRoyal یک نقطه پایانی SOCKS5 به جای نقطه پایانی Shadowsocks به شما میدهد، از پیکربندی کلاینت SOCKS5 یا ابزاری مانند ProxyChains به جای Shadowsocks استفاده کنید.
- اگر فایل حاوی اعتبارنامه است، آن را فقط برای root قابل خواندن نگه دارید:
sudo chmod 600 /etc/iproyal/shadowsocks.env
مرحله ۳: تست پیکربندی در پیشزمینه
قبل از ایجاد سرویس، کلاینت را در پیشزمینه اجرا کنید تا تأیید کنید که اعتبارنامهها و مسیر شبکه کار میکنند.
sudo ss-local -s YOUR_IPROYAL_SERVER -p 8388 -b 127.0.0.1 -l 1080 -k YOUR_IPROYAL_PASSWORD -m aes-256-gcm -u -v
آن ترمینال را باز بگذارید. در یک ترمینال دوم، شنونده SOCKS5 محلی را تست کنید:
curl --socks5-hostname 127.0.0.1:1080 https://ifconfig.me
اگر دستور یک آدرس IP برگرداند که با IP عمومی عادی شما متفاوت است، تونل کار میکند. برای توقف کلاینت پیشزمینه، Ctrl+C را در ترمینال اول فشار دهید.
مرحله ۴: اجرای کلاینت Shadowsocks به عنوان سرویس systemd
یک واحد systemd ایجاد کنید تا کلاینت در هنگام بوت شروع شود و پس از خرابیها دوباره راهاندازی شود.
sudo nano /etc/systemd/system/iproyal-shadowsocks.service
اضافه کنید:
[Unit]
Description=IPRoyal Shadowsocks local client
After=network-online.target
Wants=network-online.target
[Service]
EnvironmentFile=/etc/iproyal/shadowsocks.env
ExecStart=/usr/bin/ss-local -s ${SS_SERVER} -p ${SS_PORT} -b ${SS_LOCAL_ADDRESS} -l ${SS_LOCAL_PORT} -k ${SS_PASSWORD} -m ${SS_METHOD} -u
Restart=on-failure
RestartSec=5
LimitNOFILE=32768
[Install]
WantedBy=multi-user.target
مسیر ExecStart را تنظیم کنید اگر باینری ss-local شما جای دیگری است. میتوانید آن را با این دستور پیدا کنید:
command -v ss-local
اگر ارائهدهنده شما از رله UDP پشتیبانی نمیکند، -u را از خط ExecStart حذف کنید.
systemd را دوباره بارگذاری کنید و سرویس را شروع کنید:
sudo systemctl daemon-reload
sudo systemctl enable --now iproyal-shadowsocks
sudo systemctl status iproyal-shadowsocks
مرحله ۵: تأیید شنونده SOCKS5 محلی و IP خروجی
بررسی کنید که کلاینت به صورت محلی گوش میدهد:
ss -ltnp | grep 1080
سپس IP خروجی را از طریق پروکسی تأیید کنید:
curl --socks5-hostname 127.0.0.1:1080 https://ifconfig.me
curl --socks5-hostname 127.0.0.1:1080 https://ipinfo.io/ip
نتیجه را با اتصال مستقیم خود مقایسه کنید:
curl https://ifconfig.me
اگر آدرسها متفاوت هستند، کلاینت محلی ترافیک را از طریق نقطه پایانی IPRoyal Shadowsocks ارسال میکند. اگر یکسان هستند، بخش عیبیابی زیر را ببینید.
مرحله ۶: مسیردهی ابزارهای CLI از طریق پروکسی SOCKS5 محلی
از شنونده SOCKS5 محلی با ابزارهایی که از SOCKS5 پشتیبانی میکنند استفاده کنید. socks5h را ترجیح دهید تا حل DNS از طریق پروکسی انجام شود.
برای curl:
curl --socks5-hostname 127.0.0.1:1080 https://httpbin.org/ip
برای git:
git config --global http.proxy socks5h://127.0.0.1:1080
git config --global https.proxy socks5h://127.0.0.1:1080
برای حذف آن تنظیمات پروکسی Git بعداً:
git config --global --unset http.proxy
git config --global --unset https.proxy
برای Python requests، پشتیبانی SOCKS را نصب کنید و از پروکسی استفاده کنید:
python3 -m pip install 'requests[socks]'
import requests
proxies = {
'http': 'socks5h://127.0.0.1:1080',
'https': 'socks5h://127.0.0.1:1080',
}
response = requests.get('https://httpbin.org/ip', proxies=proxies, timeout=30)
print(response.json())
برای wget، از یک پوشش سازگار با SOCKS5 یا متغیرهای محیطی در جایی که پشتیبانی میشود استفاده کنید. curl و Python معمولاً کمابیشترین رفتار مبهم را برای تست SOCKS5 ارائه میدهند.
مرحله ۷: پیکربندی پروکسی مرورگر یا دسکتاپ
برای Firefox، تنظیمات را باز کنید، Network Settings را جستجو کنید، Manual proxy configuration را انتخاب کنید و تنظیم کنید:
- SOCKS Host:
127.0.0.1 - Port:
1080 - SOCKS v5: انتخاب شده
- Proxy DNS when using SOCKS v5: فعال
برای محیطهای دسکتاپ GNOME، میتوانید پروکسی سیستم را به صورت دستی تنظیم کنید:
gsettings set org.gnome.system.proxy mode 'manual'
gsettings set org.gnome.system.proxy.socks host '127.0.0.1'
gsettings set org.gnome.system.proxy.socks port 1080
برای بازگشت به اتصال مستقیم:
gsettings set org.gnome.system.proxy mode 'none'
همه برنامهها به تنظیمات پروکسی سیستم احترام نمیگذارند. در صورت شک، پروکسی را مستقیماً در برنامه پیکربندی کنید یا از یک پوشش آگاه به SOCKS5 استفاده کنید.
مرحله ۸: تأیید رفتار DNS و نشت
یک درخواست اجرا کنید که resolver و IP را گزارش دهد:
curl --socks5-hostname 127.0.0.1:1080 https://ipinfo.io/json
بررسی کنید که آیا IP گزارششده متعلق به نقطه پایانی پروکسی است. از آنجا که socks5h نام میزبان را برای حل به پروکسی میفرستد، پرسوجوهای DNS محلی برای آن درخواست اجتناب میشوند. اگر به جای آن از socks5:// استفاده کنید، نام میزبان ممکن است ابتدا به صورت محلی حل شود، که میتواند اطلاعات DNS را نشت دهد.
عیبیابی
سرویس شروع میشود اما IP تغییر نمیکند
- تأیید کنید که دستور تست شما از
--socks5-hostnameیاsocks5h://استفاده میکند، نه یک اتصال مستقیم. - لاگهای سرویس را بررسی کنید:
journalctl -u iproyal-shadowsocks -e
- تأیید کنید که آدرس سرور، پورت، رمز عبور و روش رمزنگاری دقیقاً با داشبورد IPRoyal مطابقت دارند.
- با یک مقصد متفاوت مانند
https://httpbin.org/ipتست کنید تا رفتار خاص سایت را رد کنید.
ss-local با خطای احراز هویت یا روش شکست میخورد
- روش رمزنگاری باید با نقطه پایانی راه دور مطابقت داشته باشد. اگر IPRoyal
chacha20-ietf-poly1305را ارائه میدهد، ازaes-256-gcmاستفاده نکنید. - وجود فاصلههای انتهایی یا کاراکترهای پنهان در فیلد رمز عبور را بررسی کنید.
- اگر رمز عبور شما حاوی کاراکترهای خاص است، آن را به درستی در فایل محیطی نقل قول کنید یا از یک فایل پیکربندی که کلاینت شما پشتیبانی میکند استفاده کنید.
- کلاینت را در حالت verbose اجرا کنید تا خطای دقیق را ببینید:
sudo ss-local -s YOUR_IPROYAL_SERVER -p 8388 -b 127.0.0.1 -l 1080 -k YOUR_IPROYAL_PASSWORD -m aes-256-gcm -u -v
اتصال در 127.0.0.1:1080 رد میشود
- ممکن است سرویس دیگری از قبل از پورت 1080 استفاده کند. بررسی کنید با:
sudo ss -ltnp | grep 1080
SS_LOCAL_PORTرا در فایل محیطی به مقدار دیگری مانند1081تغییر دهید، سرویس را دوباره راهاندازی کنید و دستورات کلاینت خود را بهروزرسانی کنید.- تأیید کنید که سرویس systemd واقعاً در حال اجرا است:
systemctl is-active iproyal-shadowsocks
وقفههای زمانی یا توان عملیاتی پایین
- اگر داشبورد شما چندین مکان را ارائه میدهد، یک نقطه پایانی یا منطقه IPRoyal متفاوت را امتحان کنید.
- با حالت فقط TCP با حذف
-uاز خطExecStartتست کنید اگر نقطه پایانی از UDP پشتیبانی نمیکند. - فایروال محلی و سیاستهای شبکه خود را بررسی کنید. برخی شبکههای شرکتی یا دانشگاهی پورتهای خروجی غیراستاندارد را مسدود میکنند.
- مقادیر timeout را فقط برای تست کاهش دهید; timeoutهای بسیار کم میتوانند باعث خرابیهای کاذب در لینکهای کند شوند.
ترافیک مرورگر از پروکسی استفاده نمیکند
- در Firefox، مطمئن شوید که SOCKS v5 انتخاب شده و Proxy DNS when using SOCKS v5 فعال است.
- اگر از تنظیمات GNOME استفاده میکنید، به یاد داشته باشید که فقط برخی برنامهها به پروکسی سیستم احترام میگذارند.
- همان مقصد را با
curl --socks5-hostnameتست کنید تا تأیید کنید شنونده SOCKS5 محلی مستقل از مرورگر کار میکند.
خلاصه
شما یک نقطه پایانی IPRoyal Shadowsocks را در لینوکس پیکربندی کردید با نصب shadowsocks-libev، ایجاد یک پیکربندی کلاینت محلی، اجرای آن به عنوان سرویس systemd، و تأیید IP خروجی از طریق یک شنونده SOCKS5 محلی. همچنین یاد گرفتید چگونه ترافیک curl، Git، Python requests و مرورگر را از طریق 127.0.0.1:1080 مسیردهی کنید، و چگونه مشکلات رایج احراز هویت، پورت، DNS و timeout را عیبیابی کنید. IPRoyal یکی از ارائهدهندگانی است که میتوانید در نظر بگیرید زمانی که به پروکسیهای مسکونی، ISP یا دیتاسنتر با پشتیبانی SOCKS5 و سبک Shadowsocks نیاز دارید; همیشه قبل از پیکربندی کلاینتها، پروتکل و اعتبارنامههای دقیق را در داشبورد ارائهدهنده خود تأیید کنید.