ساخت تونل IPSec با اسکریپت

مقدمه

IPsec (Internet Protocol Security) یک پروتکل امنیتی در لایه شبکه است که برای رمزگذاری و احراز هویت ترافیک IP استفاده می‌شود. در شبکه‌های سازمانی، از IPsec برای ایجاد تونل‌های امن بین سایت‌های مختلف استفاده می‌شود تا ترافیک به‌صورت رمزگذاری شده منتقل شود.

روتر SooDar از IPsec با پروتکل IKEv2 پشتیبانی می‌کند و امکان ایجاد تونل‌های امن بین روترها را فراهم می‌آورد. یکی از ویژگی‌های قدرتمند SooDar، قابلیت Scripting است که به شما امکان می‌دهد با استفاده از اسکریپت‌های از پیش تعریف شده، پیکربندی‌های پیچیده را به‌صورت خودکار انجام دهید.

در این کارگاه، نحوه استفاده از اسکریپت addipsec برای ایجاد سریع و آسان یک تونل IPsec بین دو روتر SooDar را فرا می‌گیرید.

مرور سناریو

در این کارگاه یک سناریوی ساده اما عملی را پیاده‌سازی می‌کنیم:

  • دو روتر SooDar (R1 و R2) که از طریق یک لینک فیزیکی به هم متصل هستند

  • یک تونل IPsec بین این دو روتر برای رمزگذاری ترافیک

  • استفاده از اسکریپت addipsec برای پیکربندی خودکار تمام اجزای IPsec

  • تست و صحت‌سنجی تونل IPsec

توضیح توپولوژی

توپولوژی سناریو

نودها و نقش‌ها:

  • R1: روتر SooDar اول

  • R2: روتر SooDar دوم

لینک‌ها و آدرس‌دهی:

  • R1 ge0 ↔ R2 ge0: شبکه 200.1.2.0/24 (لینک فیزیکی)

    • R1 ge0: 200.1.2.1/24

    • R2 ge0: 200.1.2.2/24

  • R1 ge1: شبکه 1.1.1.0/24 (LAN محلی)

    • R1 ge1: 1.1.1.1/24

  • R2 ge1: شبکه 2.1.1.0/24 (LAN محلی)

    • R2 ge1: 2.1.1.1/24

  • تونل IPsec: شبکه 10.0.3.0/24

    • R1 tunnel3: 10.0.3.1/24

    • R2 tunnel3: 10.0.3.2/24

پیش‌نیازها

  • دسترسی CLI به روترهای SooDar

  • آشنایی پایه با مفاهیم IPsec و IKEv2

  • دسترسی به اسکریپت addipsec در محیط sooshell

در تمام مراحل، اصل «چرایی قبل از چگونگی» رعایت شده است: ابتدا هدف هر بخش گفته می‌شود، سپس پیکربندی ارائه می‌گردد.

پیکربندی مرحله‌به‌مرحله

1) آماده‌سازی آدرس‌دهی و فعال‌سازی اینترفیس‌ها

چرا: بدون IP و Up بودن اینترفیس‌های فیزیکی، تونل IPsec نمی‌تواند تشکیل شود. اینترفیس‌های فیزیکی باید آدرس IP داشته باشند تا به‌عنوان Source و Destination برای تونل استفاده شوند.

R1

configure terminal
interface ge0
 ip address 200.1.2.1/24
 no shutdown
exit
interface ge1
 ip address 1.1.1.1/24
 no shutdown
exit
end

R2

configure terminal
interface ge0
 ip address 200.1.2.2/24
 no shutdown
exit
interface ge1
 ip address 2.1.1.1/24
 no shutdown
exit
end

2) فعال‌سازی سرویس IPsec

چرا: قبل از استفاده از IPsec، باید سرویس IPsec در روتر فعال شود. این دستور سرویس IPsec را در روتر فعال می‌کند.

R1 و R2

configure terminal
crypto ipsec enable
exit
end

3) استفاده از اسکریپت addipsec

