Linux下配置IPv6,可使用`ip -6 addr add
Linux下IPv6配置命令详解
IPv6基础
IPv6地址结构
IPv6采用128位地址长度,通常表示为8组4个十六进制数,每组之间用冒号分隔(如2001:0db8:85a3:0000:0000:8a2e:0370:7334
),支持简化表示:
- 连续零段可省略(
2001:db8::8a2e:370:7334
) - 前导零可省略(
2001:db8:0:1
)
IPv6地址类型
地址类型 | 用途说明 | 前缀格式 |
---|---|---|
全局单播地址 | 互联网标准通信 | 2000::/3 |
链路本地地址 | 同一链路设备通信 | fe80::/10 |
唯一本地地址 | 本地网络非路由通信 | fc00::/7 |
多播地址 | 组播通信 | ff00::/8 |
系统级IPv6配置
检测网络接口IPv6支持
# 查看所有网络接口状态 ip -6 link show # 检查内核模块加载情况 lsmod | grep ipv6
启用/禁用IPv6模块
# 临时启用IPv6支持 modprobe ipv6 # 永久启用(不同发行版配置路径不同) echo "ipv6_modload=yes" >> /etc/sysctl.conf sysctl -p
网络接口IPv6配置
使用nmcli工具配置
# 显示当前连接状态 nmcli connection show # 添加IPv6地址(示例:ens33接口) nmcli connection modify <connection-name> ipv6.addresses 2001:db8::1/64 # 设置IPv6自动获取方式 nmcli connection modify <connection-name> ipv6.method auto
手动配置/修改IPv6地址
# 查看当前IPv6配置 ip -6 addr show eth0 # 添加IPv6地址(含EUI-64自动生成) ip -6 addr add 2001:db8:1234::/64 dev eth0 # 删除现有IPv6地址 ip -6 addr del 2001:db8:1234::1/64 dev eth0 # 设置默认路由 ip -6 route add default via 2001:db8::fffe
通过netplan配置(Ubuntu/Debian)
# /etc/netplan/01-netcfg.yaml 示例 network: version: 2 ethernets: eth0: dhcp6: yes addresses: 2001:db8::1/64 gateway6: 2001:db8::fffe
动态IPv6配置(DHCPv6/SLAAC)
启用DHCPv6客户端
# 使用dhclient配置 echo "interface eth0 { send host-name = get; request subnet-mask, broadcast-address, time-offset, router, domain-name, domain-name-servers; }" > /etc/dhcp/dhclient.conf dhclient -6 eth0
SLAAC无状态地址自动配置
# 确保RADVD服务安装 apt install radvd # 配置示例(/etc/radvd.conf) interface eth0 { AdvSendAdvert on; MinRtrAdvInterval 3; MaxRtrAdvInterval 10; prefix 2001:db8::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr off; }; };
防火墙与IPv6
firewalld配置
# 添加IPv6规则 firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv6" source address="2001:db8::/64" accept' # 查看IPv6规则 firewall-cmd --zone=public --list-all --family=ipv6
iptables配置
# 允许特定IPv6端口 ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT # 保存规则 service ip6tables save
高级配置技巧
IPv6到IPv4转换(6to4隧道)
# 配置6to4隧道 ip -6 tunnel add 6to4tun mode sit remote any local 2002:<unique-id>::1 ttl 255 ip link set dev 6to4tun up ip -6 addr add 2002:<unique-id>::1/48 dev 6to4tun
DNS64合成地址配置
# 修改resolv.conf(需配合dnsmasq) echo "use-dns64" >> /etc/resolv.conf
常见问题排查
诊断工具使用
# 测试连通性 ping6 -c 5 www.google.com # 追踪路由 traceroute6 www.baidu.com # 查看邻居表 ip -6 neigh show
日志分析要点
# 查看网络相关日志 tail -f /var/log/syslog | grep IPv6 journalctl -u NetworkManager | grep IPv6
相关问题与解答
Q1:如何验证Linux系统是否成功获取到IPv6地址?
A1:可以使用以下命令组合验证:
ip -6 addr show dev <interface> | grep inet6
若显示类似inet6 2001:db8::1/64 scope global
的条目,则表示已成功获取,同时建议使用ping6 -c 3 www.ipv6-test.com
测试外部连通性。
Q2:配置IPv6后无法访问IPv4网络怎么办?
A2:可能存在以下问题及解决方案:
- 防火墙规则冲突:检查firewalld/iptables的IPv6规则是否阻断了IPv4流量
- 路由表异常:使用
ip -6 route show
查看默认路由是否正确,必要时重置路由表:ip -6 route flush cache
- 双栈配置错误:确保网络接口同时启用IPv4和IPv6协议栈,
到此,以上就是小编对于linux下ipv6怎么配置命令的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/11824.html