Socks5 Configurator در لینوکس: مسیریابی برنامهها از طریق پروکسی SOCKS5 با Proxychains
لینوکس یک برنامه تنظیمکننده SOCKS5 واحد ندارد، بنابراین این راهنما proxychains-ng و redsocks را برای مسیریابی SOCKS5 بهصورت هر فرمان و در سطح سیستم راهاندازی میکند، تأیید میکند که IP شما واقعاً تغییر کرده است، و توضیح میدهد چه زمانی تونل WireGuard انتخاب مناسبتری است.
مرور کلی
کاربران ویندوز و مک یک پنجره گرافیکی «تنظیمکننده SOCKS5» دریافت میکنند. لینوکس چنین چیزی عرضه نمیکند، بنابراین همان کار با دو ابزار کوچک انجام میشود که خودتان بهصورت دستی پیکربندی میکنید:
- proxychains-ng — یک فرمان واحد را میپیچد و اتصالات TCP خروجی آن را بهزور از پروکسی SOCKS5 شما عبور میدهد.
- redsocks — ترافیک را بهصورت شفاف از طریق
iptablesهدایت میکند، که به رفتار سطح سیستم نزدیکتر است.
این آموزش هر دو را پوشش میدهد، نشان میدهد چگونه اثبات کنید که آدرس IP شما واقعاً تغییر کرده است، و موقعیتهایی را توضیح میدهد که در آنها SOCKS5 برای هر برنامه ابزار اشتباهی است و تونل WireGuard — برای مثال یک دروازه اختصاصی از NordLayer — انتخاب مناسبتری است.
پیشنیازها
- یک دسکتاپ یا سرور لینوکس. دستورها برای Debian/Ubuntu، Fedora و Arch نمایش داده شدهاند.
- دسترسی
sudoبرای نصب بسته و ویرایش پیکربندی. - یک نقطه پایانی SOCKS5 فعال: میزبان، درگاه، و نام کاربری/گذرواژه اگر ارائهدهنده نیاز به احراز هویت دارد.
curlنصبشده برای تأیید (بهطور پیشفرض روی بیشتر توزیعها موجود است).
مراحل
۱. قبل از دستکاری سیستم، نقطه پایانی SOCKS5 را تأیید کنید
همیشه ابتدا تأیید کنید که پروکسی بهتنهایی کار میکند، تا همزمان دو چیز را اشکالزدایی نکنید:
curl -x socks5h://YOUR_USERNAME:YOUR_PASSWORD@PROXY_HOST:1080 https://ifconfig.me/ip
دو جزئیات اینجا مهم است:
socks5h://از پروکسی میخواهد که نامهای DNS را برای شما حل کند.socks5://ساده آنها را بهصورت محلی حل میکند، که میتواند نامهای میزبانی که بازدید میکنید را افشا کند.- اگر گذرواژه شما شامل
@،:یا/است، آن را درصدگذاری کنید، یا ازcurl --proxy-userاستفاده کنید بهجای جاسازی آن در URL.
۲. نصب proxychains-ng
دستور مناسب توزیع خود را انتخاب کنید:
# Debian / Ubuntu
sudo apt update && sudo apt install -y proxychains4
# Fedora
sudo dnf install -y proxychains-ng
# Arch
sudo pacman -S proxychains-ng
تأیید کنید که فایل اجرایی بهصورت proxychains4 (Debian/Ubuntu) یا proxychains (Fedora/Arch) در دسترس است:
proxychains4 -h || proxychains -h
۳. زنجیره پروکسی را پیکربندی کنید
فایل پیکربندی را باز کنید (مسیر بر اساس بسته متفاوت است) و بلوک [ProxyList] را ویرایش کنید:
sudo nano /etc/proxychains4.conf # Debian / Ubuntu
sudo nano /etc/proxychains.conf # Fedora / Arch
strict_chain
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
socks5 203.0.113.10 1080 YOUR_USERNAME YOUR_PASSWORD
نکاتی درباره تنظیمات:
proxy_dnsجستوجوهای DNS را بهجای حلکننده محلی شما از طریق پروکسی انجام میدهد.strict_chainاز هر پروکسی به ترتیب استفاده میکند. اگر میخواهید گامهای ناموفق رد شوند ازdynamic_chainاستفاده کنید، یا برای چرخش بین چند ورودی ازrandom_chainهمراه باchain_lenاستفاده کنید.203.0.113.10 1080را با میزبان و درگاه ارائهدهنده خود جایگزین کنید، و اگر نقطه پایانی نیاز به احراز هویت ندارد آرگومانهای نام کاربری/گذرواژه را حذف کنید.
۴. آزمایش کنید که یک فرمان اکنون با IP پروکسی خارج میشود
یک درخواست مستقیم را با یک درخواست پوششدادهشده مقایسه کنید:
curl -s https://ifconfig.me/ip # your normal IP
proxychains4 -q curl -s https://ifconfig.me/ip # should show the proxy IP
پرچم -q بنر proxychains را سرکوب میکند تا فقط پاسخ را ببینید. میتوانید برنامههای گرافیکی را هم به همین روش بپیچید:
proxychains4 -q chromium https://ifconfig.me/ip
اگر هر دو فرمان یک IP یکسان برگردانند، همینجا متوقف شوید و قبل از ادامه بخش عیبیابی را دنبال کنید.
۵. متغیرهای محیطی پروکسی را برای ابزارهای همکار تنظیم کنید
بسیاری از ابزارهای خط فرمان متغیرهای استاندارد پروکسی را میخوانند، که وقتی نمیخواهید به ابتدای هر فرمان چیزی اضافه کنید مفید است:
export ALL_PROXY="socks5h://YOUR_USERNAME:YOUR_PASSWORD@PROXY_HOST:1080"
export HTTPS_PROXY="$ALL_PROXY"
export HTTP_PROXY="$ALL_PROXY"
curl، wget، git، pip و requests پایتون بهطور پیشفرض اینها را رعایت میکنند، اما بسیاری از برنامههای دیگر کاملاً آنها را نادیده میگیرند. با این بهعنوان یک لایه راحتی رفتار کنید، نه یک پیکربندی در سطح سیستم.
۶. اختیاری: هدایت شفاف با redsocks
اگر نیاز دارید برنامههایی که هیچ چیزی درباره پروکسی نمیدانند بهصورت خودکار مسیریابی شوند، redsocks بههمراه یک قاعده iptables این کار را انجام میدهد. پیکربندی را ایجاد کنید:
base {
log_debug = off;
log_info = on;
daemon = on;
redirector = iptables;
}
redsocks {
local_ip = 127.0.0.1;
local_port = 12345;
ip = 203.0.113.10;
port = 1080;
type = socks5;
login = "YOUR_USERNAME";
password = "YOUR_PASSWORD";
}
سرویس را راهاندازی کنید و قواعد هدایت را اضافه کنید. قاعده اول ضروری است: ترافیک به خود پروکسی هرگز نباید دوباره به داخل پروکسی هدایت شود، وگرنه یک حلقه ایجاد میکنید.
sudo systemctl restart redsocks
sudo iptables -t nat -N REDSOCKS
sudo iptables -t nat -A REDSOCKS -d 203.0.113.10 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345
sudo iptables -t nat -A OUTPUT -p tcp -j REDSOCKS
Redsocks فقط TCP را هدایت میکند. ترافیک UDP، ICMP و هر چیزی که iptables را دور بزند همچنان از اتصال عادی شما خارج میشود، بنابراین این معادل VPN نیست.
SOCKS5 در لینوکس در برابر دروازه WireGuard
SOCKS5 برای هر برنامه و یک تونل WireGuard مشکلات همپوشان را به روشهای متفاوتی حل میکنند:
| نیازمندی | SOCKS5 با proxychains/redsocks | تونل WireGuard (مثلاً دروازه اختصاصی) |
|---|---|---|
| دامنه | یک فرمان یا برنامه در هر زمان | هر برنامه و پروتکل روی دستگاه |
| مدیریت DNS | به socks5h و proxy_dns بستگی دارد |
داخل تونل حل میشود |
| UDP و ICMP | توسط proxychains پوشش داده نمیشود | از طریق تونل حمل میشود |
| IP خروجی | هر چیزی که ارائهدهنده SOCKS5 تخصیص دهد | IP پایدار دروازه اختصاصی که میتوانید در فهرست مجاز قرار دهید |
| تلاش پیکربندی | کم، اما برای هر برنامه تکرار میشود | راهاندازی یکباره تونل |
| بهترین برای | مسیریابی و آزمایش سریع بهازای هر فرمان | حریم خصوصی کل دستگاه، دسترسی تیمی، خودکارسازی فهرست مجاز |
مسیر SOCKS5 را انتخاب کنید وقتی فقط به یک ابزار نیاز دارید که از IP دیگری خارج شود. یک تونل WireGuard را انتخاب کنید وقتی کل ماشین — یا کل یک تیم — به مسیریابی سازگار و رمزگذاریشده نیاز دارد. یک گزینه مدیریتشده مانند NordLayer تونلهای WireGuard با دروازههای اختصاصی، فرایند شروع به کار مناسب تیمها، و صورتحساب ماهانه ثابت ارائه میدهد که پیشبینی آن آسانتر از قیمتگذاری مبتنی بر مصرف است.
عیبیابی
proxychains روی یک فایل اجرایی خاص اثری ندارد
proxychains با پیشبارگذاری یک کتابخانه اشتراکی کار میکند، بنابراین نمیتواند برنامههای پیوندشده بهصورت ایستا، فایلهای اجرایی Go، یا فایلهای اجرایی setuid را رهگیری کند. بررسی کنید با:
ldd $(which YOUR_APP)
اگر خروجی میگوید "not a dynamic executable"، بهجای آن از redsocks استفاده کنید — یا ماشین را از طریق یک تونل WireGuard مسیریابی کنید، که زیر لایه برنامه کار میکند.
IP شما همچنان تغییرنکرده به نظر میرسد
- تأیید کنید که از
socks5h://استفاده میکنید یاproxy_dnsفعال است؛ یک URL سادهsocks5://نامها را بهصورت محلی حل میکند. - بررسی کنید که آیا ارائهدهنده انتظار احراز هویت دارد و آیا اطلاعات ورود شما درست است.
- ابتدا با
curlدوباره آزمایش کنید. اگرcurlIP پروکسی را نشان میدهد اما برنامه این کار را نمیکند، برنامه پیشبارگذاری را دور میزند.
اتصالات زمانشان تمام میشود یا معلق میمانند
- مقدار
tcp_connect_time_outرا در/etc/proxychains4.confافزایش دهید. - تأیید کنید که میزبان پروکسی روی آن درگاه از شبکه شما قابل دسترسی است (فایروالهای خروجی اغلب درگاههای غیراستاندارد را مسدود میکنند).
- تعداد گامها در زنجیره را کاهش دهید — زنجیرههای strict طولانی تأخیر را چند برابر میکنند.
redsocks حلقه میزند یا همهچیز را رها میکند
قاعده RETURN شما برای IP خود پروکسی باید اول در زنجیره REDSOCKS بیاید. اگر قواعد را خارج از ترتیب ویرایش کردید، پاکسازی و بازسازی کنید:
sudo iptables -t nat -F REDSOCKS
خلاصه
لینوکس تنظیمکننده گرافیکی SOCKS5 را با proxychains4 برای مسیریابی هر فرمان و redsocks برای هدایت شفاف TCP جایگزین میکند. نقطه پایانی را با curl تأیید کنید، proxy_dns را برای جلوگیری از نشت DNS فعال نگه دارید، و به یاد داشته باشید که هیچکدام از این ابزارها UDP یا فایلهای اجرایی پیوندشده ایستا را پوشش نمیدهند. وقتی نیاز دارید هر برنامه و پروتکل روی دستگاه از یک IP خروجی پایدار و اختصاصی استفاده کند — بهویژه برای یک تیم — یک تونل WireGuard، مانند یک دروازه اختصاصی از NordLayer، انتخاب سادهتر و قابلاعتمادتری است.