unbuntu系统配置IPV6的三种模式

unbuntu系统配置IPV6的三种模式

本文主要介绍了unbuntu系统配置IPV6的三种模式,即IPv6的三种获取IP的模式。

IPv6的三种获取IP模式

在Ubuntu系统中配置IPv6地址,通常有三种主要模式:无状态自动配置(SLAAC)有状态DHCPv6 以及静态手动配置。每种模式适用于不同场景,具体选择取决于网络环境需求。


无状态自动配置(SLAAC)

SLAAC(Stateless Address Autoconfiguration)是IPv6最常用的自动配置方式。路由器会周期性发送RA(Router Advertisement)消息,包含网络前缀等信息,设备根据这些信息自动生成IPv6地址。

注:需要ipv6路由器, 或者再找一台机器配置一个发送RA通告的服务器

配置方法:

  1. 确保系统内核支持IPv6,通常默认已启用。
  2. 修改网络配置文件(如 /etc/netplan/01-network-manager-all.yaml),添加以下内容(以Netplan为例):
yaml 复制代码
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eno2:
      dhcp4: false
      dhcp6: false
      accept-ra: true
      addresses: [10.200.3.10/16]
      gateway4: 10.200.0.1
      nameservers:
        addresses: [114.114.114.114,8.8.8.8]
    eno1:
      dhcp4: false
      addresses: [10.10.10.10/16]

3.但是我发现NetworkManager无法控制accept-ra: true 这个参数

所以需要修改一下内核参数:

cpp 复制代码
sudo vi /etc/sysctl.conf   // 打开sysctl.conf添加或修改以下代码
cpp 复制代码
net.ipv6.conf.eno2.accept_ra = 1   // 启用IPV6路由器通告接受 (accept_ra设置为 1 才能接收路由器RA通告)
net.ipv6.conf.eno2.autoconf = 1
net.ipv6.conf.eno2.forwarding = 0
  1. 应用配置并重启网络服务:
bash 复制代码
sudo netplan apply

bash 复制代码
sudo systemctl restart NetworkManager

特点:

  • 无需DHCP服务器。
  • 地址由设备根据RA消息生成(通常结合EUI-64或随机后缀)。

有状态DHCPv6

当网络需要精确控制IP分配(如记录租约或分配固定地址)时,需使用DHCPv6服务器分配地址。此模式下,路由器RA消息会指示设备通过DHCPv6获取地址。

注:需要ipv6路由器, 或者再找一台机器配置dhcp6服务器

配置方法:

  1. 确保DHCPv6服务器已部署。
  2. 修改Netplan配置,启用DHCPv6并关闭SLAAC:
yaml 复制代码
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eno2:
      dhcp4: false
      dhcp6: true
      accept-ra: false
      addresses: [10.200.3.10/16]
      gateway4: 10.200.0.1
      nameservers:
        addresses: [114.114.114.114,8.8.8.8]
    eno1:
      dhcp4: false
      addresses: [10.10.10.10/16]
  1. 应用配置:
bash 复制代码
sudo netplan apply

bash 复制代码
sudo systemctl restart NetworkManager

特点:

  • 需要DHCPv6服务器支持。
  • 可分配DNS服务器等额外信息。

静态手动配置

若网络不支持自动配置或需固定IPv6地址,可手动指定地址、网关和前缀。

配置方法:

  1. 编辑Netplan配置文件(如/etc/netplan/01-network-manager-all.yaml):
yaml 复制代码
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eno2:
      dhcp4: false
      dhcp6: false
      accept-ra: false
      addresses: [10.200.3.10/16, 2001::6/64]
      gateway4: 10.200.0.1
      gateway6: 2001::1
      nameservers:
        addresses: [8.8.8.8,2001:4860:4860::8888]
    eno1:
      dhcp4: false
      addresses: [10.10.10.10/16]
  1. 应用配置并重启网络:
bash 复制代码
sudo netplan apply

特点:

  • 适用于服务器或关键设备。
  • 需确保地址不冲突且路由正确。

验证配置

无论采用哪种模式,均需通过以下命令检查是否生效:

bash 复制代码
ip -6 addr show eno2  # 查看IPv6地址
ping6 -c4 2001::5  # ping服务器或者同一网段的ipv6地址测试连通性

dhcp6服务器

安装 DHCP server

1、安装 DHCP server

bash 复制代码
sudo apt-get update
sudo apt-get install isc-dhcp-server

2、修改配置文件 /etc/dhcp/dhcpd6.conf

