همانطور که می دانید زمانی که با دستور ip یک route استاتیک اضافه میکنید ولی با restart و یا shutdown شدن سیستم route شما از بین خواهد رفت. برای اینکه این تغییرات به صورت دایم اعمال شوند و بعد از ریست کردن سیستم و یا ریست تنظیمات شبکه از بین نروند باید آنها را در فایل های کانفیگ در دایرکتوری /etc/sysconfig/network-scripts/ قرار داد. فرمت نام این فایل باید 'route-'interfacename باشد. (مثلا route-eth0 یا route-eth1 )
شما به دو صورت میتوانید در این فایل route خود را بنویسید :
-با استفاده از دستور ip
-با استفاده از فرمت network/netmsk
در اینجا ما هر دو روش را توضیح خواهیم داد.
1- نحوه ی اضافه کردن static route با استفاده از دستور ip در فایل ifg :
اگر بخواهیم روی یک اینترفیس مثلا eth0 روتی اضافه کنیم ابتدا فایل route-eth0 را در مسیر /etc/sysconfig/network-scripts/ ایجاد میکنیم و در خط اول آن یک route به سمت default gateway تعریف میکنیم :
این مورد فقط د رصورتی ضروری است که default gateway از طریق dhcp و یا در فایل /etc/sysconfig/network تعریف نشده باشد.
در دستور بالا 192.168.1.1 ای پی default gateway است و به جای interface باید اینترفیسی که به آن رنج متصل است (یا به آن رنج دسترسی دارد) قرا دهیم. آپشن dev را میتوان حذف کرد.
دقت کنید که اعمال این کانفیگ در این فایل به تنظیمات موجود در فایل /etc/sysconfig/network اولویت دارد.
اگر روتی به سمت یک network دیگر مورد نیازتان باشد باید یک خط روت به شکل زیر به فایل اضافه کنید:
در روت بالا 10.0.0.0/24 آدرس شبکه به همراه prefix netmask آن شبکه میباشد و آی پی 192.168.1.1 آی پی موردنظر برای دسترسی به این network است.ترجیحا باید از آدرس next hop استفاده کنیم ولی ip ادرس اینترفیس موجود هم کار میکند. next hop در حقیقت آن سر دیگر است که با اینترفیس ما در ارتباط است مثل یک gateway یا router. آپشن dev برای مشخص کردن interface موجود استفاده میشود البته ضروری نیست. شما هر تعداد روت static که خواستید میتوانید در اینجا اضافه کنید.
در نمونه زیر ما فایل route-eth0 را با فرمت کامند ip ایجاد کردیم. default gateway ما آدرس 192.168.0.1 است (اینترفیس eth0 ) و با استفاده از آدرس 192.168.0.10 ما به دو رنج دیگر هم دسترسی پیدا خواهیم کرد.در دو خط بعد دسترسی ما به شبکه ی 10.10.10.0/24 و به هاست 172.16.1.10/32 لحاظ میشود :
در مثال بالا پکتهایی که به شبکه لوکال 192.168.0.0/24 ارسال میشوند به اینترفیس خروجی مربوط به این نتورک هدایت خواهند شد. پکتهایی که به شبکه 10.10.10.0/24 و هاست 172.16.1.10/32 ارسال میشوند به 192.168.0.10 هدایت خواهند شد. بقیه پکت ها همه به سمت default gateway ارسال می شوند.
نکته : اگر default gateway از قبل و از طریق dhcp اختصاص داده شد باشد و شما دوباره آنرا در فایل route-eth0 در فرمت دستور ip تعریف کنید ، منجر به دریافت یکی از اروررهای زیر در حین start-up و یا up کردن یک اینترفیس (با دستور ifup ) خواهد شد:
2- نحوه ی اضافه کردن static route با استفاده از فرمت Network/Netmask
در این روش شما متوانید در فایل route-eth0 از فرمت Network/Netmask استفاده کنید.
در زیر یک نمونه از این فرمت را مشاهده میکنید :
ADDRESS0=10.10.10.0 : این خط آدرس شبکه ی ریموت و یا هاستی هست که میخواهیم دسترسی به سمت آنرا برقرار کنیم
NETMASK0=255.255.255.0 : این خط برای تعریف NETMASK شبکه ای هست که با خط اول تعریف شد.
GATEWAY0=192.168.1.1 : و در نهایت این خط برای تعریف gateway ای هست که از طریق آن میتوانیم به شبکه ی ADDRESS0=10.10.10.0 دسترسی پیدا کنیم.
مثال زیر یک نمونه از فایل route-eth0 می باشد که در آن از فرمت Network/Netmask استفاده کردیم. (در اینجا ما مثال ها را در مورد eth0 درنظر میگیریم و شما اگر روی eth1 کار میکنید دقت کنید که باید نام فایلتان route-eth1 باشد). در مثال زیربرای دسترسی به شبکه ی 10.10.10.0/24 و شبکه ی 172.16.1.0/24 دو روت استاتیک (statis route) و با استفاده از فرمت Network/Netmask ایجاد کردیم:
دقت کنید که روتهای بعدی باید به صورت سلسله مراتبی و به ترتیب شماره گذاری شوند . به طور مثال ADDRESS0, ADDRESS1, ADDRESS2, و الی آخر....
در مثال بعدی نحوه تعریف static route برای یک subnet متفاوت روی یک ماشین با ساب نت 192.168.0.0/24 را مشاهده میکنیم. ماشین موردنظر یک اینترفیس eth0 در ساب نت 192.168.0.0/24 و یک اینترفیس eth1 (با آی پی 10.10.10.1) در ساب نت 10.10.10.0/24 دارد :
موفق و سربلند باشید.
شما به دو صورت میتوانید در این فایل route خود را بنویسید :
-با استفاده از دستور ip
-با استفاده از فرمت network/netmsk
در اینجا ما هر دو روش را توضیح خواهیم داد.
1- نحوه ی اضافه کردن static route با استفاده از دستور ip در فایل ifg :
اگر بخواهیم روی یک اینترفیس مثلا eth0 روتی اضافه کنیم ابتدا فایل route-eth0 را در مسیر /etc/sysconfig/network-scripts/ ایجاد میکنیم و در خط اول آن یک route به سمت default gateway تعریف میکنیم :
کد PHP:
default via 192.168.1.1 dev interface
در دستور بالا 192.168.1.1 ای پی default gateway است و به جای interface باید اینترفیسی که به آن رنج متصل است (یا به آن رنج دسترسی دارد) قرا دهیم. آپشن dev را میتوان حذف کرد.
دقت کنید که اعمال این کانفیگ در این فایل به تنظیمات موجود در فایل /etc/sysconfig/network اولویت دارد.
اگر روتی به سمت یک network دیگر مورد نیازتان باشد باید یک خط روت به شکل زیر به فایل اضافه کنید:
کد PHP:
10.10.10.0/24 via 192.168.1.1 [dev interface]
در نمونه زیر ما فایل route-eth0 را با فرمت کامند ip ایجاد کردیم. default gateway ما آدرس 192.168.0.1 است (اینترفیس eth0 ) و با استفاده از آدرس 192.168.0.10 ما به دو رنج دیگر هم دسترسی پیدا خواهیم کرد.در دو خط بعد دسترسی ما به شبکه ی 10.10.10.0/24 و به هاست 172.16.1.10/32 لحاظ میشود :
کد PHP:
default via 192.168.0.1 dev eth0
10.10.10.0/24 via 192.168.0.10 dev eth0
172.16.1.10/32 via 192.168.0.10 dev eth0
نکته : اگر default gateway از قبل و از طریق dhcp اختصاص داده شد باشد و شما دوباره آنرا در فایل route-eth0 در فرمت دستور ip تعریف کنید ، منجر به دریافت یکی از اروررهای زیر در حین start-up و یا up کردن یک اینترفیس (با دستور ifup ) خواهد شد:
کد PHP:
"RTNETLINK answers: File exists"
یا :
'Error: either "to" is a duplicate, or "X.X.X.X" is a garbage.'
2- نحوه ی اضافه کردن static route با استفاده از فرمت Network/Netmask
در این روش شما متوانید در فایل route-eth0 از فرمت Network/Netmask استفاده کنید.
در زیر یک نمونه از این فرمت را مشاهده میکنید :
کد PHP:
ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.1.1
NETMASK0=255.255.255.0 : این خط برای تعریف NETMASK شبکه ای هست که با خط اول تعریف شد.
GATEWAY0=192.168.1.1 : و در نهایت این خط برای تعریف gateway ای هست که از طریق آن میتوانیم به شبکه ی ADDRESS0=10.10.10.0 دسترسی پیدا کنیم.
مثال زیر یک نمونه از فایل route-eth0 می باشد که در آن از فرمت Network/Netmask استفاده کردیم. (در اینجا ما مثال ها را در مورد eth0 درنظر میگیریم و شما اگر روی eth1 کار میکنید دقت کنید که باید نام فایلتان route-eth1 باشد). در مثال زیربرای دسترسی به شبکه ی 10.10.10.0/24 و شبکه ی 172.16.1.0/24 دو روت استاتیک (statis route) و با استفاده از فرمت Network/Netmask ایجاد کردیم:
کد PHP:
ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.0.10
ADDRESS1=172.16.1.10
NETMASK1=255.255.255.0
GATEWAY1=192.168.0.10
در مثال بعدی نحوه تعریف static route برای یک subnet متفاوت روی یک ماشین با ساب نت 192.168.0.0/24 را مشاهده میکنیم. ماشین موردنظر یک اینترفیس eth0 در ساب نت 192.168.0.0/24 و یک اینترفیس eth1 (با آی پی 10.10.10.1) در ساب نت 10.10.10.0/24 دارد :
کد PHP:
ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=10.10.10.1
کامنت