اَبرِ دیجیتال، مرکز تخصصی ارائه سرویس های ابری، سرور مجازی/اختصاصی، هاست و دامنه

اَبرِ دیجیتال، مرکز تخصصی ارائه سرویس های ابری

دریافت مشاوره رایگان

آموزش تنظیم IPv4 و IPv6 در Debian

 

مقدمه

 

در این مقاله مراحل پیکربندی شبکه در توزیع‌های Debian را برای IPv4 و IPv6 توضیح می‌دهیم. تمرکز بر نسخه‌های مختلف Debian (از جمله Debian 9 Stretch، Debian 10 Buster، Debian 11 Bullseye، Debian 12 Bookworm) است و روش‌های رایج: استفاده از فایل /etc/network/interfaces، سیستم systemd-networkd، NetworkManager و تنظیمات netplan-like (در صورت استفاده از لایه‌های بالاتر) پوشش داده می‌شود. همچنین روش‌هایی برای آدرس‌دهی استاتیک، آدرس‌دهی از طریق DHCPv4 و DHCPv6، پیکربندی آدرس‌های اضافی، مسیرهای استاتیک، تنظیمات RA (Router Advertisements)، و فعال‌سازی forwarding و فایروال ارائه شده است. مثال‌ها و دستورات عملی ارائه شده‌اند. منابع اصلی که بخشی از راهنما را بر پایه آن‌ها تنظیم کرده‌ایم شامل لینک‌های ارائه‌شده توسط شما و مستندات Debian است.

 

پیش‌نیازها و مفاهیم پایه

 

– دسترسی کاربر root یا استفاده از sudo.

– آشنایی با مفاهیم پایه شبکه: آدرس IPv4، IPv6، ماسک، prefix، gateway، DHCP، SLAAC، RA.

