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 جایگزین |
ipv6 | parse و ذخیره میشود، اما rewrite IPv6 در runtime فعلی فعال نیست |
گزینههای اختیاری هر rule:
| گزینه | پیشفرض | توضیح |
|---|---|---|
chance | همیشه apply | درصد احتمال apply شدن rule، از 0 تا 100 |
only120 | false | اگر 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
}
}
در قالب قدیمی:
| گزینه | مقدارهای معتبر |
|---|---|
direction | up یا down |
mode | source-ip یا dest-ip |
ipv4 / ipv6 | آدرس جایگزین |
رفتار
- در مسیر upstream فقط ruleهای
upبررسی میشوند. - در مسیر downstream فقط ruleهای
downبررسی میشوند. - اگر برای یک جهت هم source و هم destination تعریف شده باشد، هر دو مستقل بررسی و ممکن است روی همان packet اعمال شوند.
- اگر
chanceباعث skip شود یاonly120match نشود، آن 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 میکنند.