سیسکو GRE چیست ؟

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

در این مطلب GRE را از مفهوم تانلینگ تا کانفیگ کامل روی روتر سیسکو، مسئله MTU و MSS ، Keepalive ، امن کردن با IPsec و خطای معروف Recursive Routing مرور می‌کنیم.

تانل GRE بین دو روتر سیسکو
تانل GRE : اتصال دو شبکه داخلی از روی اینترنت

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
بسته اصلی داخل هدر 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 را در نظر می‌گیریم.

توپولوژی GRE بین دو روتر
توپولوژی نمونه GRE بین دو روتر سیسکو
! ---------- 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 استفاده کنید.

منابع رسمی

مطلب مرتبط: MTU و پیدا کردن Max MTU توسط روتر سیسکو.

مشاوره با AKA NET

برای طراحی اتصال امن دفاتر با GRE ، IPsec ، DMVPN یا SD-WAN با آکانت (AKA NET) تماس بگیرید.

تلفن: 09121308444  |  ایمیل: aka@aka.ir  |  aka.ir

8 فکر می‌کنند “سیسکو GRE چیست ؟”

  1. mohamad

    ضمن عرض خسته نباشید و تشکر فراوان به جهت بزرگواری و تلاش در جهت گسترش دانش هموطنان جدید، نیاز به ios جدید برای سوییج 6509 دارم. ممنون میشم در صورت امکان راهنمایی کنید .

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *