Skip to content
Beginner / 2 min read

ChangeMyIP روی لینوکس: تغییر IP و تأیید آن (راهاندازی مبتدی)

یک راهنمای مبتدیپسند و ترمینالمحور برای مسیریابی ترافیک لینوکس از طریق اندپوینتهای HTTP و SOCKS5 ChangeMyIP، سپس اثبات اینکه IP واقعاً تغییر کرده است با بررسیهای curl و یک تست سلامت نشت.

لینوکس SOCKS5 HTTP(S) حریم خصوصی/ناشناسی

نمای کلی

یک پروکسی آدرس IP را که یک سایت مقصد میبیند تغییر میدهد، زیرا سایت به پروکسی پاسخ میدهد نه به دستگاه شما.

در لینوکس میتوانید دستورات تکی را به یک اندپوینت ChangeMyIP اشاره دهید، یا متغیرهای محیطی تنظیم کنید که اکثر ابزارهای خط فرمان به طور خودکار میخوانند.

این آموزش هر دو رویکرد را در سطح مبتدی پوشش میدهد و با یک مرحله تأیید به پایان میرسد تا بدانید تغییر واقعاً رخ داده است.

ChangeMyIP پروکسیهای دیتاسنتر اشتراکی و اختصاصی به همراه پروکسیهای مسکونی با IPهای چرخشی ارائه میدهد که از طریق HTTP و SOCKS5 و همچنین Shadowsocks، Trojan، DNS و WireGuard قابل دسترسی هستند.

این راهنما فقط از HTTP و SOCKS5 استفاده میکند، هماهنگ با یک راهاندازی اولیه.

پیش از شروع

  • یک اشتراک فعال ChangeMyIP. داشبورد یا جزئیات طرح شما میزبان پروکسی، پورت و نام کاربری/رمز عبوری که استفاده خواهید کرد را فهرست میکند.

  • یک دستگاه لینوکس (دسکتاپ یا سرور) با curl. آن را با curl --version تأیید کنید.

  • یک جلسه ترمینال. یک شل جدید برای تست باز کنید تا بتوانید آن را ببندید و همه چیز را دور بریزید.

  • اختیاری: یک ویرایشگر متن برای فایلهای پروفایل شل مانند ~/.bashrc یا ~/.zshrc.

انتخاب اندپوینت مناسب برای کار

نوع اندپوینت نحوه رفتار IP استفاده اولیه معمول
دیتاسنتر اشتراکی یکی از بسیاری از IPها در یک استخر اشتراکی؛ کاربران دیگر ممکن است همان IP را ببینند تست اینکه راهاندازی شما کار میکند، مرور عمومی
دیتاسنتر اختصاصی یک IP اختصاص داده شده به حساب شما حفظ یک هویت پایدار برای حسابهایی که مالک آنها هستید
مسکونی IPهای چرخشی برگرفته از محدودههای ISP واقعی بررسی صفحات هدفگذاری مکانی، جمعآوری داده در مقیاس متوسط

جزئیات طرح شما تعیین میکند که کدام کدهای کشور یا شهر را میتوانید درخواست کنید. استخر ChangeMyIP بیش از ۴۰ کشور و بیش از ۳۰۰ شهر را پوشش میدهد؛ از پارامترهای کشور و شهر دقیقاً همانطور که برای طرح شما مستند شده استفاده کنید نه اینکه آنها را حدس بزنید.

مراحل

مرحله ۱: بارگیری اعتبارنامههای خود در شل

read -r -p "Proxy host and port (host:port): " CM_HOST
read -r -p "Proxy username: " CM_USER
read -r -s -p "Proxy password: " CM_PASS; echo

read -s رمز عبور را از صفحه نمایش و تاریخچه شل شما دور نگه میدارد. این دستورات چیزی روی دیسک ذخیره نمیکنند.

مرحله ۲: IP فعلی خود را ثبت کنید

echo "Direct IP: $(curl -sS https://api.ipify.org)"
echo

این مقدار را یادداشت کنید. بعداً آن را با نتیجه پروکسی مقایسه خواهید کرد. هر سرویس بازتاب IP کار میکند؛ api.ipify.org در اینجا استفاده شده زیرا یک آدرس ساده بدون نشانهگذاری اضافی برمیگرداند.

مرحله ۳: اندپوینت HTTP را تست کنید

curl -sS --proxy "http://$CM_HOST" --proxy-user "$CM_USER:$CM_PASS" https://api.ipify.org
echo

اگر احراز هویت موفق شود و اندپوینت قابل دسترسی باشد، آدرس چاپ شده با IP مستقیم از مرحله ۲ متفاوت است. فعلاً این فراخوانی را به عنوان یک دستور curl صریح نگه دارید؛ متغیرهای محیطی بعداً میآیند.

مرحله ۴: اندپوینت SOCKS5 را تست کنید

curl -sS --socks5-hostname "$CM_HOST" --proxy-user "$CM_USER:$CM_PASS" https://api.ipify.org
echo

فرم --socks5-hostname از پروکسی میخواهد که نام میزبان مقصد را resolve کند، بنابراین resolver DNS محلی شما برای دامنه هدف مشورت نمیشود. فلگ ساده --socks5 به صورت محلی resolve میکند و معمولاً انتخاب اشتباهی برای راهاندازیهای متمرکز بر حریم خصوصی است.

مرحله ۵: تنظیم متغیرهای محیطی پروکسی برای جلسه

export http_proxy="http://$CM_USER:$CM_PASS@$CM_HOST"
export https_proxy="$http_proxy"
export no_proxy="localhost,127.0.0.1,::1"
curl -sS https://api.ipify.org
echo

curl، wget، git، pip و بسیاری دیگر از ابزارهای خط فرمان این متغیرها را به طور خودکار میخوانند. لیست no_proxy آدرسهای محلی، مانند یک سرور توسعه روی پورت ۳۰۰۰، را خارج از تونل پروکسی نگه میدارد.

مرحله ۶: اضافه کردن کمککنندههای روشن/خاموش به جای exports دائمی

# به ~/.bashrc یا ~/.zshrc اضافه کنید
proxy_on() {
  : "${CM_HOST:?ابتدا CM_HOST، CM_USER و CM_PASS را تنظیم کنید}"
  export http_proxy="http://${CM_USER}:${CM_PASS}@${CM_HOST}"
  export https_proxy="$http_proxy"
  export no_proxy="localhost,127.0.0.1,::1"
  echo "پروکسی HTTP/HTTPS روشن"
}
proxy_off() {
  unset http_proxy https_proxy no_proxy
  echo "پروکسی HTTP/HTTPS خاموش"
}

فایل را با source ~/.bashrc دوباره بارگیری کنید، سپس وقتی تونل را میخواهید proxy_on و وقتی نمیخواهید proxy_off را تایپ کنید. دائمی گذاشتن یک پروکسی export شده منبع رایج خرابیهای گیجکننده در ابزارهای نامرتبط است.

مرحله ۷: درک آنچه متغیرهای محیطی پوشش نمیدهند

  • مرورگرها، اپلیکیشنهای Electron و سرویسهای دسکتاپ عموماً متغیرهای محیطی شل را نادیده میگیرند. به جای آن پروکسی را در خود برنامه یا در تنظیمات شبکه دسکتاپ خود تنظیم کنید.

  • دیمنهای پسزمینه مانند Docker، snapd و برخی مدیران بسته به فایلهای پیکربندی خود نیاز دارند.

  • فقط یک پروکسی سراسری میتواند در هر جلسه شل فعال باشد، بنابراین اگر نیاز دارید دو اندپوینت را همزمان مقایسه کنید، ترمینالهای جداگانه اجرا کنید.

مرحله ۸: تأیید تغییر و بررسی سلامت DNS

curl -sS https://ipinfo.io/ip; echo
curl -sS https://ipinfo.io/country; echo

مقدار country باید با منطقه اندپوینت ChangeMyIP که انتخاب کردهاید مطابقت داشته باشد. هم با HTTP و هم با فرم --socks5-hostname، پروکسی نام میزبان مقصد را resolve میکند، بنابراین resolver محلی شما برای دامنه هدف مشورت نمیشود. اگر یک resolver DNS محلی یا یک پروکسی شفاف نیز اجرا میکنید، یک تست نشت DNS در مرورگر اجرا کنید تا تأیید کنید که کوئریهای شما از جایی که انتظار دارید خارج میشوند.

عیبیابی

نشانه علت احتمالی راهحل
curl: (22) ... 407 اعتبارنامه پروکسی گمشده یا اشتباه نام کاربری و رمز عبور را دوباره بررسی کنید و --proxy-user را به صراحت پاس دهید
curl: (7) Failed to connect میزبان یا پورت اشتباه، یا مسدود شدن توسط فایروال میزبان و پورت را از جزئیات طرح خود کپی کنید؛ تأیید کنید که پورت قابل دسترسی است
IP بعد از export تغییر نکرده در یک شل متفاوت export شده، یا ابزار متغیرهای محیطی را نادیده میگیرد proxy_on را در شل فعلی اجرا کنید و ابتدا با curl تست کنید
با curl کار میکند اما در مرورگر نه مرورگر متغیرهای شل را نمیخواند میزبان و پورت را در تنظیمات پروکسی مرورگر یا پنل شبکه دسکتاپ وارد کنید
برخی سایتها بارگذاری میشوند، برخی مسدود IP دیتاسنتر اشتراکی توسط سایت هدف علامتگذاری شده با یک اندپوینت مسکونی دوباره امتحان کنید
SOCKS5 شکست میخورد اما HTTP کار میکند resolve DNS محلی یا فلگ اشتباه SOCKS از --socks5-hostname استفاده کنید
سرعتها بین تلاشها متفاوت است ازدحام استخر دیتاسنتر اشتراکی یک اندپوینت دیگر از شهر متفاوت را تست کنید

خلاصه

تغییر IP در لینوکس به سه چیز خلاصه میشود: داشتن اعتبارنامههای معتبر ChangeMyIP، گفتن به ابزار که ترافیک را کجا بفرستد، و تأیید نتیجه. ابتدا با curl و فلگهای صریح تست کنید، وقتی کار کرد به متغیرهای محیطی http_proxy و https_proxy بروید، و آنها را از طریق کمککنندههای proxy_on و proxy_off در دسترس قرار دهید تا ترافیک عادی شما هنگام تست تحت تأثیر قرار نگیرد. IP و کشور جدید را با یک سرویس بازتاب IP تأیید کنید، وقتی میخواهید پروکسی DNS را مدیریت کند --socks5-hostname را ترجیح دهید، و به یاد داشته باشید که برنامههای گرافیکی به تنظیمات پروکسی خود نیاز دارند.