دو دفتر دارید که هر کدام فقط یک اتصال اینترنت دارند، و میخواهید شبکه داخلیشان طوری به هم وصل شود که انگار با یک کابل مستقیم به هم متصلاند؛ با آدرسهای خصوصی، با OSPF یا EIGRP ، حتی با multicast. اینترنت آدرسهای خصوصی را مسیریابی نمیکند و پروتکلهای مسیریابی هم از آن عبور نمیکنند. GRE یا Generic Routing Encapsulation سادهترین راهحل این مسئله است: بسته اصلی را داخل یک بسته IP جدید میگذارد و از اینترنت عبور میدهد.
در این مطلب GRE را از مفهوم تانلینگ تا کانفیگ کامل روی روتر سیسکو، مسئله MTU و MSS ، Keepalive ، امن کردن با IPsec و خطای معروف Recursive Routing مرور میکنیم.

GRE در یک نگاه
| استاندارد | IETF : RFC 1701 و RFC 2784 ؛ ابتدا توسط سیسکو طراحی شد اما امروز استاندارد باز است |
| شماره پروتکل IP | 47 |
| سربار | ۲۴ بایت: ۴ بایت هدر GRE + ۲۰ بایت هدر IPv4 جدید |
| حمل میکند | IPv4 ، IPv6 ، multicast و پروتکلهای مسیریابی |
| رمزنگاری | ندارد؛ برای امنیت با IPsec ترکیب میشود |
| MTU پیشنهادی سیسکو | ip mtu 1400 و ip tcp adjust-mss 1360 |
فهرست مطالب
تانلینگ چیست
در تانلینگ دو نقش داریم: پروتکل حامل (Transport) که بسته را از شبکه عمومی عبور میدهد، و پروتکل مسافر (Passenger) که بسته اصلی است. GRE یک لایه بین این دو است که مشخص میکند داخل بسته چه پروتکلی است. روتر مبدأ بسته اصلی (مثلاً با مقصد 192.168.20.10) را برمیدارد، هدر GRE و یک هدر IP جدید با آدرسهای عمومی دو روتر به آن اضافه میکند؛ اینترنت فقط هدر بیرونی را میبیند و روتر مقصد لایههای اضافه را برمیدارد.

مهمترین مزیت GRE نسبت به VPN ساده IPsec این است که multicast و broadcast را حمل میکند؛ یعنی OSPF و EIGRP از روی تانل همسایه میشوند و مسیرها خودکار رد و بدل میشوند.
کانفیگ پایه
R1 در تهران با IP عمومی 203.0.113.1 و شبکه داخلی 192.168.10.0/24 ، و R2 در اصفهان با IP عمومی 198.51.100.1 و شبکه داخلی 192.168.20.0/24. برای خود تانل شبکه 172.16.0.0/30 را در نظر میگیریم.

