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

PacketsToConnection

PacketsToConnection یک bridge بین packet خام و connectionهای معمولی WaterWall است و روی lwIP ساخته شده است. این نود packetهای IPv4 را وارد lwIP می‌کند و flowهای TCP/UDP حاصل را به صورت lineهای عادی به نود بعدی می‌دهد.

چه کاری انجام می‌دهد؟

  • از سمت packet، packet کامل IPv4 می‌گیرد.
  • TCP و UDP را از طریق lwIP به lineهای عادی WaterWall تبدیل می‌کند.
  • برای هر TCP connection یا UDP 4-tuple یک line داخلی می‌سازد.
  • پاسخ‌های نود بعدی را دوباره از طریق lwIP به packet خام تبدیل می‌کند و به packet side برمی‌گرداند.

این نود packet line مشترک worker را در runtime نمی‌بندد؛ lineهای TCP/UDP داخلی معمولی هستند و می‌توانند بسته شوند.

پشتیبانی فعلی

موردوضعیت
IPv4پشتیبانی می‌شود
TCPپشتیبانی می‌شود
UDPپشتیبانی می‌شود
IPv6پشتیبانی نمی‌شود
ICMPپشتیبانی نمی‌شود

نمونه تنظیم

{
"name": "ptc",
"type": "PacketsToConnection",
"settings": {
"udp-idle-timeout-ms": 120000,
"fake-dns": {
"address": "198.18.0.2",
"network": "100.64.0.0",
"netmask": "255.192.0.0",
"cache-size": 10000
}
},
"next": "service-chain-entry"
}

تنظیمات

گزینهپیش‌فرضتوضیح
udp-idle-timeout-ms300000مدت نگه داشتن UDP flow بیکار؛ حداقل 1
fake-dnsfalseDNS fake داخلی برای queryهای A
mapdns-alias قدیمی برای fake-dns
fake_dns-alias دیگر برای fake-dns

اگر fake-dns object باشد، این فیلدها را می‌پذیرد:

فیلدپیش‌فرض
enabledtrue
address198.18.0.2
port53
network100.64.0.0
netmask255.192.0.0
cache-size10000
ttl1

جایگاه رایج

TunDevice -> PacketsToConnection -> TcpConnector
TunDevice -> PacketsToConnection -> Socks5Client -> TcpConnector

نکته‌های مهم

  • این نود TUN device نمی‌سازد و route سیستم‌عامل را تنظیم نمی‌کند؛ برای آن از TunDevice و تنظیمات OS استفاده کنید.
  • PacketsToConnection packetها را روی stream serialize نمی‌کند؛ برای آن کار از PacketsToStream استفاده کنید.
  • UDP backpressure واقعی stream ندارد؛ اگر flow pause باشد datagramهای ورودی drop می‌شوند.