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

IpOverrider

IpOverrider آدرس‌های IP داخل packet را rewrite می‌کند. نسخه فعلی می‌تواند در یک instance، برای upstream و downstream و برای source/destination ruleهای مستقل داشته باشد؛ بنابراین برای خیلی از سناریوهایی که قبلا چند IpOverrider پشت سر هم لازم بود، حالا یک نود کافی است.

این نود packet tunnel لایه ۳ است و socket یا connection نمی‌سازد.

نمونه تنظیم جدید

{
"name": "ip-rewrite",
"type": "IpOverrider",
"settings": {
"up": {
"source-ip": {
"ipv4": "10.0.0.10"
},
"dest-ip": {
"ipv4": "198.51.100.10",
"only120": true
}
},
"down": {
"source-ip": {
"ipv4": "203.0.113.10",
"chance": 100
},
"dest-ip": {
"ipv4": "10.0.0.20"
}
}
},
"next": "next-node-name"
}

قالب جدید

در settings می‌توانید این ruleها را تعریف کنید:

ruleمعنی
up.source-ipتغییر IP مبدأ در مسیر upstream
up.dest-ipتغییر IP مقصد در مسیر upstream
down.source-ipتغییر IP مبدأ در مسیر downstream
down.dest-ipتغییر IP مقصد در مسیر downstream

هر rule باید حداقل یکی از این فیلدها را داشته باشد:

گزینهتوضیح
ipv4آدرس IPv4 جایگزین
ipv6parse و ذخیره می‌شود، اما rewrite IPv6 در runtime فعلی فعال نیست

گزینه‌های اختیاری هر rule:

گزینهپیش‌فرضتوضیح
chanceهمیشه applyدرصد احتمال apply شدن rule، از 0 تا 100
only120falseاگر true باشد فقط روی IPv4 packetهایی با total length حداکثر 120 بایت اعمال می‌شود

قالب قدیمی

قالب قدیمی هنوز برای سازگاری پذیرفته می‌شود:

{
"name": "ip-rewrite-old",
"type": "IpOverrider",
"settings": {
"direction": "up",
"mode": "dest-ip",
"ipv4": "198.51.100.10",
"chance": 100,
"only120": false
}
}

در قالب قدیمی:

گزینهمقدارهای معتبر
directionup یا down
modesource-ip یا dest-ip
ipv4 / ipv6آدرس جایگزین

رفتار

  • در مسیر upstream فقط ruleهای up بررسی می‌شوند.
  • در مسیر downstream فقط ruleهای down بررسی می‌شوند.
  • اگر برای یک جهت هم source و هم destination تعریف شده باشد، هر دو مستقل بررسی و ممکن است روی همان packet اعمال شوند.
  • اگر chance باعث skip شود یا only120 match نشود، آن rule کاری نمی‌کند.
  • بعد از rewrite IPv4، نود flag مربوط به checksum recalculation را set می‌کند تا نودهای packet writer بعدی checksum را درست کنند.

نکته‌ها

  • runtime فعلی فقط IPv4 header را rewrite می‌کند.
  • IPv6 در config parse می‌شود ولی مسیر rewrite آن در کد فعال نیست.
  • این نود packet را buffer یا terminate نمی‌کند؛ فقط درجا rewrite و forward می‌کند.
  • برای source IP spoofing واقعی باید شبکه و دیتاسنتر شما اجازه خروج packet با source غیرمحلی را بدهد؛ بسیاری از دیتاسنترها چنین trafficی را drop می‌کنند.