在现代网络中,IPv6逐渐取代IPv4成为主流协议。为了让局域网内的设备能够自动获取IPv6地址并接入互联网,我们需要一个能发送路由器通告(Router Advertisement, RA)的工具。在Linux系统中,radvd(Router Advertisement Daemon)正是完成这项任务的标准工具。
什么是radvd?
radvd 是一个开源的守护进程(daemon),用于在支持IPv6的Linux系统上自动向本地网络广播路由器通告(RA)消息。这些消息遵循ICMPv6协议,允许连接到该网络的客户端设备(如电脑、手机、IoT设备)通过无状态地址自动配置(SLAAC)机制自动生成自己的IPv6地址,并设置默认网关。
使用radvd的好处包括:
- 无需手动为每台设备配置IPv6地址
- 简化网络管理,尤其适用于大型或动态变化的网络
- 符合IPv6标准,兼容性好
安装radvd
大多数Linux发行版都提供了radvd软件包。以下是在常见系统中的安装命令:
Ubuntu/Debian:
sudo apt updatesudo apt install radvd CentOS/RHEL/Fedora:
# CentOS/RHEL 7/8sudo yum install radvd# 或 Fedora / RHEL 9+sudo dnf install radvd 配置radvd
radvd的主要配置文件是 /etc/radvd.conf。你需要根据你的网络环境编辑此文件。
假设你的Linux服务器有一个内网接口 eth0,其IPv6前缀为 2001:db8:1::/64(注意:这是一个文档专用地址,实际使用时请替换为你的真实前缀),那么配置如下:
interface eth0 { AdvSendAdvert on; MinRtrAdvInterval 3; MaxRtrAdvInterval 10; prefix 2001:db8:1::/64 { AdvOnLink on; AdvAutonomous on; };}; 参数说明:
AdvSendAdvert on;:启用路由器通告发送功能MinRtrAdvInterval和MaxRtrAdvInterval:定义RA消息的最小和最大发送间隔(秒)prefix ...:指定要通告的IPv6前缀AdvOnLink on;:表示该前缀可用于本地链路通信AdvAutonomous on;:允许客户端使用该前缀进行无状态地址自动配置(SLAAC)
启动并启用radvd服务
配置完成后,启动radvd并设置开机自启:
sudo systemctl start radvdsudo systemctl enable radvd 你可以使用以下命令检查服务状态:
sudo systemctl status radvd 验证配置是否生效
在客户端(如另一台Linux电脑或Windows机器)上,查看是否自动获取了IPv6地址:
Linux客户端:
ip -6 addr show 你应该能看到类似 2001:db8:1:xxxx:xxxx:xxxx:xxxx 的地址(其中后64位由设备自动生成)。
你也可以使用 tcpdump 在服务器上监听RA消息:
sudo tcpdump -i eth0 icmp6 如果看到周期性的“Router Advertisement”消息,说明radvd正在正常工作。
常见问题与注意事项
- 确保Linux内核已启用IPv6转发:
echo 'net.ipv6.conf.all.forwarding=1' | sudo tee -a /etc/sysctl.conf
然后执行sudo sysctl -p生效。 - 防火墙(如firewalld或ufw)可能阻止ICMPv6流量,请确保允许RA消息通过。
- 不要在多个路由器上同时运行radvd并通告相同前缀,可能导致客户端路由混乱。
总结
通过本文,你已经学会了如何在Linux系统中使用radvd来提供IPv6路由器通告服务,从而实现无状态地址自动配置。这对于搭建支持IPv6的家庭网络、实验室环境或企业内网非常有用。掌握radvd、IPv6路由器通告、Linux网络配置以及无状态地址自动配置这四个核心概念,将帮助你在IPv6时代更高效地管理网络。
现在,快去试试吧!让你的网络拥抱IPv6的未来 🌐
