آموزش تنظیم 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) برای جلوگیری از قطع ارتباط داشته باشید.
ساختار مقاله
- پیکربندی سنتی با /etc/network/interfaces (Debian 9/10/11/12 در صورت نصب ifupdown)
- پیکربندی با systemd-networkd (رسمیتر در Debian 11/12)
- پیکربندی با NetworkManager (محیط دسکتاپ)
- آدرسدهی IPv6: SLAAC، stateful DHCPv6، static، double-stack
- نمونههای کامل برای هر نسخه Debian (پیکربندی IPv4 و IPv6)
- مسیرهای استاتیک و چند آدرس
- فعالسازی forwarding و NAT (در صورت نیاز)
- عیبیابی شبکه و ابزارها
- نکات امنیتی و بهترین شیوهها
- جمعبندی و منابع
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





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