فهرست همهی Nodeها
این صفحه نمایی سریع از Nodeهای عمومی و قابلپیکربندی موجود در Source Tree فعلی WaterWall ارائه میدهد. برای دیدن تنظیمات دقیق، رفتار چرخهی عمر و مثالها، به صفحهی اختصاصی هر Node مراجعه کنید.
راهنمای کوتاه
- Nodeهای Listener و Device معمولاً در لبهی زنجیره قرار میگیرند و ترافیک را ایجاد یا دریافت میکنند.
- Nodeهای Connector معمولاً در لبهی خروجی زنجیرهاند و به یک Endpoint بیرونی متصل میشوند.
- Nodeهای Packet، IP Packet خام یا بافرهای شبیه Datagram را حمل میکنند، نه Stream معمولی Byteهای TCP.
- Nodeهای Bridge میان مدل Packet و Stream یا میان شاخههای جداگانهی زنجیره پل میزنند.
- بیشتر جفتهای پروتکلی
Client/Serverباید در دو سمت مخالف مسیر تنظیم شوند.
Nodeهای عمومی و قابلپیکربندی
| Node | کاربرد اصلی | جایگاه رایج |
|---|---|---|
AuthenticationClient | هویت احرازشده یا Credential کاربر را برای Nodeهای سمت Server که از Authentication آگاهاند به ترافیک اضافه میکند. | پیش از یک Node سمت Server یا پروتکلی که Authentication را میشناسد. |
AuthenticationServer | هویتهای ورودی را احراز و کاربران مجاز را کنترل میکند. | در زنجیرهی سمت Server و پیش از ترافیک محافظتشده. |
Bgp4Client | سمت Client از جفت تونل BGP4-style. | در برابر Bgp4Server. |
Bgp4Server | سمت Server از جفت تونل BGP4-style. | در برابر Bgp4Client. |
BlackHole | Adapter انتهاییای که برای مسدودسازی یا آزمایش، Payload را دور میریزد یا ترافیک را رد میکند. | انتهای یک زنجیرهی Policy یا آزمایش. |
Bridge | دو شاخهی مستقل زنجیره را درون یک فایل پیکربندی به هم متصل میکند. | معمولاً بهصورت یک جفت نامگذاریشده یا نقطهی اتصال شاخهها. |
ConnectionFisherClient | چند مسیر سمت Client را باز میکند یا با هم به رقابت میاندازد و اتصال قابلاستفاده را نگه میدارد. | در برابر ConnectionFisherServer. |
ConnectionFisherServer | سمت Server مسیرهای ConnectionFisher. | در برابر ConnectionFisherClient. |
Disturber | برای آزمایش، Packet Loss، تأخیر یا خرابی داده را شبیهسازی میکند. | زنجیرههای آزمایشی. |
DomainResolver | Node کمکی پیشرفتهای که پیش از Forwardکردن Init، دامنههای موجود در dest_ctx را Resolve میکند. | معمولاً بهصورت داخلی توسط Nodeهای Connector، Router یا Client ساخته میشود. |
EncryptionClient | Framing و رمزنگاری AEAD در سمت Client. | در برابر EncryptionServer. |
EncryptionServer | Framing و رمزگشایی AEAD در سمت Server. | در برابر EncryptionClient. |
HalfDuplexClient | رفتار Half-duplex مربوط به Upload و Download را تقسیم یا هماهنگ میکند. | در برابر HalfDuplexServer. |
HalfDuplexServer | سمت Server از جفت تونل Half-duplex. | در برابر HalfDuplexClient. |
HeaderClient | Header یکبارهی پورت WaterWall یا Header مربوط به IPv4 PROXY Protocol را به ابتدای داده میافزاید. | در برابر HeaderServer برای Headerهای WaterWall، در حالت PROXY Source مربوط به HeaderServer، یا پیش از Backend سازگار با PROXY Protocol. |
HeaderServer | Header پورت WaterWall را مصرف میکند، فیلدهای Source در IPv4 PROXY را میخواند یا یک پورت مقصد ثابت اعمال میکند. | در برابر HeaderClient یا پشت یک فرستندهی قابلاعتماد PROXY. |
HttpClient | Payload را با Framing سمت Client مربوط به HTTP، HTTP/2، h2c، Custom Upgrade، Split HTTP یا WebSocket حمل میکند. | برای HTTPS پیش از TlsClient، یا برای HTTP بدون رمزنگاری پیش از یک Node انتقال. |
HttpServer | Framing سمت Server در HTTP/WebSocket را پردازش میکند و Payload بدنه را عبور میدهد. | برای HTTPS پس از TlsServer، یا برای HTTP بدون رمزنگاری پس از Listener. |
IpManipulator | تغییرات ویژهی TCP/TLS/SNI را در سطح Packet اعمال میکند. | زنجیرههای Packet. |
IpOverrider | فیلدهای IP یا پورت مبدأ و مقصد را در ترافیک Packet بازنویسی میکند. | زنجیرههای Packet. |
JunkDatagramSender | بر اساس Moduleها و Policyهای تنظیمشده Datagramهای اضافه میفرستد. | مسیرهای Packet یا UDP-oriented برای Evasion یا آزمایش. |
KeepAliveClient | برای تشخیص مسیرهای قطعشده دادهی Keepalive یا Heartbeat میفرستد. | در برابر KeepAliveServer. |
KeepAliveServer | سمت Server برای مدیریت Keepalive یا Heartbeat. | در برابر KeepAliveClient. |
LoggerTunnel | بدون تغییر رفتار زنجیره، Payload را ثبت یا Dump میکند. | هر نقطهای که برای Debug مناسب باشد. |
MuxClient | تعداد زیادی Line منطقی را روی اتصالهای انتقال مشترک Multiplex میکند. | در برابر MuxServer. |
MuxServer | Lineهای منطقی رسیده از MuxClient را Demultiplex میکند. | در برابر MuxClient. |
ObfuscatorClient | Obfuscation سبک Payload را در سمت Client انجام میدهد. | در برابر ObfuscatorServer. |
ObfuscatorServer | همتای سمت Server برای Obfuscation و برگرداندن آن. | در برابر ObfuscatorClient. |
PacketReceiver | در محیطهای محدود، ترافیک Packet را برای کشف Source IP دریافت میکند. | زنجیرههای کشف Packet/IP. |
PacketSender | برای کشف Source IP یا آزمایش مسیر Packet، ترافیک Packet میفرستد. | زنجیرههای کشف Packet/IP. |
PacketSplitStream | رفتار ترکیبی Packet/Stream را میان سمت Packet و Stream تقسیم میکند. | زنجیرههای مرزی Packet/Stream. |
PacketsToConnection | ترافیک Packet را با کمک lwIP به Lineهای عادی اتصال WaterWall تبدیل میکند. | پل Packet-to-Stream. |
PacketsToStream | مرز Packetهای خام IPv4 را روی یک Line سمت Stream حمل میکند. | در برابر StreamToPackets. |
PingClient | Payload مربوط به Packet را در ترافیکی شبیه IPv4 ICMP کپسوله میکند. | زنجیرههای Packet، در برابر PingServer. |
PingServer | Payload مربوط به Packet را در جهت تونل Ping از پوشش خارج میکند. | زنجیرههای Packet، در برابر PingClient. |
RawSocket | IP Packetهای خام را میفرستد و دریافت میکند. | لبهی Packet. |
RealityClient | ابتدا TLS Handshake مربوط به Visitor را انجام میدهد و سپس Payload احرازشدهی Reality را در Recordهای شبیه TLS میفرستد. | سمت Client، پیش از مسیر انتقال به RealityServer. |
RealityServer | ترافیک عادی Visitor را به مقصد میفرستد و Clientهای احرازشدهی Reality را به next محافظتشده منتقل میکند. | سمت Server، پس از Listener. |
ReverseClient | سمت Client یک Reverse Tunnel را برای عبور از NAT یا Firewall میسازد. | در برابر ReverseServer. |
ReverseServer | سمت Server برای هماهنگی Reverse Tunnel. | در برابر ReverseClient. |
Router | Lineها را بر اساس Context، Filter یا شاخههای Rule مسیریابی میکند. | میانهی زنجیرههای پیچیده. |
SniffRouter | بر اساس Metadata بهدستآمده از Sniffکردن ترافیک مسیریابی میکند. | میانهی زنجیرههای Sniffing/Routing. |
Socks5Client | با یک Server بالادستی SOCKS5 صحبت میکند. | پیش از مقصد Transport یا Proxy. |
Socks5Server | Requestهای Client نوع SOCKS5 را میپذیرد و ترافیک آنها را عبور میدهد. | پس از Listener یا Wrapper مربوط به TLS/پروتکل. |
SoftIpLimiter | تعداد Source IPهایی را محدود میکند که همزمان از یک UUID اولیهی VLESS یا هویت SHA224 مربوط به Trojan استفاده میکنند. | پس از Wrapper مربوط به TLS/پروتکل و پیش از VlessServer یا TrojanServer. |
SpeedLimit | Throughput را محدود میکند. | میانهی زنجیره. |
SpeedTestClient | ترافیک آزمایش سرعت تولید میکند. | زنجیرههای آزمایشی، در برابر SpeedTestServer. |
SpeedTestServer | به ترافیک آزمایش سرعت پاسخ میدهد. | زنجیرههای آزمایشی، در برابر SpeedTestClient. |
StreamToPackets | Packetهای IPv4 را از یک Line سمت Stream بازسازی میکند. | در برابر PacketsToStream. |
TcpConnector | اتصالهای TCP خروجی را باز میکند. | انتهای زنجیره. |
TcpListener | اتصالهای TCP ورودی را میپذیرد و Lineهای عادی میسازد. | ابتدای زنجیره. |
TcpOverUdpClient | دادهی Stream-like مربوط به TCP را روی انتقال Packet-style مبتنی بر UDP حمل میکند. | در برابر TcpOverUdpServer. |
TcpOverUdpServer | سمت Server برای مدیریت TCP-over-UDP. | در برابر TcpOverUdpClient. |
TcpUdpConnector | رفتار Connector مربوط به TCP و UDP را پشت یک Node ترکیب میکند. | انتهای زنجیره برای مسیریابی ترکیبی TCP/UDP. |
TcpUdpListener | رفتار Listener مربوط به TCP و UDP را پشت یک Node ترکیب میکند. | ابتدای زنجیره برای ورودی ترکیبی TCP/UDP. |
TesterClient | ترافیک قابلتکرار برای اعتبارسنجی تولید و پاسخها را بررسی میکند. | Chain Head آزمایشی. |
TesterServer | به ترافیک قابلتکرار Tester پاسخ میدهد. | Chain End آزمایشی. |
TlsClient | TLS واقعی سمت Client را اجرا و Recordهای رمزنگاریشدهی TLS را حمل میکند. | پیش از TcpConnector یا یک مسیر انتقال دیگر. |
TlsServer | TLS واقعی سمت Server را Terminate میکند. | پس از TcpListener و پیش از Nodeهای پروتکل Cleartext. |
TrojanClient | Framing مربوط به Request و Authentication سمت Client در Trojan را مینویسد. | در برابر TrojanServer، معمولاً داخل TLS. |
TrojanServer | ترافیک Client نوع Trojan را Parse و احراز میکند. | در برابر TrojanClient، معمولاً داخل TLS. |
TunDevice | Packetها را از طریق دستگاه TUN سیستمعامل میخواند و مینویسد. | لبهی Packet. |
UdpConnector | ترافیک UDP خروجی را با امکان انتخاب یا Resolveکردن مقصد میفرستد. | انتهای زنجیره. |
UdpListener | Peerهای UDP را میپذیرد و بهازای هر Peer یک Line از نوع Stateful میسازد. | ابتدای زنجیره. |
UdpOverTcpClient | Packetهای UDP-style را روی انتقال Stream حمل میکند. | در برابر UdpOverTcpServer. |
UdpOverTcpServer | سمت Server برای مدیریت UDP-over-TCP. | در برابر UdpOverTcpClient. |
UdpStatelessSocket | Datagramهای UDP را با Routing Context و بدون Line جداگانه برای هر Peer میفرستد و دریافت میکند. | لبهی UDP Packet، اغلب در کنار WireGuardDevice. |
UserController | Node کمکی پیشرفتهای که با استفاده از AuthenticationClient محدودیتهای کاربران احرازشده را اعمال میکند. | معمولاً بهصورت داخلی توسط Nodeهای Server دارای Authentication ساخته میشود. |
VlessClient | Framing مربوط به Request سادهی Client در VLESS v0 را مینویسد. | در برابر VlessServer، اغلب داخل انتقال TLS/Reality. |
VlessServer | ترافیک سادهی VLESS v0 را Parse و احراز میکند. | در برابر VlessClient. |
WireGuardDevice | رمزنگاری WireGuard، State مربوط به Peer و مسیریابی Allowed IP را داخل زنجیره پیادهسازی میکند. | میان سمت Packet و UdpStatelessSocket. |
نوع Node مخصوص Scaffold
این نوع Node در Source Code وجود دارد، اما یک تونل معمول برای استفادهی مستقیم کاربر نیست:
| Node | نقش |
|---|---|
Template | Scaffold توسعهدهنده برای ساخت تونلهای تازه. |
انتخاب زنجیرهی شروع
- Proxy سادهی TCP:
TcpListener -> ... -> TcpConnector - Proxy نوع Stateful برای UDP:
UdpListener -> ... -> UdpConnector - لبهی Packet و Stateless برای UDP:
UdpStatelessSocket -> ... - تونل کامل IP:
TunDevice -> ... -> TunDevice - انتقال Packet به سبک WireGuard:
TunDevice -> WireGuardDevice -> UdpStatelessSocket - پل Packet روی Stream:
PacketsToStreamدر یک سمت وStreamToPacketsدر سمت دیگر - انتقال Stream بهصورت Multiplex:
MuxClientدر یک سمت وMuxServerدر سمت دیگر - انتقال شبیه HTTPS:
HttpClient -> TlsClient -> TcpConnectorو در سمت Server، TlsServer -> HttpServer - جداسازی Visitor/Protected به سبک Reality:
RealityClientرو بهRealityServerوRealityServer.settings.destinationرو به شاخهی Visitor