! ---------- R1 ---------- interface Tunnel0 description GRE to R2-Isfahan ip address 172.16.0.1 255.255.255.252 ip mtu 1400 ip tcp adjust-mss 1360 keepalive 10 3 tunnel source GigabitEthernet0/0/0 tunnel destination 198.51.100.1 tunnel path-mtu-discovery ! router ospf 1 network 172.16.0.0 0.0.0.3 area 0 network 192.168.10.0 0.0.0.255 area 0 ! ! ---------- R2 ---------- interface Tunnel0 description GRE to R1-Tehran ip address 172.16.0.2 255.255.255.252 ip mtu 1400 ip tcp adjust-mss 1360 keepalive 10 3 tunnel source GigabitEthernet0/0/0 tunnel destination 203.0.113.1 tunnel path-mtu-discovery ! router ospf 1 network 172.16.0.0 0.0.0.3 area 0 network 192.168.20.0 0.0.0.255 area 0
حالت پیشفرض تانل در IOS همان GRE روی IPv4 است (tunnel mode gre ip) و لازم نیست آن را بنویسید. اگر فایروال یا ACL روی مسیر هست، پروتکل IP شماره 47 (نه یک پورت TCP یا UDP) باید بین دو IP عمومی باز باشد.
MTU و MSS ؛ منبع بیشتر مشکلات GRE
طبق سند رسمی سیسکو درباره مشکلات Fragmentation ، MTU ، MSS و PMTUD در GRE و IPsec ، GRE به هر بسته ۲۴ بایت اضافه میکند. پس بسته ۱۵۰۰ بایتی کاربر بعد از کپسوله شدن ۱۵۲۴ بایت میشود و از لینک اینترنت با MTU ۱۵۰۰ عبور نمیکند؛ یا fragment میشود (کند و پرهزینه) یا دور ریخته میشود. علامت کلاسیک: ping و وبگردی سبک کار میکند اما صفحههای بزرگ باز نمیشوند و انتقال فایل گیر میکند.
| تانل | MTU دقیق | مقدار توصیهشده سیسکو |
|---|---|---|
| GRE ساده | 1476 | 1400 |
| GRE + IPsec (Transport mode) | 1440 | 1400 |
| GRE + IPsec (Tunnel mode) | 1420 | 1400 |
سیسکو عدد ۱۴۰۰ را پیشنهاد میکند چون رایجترین ترکیبهای GRE و IPsec را پوشش میدهد. سه دستوری که در کانفیگ بالا دیدید با هم کار میکنند:
ip mtu 1400: اندازه بسته روی تانل را محدود میکند.ip tcp adjust-mss 1360: در شروع اتصالهای TCP ، اندازه segment را طوری کم میکند که بستهها اصلاً بزرگتر از ۱۴۰۰ نشوند (۱۴۰۰ منهای ۴۰ بایت هدر IP و TCP).tunnel path-mtu-discovery: اگر در مسیر لینکی با MTU کوچکتر (مثلاً PPPoE با ۱۴۹۲) باشد، MTU تانل را پویا کم میکند.
Keepalive ؛ فهمیدن اینکه طرف مقابل زنده است
GRE ذاتاً Stateless است؛ اگر روتر مقابل خاموش شود، اینترفیس Tunnel همچنان up میماند و مسیرهای استاتیک روی آن فعال میمانند. دستور keepalive 10 3 هر ۱۰ ثانیه یک بسته آزمایشی میفرستد و اگر ۳ پاسخ پشتسرهم نرسد، تانل را down میکند. اگر روی تانل پروتکل مسیریابی (OSPF ، EIGRP) دارید، خود پروتکل قطعی را تشخیص میدهد و keepalive کمتر حیاتی است. برای مسیرهای پشتیبان با تشخیص دقیقتر، از IP SLA استفاده کنید.
امن کردن GRE با IPsec
GRE هیچ رمزنگاری ندارد؛ هر کسی که مسیر را ببیند، ترافیک داخلی شما را میبیند. در اینترنت همیشه GRE را با IPsec ترکیب کنید. سادهترین روش روی IOS و IOS XE ، Tunnel Protection با IKEv2 است:
crypto ikev2 proposal PROP-1 encryption aes-gcm-256 prf sha384 group 19 crypto ikev2 policy POL-1 proposal PROP-1 crypto ikev2 keyring KR-1 peer R2 address 198.51.100.1 pre-shared-key Str0ng-PSK-2026 crypto ikev2 profile PROF-1 match identity remote address 198.51.100.1 255.255.255.255 authentication remote pre-share authentication local pre-share keyring local KR-1 crypto ipsec transform-set TS-1 esp-gcm 256 mode transport crypto ipsec profile IPSEC-GRE set transform-set TS-1 set ikev2-profile PROF-1 ! interface Tunnel0 tunnel protection ipsec profile IPSEC-GRE
همین پیکربندی با اعداد مخالف روی R2 تکرار میشود. برای بیش از چند دفتر، بهجای ساختن تانل نقطهبهنقطه برای هر جفت، سراغ DMVPN بروید.
خطای Recursive Routing
اگر پیام %TUN-5-RECURDOWN: Tunnel0 temporarily disabled due to recursive routing دیدید، یعنی روتر برای رسیدن به مقصد تانل (IP عمومی روتر مقابل) از خود تانل استفاده میکند؛ معمولاً چون پروتکل مسیریابی، مسیر آن IP عمومی را از روی تانل یاد گرفته است. راهحل: IP عمومی و شبکههای WAN را در پروتکل مسیریابی تانل اعلام نکنید و برای مقصد تانل یک مسیر استاتیک از طریق ISP بگذارید:
ip route 198.51.100.1 255.255.255.255 203.0.113.254
بررسی
R1# show interfaces Tunnel0 Tunnel0 is up, line protocol is up Tunnel source 203.0.113.1 (GigabitEthernet0/0/0), destination 198.51.100.1 Tunnel protocol/transport GRE/IP R1# show ip ospf neighbor R1# ping 192.168.20.1 source 192.168.10.1 size 1400 df-bit R1# show crypto ikev2 sa R1# show crypto ipsec sa
پرسشهای متداول
GRE اختصاصی سیسکو است؟
نه. سیسکو آن را طراحی کرد، اما در RFC 1701 و RFC 2784 استاندارد شده و روی تقریباً همه روترها و فایروالها وجود دارد.
تانل up است ولی صفحههای بزرگ باز نمیشوند.
مشکل MTU است؛ ip mtu 1400 و ip tcp adjust-mss 1360 را روی هر دو طرف بگذارید.
GRE از NAT عبور میکند؟
GRE پورت ندارد و از PAT معمولی عبور نمیکند. اگر یکی از روترها پشت NAT است، از GRE over IPsec با NAT-T یا از تانلهای مبتنی بر UDP استفاده کنید.
منابع رسمی
- Resolve IPv4 Fragmentation, MTU, MSS, and PMTUD Issues with GRE and IPsec
- RFC 2784 – Generic Routing Encapsulation (GRE)
مطلب مرتبط: MTU و پیدا کردن Max MTU توسط روتر سیسکو.
مشاوره با AKA NET
برای طراحی اتصال امن دفاتر با GRE ، IPsec ، DMVPN یا SD-WAN با آکانت (AKA NET) تماس بگیرید.
تلفن: 09121308444 | ایمیل: aka@aka.ir | aka.ir
ضمن عرض خسته نباشید و تشکر فراوان به جهت بزرگواری و تلاش در جهت گسترش دانش هموطنان جدید، نیاز به ios جدید برای سوییج 6509 دارم. ممنون میشم در صورت امکان راهنمایی کنید .
خیییییییییییییییییییییییییییییییییییییییییلی ممنون 🙂
موفق باشید 🙂
واقعا ممنون خيلي عالي
ممنونم
موفق و سرافراز باشید
این چه طرز حرف زدنه؟
http://www.allah1.ir/index.aspx?siteid=1&pageid=916
با تشکر از مقاله خوبتان
شما به احتمال بسیار قوی در واحد noc یک fcp همکاری میکنید.