ipv6网段咋写,一篇给你讲清楚
2025-12-17 09:02:56
RAIZ
今天说个小细节,IPv6 网段的写法与 IPv4 有很大不同。详细解释 IPv6 网段的表示方法。
IPv6 网段表示法基础
基本格式:IPv6地址/前缀长度
2001:db8:1234::/48
• 2001:db8:1234::- 网络地址• /48- 前缀长度(类似IPv4的掩码)
常见的IPv6网段写法
1. 标准网段表示
# 各种前缀长度的示例
2001:db8::/32 # 大型ISP分配
2001:db8:1234::/48 # 中型组织
2001:db8:1234:5678::/64 # 标准子网(最常见)
2001:db8:1234:5678:90ab::/96 # 较小子网
2001:db8:1234:5678:90ab:cdef::/128 # 单机地址2. 特殊网段
# 私有地址空间
fc00::/7 # 唯一本地地址 (ULA)
fd00::/8 # 实际使用的ULA
# 链路本地地址
fe80::/10
# 多播地址
ff00::/8
# 环回地址
::1/128
# 未指定地址
::/128前缀长度与子网大小对应关系
/32 | |||
/48 | |||
/56 | |||
/64 | |||
/127 | |||
/128 |
实际配置示例
1. 网络设备配置
# Cisco 路由器
interface GigabitEthernet0/0
ipv6 address 2001:db8:1234::1/64
ipv6 enable
# Linux 网络配置
ifconfig eth0 inet6 add 2001:db8:1234::1/64
# 使用 ip 命令
ip -6 addr add 2001:db8:1234::1/64 dev eth02. 防火墙规则
# 允许整个 /64 网段访问
ip6tables -A INPUT -s 2001:db8:1234::/64 -j ACCEPT
# 拒绝特定网段
ip6tables -A INPUT -s 2001:db8:5678::/48 -j DROP3. 路由配置
# 添加IPv6路由
ip -6 route add 2001:db8:1234::/64 via 2001:db8::1 dev eth0
# 默认路由
ip -6 route add default via 2001:db8::1IPv6网段计算示例
计算网段范围:
import ipaddress
# 计算网段信息
net = ipaddress.IPv6Network('2001:db8:1234::/64')
print(f"网段: {net}")
print(f"网络地址: {net.network_address}")
print(f"广播地址: {net.broadcast_address}")
print(f"可用地址数: {net.num_addresses}")
print(f"第一个可用地址: {net[1]}")
print(f"最后一个可用地址: {net[-2]}")输出:
网段: 2001:db8:1234::/64
网络地址: 2001:db8:1234::
广播地址: 2001:db8:1234::ffff:ffff:ffff:ffff
可用地址数: 18446744073709551616
第一个可用地址: 2001:db8:1234::1
最后一个可用地址: 2001:db8:1234::ffff:ffff:ffff:fffe️ 实用工具命令
1. 验证网段格式
# 使用 ipcalc 工具
ipcalc 2001:db8:1234::/64
# 使用 python 验证
python3 -c "import ipaddress; print(ipaddress.IPv6Network('2001:db8:1234::/64'))"2. 网段划分示例
import ipaddress
# 将 /48 划分为 /64 子网
parent_net = ipaddress.IPv6Network('2001:db8:1234::/48')
subnets = list(parent_net.subnets(new_prefix=64))
print(f"父网段: {parent_net}")
print(f"可划分出 {len(subnets)} 个 /64 子网")
print("前5个子网:")
for i, subnet in enumerate(subnets[:5]):
print(f" {i+1}. {subnet}")⚠️ 常见错误和注意事项
1. 正确的压缩表示
# 正确
2001:db8::/32
2001:db8:0:1234::/64
# 错误(压缩不当)
2001:db8:0000:1234::/64 # 不应有前导零
2001:db8::1234::/64 # 只能使用一次 ::2. 前缀长度有效性
# 有效的前缀长度
/32, /48, /56, /64, /127, /128
# 通常无效的前缀长度(虽然语法正确)
/12, /24, /60 # 不遵循nibble边界,可能有问题3. 特殊网段的使用限制
# 链路本地地址不能路由
fe80::/10 # 只能在本地链路使用
# 多播地址的特殊用途
ff00::/8 # 多播,不能用作单播地址
# 私有地址空间
fc00::/7 # 不能在公网路由企业网络规划示例
典型企业IPv6分配:
# ISP分配
2001:db8:1234::/48
# 部门子网划分
2001:db8:1234:1000::/64 # 行政部门
2001:db8:1234:2000::/64 # 技术部门
2001:db8:1234:3000::/64 # 财务部门
2001:db8:1234:4000::/64 # 服务器网络
2001:db8:1234:5000::/64 # DMZ网络
2001:db8:1234:6000::/64 # 无线网络
2001:db8:1234:7000::/64 # 访客网络
# 点对点链路使用 /127
2001:db8:1234:ffff::/127 # 路由器间链路✅ 总结
IPv6网段的核心写法规则:
1. 基本格式: IPv6地址/前缀长度2. 常用前缀: /48(组织),/64(子网),/128(单机)3. 压缩规则:省略前导零,连续零段用 ::表示4. 特殊网段:记住 fc00::/7(私有),fe80::/10(链路本地)
记住最关键的一点:在大多数情况下,您会使用 /64 作为标准子网前缀长度,因为这是IPv6设计的最佳实践。