روتر در حالت عادی فقط به مقصد بسته نگاه میکند: «این بسته کجا میرود و از کدام اینترفیس بفرستمش؟» آدرس مبدأ اصلاً بررسی نمیشود. همین نقطه ضعف، راه را برای IP Spoofing باز میکند: مهاجم بستهای با آدرس مبدأ جعلی میسازد و روتر بیسؤال آن را عبور میدهد. بسیاری از حملات DDoS بازتابی (Reflection و Amplification) دقیقاً روی همین بنا شدهاند.
Unicast Reverse Path Forwarding یا uRPF راهحل سیسکو برای این مشکل است: پیش از عبور هر بسته، روتر از خودش میپرسد «اگر بخواهم به آدرس مبدأ این بسته جواب بدهم، از کدام مسیر میروم؟» و اگر جواب قانعکننده نبود، بسته را دور میریزد. در این مطلب حالتهای Strict و Loose ، گزینههای allow-default و ACL ، جای درست استفاده، دام مسیریابی نامتقارن، ترکیب با Black Hole و دستورهای بررسی را مرور میکنیم.
uRPF در یک نگاه
| هدف | دور ریختن بستههای با آدرس مبدأ جعلی یا غیرقابل برگشت |
| پیشنیاز | CEF فعال (ip cef) ؛ uRPF روی جدول FIB کار میکند |
| Strict | ip verify unicast source reachable-via rx ؛ مسیر برگشت باید از همان اینترفیس ورودی باشد |
| Loose | ip verify unicast source reachable-via any ؛ فقط کافی است مسیری به مبدأ وجود داشته باشد |
| جای Strict | لبه شبکه با مسیر متقارن: اینترفیس مشتری، شعبه، اتصال تکخانه به ISP |
| جای Loose | اتصالهای چندخانه و BGP با مسیر نامتقارن؛ همراه با Black Hole |
فهرست مطالب
uRPF چطور کار میکند
وقتی بستهای روی اینترفیسی که uRPF دارد وارد میشود، روتر آدرس مبدأ را در جدول FIB (همان جدول CEF) جستوجو میکند. بسته به حالت، دو سؤال پرسیده میشود:
| سؤال | Strict | Loose |
|---|---|---|
| آیا برای آدرس مبدأ مسیری در FIB هست؟ | بله، لازم است | بله، لازم است |
| آیا بهترین مسیر به مبدأ از همان اینترفیسی است که بسته آمده؟ | بله، لازم است | بررسی نمیشود |
| مسیری که به Null0 اشاره کند قبول است؟ | خیر | خیر |
| default route (0.0.0.0/0) کافی است؟ | فقط با allow-default |
فقط با allow-default |
اگر پاسخ منفی باشد، بسته دور ریخته میشود؛ مگر اینکه یک ACL استثنا تعریف کرده باشید.
حالت Strict

در شکل بالا، روتر بستهای با مبدأ 10.1.1.10 را روی اینترفیس Gi0/0 دریافت میکند. چون مسیر برگشت به 10.1.1.0/24 هم از Gi0/0 است، بسته پذیرفته میشود. اگر همین بسته از Gi0/1 میآمد، دور ریخته میشد؛ چون روتر میداند آن شبکه پشت Gi0/0 است و بستهای که از جای دیگری با آن آدرس بیاید، جعلی است.
Aka-Core(config)# interface GigabitEthernet0/0 Aka-Core(config-if)# ip verify unicast source reachable-via rx Aka-Core# show ip interface GigabitEthernet0/0 | include verify IP verify source reachable-via RX
Strict دقیقترین حالت است و بهترین جای استفادهاش لبه شبکه است: اینترفیسی که به یک مشتری، شعبه یا VLAN کاربران وصل است و فقط یک مسیر دارد. این همان توصیه BCP 38 برای جلوگیری از خروج ترافیک جعلی از شبکه شماست.
حالت Loose

