unbuntu系统配置IPV6的三种模式
unbuntu系统配置IPV6的三种模式
- IPv6的三种获取IP模式
- 无状态自动配置(SLAAC)
- 有状态DHCPv6
- 静态手动配置
- 验证配置
- dhcp6服务器
- 安装 DHCP server
- 安装 radvd(实现局域网路由功能)
- 配置SLAAC 路由通告服务器
- 安装 radvd(实现局域网路由功能)
- 错误检查
本文主要介绍了unbuntu系统配置IPV6的三种模式,即IPv6的三种获取IP的模式。
IPv6的三种获取IP模式
在Ubuntu系统中配置IPv6地址,通常有三种主要模式:无状态自动配置(SLAAC)、有状态DHCPv6以及静态手动配置。每种模式适用于不同场景,具体选择取决于网络环境需求。
无状态自动配置(SLAAC)
SLAAC(Stateless Address Autoconfiguration)是IPv6最常用的自动配置方式。路由器会周期性发送RA(Router Advertisement)消息,包含网络前缀等信息,设备根据这些信息自动生成IPv6地址。
注:需要ipv6路由器, 或者再找一台机器配置一个发送RA通告的服务器
配置方法:
- 确保系统内核支持IPv6,通常默认已启用。
- 修改网络配置文件(如 /etc/netplan/01-network-manager-all.yaml),添加以下内容(以Netplan为例):
network:version: 2renderer: NetworkManagerethernets:eno2:dhcp4: falsedhcp6: falseaccept-ra: trueaddresses: [10.200.3.10/16]gateway4: 10.200.0.1nameservers:addresses: [114.114.114.114,8.8.8.8]eno1:dhcp4: falseaddresses: [10.10.10.10/16]
3.但是我发现NetworkManager无法控制accept-ra: true这个参数
所以需要修改一下内核参数:
sudo vi /etc/sysctl.conf // 打开sysctl.conf添加或修改以下代码
net.ipv6.conf.eno2.accept_ra = 1 // 启用IPV6路由器通告接受 (accept_ra设置为 1 才能接收路由器RA通告)
net.ipv6.conf.eno2.autoconf = 1
net.ipv6.conf.eno2.forwarding = 0
- 应用配置并重启网络服务:
sudo netplan apply
或
sudo systemctl restart NetworkManager
特点:
- 无需DHCP服务器。
- 地址由设备根据RA消息生成(通常结合EUI-64或随机后缀)。
有状态DHCPv6
当网络需要精确控制IP分配(如记录租约或分配固定地址)时,需使用DHCPv6服务器分配地址。此模式下,路由器RA消息会指示设备通过DHCPv6获取地址。
注:需要ipv6路由器, 或者再找一台机器配置dhcp6服务器
配置方法:
- 确保DHCPv6服务器已部署。
- 修改Netplan配置,启用DHCPv6并关闭SLAAC:
network:version: 2renderer: NetworkManagerethernets:eno2:dhcp4: falsedhcp6: trueaccept-ra: falseaddresses: [10.200.3.10/16]gateway4: 10.200.0.1nameservers:addresses: [114.114.114.114,8.8.8.8]eno1:dhcp4: falseaddresses: [10.10.10.10/16]
- 应用配置:
sudo netplan apply
或
sudo systemctl restart NetworkManager
特点:
- 需要DHCPv6服务器支持。
- 可分配DNS服务器等额外信息。
静态手动配置
若网络不支持自动配置或需固定IPv6地址,可手动指定地址、网关和前缀。
配置方法:
- 编辑Netplan配置文件(如
/etc/netplan/01-network-manager-all.yaml):
network:version: 2renderer: NetworkManagerethernets:eno2:dhcp4: falsedhcp6: falseaccept-ra: falseaddresses: [10.200.3.10/16, 2001::6/64]gateway4: 10.200.0.1gateway6: 2001::1nameservers:addresses: [8.8.8.8,2001:4860:4860::8888]eno1:dhcp4: falseaddresses: [10.10.10.10/16]
- 应用配置并重启网络:
sudo netplan apply
特点:
- 适用于服务器或关键设备。
- 需确保地址不冲突且路由正确。
验证配置
无论采用哪种模式,均需通过以下命令检查是否生效:
ip -6 addr show eno2 # 查看IPv6地址
ping6 -c4 2001::5 # ping服务器或者同一网段的ipv6地址测试连通性
dhcp6服务器
安装 DHCP server
1、安装 DHCP server
sudo apt-get update
sudo apt-get install isc-dhcp-server
2、修改配置文件 /etc/dhcp/dhcpd6.conf
log-facility local7;
subnet6 2022:: /64 {# Range for clientsrange6 2022::db8:0:1:129 2022::db8:0:1:139;# Range for clients requesting a temporary addressrange6 2022:: /64 temporary;# Additional optionsoption dhcp6.name-servers fec0:0:0:1::1;option dhcp6.domain-search "domain.example";# Prefix range for delegation to sub-routers#prefix6 2022::db8:0:1:100 2022::db8:0:1:f00 /56;# Example for a fixed host addresshost specialclient {host-identifier option dhcp6.client-id 00:01:00:01:4a:1f:ba:e3:60:b9:1f:01:23:45;fixed-address6 2022::db8:0:1:127;}
}
3、新建数据文件
touch /var/lib/dhcp/dhcpd6.leases
chmod 777 /var/lib/dhcp/dhcpd6.leases
4、修改网卡作为 DHCP server 网口,需要修改为静态 IPV6
可以使用左面图形化界面设置也可以再网卡管理服务配置文件中修改,例如我将enp2s0作为DHCP server 网口配置如下:
network:version: 2renderer: NetworkManagerethernets:enp0s31f6:dhcp4: falsedhcp6: falseaddresses: [192.167.66.101/24]enp3s0:dhcp4: falsedhcp6: trueaddresses: [10.200.3.47/16]gateway4: 10.200.0.1nameservers:addresses: [10.200.0.22]enp2s0:dhcp4: falsedhcp6: falseaccept-ra: falseaddresses: [2022::db8:0:1:4/64]gateway6: 2022::db8:0:1:1
5、启动 DHCP server 服务
/usr/sbin/dhcpd -6 -d -cf /etc/dhcp/dhcpd6.conf enp2s0
出现以下类似输入即是成功运行了,如果有错误提示需要按照提示进行修改:
amplesky@amplesky-desktop:/etc/dhcp$ sudo /usr/sbin/dhcpd -6 -d -cf /etc/dhcp/dhcpd6.conf enp2s0
Internet Systems Consortium DHCP Server 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
WARNING: Host declarations are global. They are not limited to the scope you declared them in.
Config file: /etc/dhcp/dhcpd6.conf
Database file: /var/lib/dhcp/dhcpd6.leases
PID file: /var/run/dhcpd6.pid
Wrote 0 deleted host decls to leases file.
Wrote 0 new dynamic host decls to leases file.
Wrote 0 NA, 0 TA, 0 PD leases to lease file.
Bound to *:547
Listening on Socket/7/enp2s0/2022::/64
Sending on Socket/7/enp2s0/2022::/64
Server starting service.
Information-request message from fe80::ae1f:6bff:fe6d:2c8a port 546, transaction ID 0x9BA5A400
Sending Reply to fe80::ae1f:6bff:fe6d:2c8a port 546
Solicit message from fe80::225:90ff:fe77:c3ac port 546, transaction ID 0x4D3B3F00Information-request message from fe80::ae1f:6bff:fe04:f8d2 port 546, transaction ID 0xE3C8100
Sending Reply to fe80::ae1f:6bff:fe04:f8d2 port 546
Information-request message from fe80::ae1f:6bff:fe04:fa2b port 546, transaction ID 0x6B64EA00
Sending Reply to fe80::ae1f:6bff:fe04:fa2b port 546
安装 radvd(实现局域网路由功能)
1、下载安装 radvd 服务
sudo apt-get install radvd
2、新建配置文件,注意文件权限不能为777,可以使用755。
touch /etc/radvd.conf
chmod 755 /etc/radvd.conf
3、修改配置文件 /etc/radvd.conf 内容
#log-level 8
#log-mode full
#stateless
interface enp2s0 {AdvSendAdvert on;AdvOtherConfigFlag on;AdvManagedFlag on;MinRtrAdvInterval 10;MaxRtrAdvInterval 15;AdvDefaultPreference medium;AdvDefaultLifetime 45;prefix 2022:: /64 { AdvOnLink on;AdvAutonomous off; AdvRouterAddr on;AdvPreferredLifetime 3600;AdvValidLifetime 7200; };route 2022:: /64 {};
};
4、启动 radvd 路由服务,主要其中配置信息要和网卡设置静态 IP 对应。
sudo service radvd start
5、测试运行
(1)将需要需要获取ip的测试机器设为dhcp获取IPV6,然后ip -6 show查看是否获取到dhcp服务器上设置的ipv6。
(2)查看当前 route IP , 看看有没有你设置的 2022开头的ipv6路由。
ip -6 route show
(3)将需要获取ip的测试机器设为dhcp获取IPV6。重新拔插同一交换机中的其他主机上的网线,或者对其上的网卡进行重新启用操作,促使其发起 DHCP 请求来获取新的 IP,拿到新的 IP 后,可以通过 ping 命令来查看当前是否ping通:
ping -6 [目标IPV6]
配置SLAAC 路由通告服务器
安装 radvd(实现局域网路由功能)
1、下载安装 radvd 服务
sudo apt-get install radvd
2、新建配置文件,注意文件权限不能为777,可以使用755。
touch /etc/radvd.conf
chmod 755 /etc/radvd.conf
3、修改配置文件 /etc/radvd.conf 内容
#log-level 8
#log-mode full
#stateless
interface enp2s0 {AdvSendAdvert on;AdvOtherConfigFlag off;AdvManagedFlag off;MinRtrAdvInterval 30;MaxRtrAdvInterval 100;prefix 2001:db8:1234:5678::/64 { AdvOnLink on;AdvAutonomous on; AdvRouterAddr on;};
};
4、启用 IPv6 转发
#启用 IPv6 转发
echo 'net.ipv6.conf.all.forwarding=1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p#启动 radvd
sudo systemctl enable radvd
sudo systemctl start radvd#检查状态
sudo systemctl status radvd
5、启动 radvd 路由服务,主要其中配置信息要和网卡设置静态 IP 对应。
sudo service radvd start
错误检查
1、检查语法错误
sudo radvd -c
2、以调试模式运行
sudo radvd -d 5 -f /etc/radvd.conf -m logfile
3、查看相关日志
sudo journalctl | grep radvd
4、查看 radvd 发送的 RA 包
#在客户端监听 RA 消息
sudo tcpdump -i enp0s31f6 -n icmp6 and ip6[40] == 134#或者在服务器端监听
sudo tcpdump -i enp2s0 -n icmp6 and ip6[40] == 134
5、常见错误排查
# 查看运行错误信息
sudo systemctl status radvd# 检查配置文件权限
sudo ls -l /etc/radvd.conf# 检查 radvd 是否在运行
ps aux | grep radvd# 检查端口绑定
sudo netstat -tulpn | grep :546
6、尝试重启服务
sudo systemctl stop radvd
sudo systemctl daemon-reload
sudo systemctl start radvd
sudo systemctl status radvd
