پرش به مطلب اصلی

فهرست به‌روز نودها

این صفحه یک نمای سریع از نودها و تونل‌های موجود در سورس فعلی WaterWall است. برای تنظیم واقعی هر نود، صفحه اختصاصی همان نود را بخوانید؛ اما این جدول کمک می‌کند بفهمید هر نود در چه جای زنجیر استفاده می‌شود.

نکته‌های پایه

  • نودهای Listener معمولا ابتدای زنجیر هستند و برای هر اتصال یا peer یک line می‌سازند.
  • نودهای Connector معمولا انتهای زنجیر هستند و به مقصد بیرونی وصل می‌شوند.
  • نودهای packet مثل TunDevice، RawSocket، WireGuardDevice، IpManipulator و UdpStatelessSocket با بسته خام کار می‌کنند، نه استریم معمولی TCP.
  • نودهای تبدیل مرز مثل PacketsToStream، StreamToPackets، PacketsToConnection و PacketSplitStream بین مدل packet و stream پل می‌زنند.
  • بیشتر نودهای Client/Server باید در دو سمت مسیر با هم جفت شوند؛ مثلا MuxClient با MuxServer.

جدول سریع

نودنوع کاربردجایگاه رایج
TcpListenerپذیرش اتصال TCP ورودیابتدای زنجیر
TcpConnectorاتصال TCP خروجی به مقصدانتهای زنجیر
UdpListenerUDP stateful، یک line برای هر peerابتدای زنجیر
UdpConnectorUDP خروجی به یک یا چند مقصدانتهای زنجیر
UdpStatelessSocketUDP stateless بر اساس routing contextکنار WireGuardDevice یا نود packet
TunDeviceساخت/استفاده از TUN و ورود/خروج IP packetلبه packet
RawSocketارسال و دریافت IP packet خاملبه packet
WireGuardDeviceپیاده‌سازی WireGuard داخل زنجیربین packet side و UdpStatelessSocket
IpOverriderتغییر source/destination IP یا port در packetزنجیر packet
IpManipulatorترفندهای packet-level برای TCP/TLS/SNIزنجیر packet
PacketsToStreamتبدیل packet به stream با length-prefixسمت packet به stream
StreamToPacketsتبدیل stream length-prefixed به packetسمت stream به packet
PacketsToConnectionتبدیل packet/lwIP به connectionهای WaterWallپل packet به stream
PacketSplitStreamتفکیک مسیر packet و streamپل ترکیبی
PacketSenderارسال packetهای ثابت/تست یا bootstrapزنجیر packet
TcpOverUdpClient / TcpOverUdpServerحمل TCP-like stream روی UDP-style packetدو سمت مسیر
UdpOverTcpClient / UdpOverTcpServerحمل packetهای UDP-style روی streamدو سمت مسیر
MuxClient / MuxServerچند line منطقی روی یک یا چند اتصالدو سمت مسیر
ReverseClient / ReverseServerساخت تونل reverse برای عبور از NAT/firewallدو سمت مسیر
HalfDuplexClient / HalfDuplexServerجداسازی upload و download در دو اتصالدو سمت مسیر
ObfuscatorClient / ObfuscatorServerمبهم‌سازی payload با روش‌های ساده مثل XORدو سمت مسیر
EncryptionClient / EncryptionServerرمزنگاری AEAD قاب‌بندی‌شدهدو سمت مسیر
TlsClient / TlsServerTLS واقعی client/server sideکنار HTTP یا TCP
HttpClient / HttpServerکپسوله‌سازی payload داخل HTTP/1.1، HTTP/2 یا WebSocketدو سمت مسیر یا اتصال به وب واقعی
Socks5Client / Socks5Serverاتصال از/به SOCKS5لبه پروکسی یا سمت مقصد
KeepAliveClient / KeepAliveServerheartbeat برای تشخیص قطع مسیردو سمت مسیر
PingClient / PingServerتغییر شکل packetهای IPv4 با ICMP و برگشت دادن آن در سمت مقابلزنجیر packet
ConnectionFisherClient / ConnectionFisherServerامتحان چند اتصال همزمان و نگه داشتن اولین مسیر سالمدو سمت مسیر
SpeedLimitمحدود کردن سرعت عبور دادهمیانه زنجیر
Disturberشبیه‌سازی loss/corruption/delay برای تستمسیرهای تست
BlackHoledrop کردن payload یا بستن سریع lineتست، سیاست مسدودسازی
Bridgeاتصال دو بخش جدا در یک configمعمولا به صورت جفت
LoggerTunnelثبت payload بدون تغییر مسیرهر جای مناسب برای عیب‌یابی
TesterClient / TesterServerتولید/بررسی ترافیک تستسناریوهای تست

پیشنهاد برای انتخاب نود

  • برای سرویس TCP ساده: TcpListener -> ... -> TcpConnector
  • برای UDP معمولی: UdpListener -> ... -> UdpConnector
  • برای تونل IP کامل: TunDevice -> ... -> TunDevice یا TunDevice -> WireGuardDevice -> UdpStatelessSocket
  • برای عبور packet از مسیر stream: PacketsToStream را با StreamToPackets جفت کنید.
  • برای چند اتصال روی یک مسیر: MuxClient و MuxServer را روبه‌روی هم بگذارید.
  • برای HTTPS واقعی روی wire: HttpClient -> TlsClient -> TcpConnector