در حالت Loose ، روتر فقط بررسی میکند که برای آدرس مبدأ مسیری وجود دارد، از هر اینترفیسی که باشد. پس بستههای با مبدأ رزرو یا واگذارنشده (که هیچ مسیری برایشان نیست یا به Null0 میروند) دور ریخته میشوند، ولی مسیریابی نامتقارن مشکلی ایجاد نمیکند.
Aka-Core(config)# interface GigabitEthernet0/1 Aka-Core(config-if)# ip verify unicast source reachable-via any Aka-Core# show ip interface GigabitEthernet0/1 | include verify IP verify source reachable-via ANY
گزینههای allow-default ، allow-self-ping و ACL
! allow a default route to satisfy the check ip verify unicast source reachable-via rx allow-default ! let the router ping itself through this interface ip verify unicast source reachable-via rx allow-self-ping ! exceptions and logging with an ACL access-list 199 permit ip 192.168.50.0 0.0.0.255 any access-list 199 deny ip any any log ip verify unicast source reachable-via rx 199
وقتی ACL به دستور اضافه شود، بستهای که آزمون uRPF را رد کند، هنوز یک فرصت دارد: اگر ACL آن را permit کند، عبور میکند؛ اگر deny با log باشد، دور ریخته و ثبت میشود. این برای عیبیابی و استثناهای موقت عالی است. allow-default را با احتیاط به کار ببرید؛ روی روتری که فقط default route دارد، با این گزینه uRPF عملاً چیزی را فیلتر نمیکند.
دام مسیریابی نامتقارن
بزرگترین اشتباه در استفاده از uRPF ، فعال کردن حالت Strict روی اینترفیسهایی است که مسیر رفت و برگشتشان یکی نیست:
- روتر مرزی با دو ISP که ترافیک ورودی از یکی و خروجی از دیگری است.
- دو روتر با HSRP که ترافیک برگشت بهجای روتر فعال از روتر دیگر عبور میکند.
- لینکهای بین روترها با ECMP یا وزنهای متفاوت.
در همه این حالتها Strict ترافیک سالم را هم دور میریزد. قاعده ساده: Strict برای لبه متقارن، Loose برای هسته و اتصالهای چندخانه.
ترکیب با Black Hole و BOGON
قدرت واقعی حالت Loose وقتی دیده میشود که با مسیرهای Null0 ترکیب شود. اگر آدرسی به Null0 مسیریابی شده باشد، uRPF بستههای با آن مبدأ را هم دور میریزد. دو کاربرد رایج:
- فیلتر BOGON: فهرست BOGONها را از Team Cymru دریافت و به Null0 میفرستید؛ با uRPF Loose ، بستههای با مبدأ BOGON هم حذف میشوند. کانفیگ کامل را در BOGON و راه رهایی از آن ببینید.
- Source-based RTBH: در زمان حمله DDoS ، آدرس مهاجم را روی روترهای مرزی با BGP به Null0 میفرستید تا بستههایش همان لبه دور ریخته شوند.
پشتیبانی روی پلتفرمها
| پلتفرم | نکته |
|---|---|
| روترهای ISR ، ISR 4000 ، Catalyst 8000 ، ASR 1000 | Strict و Loose برای IPv4 و IPv6 ؛ روی IOS XE در سختافزار (QFP) |
| سوئیچهای Catalyst 9000 | روی SVI و اینترفیسهای routed پشتیبانی میشود؛ جزئیات و محدودیتها را در راهنمای Security همان نسخه ببینید |
| IPv6 | ipv6 verify unicast source reachable-via rx |
بررسی و عیبیابی
Router# show ip interface GigabitEthernet0/0 | include verify|drops IP verify source reachable-via RX 12450 verification drops 0 suppressed verification drops Router# show ip traffic | include RPF 0 no route, 12450 unicast RPF, 0 forced drop Router# show cef interface GigabitEthernet0/0 | include RPF
اگر پس از فعال کردن uRPF شکایت قطعی دارید، اول شمارنده verification drops را ببینید و با یک ACL لاگدار (گزینه ACL در دستور uRPF) بفهمید کدام مبدأها drop میشوند؛ معمولاً پای یک مسیر نامتقارن در میان است.
پرسشهای متداول
uRPF جای ACL ضد Spoofing را میگیرد؟
تا حد زیادی بله، و مزیتش این است که با تغییر جدول مسیریابی خودش بهروز میشود. اما ACL زیرساخت برای حفاظت از خود روتر همچنان لازم است.
روی لینک ISP کدام حالت؟
اگر فقط یک ISP و default route دارید، روی اینترفیس داخلی (به سمت LAN) Strict بگذارید تا ترافیک جعلی از شبکه شما خارج نشود. روی لینک ISP در شبکه چندخانه Loose.
uRPF روی CPU فشار میآورد؟
روی پلتفرمهایی که CEF و فورواردینگ سختافزاری دارند، بار ناچیزی دارد.
منابع رسمی
- Cisco Guide to Harden Cisco IOS Devices
- RFC 2827 / BCP 38 – Network Ingress Filtering
- RFC 3704 – Ingress Filtering for Multihomed Networks
مطالب مرتبط: ایمنسازی روتر سیسکو و Control Plane و حفاظت از منابع روتر.
مشاوره با AKA NET
برای طراحی ضد Spoofing ، uRPF و RTBH در شبکههای چندخانه با آکانت (AKA NET) تماس بگیرید.
تلفن: 09121308444 | ایمیل: aka@aka.ir | aka.ir