در این مقاله نحوه تعریف ip static روی یک سیستم لینوکس ubuntu از طریق command line را شرح خواهیم داد. این مقاله تنظیمات شبکه برای تمامی ورژن های اخیر اوبونتو را پوشش میدهد و شامل دستورالعمل های تنظیمات static ip address، تعریف hostname و تنظیمات DNS (مخف name resolving) میباشد.
تنظیمات شبکه روی Ubuntu 17 و ورژن های بالاتر
در اوبونتو ورژن 17.10 تنظیمات شبکه به طور کامل تغییر یافته است. ابزار جدیدی به نام netplan توسط Canonical (شرکتی که توزیع لینوکسی اوبونتو را develope میکند) معرفی شده است که به منظور مدیریت تنظیمات شبکه روی تمامی ورژن های جدید Ubuntu که از ورژن 17.10 شروع میشود استفاده می گردد. تنظیمات قبلی شبکه که در فایل /etc/network/interfaces موجود بود دیگر مورد استفاده قرار نمی گیرد.
تنظیمات IP آدرس Static با استفاده از Netplan
در اینجا مراحل کانفیگ یک ip آدرس static با استفاده از netplan را شرح میدهیم. فایل تنظیمات netplan در پوشه /etc/netplan قرار گرفته است. فایل کانفیگ تنظیمات کارت شبکه در مسیر /etc/netplan/01-netcfg.yaml میباشد.
فایل کانفیگ را با استفاده از یک ادیتور متن باز کنید.
ساختار کانفیگ فایل تنظیمات کارت شبکه در اوبونتو به زبان برنامه نویسی پایتون (فرمت .yaml) میباشد، در نتیجه ساختار خطوط حائز اهمیت است. (منظور این هست که تورفتگی های خطور مهم هست) در اینجا یک مثال از نحوه آدرس دهی static به IPV4 (آدرس 192.168.1.100) روی اولین اینترفیس شبکه ens33 به همراه ip آدرس 192.168.1.1 برای gateway را داریم. سرور از DNS رایگان Google در حقیقت 8.8.8.8 و 8.8.4.4 برای name resolving استفاده خواهد کرد.
یک IP آدرس V6 نیز میتوان به شیوه زیر به خط addresses اضافه و با استفاده از یک comma مجزا شود.
بسیار مهم است که شما IPV6 درون تک کوتیشن (single quotes) قرار دهید، در غیر اینصورت شما خطای syntax دریافت خواهید کرد.
برای اعمال تغییرات دستور زیر را اجرا کنید.
و یا برای دریافت خروجی های بیشتر (در صورتیکه فایل کانفیگ netplan بدون هیچ مشکلی باشد) میتوانید آنرا به همراه آپشن --debug استفاده کنید.
تنظیمات یک آدرس DHCP با استفاده از Netplan
در نمونه زیر تنظیمات مربوط به IPV4 و IPV6 به صورت DHCP موجود است.
برای اعمال تغییرات دستور زیر را اجرا کنید.
آپشن های بیشتر از Netplan
Netplan یک سیستم تنظیماتی جدید و پیچیده برای کانفیگ کارت های شبکه، تجهیزات ویرچوال، VLAN ها و Bridge ها در اوبونتو 17.10 میباشد. برای نمونه مثال های بیشتر و توضیحات عمیق تر روی syntax آن میتوانید صفحه راهنمای (man page) آنرا مطالعه کنید.
تنظیمات شبکه روی Ubuntu 12.04 - 17.04 (شامل اوبونتو 16.04 LTS)
مرحله 1 : تنظیم Interface شبکه
در این مرحله شما به صورت دستی اینترفیس شبکه تان را با ویرایش کردن فایل interfaces و با استفاده از ادیتور متنی دلخواه تان (nano, gedit, vi, vim) کانفیگ خواهید کرد. در این مقاله من از vim استفاده میکنم.
همچنین توصیه میشود : آموزش نصب vi/vim و تنظیمات آن
برای اعمال تغییرات در تنظیمات شبکه نیاز به دسترسی root خواهید داشت، در نتیجه با دسترسی root فایل بالا را باز کنید.
سیستم های Ubuntu با systemd (شبیه ubuntu 16.04 و بالاتر)، به جای اینترفیس eth0 از ens33 استفاده میکند و کلمه dhcp هم با کلمه dynamic جایگزین شده است.
یک نمونه کانفیگ برای تنظیمات DHCP آی پی آدرس به شرح زیر میباشد.
تنظیم کارت های شبکه به صورت static روی ورژن های قدیمی تر اوبونتو بخشی شبیه به زیر خواهد داشت.
در اینجا مثالی برای یک نسخه قدیمی تر اوبونتو را آورده ایم.
و در زیر مثالی برای ورژن Ubntu 16.04 و بالاتر موجود است.
در تصویر زیر نیز فایل تنظیمات شبکه به صورت کامل، در یک سیستم اوبونتو 16.04 را مشاهده میکنید.
مرحله 2 : تنظیمات DNS
تغییرات در /etc/resolv.conf تنها روی سیستم های 16.04 به پایین نیاز است، برای ورژن های جدید تر اوبونتو name server ها در فایل /etc/network/interfaces کانفیگ میشوند.
a ) ورژن های پایین تر از Ubuntu 14.04
در این مرحله شما میتوانید به صورت دستی فایل کانفیگ DNS خود را تنظیم کنید.
بعد از اینکه فایل را با ادیتور مورد نظر باز کردید اطلاعات زیر را در آن وارد کنید.
در زیر یک نمونه مثال را مشاهده میکنید.
b) سیستم عامل Ubuntu 14.04 به بالا
فایل /etc/network/interfaces را مجدد باز کنید.
خط dns-nameservers 8.8.8.8 را دقیقا بعد از خط gateway اضافه کنید.
name سرورهای 8.8.8.8 و 8.8.4.4 توسط گوگل برای استفاده عموم فراهم آمده اند، در نتیجه شما میتوانید از آنها در تنظیمات شبکه خود استفاده کنید.
مرحله 3 : Reset کردن تنظیمات Network
در نهایت میتوانید همانند زیر interface شبکه تان را با تنظیمات جدید به صورت دستی restart کنید.
که باید نتیجه ای شبیه به زیر برگرداند.
در اینجا میتوانید بررسی کنید که آیا تنظیمات به درستی اعمال شده است یا خیر.
اگر همه چیز به درستی انجام شده باشد باید نتیجه زیر را دریافت کنید.
تنظیمات Hostname
hostname یک اوبونتو Server یا Desktop از طریق فایل های /etc/hostname و /etc/hosts تنظیم میشود. فایل /etc/hostname نام هاست واقعی سیستم را تعریف میکند در حالیکه فایل /etc/hosts برای resolve کردن نام local مورد استفاده قرار میگیرد.
در این مثال من hostname سیستم خودم را به honey.linux-zone.org تغییر خواهم داد. ابتدا فایل /etc/hostname را باز میکنیم.
فایل hostname فقط شامل hostname در حال حاضر میباشد که شما باید آنرا تغییر دهید. در نهایت فایل را ذخیره کنید.
سپس فایل /etc/hosts را با یک ویرایشگر باز کنید.
خطی را که با ip آدرس همین سیستم شروع میشود را شبیه به زیر تغییر دهید.
در زیر تصویری از فایل hosts را مشاهده میکنید.
ساختار این فایل شبیه به زیر میباشد.
در نهایت برای اعمال تغییرات hostname باید سیستم را restart کنید.
موفق باشید...
تنظیمات شبکه روی Ubuntu 17 و ورژن های بالاتر
در اوبونتو ورژن 17.10 تنظیمات شبکه به طور کامل تغییر یافته است. ابزار جدیدی به نام netplan توسط Canonical (شرکتی که توزیع لینوکسی اوبونتو را develope میکند) معرفی شده است که به منظور مدیریت تنظیمات شبکه روی تمامی ورژن های جدید Ubuntu که از ورژن 17.10 شروع میشود استفاده می گردد. تنظیمات قبلی شبکه که در فایل /etc/network/interfaces موجود بود دیگر مورد استفاده قرار نمی گیرد.
تنظیمات IP آدرس Static با استفاده از Netplan
در اینجا مراحل کانفیگ یک ip آدرس static با استفاده از netplan را شرح میدهیم. فایل تنظیمات netplan در پوشه /etc/netplan قرار گرفته است. فایل کانفیگ تنظیمات کارت شبکه در مسیر /etc/netplan/01-netcfg.yaml میباشد.
فایل کانفیگ را با استفاده از یک ادیتور متن باز کنید.
کد PHP:
$ sudo vim /etc/netplan/01-netcfg.yaml
ساختار کانفیگ فایل تنظیمات کارت شبکه در اوبونتو به زبان برنامه نویسی پایتون (فرمت .yaml) میباشد، در نتیجه ساختار خطوط حائز اهمیت است. (منظور این هست که تورفتگی های خطور مهم هست) در اینجا یک مثال از نحوه آدرس دهی static به IPV4 (آدرس 192.168.1.100) روی اولین اینترفیس شبکه ens33 به همراه ip آدرس 192.168.1.1 برای gateway را داریم. سرور از DNS رایگان Google در حقیقت 8.8.8.8 و 8.8.4.4 برای name resolving استفاده خواهد کرد.
کد PHP:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
dhcp6: no
addresses: [192.168.10.200/24]
gateway4: 192.168.10.1
nameservers:
addresses: [8.8.8.8,8.8.4.4]
یک IP آدرس V6 نیز میتوان به شیوه زیر به خط addresses اضافه و با استفاده از یک comma مجزا شود.
کد PHP:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
dhcp6: no
addresses: [192.168.10.200/24, '2001:1::1/64']
gateway4: 192.168.10.1
nameservers:
addresses: [8.8.8.8,8.8.4.4]
بسیار مهم است که شما IPV6 درون تک کوتیشن (single quotes) قرار دهید، در غیر اینصورت شما خطای syntax دریافت خواهید کرد.
برای اعمال تغییرات دستور زیر را اجرا کنید.
کد PHP:
$ sudo netplan apply
و یا برای دریافت خروجی های بیشتر (در صورتیکه فایل کانفیگ netplan بدون هیچ مشکلی باشد) میتوانید آنرا به همراه آپشن --debug استفاده کنید.
کد PHP:
$ sudo netplan --debug apply
تنظیمات یک آدرس DHCP با استفاده از Netplan
در نمونه زیر تنظیمات مربوط به IPV4 و IPV6 به صورت DHCP موجود است.
کد PHP:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: yes
dhcp6: yes
برای اعمال تغییرات دستور زیر را اجرا کنید.
کد PHP:
$ sudo netplan apply
آپشن های بیشتر از Netplan
Netplan یک سیستم تنظیماتی جدید و پیچیده برای کانفیگ کارت های شبکه، تجهیزات ویرچوال، VLAN ها و Bridge ها در اوبونتو 17.10 میباشد. برای نمونه مثال های بیشتر و توضیحات عمیق تر روی syntax آن میتوانید صفحه راهنمای (man page) آنرا مطالعه کنید.
تنظیمات شبکه روی Ubuntu 12.04 - 17.04 (شامل اوبونتو 16.04 LTS)
مرحله 1 : تنظیم Interface شبکه
در این مرحله شما به صورت دستی اینترفیس شبکه تان را با ویرایش کردن فایل interfaces و با استفاده از ادیتور متنی دلخواه تان (nano, gedit, vi, vim) کانفیگ خواهید کرد. در این مقاله من از vim استفاده میکنم.
کد PHP:
$ sudo vim /etc/network/interfaces
همچنین توصیه میشود : آموزش نصب vi/vim و تنظیمات آن
برای اعمال تغییرات در تنظیمات شبکه نیاز به دسترسی root خواهید داشت، در نتیجه با دسترسی root فایل بالا را باز کنید.
کد PHP:
auto lo eth0
iface lo inet loopback
iface eth0 inet dynamic
سیستم های Ubuntu با systemd (شبیه ubuntu 16.04 و بالاتر)، به جای اینترفیس eth0 از ens33 استفاده میکند و کلمه dhcp هم با کلمه dynamic جایگزین شده است.
یک نمونه کانفیگ برای تنظیمات DHCP آی پی آدرس به شرح زیر میباشد.
کد PHP:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens33
iface ens33 inet dhcp
تنظیم کارت های شبکه به صورت static روی ورژن های قدیمی تر اوبونتو بخشی شبیه به زیر خواهد داشت.
کد PHP:
auto lo eth0
iface lo inet loopback
iface eth0 inet static
address xxx.xxx.xxx.xxx (enter your ip here)
netmask xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx (enter gateway ip here,usually the address of the router)
در اینجا مثالی برای یک نسخه قدیمی تر اوبونتو را آورده ایم.
کد PHP:
auto lo eth0
iface lo inet loopback
iface eth0 inet static
address 192.168.10.150
netmask 255.255.255.0
gateway 192.168.10.1
و در زیر مثالی برای ورژن Ubntu 16.04 و بالاتر موجود است.
کد PHP:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens32
iface ens32 inet static
address 192.168.10.150
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
gateway 192.168.10.1
dns-nameservers 8.8.8.8 8.8.4.4
در تصویر زیر نیز فایل تنظیمات شبکه به صورت کامل، در یک سیستم اوبونتو 16.04 را مشاهده میکنید.
مرحله 2 : تنظیمات DNS
تغییرات در /etc/resolv.conf تنها روی سیستم های 16.04 به پایین نیاز است، برای ورژن های جدید تر اوبونتو name server ها در فایل /etc/network/interfaces کانفیگ میشوند.
a ) ورژن های پایین تر از Ubuntu 14.04
در این مرحله شما میتوانید به صورت دستی فایل کانفیگ DNS خود را تنظیم کنید.
کد PHP:
$ sudo vim /etc/resolv.conf
بعد از اینکه فایل را با ادیتور مورد نظر باز کردید اطلاعات زیر را در آن وارد کنید.
کد PHP:
nameserver xxx.xxx.xxx.xxx (enter your dns server ip)
nameserver xxx.xxx.xxx.xxx (enter your alt dns server ip)
در زیر یک نمونه مثال را مشاهده میکنید.
کد PHP:
nameserver 8.8.8.8
nameserver 8.8.4.4
b) سیستم عامل Ubuntu 14.04 به بالا
فایل /etc/network/interfaces را مجدد باز کنید.
کد PHP:
$ sudo vim /etc/network/interfaces
خط dns-nameservers 8.8.8.8 را دقیقا بعد از خط gateway اضافه کنید.
کد PHP:
auto lo
iface lo inet loopback
iface ens33 inet static
address xxx.xxx.xxx.xxx (enter your ip here)
netmask xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx (enter gateway ip here,usually the address of the router)
dns-nameservers 8.8.8.8
name سرورهای 8.8.8.8 و 8.8.4.4 توسط گوگل برای استفاده عموم فراهم آمده اند، در نتیجه شما میتوانید از آنها در تنظیمات شبکه خود استفاده کنید.
مرحله 3 : Reset کردن تنظیمات Network
در نهایت میتوانید همانند زیر interface شبکه تان را با تنظیمات جدید به صورت دستی restart کنید.
- برای ورژن های پایین تر از Ubuntu 14.04 از اسکریپت init برای networking استفاده میکنید.
کد PHP:
$ sudo /etc/init.d/networking restart
که باید نتیجه ای شبیه به زیر برگرداند.
کد PHP:
*Reconfiguring network interfaces… [OK]
- برای Ubuntu 14.04 و ورژن های جدید تر از systemctl استفاده میکنیم.
کد PHP:
$ sudo systemctl restart ifup@eth0
در اینجا میتوانید بررسی کنید که آیا تنظیمات به درستی اعمال شده است یا خیر.
کد PHP:
ifconfig
اگر همه چیز به درستی انجام شده باشد باید نتیجه زیر را دریافت کنید.
کد PHP:
$ ifconfig
ens32 Link encap:Ethernet HWaddr 00:0c:29:b4:5e:dc
inet addr:192.168.10.150 Bcast:192.168.10.255 Mask:255.255.255.0
تنظیمات Hostname
hostname یک اوبونتو Server یا Desktop از طریق فایل های /etc/hostname و /etc/hosts تنظیم میشود. فایل /etc/hostname نام هاست واقعی سیستم را تعریف میکند در حالیکه فایل /etc/hosts برای resolve کردن نام local مورد استفاده قرار میگیرد.
در این مثال من hostname سیستم خودم را به honey.linux-zone.org تغییر خواهم داد. ابتدا فایل /etc/hostname را باز میکنیم.
کد PHP:
$ sudo vim /etc/hostname
فایل hostname فقط شامل hostname در حال حاضر میباشد که شما باید آنرا تغییر دهید. در نهایت فایل را ذخیره کنید.
سپس فایل /etc/hosts را با یک ویرایشگر باز کنید.
کد PHP:
$ sudo vim /etc/hosts
خطی را که با ip آدرس همین سیستم شروع میشود را شبیه به زیر تغییر دهید.
کد PHP:
192.168.1.100 honey.linux-zone.org mohammad
در زیر تصویری از فایل hosts را مشاهده میکنید.
ساختار این فایل شبیه به زیر میباشد.
کد PHP:
[IP Addesss] [full hostname incl. domain] [local part of the hostname]
در نهایت برای اعمال تغییرات hostname باید سیستم را restart کنید.
موفق باشید...