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-ms | 300000 | مدت نگه داشتن UDP flow بیکار؛ حداقل 1 |
fake-dns | false | DNS fake داخلی برای queryهای A |
mapdns | - | alias قدیمی برای fake-dns |
fake_dns | - | alias دیگر برای fake-dns |
اگر fake-dns object باشد، این فیلدها را میپذیرد:
| فیلد | پیشفرض |
|---|---|
enabled | true |
address | 198.18.0.2 |
port | 53 |
network | 100.64.0.0 |
netmask | 255.192.0.0 |
cache-size | 10000 |
ttl | 1 |
جایگاه رایج
TunDevice -> PacketsToConnection -> TcpConnector
TunDevice -> PacketsToConnection -> Socks5Client -> TcpConnector
نکتههای مهم
- این نود TUN device نمیسازد و route سیستمعامل را تنظیم نمیکند؛ برای آن از
TunDeviceو تنظیمات OS استفاده کنید. PacketsToConnectionpacketها را روی stream serialize نمیکند؛ برای آن کار ازPacketsToStreamاستفاده کنید.- UDP backpressure واقعی stream ندارد؛ اگر flow pause باشد datagramهای ورودی drop میشوند.