ساخت تونل 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/24R2 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/24R1 tunnel3:
10.0.3.1/24R2 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 است که ۴ پارامتر میگیرد:
<source_ip>: آدرس IP اینترفیس فیزیکی روتر محلی (مثلاً200.1.2.1)<destination_ip>: آدرس IP اینترفیس فیزیکی روتر مقصد (مثلاً200.1.2.2)<my_id>: شناسه عددی روتر محلی (برای تولید Identity و Tunnel ID)<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.1Remote Identity:
222.2.2.2Tunnel 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.2Remote Identity:
222.1.1.1Tunnel 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 مزایای زیر را دارد:
سرعت: پیکربندی کامل IPsec در چند ثانیه انجام میشود
کاهش خطا: احتمال خطای دستی در پیکربندی کاهش مییابد
یکنواختی: پیکربندی در تمام روترها یکسان است
قابلیت استفاده مجدد: میتوانید اسکریپت را برای چندین تونل استفاده کنید
سادگی: نیازی به یادآوری تمام دستورات پیکربندی نیست
پیکربندی دستی (برای درک بهتر)
اگر میخواهید پیکربندی را بهصورت دستی انجام دهید، مراحل زیر را دنبال کنید:
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
تمام پیکربندیها باید مطابق با تنظیمات طرف مقابل باشند.
4) بررسی Identity
Identity های Local و Remote در هر دو طرف باید معکوس باشند:
R1: Local Identity =
222.1.1.1, Remote Identity =222.2.2.2R2: 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.2R2: Source =
200.1.2.2, Destination =200.1.2.1
6) بررسی دسترسی شبکه
اطمینان حاصل کنید که روترها میتوانند از طریق لینک فیزیکی به هم دسترسی داشته باشند:
ping 200.1.2.2
این دستور باید موفق باشد.
جمعبندی
در این کارگاه، نحوه استفاده از اسکریپت addipsec برای ایجاد سریع و آسان یک تونل IPsec بین دو روتر SooDar را فرا گرفتید. استفاده از اسکریپتها در SooDar، پیکربندیهای پیچیده را سادهتر و سریعتر میکند و احتمال خطا را کاهش میدهد.
مزایای کلیدی:
پیکربندی خودکار تمام اجزای IPsec
کاهش زمان پیکربندی
کاهش احتمال خطا
قابلیت استفاده مجدد
با استفاده از اسکریپتهای SooDar، میتوانید شبکههای پیچیده را بهصورت کارآمد و قابل اعتماد پیکربندی کنید.