چرا: اسکریپت addipsec تمام پیکربندی‌های لازم برای ایجاد تونل IPsec را به‌صورت خودکار انجام می‌دهد. این شامل:

  • ایجاد IKEv2 Proposal

  • ایجاد IKEv2 Keyring

  • ایجاد IKEv2 Profile

  • ایجاد IPsec Transform Set

  • ایجاد IPsec Profile

  • ایجاد و پیکربندی Interface Tunnel

این اسکریپت در محیط sooshell روتر SooDar در دسترس است.

ساختار اسکریپت addipsec

اسکریپت addipsec یک تابع bash است که ۴ پارامتر می‌گیرد:

  1. <source_ip>: آدرس IP اینترفیس فیزیکی روتر محلی (مثلاً 200.1.2.1)

  2. <destination_ip>: آدرس IP اینترفیس فیزیکی روتر مقصد (مثلاً 200.1.2.2)

  3. <my_id>: شناسه عددی روتر محلی (برای تولید Identity و Tunnel ID)

  4. <peer_id>: شناسه عددی روتر همتا (برای تولید Identity و Tunnel ID)

بارگذاری اسکریپت در محیط sooshell

ابتدا باید اسکریپت را در محیط sooshell روتر بارگذاری کنید:

این دستور تابع addipsec را در محیط shell فعلی بارگذاری می‌کند.

اجرای اسکریپت روی R1

روی روتر R1، اسکریپت را با پارامترهای زیر اجرا کنید:

configure terminal
addipsec 200.1.2.1 200.1.2.2 1 2

این دستور:

  • Source IP: 200.1.2.1 (ge0 روی R1)

  • Destination IP: 200.1.2.2 (ge0 روی R2)

  • My ID: 1 (برای R1)

  • Peer ID: 2 (برای R2)

اسکریپت به‌صورت خودکار:

  • Local Identity: 222.1.1.1

  • Remote Identity: 222.2.2.2

  • Tunnel ID: 3 (1+2)

  • Tunnel IP: 10.0.3.1/24 (10.0.3.1 چون my_id=1)

  • Pre-shared Key: salam!-3!

اجرای اسکریپت روی R2

روی روتر R2، اسکریپت را با پارامترهای معکوس اجرا کنید:

configure terminal
addipsec 200.1.2.2 200.1.2.1 2 1

این دستور:

  • Source IP: 200.1.2.2 (ge0 روی R2)

  • Destination IP: 200.1.2.1 (ge0 روی R1)

  • My ID: 2 (برای R2)

  • Peer ID: 1 (برای R1)

اسکریپت به‌صورت خودکار:

  • Local Identity: 222.2.2.2

  • Remote Identity: 222.1.1.1

  • Tunnel ID: 3 (2+1)

  • Tunnel IP: 10.0.3.2/24 (10.0.3.2 چون my_id=2)

  • Pre-shared Key: salam!-3! (همان کلید مشترک)

توجه کنید که Pre-shared Key در هر دو طرف باید یکسان باشد. اسکریپت addipsec به‌صورت خودکار این کلید را بر اساس Tunnel ID تولید می‌کند، بنابراین در هر دو طرف یکسان خواهد بود.

4) بررسی خروجی اسکریپت

پس از اجرای اسکریپت، خروجی زیر را مشاهده می‌کنید:

local_ip=200.1.2.1
remote_ip=200.1.2.2
local_id=222.1.1.1
remote_id=222.2.2.2
tunnel_id=3
tunnel_ip=10.0.3.1/24

این خروجی اطلاعات تولید شده توسط اسکریپت را نمایش می‌دهد. سپس اسکریپت دستورات پیکربندی را اجرا می‌کند.

5) محتوای اسکریپت addipsec

برای درک بهتر، محتوای اصلی اسکریپت addipsec به‌صورت زیر است:

addipsec(){
    if [ "$#" -ne 4 ]; then
        echo "need argumenst : $0 <source_ip> <destination_ip> <my_id> <peer_id>"
        return 1
    fi
    
    local_id="222.$3.$3.$3"
    remote_id="222.$4.$4.$4"
    tunnel_id=$(($3+$4))
    tunnel_ip="10.0.$tunnel_id.$3/24"
    local_ip=$1
    remote_ip=$2
    psk="salam!-$tunnel_id!"
    
    # دستورات پیکربندی IKEv2 و IPsec
    crypto ikev2 proposal IKE_PROPOSAL
     integrity sha-96
     encryption aes-256
     group 20
    !
    crypto ikev2 profile IKE_PROFILE_$3_$4
     keyring local IKE_KEYRING
     identity local address $local_id
     match identity remote address $remote_id
     authentication local pre-share
     authentication remote pre-share
     proposal IKE_PROPOSAL
    !
    crypto ikev2 keyring IKE_KEYRING
     peer $remote_ip
      address $remote_ip
      pre-shared-key $psk
      identity address $remote_id
    !
    crypto ipsec transform-set IPSec_TS esp hmac sha-256 cipher aes-256
     mode transport
    !
    crypto ipsec profile IPSec_PROFILE_$3_$4
     set transform-set IPSec_TS
     set ikev2-profile IKE_PROFILE_$3_$4
     set security-association lifetime seconds 3600
    !
    interface tunnel$tunnel_id
     tunnel source $local_ip
     tunnel destination $remote_ip
     tunnel protection ipsec profile IPSec_PROFILE_$3_$4
     no shutdown
     ip address $tunnel_ip
    !
}

همانطور که می‌بینید، این اسکریپت تمام مراحل پیکربندی IPsec را به‌صورت خودکار انجام می‌دهد.

صحت‌سنجی و تست

1) بررسی وضعیت اینترفیس Tunnel

پس از اجرای اسکریپت، وضعیت اینترفیس Tunnel را بررسی کنید:

R1

show interface tunnel3

خروجی باید نشان دهد که اینترفیس Tunnel3 Up است و آدرس IP 10.0.3.1/24 دارد.

R2

show interface tunnel3

خروجی باید نشان دهد که اینترفیس Tunnel3 Up است و آدرس IP 10.0.3.2/24 دارد.

2) بررسی وضعیت IPsec SA

برای بررسی وضعیت Security Association های IPsec:

R1 و R2

show crypto ipsec sa

این دستور لیست تمام Security Association های فعال IPsec را نمایش می‌دهد. باید یک SA برای تونل بین R1 و R2 مشاهده کنید.

3) بررسی وضعیت IKEv2

برای بررسی وضعیت IKEv2 Session:

R1 و R2

show crypto ikev2 sa

این دستور وضعیت IKEv2 Session را نمایش می‌دهد. باید یک Session فعال بین R1 و R2 مشاهده کنید.

4) تست اتصال با Ping

برای تست اتصال از طریق تونل IPsec:

از R1 به R2

ping 10.0.3.2

این دستور باید موفق باشد و پاسخ Ping از R2 دریافت شود.

از R2 به R1

ping 10.0.3.1

این دستور باید موفق باشد و پاسخ Ping از R1 دریافت شود.

5) بررسی Routing

برای اطمینان از اینکه ترافیک از طریق تونل IPsec مسیریابی می‌شود:

R1

show ip route

باید مسیر 10.0.3.0/24 از طریق tunnel3 مشاهده شود.

R2

show ip route

باید مسیر 10.0.3.0/24 از طریق tunnel3 مشاهده شود.

6) تست ترافیک رمزگذاری شده

برای اطمینان از اینکه ترافیک واقعاً رمزگذاری می‌شود، می‌توانید از دستور tcpdump یا ابزارهای مانیتورینگ استفاده کنید. ترافیک روی اینترفیس فیزیکی (ge0) باید به‌صورت ESP (Encapsulating Security Payload) مشاهده شود.

مزایای استفاده از اسکریپت

استفاده از اسکریپت addipsec مزایای زیر را دارد:

  1. سرعت: پیکربندی کامل IPsec در چند ثانیه انجام می‌شود

  2. کاهش خطا: احتمال خطای دستی در پیکربندی کاهش می‌یابد

  3. یکنواختی: پیکربندی در تمام روترها یکسان است

  4. قابلیت استفاده مجدد: می‌توانید اسکریپت را برای چندین تونل استفاده کنید

  5. سادگی: نیازی به یادآوری تمام دستورات پیکربندی نیست