– فایل‌های مهم: /etc/network/interfaces (روش سنتی)، /etc/network/interfaces.d/*، /etc/systemd/network/*.network (systemd-networkd)، /etc/NetworkManager/system-connections/* (NetworkManager)، /etc/resolv.conf (DNS).

– سرویس‌های مرتبط: ifupdown، systemd-networkd، NetworkManager، isc-dhcp-client، wide-dhcpv6-client، radvd (در صورت نیاز به RA روی روتر)، iproute2 (فرمان ip).

 

توصیه: قبل از اعمال تغییرات در سرورهای از راه دور، یک جلسه کنسول دارید یا روش بازیابی شبکه (مانند تنظیمات کنسول یا کار با out-of-band) برای جلوگیری از قطع ارتباط داشته باشید.

 

ساختار مقاله

 

  1. پیکربندی سنتی با /etc/network/interfaces (Debian 9/10/11/12 در صورت نصب ifupdown)
  2. پیکربندی با systemd-networkd (رسمی‌تر در Debian 11/12)
  3. پیکربندی با NetworkManager (محیط دسکتاپ)
  4. آدرس‌دهی IPv6: SLAAC، stateful DHCPv6، static، double-stack
  5. نمونه‌های کامل برای هر نسخه Debian (پیکربندی IPv4 و IPv6)
  6. مسیرهای استاتیک و چند آدرس
  7. فعال‌سازی forwarding و NAT (در صورت نیاز)
  8. عیب‌یابی شبکه و ابزارها
  9. نکات امنیتی و بهترین شیوه‌ها
  10. جمع‌بندی و منابع

 

1) پیکربندی سنتی با /etc/network/interfaces

 

(روش سنتی که در بسیاری از سرورها هنوز استفاده می‌شود؛ بسته ifupdown ضروری است)

 

#ساختار فایل

موقعیت:

/etc/network/interfaces

 

یا

/etc/network/interfaces.d/example.cfg

 

 

قالب کلی برای IPv4 استاتیک:

auto eth0
iface eth0 inet static
address 192.0.2.10
netmask 255.255.255.0
gateway 192.0.2.1
dns-nameservers 8.8.8.8 8.8.4.4

 

 

قالب کلی برای IPv6 استاتیک:

iface eth0 inet6 static
address 2001:db8::10
netmask 64
gateway 2001:db8::1

 

 

مثال کامل double-stack (IPv4 + IPv6 استاتیک):

auto eth0
iface eth0 inet static
address 203.0.113.10
netmask 255.255.255.0
gateway 203.0.113.1
dns-nameservers 1.1.1.1 8.8.8.8
iface eth0 inet6 static
address 2001:db8::10
netmask 64
gateway 2001:db8::1
dns-nameservers 2001:4860:4860::8888 2001:4860:4860::8844

 

دستورات مرتبط (برای اعمال تغییرات):

ifdown eth0 --ignore-errors
ifup eth0

 

 

یا برای راه‌اندازی مجدد کل سرویس:

systemctl restart networking

 

 

نکات:

– در Debian 9 به بعد اگر systemd کنترل شبکه را دارد، systemctl restart networking ممکن است پیام‌هایی دهد؛ اما معمولاً کافی است.

– برای اضافه کردن آدرس‌های IPv6 ثانویه می‌توان از خطوط اضافی با post-up/ip commands استفاده کرد.

 

مثال اضافه کردن آدرس IPv6 اضافی:

post-up ip -6 addr add 2001:db8::20/64 dev eth0
pre-down ip -6 addr del 2001:db8::20/64 dev eth0

 

 

#DHCPv4 و DHCPv6 در interfaces

برای DHCPv4:

auto eth0
iface eth0 inet dhcp

 

 

برای DHCPv6 (با استفاده از client مناسب، توجه کنید Debian ممکن است به پیکربندی client جدا نیاز داشته باشد):

iface eth0 inet6 dhcp

 

 

در بسیاری از موارد برای DHCPv6 نیاز به نصب و پیکربندی dhclient یا wide-dhcpv6-client دارید.

 

2) پیکربندی با systemd-networkd

 

(Debian 11/12 معمولاً systemd-networkd را به عنوان راهکار مدرن توصیه می‌کند؛ مخصوص سرورها و کانتینرها)

 

فایل‌ها در:

/etc/systemd/network/*.network
/etc/systemd/network/*.netdev

 

 

مثال فایل شبکه برای IPv4+IPv6 استاتیک:

/etc/systemd/network/20-wired.network
[Match]
Name=eth0
[Network]
Address=203.0.113.10/24
Gateway=203.0.113.1
DNS=1.1.1.1
Address=2001:db8::10/64
Gateway=2001:db8::1
DNS=2001:4860:4860::8888

 

 

دستورات برای فعال‌سازی:

systemctl enable systemd-networkd
systemctl start systemd-networkd
networkctl status eth0

 

 

برای DHCPv4:

[Network]
DHCP=ipv4

 

 

برای DHCPv6:

[Network]
DHCP=ipv6

 

 

نکات:

– برای هر رابط یک فایل .network جدا بسازید یا match گسترده‌تری تعریف کنید.

– برای روتر آگهی‌ها (RA) می‌توانید systemd-networkd را پیکربندی کنید تا SLAAC را بپذیرد (IPv6AcceptRA=yes در بخش [Network] یا [DHCP] بسته به نسخه systemd).

 

مثال فعال‌سازی RA:

[Network]
IPv6AcceptRA=yes
DHCP=yes

 

 

پس از اعمال تغییرات:

networkctl restart eth0

 

یا

systemctl restart systemd-networkd

 

 

3) پیکربندی با NetworkManager

 

(برای محیط‌های دسکتاپ یا سرور لینوکس و سرور ابری که NM استفاده می‌کنند)

 

NetworkManager تنظیمات را از فایل‌های زیر می‌خواند:

/etc/NetworkManager/system-connections/*.nmconnection

 

برای ایجاد اتصال جدید از nmcli:

nmcli connection add type ethernet ifname eth0 con-name "Wired connection" ipv4.method manual ipv4.addresses 203.0.113.10/24 ipv4.gateway 203.0.113.1 ipv4.dns "1.1.1.1 8.8.8.8" ipv6.method manual ipv6.addresses "2001:db8::10/64" ipv6.gateway 2001:db8::1 ipv6.dns "2001:4860:4860::8888"

 

 

برای فعال کردن:

nmcli connection up "Wired connection"

 

 

برای DHCPv6:

nmcli connection modify "Wired connection" ipv6.method auto

 

 

اگر از رابط گرافیکی استفاده می‌کنید، می‌توانید از ابزار settings > network اقدام کنید.

 

4) آدرس‌دهی IPv6: SLAAC، DHCPv6، static، double-stack

 

– SLAAC (Stateless Address Autoconfiguration): روتر از طریق Router Advertisement (RA) پری‌فیکس را اعلام می‌کند و میزبان به‌صورت خودکار آدرس تشکیل می‌دهد. برای پذیرش RA در systemd-networkd یا NetworkManager باید تنظیمات مربوطه فعال شود.

– DHCPv6 stateful: سرور DHCPv6 آدرس‌ها و DNS و موارد دیگر را تخصیص می‌دهد. کلاینت‌ها باید dhclient یا wide-dhcpv6-client یا dhcp6c را داشته باشند.

– static: آدرس و gateway را دستی تنظیم می‌کنیم.

– double-stack: هر دو IPv4 و IPv6 فعال‌اند. به DNSهای IPv6 دقت کنید.

 

نمونه‌های عملی:

 

SLAAC نمونه (systemd-networkd):

[Match]
Name=eth0
[Network]
IPv6AcceptRA=yes
DHCP=no

 

 

SLAAC + DHCPv6 برای DNS (ردیف بهینه):

[Match]
Name=eth0
[Network]
IPv6AcceptRA=yes
DHCP=ipv6

 

 

در بعضی محیط‌ها برای دریافت DNS از RA باید rdnss در RA فعال باشد یا از DHCPv6 استفاده گردد.

 

5) نمونه‌های کامل برای هر نسخه Debian

 

#Debian 9 (Stretch)

– Debian 9 معمولاً از ifupdown به عنوان پیش‌فرض استفاده می‌کند. اگر systemd-networkd استفاده می‌کنید، روش دوم کاربردی است.

نمونه /etc/network/interfaces برای Debian 9 (IPv4 DHCP + IPv6 SLAAC):

auto eth0
iface eth0 inet dhcp

 

 

iface eth0 inet6 auto
pre-up sysctl -w net.ipv6.conf.all.accept_ra=1

 

 

نصب DHCPv6 client (در صورت نیاز):

apt update
apt install wide-dhcpv6-client

 

 

راه‌اندازی مجدد:

systemctl restart networking

 

 

#Debian 10 (Buster)

– شبیه به Debian 9، اما systemd قوی‌تر است. اگر ifupdown نصب است، از آن استفاده کنید؛ در غیر این صورت systemd-networkd گزینه مناسبی است.

 

نمونه systemd-networkd (Debian 10) — فایل /etc/systemd/network/10-eth0.network:

[Match]
Name=eth0
[Network]
Address=192.0.2.100/24
Gateway=192.0.2.1
DNS=1.1.1.1
Address=2001:db8::100/64
Gateway=2001:db8::1
DNS=2001:4860:4860::8888

 

 

اجرای دستورات:

systemctl enable systemd-networkd
systemctl restart systemd-networkd

 

 

#Debian 11 (Bullseye)

– systemd-networkd یا NetworkManager (بسته به نصب). مثال با systemd-networkd ارائه می‌شود.

 

فایل:

[Match]
Name=ens3
[Network]
Address=198.51.100.10/24
Gateway=198.51.100.1
DNS=8.8.8.8
Address=2001:db8:abcd::10/64
Gateway=2001:db8:abcd::1
DNS=2001:4860:4860::8888

 

 

دستورات:

systemctl restart systemd-networkd
networkctl status ens3

 

 

#Debian 12 (Bookworm)

– Debian 12 بسیاری از بهبودهای IPv6 و systemd را دارد. مستندات جدید و مثال‌هایی مانند آنچه در لینک reintech.io توضیح داده شده مفیدند.

 

مثال کاربردی (دو آدرس IPv6 / route add و RA handling):

/etc/systemd/network/20-eth0.network

[Match]
Name=eth0
[Network]
Address=203.0.113.20/24
Gateway=203.0.113.1
DNS=1.1.1.1
Address=2001:db8::20/64
Gateway=2001:db8::1
DNS=2001:4860:4860::8888
IPv6AcceptRA=yes
DHCP=ipv6

 

 

دستورات برای بررسی:

ip addr show dev eth0
ip -6 route show
ping6 2001:4860:4860::8888

 

 

نکات خاص Debian 12:

– systemd-networkd به‌خوبی از DHCPv6 و SLAAC پشتیبانی می‌کند.

– اگر از محیط مجازی (VM) یا VPS استفاده می‌کنید، ممکن است ارائه‌دهنده آدرس IPv6 را با subnet delegation بدهد؛ در این حالت ممکن است نیاز به اضافه کردن route یا prefix delegation داشته باشید (مشابه راهنمای reintech.io).

 

6) مسیرهای استاتیک و چند آدرس

 

اضافه کردن آدرس IPv4/IPv6 اضافی با ip:

ip addr add 203.0.113.11/24 dev eth0
ip -6 addr add 2001:db8::11/64 dev eth0

 

 

حذف:

ip addr del 203.0.113.11/24 dev eth0
ip -6 addr del 2001:db8::11/64 dev eth0

 

 

اضافه کردن route استاتیک IPv4:

ip route add 10.0.0.0/24 via 203.0.113.1

 

 

حذف route:

ip route del 10.0.0.0/24 via 203.0.113.1

 

 

برای IPv6:

ip -6 route add 2001:db8:1::/64 via 2001:db8::1
ip -6 route del 2001:db8:1::/64 via 2001:db8::1

 

 

اگر می‌خواهید این‌ها دائمی شوند، در ifupdown از post-up/pre-down یا در systemd-networkd از پیکربندی [Route] استفاده کنید.

 

مثال systemd-route:

[Route]
Destination=2001:db8:1::/64
Gateway=2001:db8::1

 

 

7) فعال‌سازی forwarding و NAT

 

اگر می‌خواهید بسته‌ها از یک رابط به دیگری فوروارد شوند (مثلاً روتر IPv6 یا NAT IPv4):

 

فعال‌سازی فورواردر در sysctl:

/etc/sysctl.d/99-sysctl.conf

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

 

 

اعمال:

sysctl --system

 

 

NAT برای IPv4 (با iptables):

apt install iptables
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables-save > /etc/iptables/rules.v4

 

برای IPv6 معمولاً NAT پیشنهاد نمی‌شود؛ مسیر‌دهی (routing) را فعال کنید. اگر نیازمند ترجمه هستید از NPTv6 یا دیگر راهکارها استفاده کنید (با احتیاط).

 

برای firewalling با nftables (پیشرفته‌تر):

apt install nftables
nft add table ip nat
nft add chain ip nat POSTROUTING { type nat hook postrouting priority 100 \; }
nft add rule ip nat POSTROUTING oif "eth0" masquerade

 

 

8) عیب‌یابی شبکه و ابزارها

 

ابزارهای مفید:

ip addr show
ip -6 addr show
ip route show
ip -6 route show
ping 8.8.8.8
ping6 2001:4860:4860::8888
ss -tunlp
tcpdump -i eth0 icmp6
radvdump (برای بررسی RA)
journalctl -u systemd-networkd -b
systemctl status networking
networkctl status

 

 

نمونه دستورات برای رفع مشکل عدم دریافت IPv6 از RA:

sysctl net.ipv6.conf.eth0.accept_ra
sysctl -w net.ipv6.conf.eth0.accept_ra=1

 

 

بررسی بسته‌های RA:

tcpdump -i eth0 icmp6 and 'ip6[40] == 134'

 

 

اگر DHCPv6 کار نمی‌کند، لاگ client (مثلاً dhclient یا dhcp6c) را بررسی کنید و مطمئن شوید پورت‌ها و فایروال اجازه می‌دهند.

 

9) نکات امنیتی و بهترین شیوه‌ها

 

– همیشه از فایروال برای محدود کردن دسترسی به سرویس‌های حساس استفاده کنید (ufw، nftables، iptables).

– برای SSH از کلید عمومی استفاده کنید، پورت پیش‌فرض را تغییر ندهید مگر ضرورت داشته باشید.

– اگر IPv6 فعال می‌کنید اما به آن نیاز ندارید، آن را غیرفعال کنید یا ارتباطات ورودی را در فایروال مسدود کنید.

– در صورت استفاده از RA، اطمینان حاصل کنید که RA spoofing جلوگیری شود (RA Guard در سوئیچ‌ها، یا فایروال تنظیم شده).

– لاگ‌ها و monitoring شبکه را فعال کنید.

 

عیب‌یابی پیشرفته — چک‌لیست سریع

 

– بررسی وضعیت رابط:

ip addr show dev eth0
networkctl status eth0

 

– بررسی route:

ip route show
ip -6 route show

 

– بررسی دریافت RA:

tcpdump -i eth0 icmp6 and 'ip6[40] == 134'

 

– بررسی لاگ‌های systemd-networkd و DHCP clients:

journalctl -u systemd-networkd -b
journalctl -u wide-dhcpv6-client -b

 

– بررسی فایروال (ممکن است بسته‌های ICMPv6 یا DHCPv6 را مسدود کند)

nft list ruleset
iptables -L -n

 

– بررسی اتصال از میزبان دیگر در شبکه (testing neighbor discovery):

ping6 -c 3 fe80::xxxx%eth0

 

– مطمئن شوید accept_ra برای رابط موردنظر فعال است:

sysctl net.ipv6.conf.eth0.accept_ra

 

 

 

4.1/5 - (2932 امتیاز)

ارسال دیدگاه

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


10 - 11

قوانین

قوانین ارسال دیدگاه

لطفاً در ارسال دیدگاه از کلمات مناسب استفاده کنید. ارسال اسپم ممنوع است.