QingCloud 文档 – 操作指南 - kaiyun官方网站下载手机网页 /network/eip/manual/ Recent content in 操作指南 on QingCloud 文档 Hugo -- gohugo.io Network: 绑定 IPv4 公网 IP Mon, 01 Jan 0001 00:00:00 +0000 Network: 绑定 IPv6 公网 IP Mon, 01 Jan 0001 00:00:00 +0000 Network: 开启云服务器 IPv6 自动化配置 /network/eip/manual/ipv6_auto_config/ Mon, 01 Jan 0001 00:00:00 +0000 /network/eip/manual/ipv6_auto_config/ <h2 id="操作场景">操作场景</h2> <p>对于使用不支持 IPv6 自动化配置的镜像所启动的云服务器,通过对云服务器进行手动配置,也可以开启 IPv6 自动化配置。</p> <p>开·云app官方版下载的网络采用了 DHCPv6,用户云服务器需要以 DHCPv6 的方式获取到 IPv6 地址,并通过<a href="https://tools.ietf.org/html/rfc4861">Network Discovery Protocol</a>里的 <strong>Router Advertisement</strong> 机制来自动路由寻址。</p> <h2 id="操作要点">操作要点</h2> <p>云服务器内要配置支持 DHCPv6,主要包括三个要点:</p> <ol> <li>需要配置 <a href="https://en.wikipedia.org/wiki/DHCPv6#DHCP_Unique_Identifier">DUID</a>的类型为 <a href="https://tools.ietf.org/html/rfc3315#section-9.2">DUID-LLT</a>。</li> <li>需要在关闭网络时,及时清理 lease 文件,确保切换网络时 duid 不会缓存在 lease 文件里。</li> <li>配置 sysctl <code>accept_dad</code> 为 0。<a href="https://tools.ietf.org/html/rfc4429">DAD</a>功能会避免 IPv6 地址重复分配。在开·云app官方版下载,会通过 DHCP 机制避免地址重复分配;且底层实现有对 IPv6 实现地址代答功能,可能会导致云服务器内 IPv6 地址变为 &lsquo;duplicated&rsquo;,所以需要关闭 DAD。</li> <li>配置完成后,需要重启云服务器,以确保您的配置生效。</li> </ol> <p>此外,不同操作系统、不同发行版的配置方法是不同的,需要根据您的操作系统版本和网络管理工具,并查阅相关文档,进行合理正确配置。</p> <h2 id="操作示例">操作示例</h2> <p>本文列出了 <code>CentOS 7.5</code> / <code>Ubuntu 18.04</code> / <code>Ubuntu 16.04</code> 的配置方法。如有其它发行版的需求,您可以通过提工单来与我们的技术人员交流。</p> <h3 id="centos-75">Centos 7.5</h3> <p>以下操作基于镜像ID: <code>centos75x64a</code>。</p> <p>1.升级 NetworkManager 至 1.12 版本以后,才支持 <code>dhcp-duid</code> 配置。</p> <pre tabindex="0"><code>[root@ipv6-12 ~]# NetworkManager --version 1.10.2-13.el7 [root@ipv6-12 ~]# yum update NetworkManager [root@ipv6-12 ~]# </code></pre><p>2.配置 <code>/etc/NetworkManager/NetworkManager.conf</code>,增加 <code>ipv6.dhcp-duid</code> 配置。</p> <pre tabindex="0"><code>[root@ipv6-12 ~]# vi /etc/NetworkManager/NetworkManager.conf [main] plugins=ifcfg-rh,keyfile [connection] ipv6.dhcp-duid=llt [root@ipv6-12 ~]# </code></pre><p>3.配置 <code>ifcfg-eth0</code>。</p> <pre tabindex="0"><code>[root@ipv6-12 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet NAME=eth0 DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes IPV6INIT=yes IPV6_AUTOCONF=no IPV6_FAILURE_FATAL=no DHCPV6C=yes [root@ipv6-12 ~]# </code></pre><p>4.配置 down hook,清理 dhcp6 的 lease,避免切换网络时,DUID 还包含老的 MAC 信息。</p> <pre tabindex="0"><code>[root@ipv6-12 ~]# vi /etc/NetworkManager/dispatcher.d/dhclient-down-hooks.sh #!/bin/sh RUN=&#34;yes&#34; if [ &#34;${RUN}&#34; != &#34;yes&#34; ]; then exit 0 fi if [ &#34;${NM_DISPATCHER_ACTION}&#34; != &#34;down&#34; ]; then exit 0 fi interface=${DEVICE_IFACE} f_leases=&#34;/var/lib/NetworkManager/dhclient*-${interface}.lease&#34; rm -f ${f_leases}; [root@ipv6-12 ~]# chmod u+x /etc/NetworkManager/dispatcher.d/dhclient-down-hooks.sh [root@ipv6-12 ~]# </code></pre><p>5.关闭 DAD,在<code>/etc/sysctl.conf</code>里配置。</p> <pre tabindex="0"><code>[root@ipv6-12 ~]# vi /etc/sysctl.conf net.ipv6.conf.eth0.accept_dad = 0 net.ipv6.conf.eth0.accept_ra = 1 net.ipv6.conf.eth0.accept_ra_defrtr = 1 net.ipv6.conf.eth0.accept_ra_rtr_pref = 1 net.ipv6.conf.eth0.accept_ra_rt_info_max_plen = 1 [root@ipv6-12 ~]# </code></pre><h3 id="ubuntu-1804">Ubuntu 18.04</h3> <p>以下操作基于镜像 ID: <code>bionic1x64a</code>。</p> <p>1.安装 <code>ifupdown</code>,使用 <code>networking</code> 来管理网络。</p> <pre tabindex="0"><code>[root@ipv6-02 ~]# apt-get update [root@ipv6-02 ~]# apt-get install ifupdown -y [root@ipv6-02 ~]# </code></pre><p>2.禁用 <code>netplan</code> / <code>systemd-networkd</code> / <code>networkd-dispatcher</code>。</p> <pre tabindex="0"><code>[root@ipv6-02:~]# echo &gt; /etc/netplan/50-cloud-init.yaml [root@ipv6-02:~]# systemctl disable systemd-networkd [root@ipv6-02:~]# systemctl disable networkd-dispatcher </code></pre><p>3.修改 <code>interfaces</code> 配置文件, <code>allow-hotplug</code>。</p> <pre tabindex="0"><code>[root@ipv6-02:~]# mkdir -p /etc/network/interfaces.d/ [root@ipv6-02:~]# vi /etc/network/interfaces source /etc/network/interfaces.d/*.cfg auto lo iface lo inet loopback [root@ipv6-02:~]# vi /etc/network/interfaces.d/50-cloud-init.cfg allow-hotplug eth0 iface eth0 inet dhcp [root@ipv6-02:~]# vi /etc/network/interfaces.d/60-default-with-ipv6.cfg iface eth0 inet6 dhcp autoconf 0 [root@ipv6-02 ~]# </code></pre><p>4.配置 <code>down hook</code> dhclient 会把 v4/v6的配置互做 backup 来确保使用相同的 duid ,所以两个 leases 都需要删除。</p> <pre tabindex="0"><code>[root@ipv6-02:~]# vi /etc/network/if-post-down.d/lease_clean #!/bin/sh f6_leases=&#34;/var/lib/dhcp/dhclient6.${IFACE}.leases&#34; f4_leases=&#34;/var/lib/dhcp/dhclient.${IFACE}.leases&#34; if [ -e ${f6_leases} ]; then rm -f ${f6_leases}; fi if [ -e ${f4_leases} ]; then rm -f ${f4_leases}; fi [root@ipv6-02:~]# chmod u+x /etc/network/if-post-down.d/lease_clean [root@ipv6-02:~]# </code></pre><p>5.关闭DAD,在<code>/etc/sysctl.conf</code>里加一行:</p> <pre tabindex="0"><code>[root@ipv6-02 ~]# vi /etc/sysctl.conf net.ipv6.conf.eth0.accept_dad = 0 [root@ipv6-02 ~]# </code></pre><h3 id="ubuntu-1604">Ubuntu 16.04</h3> <p>以下操作基于镜像ID: <code>xenial5x64a</code>。</p> <p>1.修改<code>interfaces</code> 配置文件,<code>allow-hotplug</code>:</p> <pre tabindex="0"><code>[root@ipv6-02:~]# mkdir -p /etc/network/interfaces.d/ [root@ipv6-02:~]# vi /etc/network/interfaces source /etc/network/interfaces.d/*.cfg auto lo iface lo inet loopback [root@ipv6-02:~]# vi /etc/network/interfaces.d/50-cloud-init.cfg allow-hotplug eth0 iface eth0 inet dhcp [root@ipv6-02:~]# vi /etc/network/interfaces.d/60-default-with-ipv6.cfg iface eth0 inet6 dhcp autoconf 0 [root@ipv6-02:~]# </code></pre><p>2.配置down hook。 dhclient 会把 v4/v6的配置互做 backup 来确保使用相同的 duid,所以两个 leases 都需要删除。</p> <pre tabindex="0"><code>[root@ipv6-02:~]# vi /etc/network/if-post-down.d/lease_clean #!/bin/sh f6_leases=&#34;/var/lib/dhcp/dhclient6.${IFACE}.leases&#34; f4_leases=&#34;/var/lib/dhcp/dhclient.${IFACE}.leases&#34; if [ -e ${f6_leases} ]; then rm -f ${f6_leases}; fi if [ -e ${f4_leases} ]; then rm -f ${f4_leases}; fi [root@ipv6-02:~]# chmod u+x /etc/network/if-post-down.d/lease_clean </code></pre><ol start="3"> <li>关闭DAD。</li> </ol> <pre tabindex="0"><code>[root@ipv6-02 ~]# vi /etc/sysctl.conf net.ipv6.conf.eth0.accept_dad = 0 [root@ipv6-02 ~]# </code></pre><h3 id="windows-server-200820122016">Windows Server 2008/2012/2016</h3> <p>Windows Server 默认开启 IPv6 协议与 DHCPv6,但 DHCPv6 的相关配置也需要与上述<a href="#%E6%93%8D%E4%BD%9C%E8%A6%81%E7%82%B9">操作要点</a>所述保持一致。</p> <p>1.禁用 IPv6 随机标识</p> <p>云服务器网卡默认都会有一个链路本地(Link Local)IPv6 地址,Windows Server 默认的 Link Local IPv6地址生成方式是随机生成的,这与基于 MAC-48 的 <a href="https://tools.ietf.org/html/rfc4291#appendix-A">EUI-64</a> 方式不同。</p> <p>所以需要禁用 Link Local IPv6 地址随机生成。通过 cmd.exe 启动命令提示符窗口,命令与结果如下:</p> <pre tabindex="0"><code>C:\Users\Administrator&gt;netsh netsh&gt;interface ipv6 netsh interface ipv6&gt;set global randomizeidentifiers=disabled 确定。 </code></pre><p>2.双栈接口 dadtransmits 修改成 0</p> <p>Windows Server 在命令行窗口下通过 netsh.exe 的 <code>show interfaces</code> 命令查看接口列表,和双栈接口的 ID。然后,通过<code>set interface 双栈接口的 ID</code>来修改接口的配置,详细命令的使用说明可以在 netsh.exe 通过 <code>set interface</code> 查看,详见<a href="https://docs.microsoft.com/en-us/windows-server/networking/technologies/netsh/netsh">Windows 官方文档</a>。</p> <pre tabindex="0"><code>C:\Users\Administrator&gt;netsh netsh&gt;interface ipv6 netsh interface ipv6&gt;show interfaces Idx Met MTU 状态 名称 --- ---------- ---------- ------------ --------------------------- 1 75 4294967295 connected Loopback Pseudo-Interface 1 9 75 1280 disconnected isatap.{2B8B139B-418D-4593-A2DC-4F43D31A1833} 6 75 1280 connected Teredo Tunneling Pseudo-Interface 5 5 1500 disconnected 以太网 2 netsh interface ipv6&gt;set interface 5 dadtransmits=0 确定。 </code></pre><p><img src="/network/eip/_images/IPv6_dualstack_ip_windows_0.png" alt=""></p> <p>3.修改注册表 TCPip6/parameters 下的 dhcpv6-duid</p> <p>部分 Windows Server 中的 dhcpv6-duid 为固定值,会导致 Windows Server DHCP冲突。所以需要修改 dhcpv6-duid 为独特值,最方便的方式就是把最后 48 位修改为云服务器的 MAC 地址。</p> <p>在开始菜单或者命令行界面,通过 <code>regedit</code> 命令打开<code>注册表编辑器</code>,打开注册表目录 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\Parameters</p> <p><img src="/network/eip/_images/IPv6_dualstack_ip_windows_1.png" alt=""></p> <p>右键点击 DHcpv6DUID ,修改 DHcpv6DUID 最后的 12 个字符修改为接口的 MAC 地址</p> <p><img src="/network/eip/_images/IPv6_dualstack_ip_windows_2.png" alt=""></p> <p>4.重启网络适配器获取 IPv6 地址</p> <p>选择接口,点击禁用此网络设备,禁用成功后再点击启用此网络设备。</p> <p><img src="/network/eip/_images/IPv6_dualstack_ip_windows_3.png" alt=""></p> <p>云服务器获取 IPv6 地址后,即可与 VPC 内其他云服务器通过 IPv6 地址进行内网通信。</p>