صبحی که یک تونل از کار میافتد و دیگر وصل نمیشود، غریزه میگوید سرور را مقصر بدانید. تقریباً هیچوقت سرور نیست. آنچه تغییر کرده این است که چیزی میان شما و سرور، بهجای فقط نگاهکردن به مقصد بستههایتان، به شکل آنها نگاهکردن را شروع کرده، تشخیص داده که آن شکل یک VPN است، و بسته را دور انداخته. رفتن به سراغ پورت 443 کمکی نمیکند، چون پورت هرگز چیزی نبود که شما را لو میداد.
پس این راهنما از همان بخشی آغاز میشود که اکثر آموزشها از کنارش رد میشوند: اینکه بازرسی عمیق بستهها واقعاً بر چه چیزی تطبیق میکند، چرا WireGuard راحتترین تونل دنیا برای گرفتن اثر انگشتش است، و هر خانواده از مبهمسازی برای عبورکردن، چه هزینهای از شما میگیرد — ترافیک تصادفیشده، TLS قرضی، و QUICای که خودش را جای HTTP/3 جا میزند. بعد نوبت کار میرسد: یک باینری، سه پیکربندی کارآمد سرور، و راهی برای آزمودن نتیجه، همانطور که یک سانسورگر میآزماید، نه همانطور که یک کاربر امیدوار میآزماید. ماشینی که زیر همهٔ اینهاست میتواند در حوزهٔ قضاییای جا بگیرد که دست فیلتر به آن نمیرسد، بدون مدرک شناسایی اجاره شده باشد و با Monero پرداخت شده باشد — که بیش از آنچه به نظر میرسد اهمیت دارد، و بخش آخر توضیح میدهد چرا.
بازرسی عمیق بستهها واقعاً بر چه چیزی تطبیق میکند
«DPI» شبیه یک مسئلهٔ اطلاعاتی به نظر میرسد. اما در بیشتر مواقع فقط یک تطبیق رشته است. فیلتری که روی یک لینک سراسری نشسته، از پسِ فکرکردن جدی دربارهٔ تکتک جریانها برنمیآید، پس روی ارزانترین سیگنالهایی تکیه میکند که جواب میدهند، تقریباً به این ترتیب:
- یک اثر انگشت پروتکل در افستی ثابت. نخستین بستهٔ یک نشست WireGuard یک آغازگر دستدهی است: دقیقاً 148 بایت، بایت اول
0x01، سه بایت بعدی صفر. OpenVPN هم خودش را با یک کد عملیات در بایت اول و یک شناسهٔ نشست که هرگز جایش عوض نمیشود، معرفی میکند. تطبیقدادن هرکدام تنها چند دستور در هر بسته است، بدون هیچ وضعیتی که نگه داشته شود، و همین دلیل آن است که این کار همیشه اولین چیزی است که پیادهسازی میشود. - آنتروپی، وقتی اثر انگشتی برای پیداکردن نیست. اگر بایتهای آغازین یک جریان بهطور یکنواخت تصادفی باشند — نه ASCII قابلچاپ، نه هدری قابلشناسایی — این خودش یک سیگنال است، چون تقریباً هیچچیز مشروعی از بایت صفر اینطور به نظر نمیرسد. فیلترها فقط بر همین اساس، کل دستههای ترافیک «کاملاً رمزگذاریشده» را مسدود کردهاند، و این دقیقاً همان تلهای است که پروتکلهای تصادفیساز در آن میافتند.
- کاوش فعال. فیلتر آدرس سرور شما را یادداشت میکند، سپس خودش، از جایی دیگر، به آن وصل میشود و میبیند چطور پاسخ میدهد. پراکسیای که پاسخ میدهد، بهشکلی خاص خطا میدهد، یا فقط اتصال را باز نگه میدارد، ظن را تأیید میکند. این همان راهی است که یک آدرس از «شاید» به یک فهرست مسدودی میرسد.
- رفتار در طول زمان. یک جریان تک و طولانیمدت به یک آدرس خارجی که چند صد مگابایت با یک منحنی روز/شبِ شبیهبهمسکونی حمل میکند، چیز متمایزی برای بودن است. هیچ مقداری مبهمسازی بار داده این را عوض نمیکند.
- خودِ آدرس. رنجهای شناختهشدهٔ VPS، آدرسهایی که در فهرستهای اشتراک عمومی دیده شدهاند، هرچیزی که یک ارائهدهندهٔ تجاری تبلیغ میکند. این یکی هیچ هزینهای برای سانسورگر ندارد و همان دلیلی است که یک آدرس پراکسی مشترک زودتر از یک پروتکل میمیرد.
نتیجهٔ کاربردی این است که سه مورد اول همانهایی هستند که میتوانید دربارهٔ آنها کاری بکنید، و همانهایی هستند که این راهنما به آنها میپردازد. دو مورد آخر دلیل آن است که بخش مربوط به محافظت از آدرستان یک فکر جانبی نیست.
چرا انتقال WireGuard به پورت 443 جواب نمیدهد
این پرتکرارترین توصیه دربارهٔ این موضوع است و تقریباً هیچ اثری ندارد، به دلیلی که ارزش گفتن ساده دارد: امضا در بار دادهٔ بسته است، نه در شمارهٔ پورت. فیلتری که 0x01 را در افست صفر یک دیتاگرام 148 بایتی UDP تطبیق میدهد، آن را روی پورت 443 دقیقاً به همان راحتی پیدا میکند که روی 51820 پیدا میکند.
بدتر آنکه، این جابهجایی میتواند شما را برجستهتر هم بکند. پورت 443 حامل HTTPS است، که TCP است، و QUIC و HTTP/3، که UDP است اما با یک هدر بلند قابلشناسایی QUIC و یک ClientHello مربوط به TLS درونش شروع میشود. یک جریان UDP روی 443 که هیچکدام این دو نیست، روی لینکی که هرچیز دیگر روی آن پورت یکی از آن دو تاست، یک ناهنجاری کوچک است.
همین قصه دربارهٔ باقی فولکلور این حوزه هم صادق است. تغییردادن MTU قطعهبندی را عوض میکند، نه بایتهای دستدهی را. اضافهکردن یک کلید پیشاشتراکی به WireGuard رمزنگاری را قویتر میکند و قالب روی سیم را دستنخورده میگذارد. گذاشتن تونل روی یک پورت بالای غیراستاندارد در برابر تطبیق بار داده هیچ سودی برایتان ندارد، هرچند نویز پسزمینهٔ اسکنرهای فرصتطلب را کم میکند.
آنچه واقعاً جواب را عوض میکند، تغییردادن چیزی است که روی سیم قرار دارد: یا بایتها را طوری کنید که شبیه هیچچیز قابلشناسایی نباشند، یا طوریشان کنید که شبیه چیزی باشند که سانسورگر تصمیم گرفته مسدودش نکند. هرچه در ادامه میآید، یکی از همین دو حرکت است.
خانوادههایی که از فیلتر عبور میکنند، و هرکدام چه هزینهای دارند
چهار رویکرد عملی وجود دارد. اینها فقط بر اساس قدرت رتبهبندی نشدهاند، چون گزینهٔ درست به این بستگی دارد که با ترافیک شما چه کاری در حال انجام است.
- ترافیک تصادفی و بدون هدر — Shadowsocks-2022. رمزهای AEAD نسخهٔ 2022 (
2022-blake3-aes-128-gcmو خواهر و برادرهایش) اصلاً هیچ هدر متنسادهای روی سیم نمیگذارند: از همان بایت اول، یک نشست از دادهای تصادفی قابلتشخیص نیست، و یک کلید اشتباه هیچ پاسخی به کاوش نمیدهد. ارزان، سریع، ده دقیقه تا برپاشدن، و تقریباً همهجا عالی. تنها ضعفش همان سیگنال آنتروپی است که پیشتر گفته شد — در برابر فیلتری که اصولاً جریانهای تصادفی غیرقابلطبقهبندی را مسدود میکند، شبیه هیچچیز بودن با بیگناه به نظر رسیدن یکی نیست. - TLS از آنِ کس دیگر — VLESS همراه با Reality. قویترین گزینهای که امروز بهطور عمومی استفاده میشود. سرور شما یک دستدهی واقعی TLS 1.3 انجام میدهد، و هر کلاینتی که نتواند احراز هویت شود، بهطور شفاف به یک سایت واقعیِ شخص ثالث سپرده میشود، که گواهی واقعیاش را هم بهدرستی دریافت میکند. یک کاوشگر یک بازدیدکنندهٔ معمولی میبیند که به یک وبسایت معمولی وصل شده، چون دقیقاً همین اتفاق افتاده است. نه به دامنهای نیاز دارید، نه به گواهیای، و نه به ردی در سیستم شفافیت گواهی — هیچچیزی هیچکجا ثبت نشده که به شما اشاره کند.
- TLS از آنِ خودتان — Trojan، یا VLESS روی WebSocket پشت یک وبسرور. تونل درون سایت HTTPS خودتان پنهان میشود، روی دامنه و گواهی خودتان. از نظر مفهومی سادهتر است و کنار یک وبسایت واقعی روی همان آدرس زندگی میکند. هزینهاش این است که دامنه اکنون شناسهای سوزاندنی است، گواهی یک رکورد عمومی در لاگهای CT است، و مسدودکردن یک نام میزبان برای یک سانسورگر حرکتی ارزان است.
- بهشکل QUIC — Hysteria2 و TUIC. اینها خودشان را جای HTTP/3 جا میزنند و میتوانند به هرچیزی که احراز هویت را رد میکند، یک وبسایت واقعی نشان دهند. دلیل انتخابشان معمولاً اصلاً سانسور نیست، بلکه افت است: روی مسیری که پنج تا ده درصد بستهها را از دست میدهد، اینها توان عملیاتی را حفظ میکنند، جایی که هرچه بر پایهٔ TCP باشد فرومیپاشد. مصالحههایش واقعیاند — برخی شبکهها UDP را یکسره خفه یا دور میریزند، و کنترل ازدحام تهاجمی Hysteria، اگر ارقام پهنایباند را نادرست تنظیم کنید، همسایهٔ بدی میشود.
اگر یک پیشفرض میخواهید: Reality را بهعنوان اصلی برپا کنید، Shadowsocks-2022 را روی یک پورت دوم بهعنوان جایگزین نگه دارید، و Hysteria2 را فقط زمانی اضافه کنید که مشکلتان مسیری با افت باشد، نه مسیری فیلترشده. هر سه از یک دیمن اجرا میشوند، و مراحل زیر هرکدام را بهنوبت پیکربندی میکنند.
پیش از شروع به چه چیزی نیاز دارید
کمتر از آنچه انتظار دارید. این یک بار کاری سبک است؛ محدودیت، پهنایباند و تأخیر است، نه خودِ سرور.
- یک پلن کوچک. رمزگذاری و پایاندادن به TLS روی هر vCPU مدرنی با AES-NI ارزان است. Pup (1 vCPU / 1 GB / 25 GB NVMe، $3.50/mo) یک تونل شخصی را بهراحتی حمل میکند؛ Cub (1 vCPU / 2 GB / 40 GB، $5.00/mo) اندازهٔ معقولی است اگر چند نفر آن را بهاشتراک بگذارند؛ Scout (2 vCPU / 4 GB / 70 GB، $9.00/mo) اگر خانواده یا یک تیم کوچک هستید و کمی فضای اضافه میخواهید. ترافیک روی هر رده با سرعت 1 Gbps نامحدود است، که همان مشخصهای است که واقعاً برای یک تونل اهمیت دارد.
- مکان درست، انتخابشده برای مسیر. این همان تصمیمی است که مردم در آن اشتباه میکنند. بهجای عجیبترینِ حوزههای قضایی، نزدیکترینی را انتخاب کنید که مسیرش از شما فیلتر نشده باشد: برای بیشتر خوانندهها این یعنی آمستردام، پاریس، بخارست یا صوفیه، و برای هرکس در آسیا، کوالالامپور. ریکیاویک و زوریخ فاصلهٔ حقوقی میخرند، نه سرعت — برای آنچه میزبانی میکنید مفیدند، برای آنچه از طریقش تونل میزنید کمتر مفیدند.
- Debian 13 یا Ubuntu LTS از کتابخانهٔ قالبها. مجازیسازی کامل KVM یعنی یک کرنل واقعی و پشتهٔ شبکهٔ خودتان، که همان چیزی است که میگذارد بدون اجازه از کسی، پورتهای پایین را bind کنید و UDP را شکل دهید.
- یک IPv4 اختصاصی بدون سابقه. هر پلن یکی از اینها را همراه با یک IPv6 /64 میدهد. آدرسی که هرگز در یک استخر پراکسی مشترک ننشسته، باارزشترین چیز اینجاست، و همان دلیلی است که آدرسهای بازیافتی کلودهای ارزانقیمت ظرف چند روز شکست میخورند.
- ابتدا ده دقیقه سختسازی. فقط کلیدهای SSH، بدون ورود با رمز عبور، فایروال پیشفرض-رد. چکلیست سختسازی Debian این را پوشش میدهد؛ یک تونل مبهمسازیشده روی جعبهای با رمز عبور root قابلحدس، قفلی پیچیده روی دری باز است.
- یک دامنه — فقط اگر مسیر TLS از آنِ خودتان را انتخاب کنید. Reality و Shadowsocks به هیچکدام نیاز ندارند، که بخش بزرگی از جذابیتشان همین است.
گام به گام
- در مکانی که دست فیلتر به آن نمیرسد دیپلوی کنید، و اول سختسازیاش کنید
Debian 13 را از کتابخانهٔ قالبها در نزدیکترین مکانی دیپلوی کنید که مسیرش از شما تمیز باشد، و پیش از هر کاری، ده دقیقه سختسازی پایه روی جعبه انجام دهید: فقط SSH با کلید، غیرفعالکردن ورود با رمز عبور root، پیشفرض-رد در nftables، بهروزرسانیهای امنیتی خودکار. سپس آن را بهروز کنید و ساعت را بررسی کنید، چون Reality به آن وابسته است:
apt update && apt full-upgrade -y apt install -y curl ca-certificates systemd-timesyncd timedatectl set-ntp true timedatectl statusاین سرور را تکمنظوره نگه دارید. تونلی که آدرسش را با یک سرویس وب عمومی شریک شود، هر مشکل اعتباریای را که آن سرویس تابهحال داشته، به ارث میبرد.
- sing-box را از مخزن رسمی نصب کنید
یک دیمن هر سه پروتکل را پوشش میدهد، پس هیچ دلیلی برای اجرای سهتای جداگانه نیست. بهجای یک بستهٔ توزیع، از مخزن خودِ پروژه استفاده کنید، چون این نرمافزاری است که یک نسخه عقببودن در آن هزینهٔ واقعی دارد:
mkdir -p /etc/apt/keyrings curl -fsSL https://sing-box.app/gpg.key -o /etc/apt/keyrings/sagernet.asc chmod a+r /etc/apt/keyrings/sagernet.asc printf 'Types: deb\nURIs: https://deb.sagernet.org/\nSuites: *\nComponents: *\nEnabled: yes\nSigned-By: /etc/apt/keyrings/sagernet.asc\n' > /etc/apt/sources.list.d/sagernet.sources apt update && apt install -y sing-box sing-box versionاین بسته یک واحد systemd همراه دارد که
/etc/sing-box/config.jsonرا میخواند. هرچه در ادامه میآید همان یک فایل را مینویسد؛ inbound موردنظرتان را اضافه کنید و آنهایی را که نمیخواهید کنار بگذارید. - گزینهٔ A — Shadowsocks-2022، جایگزین دهدقیقهای
حتی اگر Reality قرار است اصلی شما باشد، از همینجا شروع کنید، چون دو دقیقه طول میکشد و یک در دوم به شما میدهد که جوری متفاوت شکست میخورد. کلیدی با طول درست برای رمز تولید کنید — 16 بایت برای
aes-128، 32 بایت برایaes-256:sing-box generate rand --base64 16بعد نوبت inbound میرسد، روی یک پورت بالا بهجای یکی بهیادماندنی:
{ "log": { "level": "warn" }, "inbounds": [ { "type": "shadowsocks", "tag": "ss-in", "listen": "::", "listen_port": 23456, "method": "2022-blake3-aes-128-gcm", "password": "PASTE_THE_GENERATED_KEY" } ], "outbounds": [ { "type": "direct" } ] }آن را در
/etc/sing-box/config.jsonبنویسید، سپسsystemctl enable --now sing-boxرا اجرا کنید. توجه کنید که اینجا نه TLSای هست و نه گواهیای برای گرفتن: محافظت این است که ترافیک اصلاً هیچ هدر قابلشناساییای ندارد، و یک کلید اشتباه هیچ پاسخی نمیگیرد. - گزینهٔ B — VLESS همراه با Reality، با قرضگرفتن TLS کسی دیگر
این همان چیزی است که باید بهعنوان اصلی اجرا شود. اول جفتکلید و شناسهها را تولید کنید، و
PrivateKeyرا روی سرور وPublicKeyرا برای کلاینت نگه دارید:sing-box generate reality-keypair sing-box generate uuid openssl rand -hex 8بعد نوبت inbound میرسد.
handshake.serverهمان سایت واقعیای است که سرور شما جای آن را میگیرد — یکی را انتخاب کنید که محبوب باشد، از موقعیت سرورتان سریع باشد، از TLS 1.3 پشتیبانی کند، و خودش هم بعید باشد جایی که هستید مسدود شود:{ "type": "vless", "tag": "vless-in", "listen": "::", "listen_port": 443, "users": [ { "uuid": "GENERATED_UUID", "flow": "xtls-rprx-vision" } ], "tls": { "enabled": true, "server_name": "www.cloudflare.com", "reality": { "enabled": true, "handshake": { "server": "www.cloudflare.com", "server_port": 443 }, "private_key": "GENERATED_PRIVATE_KEY", "short_id": [ "GENERATED_HEX" ] } } }آن آبجکت را کنار آبجکت Shadowsocks به آرایهٔ
inboundsاضافه کنید و باsystemctl restart sing-boxریلود کنید. کلاینت به پنج مقدار نیاز دارد: آدرس شما، پورت 443، UUID، کلید عمومی، و short id — بهعلاوهٔ همانserver_name، که همان چیزی است که دستدهی را منسجم میکند. - گزینهٔ C — Hysteria2، وقتی مسیر افت دارد نه اینکه فیلتر شده باشد
این یکی را فقط زمانی اضافه کنید که روی مسیر افت اندازهگیری کردهاید و تونلهای بر پایهٔ TCP گیر میکنند. این پروتکل QUIC صحبت میکند، پس به یک گواهی نیاز دارد — یا گواهی واقعی برای دامنهای که مالکش هستید، یا یک جفت خوداِمضا که به کلاینت گفته میشود انتظارش را داشته باشد:
{ "type": "hysteria2", "tag": "hy2-in", "listen": "::", "listen_port": 8443, "up_mbps": 100, "down_mbps": 100, "users": [ { "password": "A_LONG_RANDOM_PASSWORD" } ], "masquerade": "https://news.ycombinator.com/", "tls": { "enabled": true, "alpn": [ "h3" ], "certificate_path": "/etc/sing-box/cert.pem", "key_path": "/etc/sing-box/key.pem" } }masqueradeهمان چیزی است که یک بازدیدکنندهٔ احراز-هویتنشده دریافت میکند: یک پراکسی معکوس سادهٔ HTTP/3 به یک سایت واقعی، بهجای خطایی که دیمن را شناساییپذیر میکند.up_mbpsوdown_mbpsرا روی ارقامی تنظیم کنید که واقعاً میتوانید حفظشان کنید — کنترل ازدحام آنها را باور میکند، و ارقام دستکاریشده شما را به یک همسایهٔ ناخوشایند روی لینک تبدیل میکند، نه یک همسایهٔ سریعتر. - دقیقاً همان پورتهایی را که استفاده میکنید باز کنید، و نه چیز دیگری
پیشفرض-رد، بعد همان چند چیزی که باید در دسترس باشند. با فرض همان برپایی nftables از راهنمای سختسازی، پورتهای تونل را به زنجیرهٔ input اضافه کنید:
nft add rule inet filter input tcp dport 443 accept nft add rule inet filter input udp dport 443 accept nft add rule inet filter input udp dport 23456 accept nft list ruleset > /etc/nftables.confدو جزئیات که بیشتر از ظاهرشان اهمیت دارند. SSH را روی پورت خودش نگه دارید و با فایروال فقط به آدرسهایی که واقعاً استفاده میکنید محدودش کنید، چون یک پورت باز SSH اثر انگشتِ بسیار بهتری برای «سروری که کسی از راه دور مدیریتش میکند» است تا خودِ تونل. و پس از تمامشدن تست، پورتهای تست را باز نگذارید — هر پورت بازِ اضافی، چیز دیگری است که یک کاوشگر میتواند مشخصهیابی کند.
- یک کلاینت وصل کنید، و یک در دوم را باز نگه دارید
کلاینتهایی که با همهٔ اینها صحبت میکنند، اپلیکیشنهای sing-box روی Android، iOS، Windows و macOS هستند، و همان باینری
sing-boxروی Linux همراه با یک پیکربندی سمت کلاینت. پروفایل کلاینت را از مقادیری که تولید کردید بسازید: آدرس، پورت، UUID، کلید عمومی، short id وserver_nameبرای Reality؛ آدرس، پورت، رمز و کلید برای Shadowsocks.هر دو را پیش از آنکه بهشان نیاز داشته باشید پیکربندی کنید، و در یک پروفایل بگذاریدشان تا سوییچکردن فقط یک لمس باشد. حالت شکستی که این کار از آن جلوگیری میکند مشخص و رایج است: یک مسدودسازی فرود میآید، تنها پروتکل شما از کار میافتد، و تنها راه تعمیر سرور همان اتصالی است که دیگر ممکن نیست. یک پروتکل دوم روی یک پورت متفاوت، با امضای شکست متفاوت، ارزانترین بیمه در کل این راهنماست.
اگر جعبه را از داخل یک شبکهٔ فیلترشده روی SSH مدیریت میکنید، مطمئن شوید آن مسیر هم به تونل وابسته نیست.
- آن را همانطور تست کنید که یک سانسورگر میکند، نه همانطور که یک کاربر میکند
«وصل میشود» ضعیفترین تست ممکن است. آن سه چیزی را که یک فیلتر بررسی میکند، از ماشینی که خودِ سرور نیست، بررسی کنید:
curl -sv --max-time 8 https://YOUR_IP 2>&1 | grep -E 'subject:|issuer:' nc -vz -w 5 YOUR_IP 23456 nmap -Pn -sV -p 443,8443,23456 YOUR_IPظاهر خوب یعنی چه:
curlباید گواهیای برای هدف دستدهیتان نشان دهد و هیچ نشانهای از یک پراکسی؛ncبه پورت Shadowsocks باید وصل شود و بعد ساکت بنشیند تا تایماوت شود؛nmapباید یک وبسرور را شناسایی کند و نه چیز جالبتری. اگر هر کاوشی یک بنر متمایز، یک ریست فوری، یا رشتهنسخهای که نام دیمن را میبرد تولید کند، پیش از تکیهکردن به این برپایی، آن را درست کنید.بعد حالتهای شکست خستهکننده را هم بررسی کنید — اینکه سرویس با
systemctl is-enabled sing-boxاز یک ریاستارت جان سالم به در میبرد، و اینکهjournalctl -u sing-box -fزیر استفادهٔ عادی ساکت است، نه اینکه هر اتصالی را روی دیسک لاگ کند.
کاوش فعال، و سرورهایی که بلدند ساکت بمانند
اثرانگشتگیری نامزدها را پیدا میکند؛ کاوش آنها را تأیید میکند. بهمحض اینکه فیلتر به یک آدرس مشکوک شود، از یک شبکهٔ نامرتبط، اتصال خودش را باز میکند و میبیند چه چیزی برمیگردد. همهچیز به همان پاسخ بستگی دارد.
سروری که خطایی متمایز برمیگرداند، در لحظهای مشخصه بسته میشود، یا اتصالی را میپذیرد که هیچجور نمیتواند احراز هویتش کند، حدس را تأیید کرده است. این چیزی نظری نیست: این همان سازوکار مستندشدهای است که فیلترهای بزرگمقیاس با آن پروتکلهای مبهمسازی قدیمیتر را دستهجمعی بازنشسته کردهاند، و همان دلیلی است که پلاگینهای بهسبک obfs که فقط یک هدر را درهم میریختند، از برخورد با آن جان سالم به در نبردند.
طراحیهای مدرن به کاوش، به یکی از این دو راه درست پاسخ میدهند:
- هیچچیز نگفتن. Shadowsocks-2022 بدون کلید نمیتواند پاسخی معتبر تولید کند، پس هیچ پاسخی تولید نمیکند. برای یک کاوشگر، پورت یک سیاهچاله است، که دقیقاً همان چیزی است که یک پورت فایروالشده بهنظر میرسد. این پروتکل همچنین محافظت در برابر پخشمجدد را با یک بازهٔ زمانی محدود حمل میکند، پس یک نشست ضبطشده را نمیتوان بعداً دوباره فرستاد تا رفتاری از سرور بیرون کشید.
- چیزی راست گفتن، دربارهٔ کس دیگری. Reality دستدهی احراز-هویتنشده را به یک میزبان واقعیِ شخص ثالث پیش میفرستد و گواهی واقعی آن میزبان را برمیگرداند. کاوشگر یک زنجیرهٔ معتبر برای سایتی میبیند که آشکارا شما نیستید. هدف دستدهیای را انتخاب کنید که محبوب باشد، بهطرز قابلقبولی از کشور سرورتان در دسترس باشد، و بعید باشد خودش مسدود شود — و ساعت سرور را همگام نگه دارید، چون Reality دستدهیهای بیرون از یک بازهٔ زمانی باریک را رد میکند.
پیش از آنکه به آن اعتماد کنید، خودتان این را آزمایش کنید. از یک ماشین نامرتبط، curl -v https://YOUR_IP را روی یک پورت Reality اجرا کنید: باید گواهیای متعلق به هدف دستدهی ببینید و هیچچیزی که نشانی از یک پراکسی باشد. روی یک پورت Shadowsocks، nc باید معلق بماند و بعد بدون هیچ بایتی، با تایماوت تمام شود. هرچیز دیگری یک یافته است.
آدرس همان منبع کمیاب است
پروتکلها ظرف ده دقیقه قابلتعویضاند. آدرسها اینطور نیستند. وقتی یک IPv4 داخل یک کشور مسدود میشود، معمولاً مدتها پس از رفعِ هرچیزی که باعثش شده، مسدود میماند، چون به کسی در آنطرف پول نمیدهند که فهرست را مرور کند. با آدرس مثل دارایی رفتار کنید و با پروتکل مثل یک مصرفی.
سه عادت از این نتیجه میشود. آن را منتشر نکنید. آدرسی که در یک فهرست اشتراک عمومی، یک کانال، یا یک پیکربندی مشترک گذاشته شده، قابلشمارش است، و شمارش ارزانترین حملهای است که وجود دارد — همین دلیل آن است که تونلهای خصوصی به مراتب بیشتر از نمونههای عمومی و رایگان دوام میآورند. نامی سوزاندنی رویش نگذارید. اگر مسیر TLS از آنِ خودتان را اجرا میکنید، دامنهای که بهعلاوهٔ هرچیز جلبتوجهکنندهای هم سرویس میدهد، آدرس را هم با خودش پایین میکشد. نقشها را قاطی نکنید. جعبهای تکمنظوره، با تونل شما و هیچچیز دیگر، فهرستشدنی را که چیز دیگری که اجرا میکردید به دست آورده، به ارث نمیبرد.
نیمهٔ دیگر ماجرا این است که آدرس از کجا آمده. کلودهای ارزانقیمت با گردش بالا، IPv4 را میان هزاران مشتری کوتاهعمر بازچرخانی میکنند، پس ممکن است یک آدرس «تازه» پیش از نخستین بستهٔ شما هم از قبل اعتبار شخص دیگری را با خودش حمل کند. هر پلن اینجا، بهجای برشی از یک استخر مشترک، یک IPv4 اختصاصی و بررسیشده تحویل میدهد — برای تعریف آن و اینکه چطور خودتان تأییدش کنید، اینکه یک IP تمیز واقعاً یعنی چه را ببینید. اگر مال شما هم یک روز پرچمگذاری شود، یا جایی که مهم است مسدود شود، از طریق پنل درخواست تعویض بدهید؛ نباید برای گرفتن یک آدرس کاری، سفارش تازهای ثبت کنید. و وقتی میخواهید بدانید یک مشکل از سانسورگر است یا از یک فهرست اعتباری، راهنمای ما دربارهٔ بررسی اینکه آیا یک IP در لیست سیاه است این دو را از هم جدا میکند.
کاری که مبهمسازی نمیکند
حسابوکتاب صادقانه، چون باقی این راهنما تنها زمانی ارزش خواندن دارد که این بخش هم در آن باشد.
- پنهان نمیکند که دارید ترافیک رمزگذاریشدهای را جایی میفرستید. یک اپراتور شبکه همچنان یک جریان بهسمت یک آدرس خارجی، حجمش، زمانبندیاش و اینکه چقدر طول میکشد را میبیند. Reality آن جریان را شبیه یک بازدید معمولی از یک وبسایت معمولی میکند؛ آن را ناپدید نمیکند.
- تحلیل ترافیک را شکست نمیدهد. جریانهای پرحجم و پایدار با یک الگوی متمایز روز/شب، همچنان متمایز میمانند. در برابر خصمی که مایل است منابع واقعی را صرف همبستگی کند، نه فقط تطبیق الگو، مبهمسازی بار داده ابزار اشتباهی است، و Tor همراه با یک ترنسپورت قابلاتصال پاسخِ بهتر-مطالعهشده است.
- از نقاط پایانی محافظت نمیکند. یک دستگاه بهخطرافتاده، یک حساب واردشده، اثر انگشت مرورگر و هرچیزی که آنطرف تایپ میکنید، دستنخورده از همهٔ اینها باقی میماند.
- سرور را ناشناس نمیکند. میزبان میداند کدام آدرس مال شماست، و یک ثبتنام بدون KYC آنچه را میتوان دانست محدود میکند، نه اینکه حذفش کند. ما دقیقاً اینکه چه چیزی دیدنی است و چه چیزی نیست را در آیا یک VPS پرداختشده با رمزارز واقعاً ناشناس است باز کردهایم، و پیش از تکیهکردن به فرضها، ارزش ده دقیقه وقتتان را دارد.
- دائمی نیست. این یک مسابقهٔ تسلیحاتی با یک چرخهٔ انتشار است. پیکربندیای که امروز کار میکند، ممکن است سال دیگر نیاز به جایگزینی داشته باشد، که همان استدلال واقعی برای داشتن سازوکاری است که کنترلش میکنید و میتوانید ظرف ده دقیقه عوضش کنید، نه یک اشتراک که فقط میتوانید لغوش کنید.
کاری که بهطور قابلاعتماد انجام میدهد، بالابردن هزینهٔ مسدودکردن شماست، از «یک تطبیق بایت با سرعت خط» به «یک تصمیم برای شکستن حجم زیادی از ترافیک معمولی». در عمل، معمولاً کل بازی همین است.
حوزهٔ قضایی، پرداخت، و اینکه چرا حساب اهمیت دارد
پروتکل تصمیم میگیرد بستهها عبور میکنند یا نه. باقی ماجرای اینکه آیا تونل بهوجودداشتنش ادامه میدهد یا نه، بیرون از سیم تصمیمگیری میشود.
حوزهٔ قضایی تعیین میکند چه کسی میتواند چه چیزی را اجبار کند. ردپای ما هشت مکان است، در سراسر هلند، فرانسه، رومانی، بلغارستان، سوئد، ایسلند، سوئیس و مالزی؛ درخواستی که در یکی وزن دارد، در دیگری هیچ وزنی ندارد، و هیچ اخطار حذف محتوای بهسبک آمریکایی در هیچکدامشان قدرت اجرایی ندارد. این سیاستی عملیاتی است که صادقانه بیان شده، نه مصونیت حقوقی — احکام دادگاه محلی همچنان اجرا میشوند، و یک کف سختگیرانهٔ برخورد با سوءاستفاده هست که جابهجایش نمیکنیم. میزبانی آفشور این تمایز را درست توضیح میدهد.
حساب همان بخشی است که مردم دستکمش میگیرند. یک تونل تنها بهاندازهٔ سابقهٔ اینکه چه کسی آن را اجاره کرده، خصوصی است. ثبتنام اینجا فقط یک آدرس ایمیل برای تحویل اطلاعات ورود میگیرد و نه چیز دیگری — نه مدرک شناسایی، نه کارت، نه آدرس، نه شمارهٔ تلفن. هیچ پروندهٔ تأییدی برای تحویلدادن نیست، چون از ابتدا هیچکدام را جمعآوری نکردهایم.
پرداخت نیمهٔ دیگر همین ماجراست. یک کارت، یک سرور را به یک سابقهٔ بانکی و یک نام حقیقی در پایگاهدادهای که هیچکدام از ما کنترلش نمیکنیم، پیوند میدهد. پرداخت اینجا روی زنجیره تسویه میشود، و Monero درجهیک است، نه یک فکر بعدی: راهنمای ما دربارهٔ پرداخت برای VPS با XMR کل مسیر را قدمبهقدم میگوید، و خرید بدون کارت اعتباری رسیدن به آنجا از صفر رمزارز را پوشش میدهد. دیپلوی حدود شصت ثانیه پس از تأیید طول میکشد، پس اگر روزی به یک آدرس جایگزین نیاز داشته باشید، چند دقیقه با آن فاصله دارید.
روی هم، این همان شکل تونلی است که دوام میآورد: پروتکلی که یک فیلتر نمیتواند ارزان تطبیقش دهد، آدرسی که هیچکس دیگری نسوزانده، حوزهٔ قضاییای بیرون از دسترس فیلتر، و حسابی که هرگز چیزی نداشته که ارزش مطالبهکردن داشته باشد. اگر اول نسخهٔ سادهترِ همین تونل را میخواهید، راهنمای برپاسازی WireGuard ده دقیقه طول میکشد و جای خوبی برای شروع است — وقتی چیزی از وصلشدن باز ایستاد، به اینجا برگردید.
پرسشهای متداول
چرا تونل WireGuard من یکشبه از کار افتاد؟
تقریباً همیشه به این خاطر است که فیلتری روی مسیر شروع به تطبیقدادن پروتکل کرده، نه اینکه چیزی روی سرور شما تغییر کرده باشد. دستدهی WireGuard یک بستهٔ ثابت 148 بایتی است که با 0x01 شروع میشود، که تطبیقدادنش با سرعت خط بسیار ساده است، و رولاوتها معمولاً همهباهم اتفاق میافتند. دو تأیید سریع: سرور همچنان از جای دیگری به SSH پاسخ میدهد، و همان تونل از یک شبکهٔ دیگر کار میکند. اگر هر دو برقرار باشند، مسئله مسیر است، نه جعبه — و تغییر پورت آن را درست نمیکند.
استفاده از یک VPN مبهمسازیشده قانونی است؟
در بیشتر جهان، بله — تونلهای رمزگذاریشده زیرساخت معمولیاند و این نرمافزار متنباز و رایج است. اقلیتی از کشورها استفاده از VPN را تنظیمگری یا محدود میکنند، و قواعد از الزام به مجوز تا ممنوعیت کامل تغییر میکند، پس پاسخ به اینکه خودتان کجا هستید بستگی دارد، نه به اینکه سرور کجاست. ما در جایگاهی نیستیم که برای حوزهٔ قضایی شما مشاورهٔ حقوقی بدهیم. آنچه میتوانیم بگوییم این است که در سمت ما چه چیزی صدق میکند: اجرای یک تونل خصوصی برای ترافیک خودتان روی یک VPS که اجاره کردهاید، استفادهٔ معمولی است، و کف سختگیرانهٔ سیاست استفادهٔ مجاز ما — نبود CSAM، نبود تروریسم — در هر دو حالت بدون تغییر میماند.
کدام را انتخاب کنم: Reality، Shadowsocks-2022 یا Hysteria2؟
Reality بهعنوان اصلی: در برابر هم اثرانگشتگیری و هم کاوش فعال قویترین است، و به هیچ دامنه یا گواهیای از آنِ خودتان نیاز ندارد. Shadowsocks-2022 بهعنوان یک در دوم روی یک پورت دیگر، چون دو دقیقه کار است و جوری متفاوت شکست میخورد. Hysteria2 فقط اگر افت واقعی بسته را روی مسیر اندازهگیری کردهاید — روی لینکهای پرافت برنده میشود و روی یک لینک تمیز چیز اضافهای به شما نمیدهد. هر سه از یک دیمن sing-box واحد اجرا میشوند، پس این یک انتخاب میان inboundهاست، نه میان نرمافزارها.
برای این کار به یک نام دامنه نیاز دارم؟
برای Reality یا Shadowsocks-2022 نه، که بخش زیادی از جذابیتشان همین است — نه ثبتی، نه گواهیای، و نه رکوردی در سیستم شفافیت گواهی که آدرس شما در آن باشد. تنها برای رویکرد TLS از آنِ خودتان (Trojan، یا VLESS روی WebSocket پشت یک وبسرور) یا اگر یک گواهی امضاشدهٔ درست برای Hysteria2 میخواهید، به یک دامنه نیاز دارید. نادیدهگرفتن دامنه، شناسهای را هم حذف میکند که میتواند مستقل از آدرس شما مسدود شود.
IP سرور من مسدود شده. میتوانم فقط عوضش کنم؟
بله، و نباید برای این کار سفارش تازهای ثبت کنید — درخواست تعویض را از طریق پنل بدهید. پیش از آن، مشخص کنید چه چیزی در فهرست قرار گرفته: آدرسی که داخل یک کشور مسدود شده یک رویداد سانسور است، درحالیکه آدرسی که روی Spamhaus یا یک DNSBL است یک رویداد اعتباری با دلیل و راهحلی متفاوت است، که راهنمای ما دربارهٔ لیست سیاه آن را قدمبهقدم توضیح میدهد. اگر آدرس هرگز در یک پیکربندی مشترک یا یک فهرست اشتراک عمومی منتشر شده، شمارش را دلیل بدانید و جایگزین را منتشر نکنید.
آیا مبهمسازی چیزها را کند میکند؟
بهسختی، و بهندرت به شکلی که مردم انتظار دارند. هر CPU سرور x86-64 مربوط به دههٔ اخیر دارای AES-NI است، پس خودِ رمزگذاری گلوگاه نیست — روی یک پورت 1 Gbps، این شبکه است که گلوگاه است. Reality یک دستدهی واقعی TLS در زمان برپاییِ اتصال اضافه میکند و عملاً پس از آن هیچ چیز دیگری. Shadowsocks-2022 سبکترینِ این سهتاست. Hysteria2 میتواند روی یک مسیر پرافت بهطرز چشمگیری سریعتر از بقیه باشد و روی یک مسیر تمیز کمی کندتر. چیزی که واقعاً برایتان تأخیر هزینه میکند، جغرافیاست، و همین دلیل آن است که انتخاب نزدیکترین مکان قابلاستفاده، بهتر از انتخاب عجیبترینش است.
یک تونل مبهمسازیشدهٔ خودمیزبانیشده بهتر از یک VPN تجاری است؟
برای عبور از یک فیلتر، معمولاً بله، به یک دلیل ساختاری: رنجهای آدرس یک ارائهدهندهٔ تجاری منتشرشدهاند، میان هزاران کاربر مشترکاند و قابلشمارشاند، پس یکجا مسدود میشوند و مسدود میمانند. آدرس خودتان را فقط خودتان استفاده میکنید. این مصالحه صادقانه است — یک تونل تککاربره جمعیتی برای گمشدن در آن به شما نمیدهد، پس در برابر مسدودشدن بسیار بهتر از آنچه در برابر ردیابی هویت محافظت میکند، محافظت میکند. اینکه واقعاً کدامیک از این دو مشکل را دارید، پرسشی است که ارزش دارد اول پاسخش داده شود، و آنچه یک VPS پرداختشده با رمزارز واقعاً پنهان میکند تحلیل صادقانهٔ همان است.