cpp 复制代码
log-facility local7;
subnet6 2022:: /64 {
        # Range for clients
        range6 2022::db8:0:1:129 2022::db8:0:1:139;

        # Range for clients requesting a temporary address
        range6 2022:: /64 temporary;

        # Additional options
        option 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 address
        host 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、新建数据文件

bash 复制代码
touch /var/lib/dhcp/dhcpd6.leases
chmod 777 /var/lib/dhcp/dhcpd6.leases	

4、修改网卡作为 DHCP server 网口,需要修改为静态 IPV6

可以使用左面图形化界面设置也可以再网卡管理服务配置文件中修改,例如我将enp2s0作为DHCP server 网口配置如下:

yaml 复制代码
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp0s31f6:
      dhcp4: false
      dhcp6: false
      addresses: [192.167.66.101/24]
    enp3s0:
      dhcp4: false
      dhcp6: true
      addresses: [10.200.3.47/16]
      gateway4: 10.200.0.1
      nameservers:
        addresses: [10.200.0.22]
    enp2s0:
      dhcp4: false
      dhcp6: false
      accept-ra: false
      addresses: [2022::db8:0:1:4/64]
      gateway6: 2022::db8:0:1:1

5、启动 DHCP server 服务

bash 复制代码
/usr/sbin/dhcpd -6 -d -cf /etc/dhcp/dhcpd6.conf enp2s0

出现以下类似输入即是成功运行了,如果有错误提示需要按照提示进行修改:

bash 复制代码
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 0x4D3B3F00



Information-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 服务

bash 复制代码
sudo apt-get install radvd

2、新建配置文件,注意文件权限不能为777,可以使用755。

bash 复制代码
touch /etc/radvd.conf
chmod 755 /etc/radvd.conf

3、修改配置文件 /etc/radvd.conf 内容

yaml 复制代码
#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 对应。

bash 复制代码
sudo service radvd start

5、测试运行

(1)将需要需要获取ip的测试机器设为dhcp获取IPV6,然后ip -6 show查看是否获取到dhcp服务器上设置的ipv6。

(2)查看当前 route IP , 看看有没有你设置的 2022开头的ipv6路由。

bash 复制代码
ip -6 route show

(3)将需要获取ip的测试机器设为dhcp获取IPV6。重新拔插同一交换机中的其他主机上的网线,或者对其上的网卡进行重新启用操作,促使其发起 DHCP 请求来获取新的 IP,拿到新的 IP 后,可以通过 ping 命令来查看当前是否ping通:

bash 复制代码
ping -6 [目标IPV6]

配置SLAAC 路由通告服务器

安装 radvd(实现局域网路由功能)

1、下载安装 radvd 服务

bash 复制代码
sudo apt-get install radvd

2、新建配置文件,注意文件权限不能为777,可以使用755。

bash 复制代码
touch /etc/radvd.conf
chmod 755 /etc/radvd.conf

3、修改配置文件 /etc/radvd.conf 内容

yaml 复制代码
#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 转发

bash 复制代码
#启用 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 对应。

bash 复制代码
sudo service radvd start

错误检查

1、检查语法错误

bash 复制代码
sudo radvd -c

2、以调试模式运行

bash 复制代码
sudo radvd -d 5 -f /etc/radvd.conf -m logfile

3、查看相关日志

bash 复制代码
sudo journalctl | grep radvd

4、查看 radvd 发送的 RA 包

bash 复制代码
#在客户端监听 RA 消息
sudo tcpdump -i enp0s31f6 -n icmp6 and ip6[40] == 134

#或者在服务器端监听
sudo tcpdump -i enp2s0 -n icmp6 and ip6[40] == 134

5、常见错误排查

bash 复制代码
# 查看运行错误信息
sudo systemctl status radvd

# 检查配置文件权限
sudo ls -l /etc/radvd.conf

# 检查 radvd 是否在运行
ps aux | grep radvd

# 检查端口绑定
sudo netstat -tulpn | grep :546

6、尝试重启服务

bash 复制代码
sudo systemctl stop radvd
sudo systemctl daemon-reload
sudo systemctl start radvd
sudo systemctl status radvd
相关推荐
小糖学代码3 小时前
LLM系列:1.python入门:3.布尔型对象
linux·开发语言·python
shizhan_cloud3 小时前
Shell 函数的知识与实践
linux·运维
Deng8723473484 小时前
代码语法检查工具
linux·服务器·windows
霍夫曼6 小时前
UTC时间与本地时间转换问题
java·linux·服务器·前端·javascript
月熊6 小时前
在root无法通过登录界面进去时,通过原本的普通用户qiujian如何把它修改为自己指定的用户名
linux·运维·服务器
大江东去浪淘尽千古风流人物7 小时前
【DSP】向量化操作的误差来源分析及其经典解决方案
linux·运维·人工智能·算法·vr·dsp开发·mr
打码人的日常分享7 小时前
智慧城市一网统管建设方案,新型城市整体建设方案(PPT)
大数据·运维·服务器·人工智能·信息可视化·智慧城市
赖small强8 小时前
【Linux驱动开发】NOR Flash 技术原理与 Linux 系统应用全解析
linux·驱动开发·nor flash·芯片内执行
风掣长空8 小时前
Google Test (gtest) 新手完全指南:从入门到精通
运维·服务器·网络
IT运维爱好者9 小时前
【Linux】LVM理论介绍、实战操作
linux·磁盘扩容·lvm