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

RawSocket

RawSocket نام فعلی نودی است که در بعضی مستندات قدیمی با عنوان RawDevice آمده بود. این نود WaterWall را به capture و injection خام IPv4 وصل می‌کند: packetهای match شده را از stack شبکه host می‌گیرد و packetهای خامی را که از زنجیر می‌رسند دوباره inject می‌کند.

این نود connection-oriented نیست؛ یک adapter لایه ۳ است.

نمونه تنظیم

{
"name": "raw-ip",
"type": "RawSocket",
"settings": {
"capture-device-name": "capture-in",
"raw-device-name": "raw-out",
"capture-filter-mode": "source-ip",
"capture-ips": [
"192.0.2.10",
"198.51.100.0/24"
],
"mark": 10
},
"next": "next-node-name"
}

تنظیمات ضروری

گزینهتوضیح
capture-filter-modeدر نسخه فعلی عملا فقط source-ip قابل استفاده است
capture-ipsآرایه IP یا CIDRهای IPv4 برای capture

کلید قدیمی capture-ip هنوز به عنوان یک ورودی /32 پذیرفته می‌شود، اما برای config جدید از capture-ips استفاده کنید.

تنظیمات اختیاری

گزینهپیش‌فرضتوضیح
capture-device-nameunnamed-capture-deviceنام capture device
raw-device-nameunnamed-raw-deviceنام raw output device
mark0firewall mark برای raw output در پلتفرم‌های پشتیبانی‌شده

رفتار

  • packetهای capture شده فقط اگر IPv4 باشند وارد chain می‌شوند.
  • اگر RawSocket آخر زنجیر باشد، packet capture شده به سمت previous فرستاده می‌شود؛ در غیر این صورت به next.
  • payloadی که از هر جهت به RawSocket برسد raw IP packet فرض می‌شود و از raw output device نوشته می‌شود.
  • اگر line درخواست recalculation checksum داشته باشد، قبل از نوشتن checksumها دوباره محاسبه می‌شوند.

محدودیت‌ها

  • receive path فعلی فقط IPv4 را forward می‌کند.
  • capture-filter-mode: "dest-ip" در parser دیده می‌شود، اما پیاده‌سازی فعلی آن را قبول نمی‌کند و پیشنهاد می‌دهد برای capture خروجی از TunDevice استفاده کنید.
  • پشتیبانی دقیق به backend سیستم‌عامل وابسته است.