سایفون (Psiphon)
خروجی Psiphon با هستهٔ رسمی تونل سایفون، که درون sing-box ساخته شده، به شبکهٔ سایفون وصل
میشود. سرورها را خود سایفون اداره میکند، پس فقط همین خروجی را لازم دارید. این یک outbound
است: "type": "psiphon" در فهرست outbounds.
چرا از آن استفاده کنیم
- بدون سرور شخصی و بدون حساب کاربری، یک پراکسی کارا دارید.
- وقتی سرورهای خودتان مسدود شدهاند، گزینهٔ آخر خوبی است: سایفون سرورهای زیاد و راههای زیادی برای رسیدن به آنها دارد و فهرست سرورهایش را خودش بهروز میکند.
- با
egress_regionمیتوانید کشوری را که ترافیک از آن خارج میشود انتخاب کنید.
سایفون میان کاربران زیادی مشترک است. اغلب از سرور خودتان کندتر است و فقط TCP را میبرد.
چطور از فیلترینگ عبور میکند
این کار را سایفون انجام میدهد، نه sing-box. هستهٔ تونل سرورهای زیادی از سایفون و چند پروتکل مبهمسازیشده برای رسیدن به آنها میشناسد. آنها را امتحان میکند تا یکی وصل شود، و پس از اتصال، فهرست امضاشده و بهروز سرورها را دریافت میکند. اگر یک سرور یا پروتکل مسدود باشد، سراغ دیگری میرود.
وقتی شبکه همهٔ ترافیک به بیرون را میبندد، یا همهٔ سرورهای شناختهشدهٔ سایفون مسدودند و فهرست تازهای هم دریافت نمیشود، کمکی نمیکند.
چطور کار میکند
- هنگام شروع، خروجی یک پیکربندی سایفون میسازد (بخش
configرا ببینید)، انبارهٔ دادهٔ آن را درdata_directoryباز میکند و هستهٔ تونل را در پسزمینه راه میاندازد. شروع برنامه منتظر تونل نمیماند. - تا تونل برقرار نشده، خروجی «Connecting...» نشان میدهد و اتصالها از آن ناموفقاند. با برقراری اولین تونل، آن نشانه برداشته میشود و پایش هیدیفای بیدرنگ آن را تست میکند.
- هستهٔ تونل اتصالهای خودش را به سرورهای سایفون میسازد. این اتصالها از طریق یک پل SOCKS
محلی، از تنظیمات اتصال همین خروجی (مثلاً
detour) میگذرند و دوباره وارد VPN شما نمیشوند. اگرupstream_proxy_urlرا تنظیم کنید، بهجای آن از این پراکسی استفاده میشود. - وقتی هستهٔ تونل متوقف شود (پس از
establish_tunnel_timeoutتسلیم شود یا خطا بدهد)، پس از ۵ ثانیه و هر بار با دو برابر فاصله، تا هر ۵ دقیقه، دوباره راه میافتد؛ یک اتصال موفق این فاصله را از نو شروع میکند. - چند خروجی سایفون میتوانند همزمان کار کنند، مثلاً یکی برای هر
egress_region. هر کدام بارگیریهایش را درdata_directory/<tag>نگه میدارد؛ آنچه نسخههای قبلی در خودdata_directoryنگه داشتهاند به آنجا منتقل میشود. هستهٔ تونل وضعیتش را بدون گفتن اینکه دربارهٔ کدام خروجی است گزارش میکند، پس در کنار خروجیهای سایفون دیگر، هر کدام پیش از اینکه متصل نشان داده شود تونل خودش را بررسی میکند. - با تغییر شبکه، خروجی به هستهٔ تونل میگوید دوباره وصل شود.
- هر اتصال TCP از درون تونل سایفون به مقصد واقعیاش باز میشود. UDP پشتیبانی نمیشود.
پیکربندی
| فیلد | نوع | پیشفرض | معنی |
|---|---|---|---|
config |
string | "" |
پیکربندی سایفون بهعنوان نقطهٔ شروع. "hiddify" پیکربندی داخل اپ هیدیفای را به کار میبرد، اگر این بیلد آن را داشته باشد؛ وگرنه هشداری ثبت میشود و پیشفرضها به کار میروند. هر مقدار دیگر، پیکربندی JSON سایفون است، یا رمزشده با کلید این بیلد، یا به صورت base64. خالی یعنی پیشفرضها. |
data_directory |
string | "data/psiphon" |
جایی که سایفون دادههایش را نگه میدارد: هر خروجی در پوشهای به نام tag خودش. |
egress_region |
string | "" |
کد دوحرفی کشور سرور خروجی، مثلاً "US" یا "DE". خالی یعنی انتخاب با سایفون. |
propagation_channel_id |
string | "FFFFFFFFFFFFFFFF" |
مقدار شناسهٔ کلاینت سایفون. |
sponsor_id |
string | "FFFFFFFFFFFFFFFF" |
مقدار شناسهٔ کلاینت سایفون. |
network_id |
string | "test" |
شناسهٔ شبکه برای سایفون. |
client_platform |
string | مقدار داخلی | رشتهٔ پلتفرمی که به سایفون فرستاده میشود. |
client_version |
string | "" |
رشتهٔ نسخهای که به سایفون فرستاده میشود. |
remote_server_list_url |
string | نشانی فهرست عمومی سایفون | جایی که فهرست سرورها از آن دریافت میشود. |
remote_server_list_download_filename |
string | "remote_server_list" |
نام فایل فهرست دریافتشده. |
remote_server_list_signature_public_key |
string | کلید عمومی سایفون | کلیدی که امضای فهرست را بررسی میکند. |
upstream_proxy_url |
string | "" |
اتصالهای خود سایفون را از این پراکسی بفرست، مثلاً socks5://127.0.0.1:1080. خالی یعنی تنظیمات اتصال همین خروجی. |
allow_default_dns_resolver_with_bind_to_device |
bool | true |
اجازه بده سایفون هنگام اتصال به یک رابط شبکه، از DNS سیستم استفاده کند. |
establish_tunnel_timeout |
duration | 1m |
مدتی که هستهٔ تونل برای اتصال تلاش میکند و بعد دست میکشد. مقدار کمتر از یک ثانیه، یک ثانیه حساب میشود. |
فیلدهای معمول اتصال (detour، bind_interface و بقیه) هم همانطور که بالا گفته شد اعمال
میشوند. فیلد network پذیرفته میشود ولی اثری ندارد: این خروجی فقط TCP است.
برای هر فیلد شناسه و فهرست سرور، ترتیب این است: مقدار تنظیمشده در خروجی، سپس مقدار داخل
config، سپس پیشفرض.