پیکربندی دستی (برای درک بهتر)

اگر می‌خواهید پیکربندی را به‌صورت دستی انجام دهید، مراحل زیر را دنبال کنید:

1) ایجاد IKEv2 Proposal

configure terminal
crypto ikev2 proposal IKE_PROPOSAL
 integrity sha-96
 encryption aes-256
 group 20
exit

2) ایجاد IKEv2 Keyring

crypto ikev2 keyring IKE_KEYRING
 peer 200.1.2.2
  address 200.1.2.2
  pre-shared-key salam!-3!
  identity address 222.2.2.2
exit

3) ایجاد IKEv2 Profile

crypto ikev2 profile IKE_PROFILE_1_2
 keyring local IKE_KEYRING
 identity local address 222.1.1.1
 match identity remote address 222.2.2.2
 authentication local pre-share
 authentication remote pre-share
 proposal IKE_PROPOSAL
exit

4) ایجاد IPsec Transform Set

crypto ipsec transform-set IPSec_TS esp hmac sha-256 cipher aes-256
 mode transport
exit

5) ایجاد IPsec Profile

crypto ipsec profile IPSec_PROFILE_1_2
 set transform-set IPSec_TS
 set ikev2-profile IKE_PROFILE_1_2
 set security-association lifetime seconds 3600
exit

6) پیکربندی Interface Tunnel

interface tunnel3
 tunnel source 200.1.2.1
 tunnel destination 200.1.2.2
 tunnel protection ipsec profile IPSec_PROFILE_1_2
 no shutdown
 ip address 10.0.3.1/24
exit
end

همانطور که می‌بینید، اسکریپت تمام این مراحل را به‌صورت خودکار انجام می‌دهد.

عیب‌یابی

اگر تونل IPsec تشکیل نشد، موارد زیر را بررسی کنید:

1) بررسی فعال بودن IPsec

show crypto ipsec

باید سرویس IPsec فعال باشد.

2) بررسی پیکربندی IKEv2

show crypto ikev2 proposal
show crypto ikev2 profile
show crypto ikev2 keyring

تمام پیکربندی‌ها باید مطابق با تنظیمات طرف مقابل باشند.

3) بررسی Pre-shared Key

Pre-shared Key در هر دو طرف باید یکسان باشد. در اسکریپت addipsec، این کلید بر اساس Tunnel ID تولید می‌شود.

4) بررسی Identity

Identity های Local و Remote در هر دو طرف باید معکوس باشند:

  • R1: Local Identity = 222.1.1.1, Remote Identity = 222.2.2.2

  • R2: Local Identity = 222.2.2.2, Remote Identity = 222.1.1.1

5) بررسی Source و Destination

Source و Destination در هر دو طرف باید معکوس باشند:

  • R1: Source = 200.1.2.1, Destination = 200.1.2.2

  • R2: Source = 200.1.2.2, Destination = 200.1.2.1

6) بررسی دسترسی شبکه

اطمینان حاصل کنید که روترها می‌توانند از طریق لینک فیزیکی به هم دسترسی داشته باشند:

ping 200.1.2.2

این دستور باید موفق باشد.

جمع‌بندی

در این کارگاه، نحوه استفاده از اسکریپت addipsec برای ایجاد سریع و آسان یک تونل IPsec بین دو روتر SooDar را فرا گرفتید. استفاده از اسکریپت‌ها در SooDar، پیکربندی‌های پیچیده را ساده‌تر و سریع‌تر می‌کند و احتمال خطا را کاهش می‌دهد.

مزایای کلیدی:

  • پیکربندی خودکار تمام اجزای IPsec

  • کاهش زمان پیکربندی

  • کاهش احتمال خطا

  • قابلیت استفاده مجدد

با استفاده از اسکریپت‌های SooDar، می‌توانید شبکه‌های پیچیده را به‌صورت کارآمد و قابل اعتماد پیکربندی کنید.