本文介绍了如何为Linux实例自动配置IPv6地址和手动配置IPv6地址,推荐您使用更高效的自动配置工具配置IPv6地址。
自动配置IPv6地址
ecs-util-ipv6能为已分配IPv6地址的ECS实例一键配置IPv6地址,或者为没有分配IPv6地址的ECS实例一键清理IPv6配置。
ecs-util-ipv6工具下载地址如下所示:
系列 | 发行版 | 下载地址 |
---|---|---|
RHEL |
|
下载地址 |
Debian |
|
下载地址 |
SLES |
|
下载地址 |
CoreOS | CoreOS 14/17 | 下载地址 |
FreeBSD | FreeBSD 11 | 下载地址 |
使用限制如下:
- ecs-util-ipv6工具仅适用于VPC类型实例,依赖实例元数据服务,使用前请勿将网络禁用或者将相关出口IP端口(100.100.100.200:80)禁用。详情请参见实例元数据。
- ecs-util-ipv6工具运行时会自动重启网卡、网络服务,短时间内网络可能会不可用,请慎重执行。
下载对应系统版本工具到目标系统,赋予执行权限后使用管理员权限执行:
chmod +x ./ecs-utils-ipv6 ./ecs-utils-ipv6
如果当前ECS已绑定IPv6地址,则会自动配置;否则会自动清理原有IPv6地址配置。
命令行参数:
ecs-utils-ipv6 --help # show usage ecs-utils-ipv6 --version # show version ecs-utils-ipv6 # auto config all dev ipv6 ecs-utils-ipv6 --static [dev] [ip6s] [prefix_len] [gw6] # config dev static ipv6 e.g. ecs-utils-ipv6 --static eth0 ecs-utils-ipv6 --static eth0 xxx::x1 64 xxx::x0 ecs-utils-ipv6 --static eth0 "xxx::x1 xxx:x2 xxx:x3" 64 xxx::x0 ecs-utils-ipv6 --enable # enable ipv6 ecs-utils-ipv6 --disable # disable ipv6
可以开启、禁用、手动配置、自动配置(默认)IPv6。
./ecs-utils-ipv6 #默认可不带参数,自动配置多网卡多IPv6 ./ecs-utils-ipv6 --enable #开启IPv6 ./ecs-utils-ipv6 --disable #禁用IPv6 ./ecs-utils-ipv6 --static <dev> #自动配置网卡IPv6 ./ecs-utils-ipv6 --static <dev> <ip6s> <prefix_len> <gw6> #手动配置网卡IPv6,支持多IPv6,请用""包含,多个IPv6用空格隔开
对于需要自动化配置IPv6实例的需求,例如大批量配置,建议您使用云助手或者实例自定义数据配合脚本的方式来调用。详情请参见
云助手和
实例自定义数据。以下为脚本示例(假设是RHEL系列,Bash Shell脚本)。
#!/bin/sh install_dir=/usr/sbin install_path="$install_dir"/ecs-utils-ipv6 if [ ! -f "$install_path" ]; then tool_url="http://ecs-image-utils.oss-cn-hangzhou.aliyuncs.com/ipv6/rhel/ecs-utils-ipv6" # download the tool if ! wget "$tool_url" -O "$install_path"; then echo "[Error] download tool failed, code $?" exit "$?" fi fi # chmod the tool if ! chmod +x "$install_path"; then echo "[Error] chmod tool failed, code $?" exit "$?" fi # run the tool "$install_path"
手动配置IPv6地址(Alibaba Cloud Linux 2操作系统)
Alibaba Cloud Linux 2镜像在aliyun_2_1903_64_20G_alibase_20190829.vhd
及之前的版本未开启IPv6,从aliyun_2_1903_x64_20G_alibase_20200221.vhd
版本开始默认开启了IPv6。
请先检查实例是否已开启IPv6服务。
- 远程连接实例。具体操作,请参见通过密码认证登录Linux实例。
- 运行命令
ip addr | grep inet6
或者ifconfig | grep inet6
:- 若返回
inet6
相关内容,表示实例已成功开启IPv6服务。您可以跳过本节内容。 - 若未返回
inet6
相关内容,表示实例未开启IPv6服务,请根据下文开启IPv6服务。
- 若返回
开启IPv6支持配置为暂时或持久。暂时配置将在实例停止或重启时失效;持久配置将不受实例的状态影响。您可以根据实际情况选择配置方式,手动配置操作如下:
- 暂时开启IPv6。
- 运行以下命令进入/etc/systemd/network/目录。
cd /etc/systemd/network/
- 使用命令
ls
查询该目录下的.network
文件。例如,
50-dhcp.network
文件。 - 修改文件50-dhcp.network内容。
vi /etc/systemd/network/50-dhcp.network
- 按i键进入编辑模式。
将
[Network]
下的信息修改为DHCP=yes
。说明 文件内参数Name=eth*
表示适配所有网络接口,所有网络接口都将通过DHCP配置IP地址与路由。如果只需要配置指定的网络接口,可以修改参数Name
为指定的网络接口,例如,Name=eth0
表示只适配eth0
网络接口。更多关于 network的信息请参见 systemd.network。[Match] Name=eth* [Network] DHCP=yes
修改完成后按Esc键,并输入
:wq
后按下回车键,保存并退出。 - 运行以下命令开启IPv6。
- 开启所有网络接口。
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0 sudo sysctl -w net.ipv6.conf.default.disable_ipv6=0
- 开启指定网络接口示例。
sudo sysctl -w net.ipv6.conf.eth0.disable_ipv6=0
- 重启systemd-networkd服务使配置生效。
sudo systemctl restart systemd-networkd
- 开启所有网络接口。
- 运行以下命令进入/etc/systemd/network/目录。
- 持久开启IPv6。
- 修改
/etc/sysctl.conf
配置文件。vi /etc/sysctl.conf
- 按i进入编辑模式。使用以下任一方式修改文件内容。
- 删除下列配置信息。
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1
- 修改对应的配置信息为如下内容。
net.ipv6.conf.all.disable_ipv6 = 0 net.ipv6.conf.default.disable_ipv6 = 0 net.ipv6.conf.lo.disable_ipv6 = 0
如果需要开启指定网络接口,修改信息示例如下。net.ipv6.conf.eth0.disable_ipv6 = 0
修改完成后按Esc键,并输入
:wq
后按下回车键,保存并退出。
- 删除下列配置信息。
- 验证
/etc/sysctl.conf
配置信息是否与initramfs中的/etc/sysctl.conf
存在差异。diff -u /etc/sysctl.conf <(lsinitrd -f /etc/sysctl.conf)
说明 Alibaba Cloud Linux 2配置了initramfs(initram file system)。如果initramfs中的/etc/sysctl.conf
文件与IPv6的配置文件/etc/sysctl.conf
存在差异,系统可能会生效新的配置,与您需求的配置混淆。 - 如果两个配置文件存在差异,您可以执行以下命令重新生成initramfs。
sudo dracut -v -f
- 重启实例。
sudo reboot
- 执行
ifconfig
命令判断是否已开启IPv6。如果网络配置信息包含以下信息,表示IPv6已开启。inet6 <以fe80::开头的单播地址> inet6 <ECS实例的IPv6地址>
- 修改
支持多网卡,配置操作如下:
- 运行以下命令进入/etc/systemd/network/目录。
cd /etc/systemd/network/
- 使用命令
ls
查询该目录下的.network
文件。例如,
10-eth0.network
文件。 - 使用命令
cp
复制一个新的配置文件,例如:cp 10-eth0.network 20-dhcp.network
- 运行以下命令修改配置文件。
sed -i 's/^Name.*$/Name=*/g' /etc/systemd/network/20-dhcp.network
- 重启systemd-networkd服务使配置生效。
sudo systemctl restart systemd-networkd
手动配置IPv6地址(其它操作系统)
CentOS、Debian、FreeBSD、OpenSUSE、SUSE、Ubuntu系统请完成以下操作,手动配置IPv6地址: