在PPPoE拨号环境下实现基于前缀委派(PD)的IPv6(H3C设备)

2023-05-16

本文于2020年4月成文。

2020年9月12日修订。

 

之前写过一篇《在PPPoE拨号宽带上使用IPv6(Cisco路由器)》,今天就H3C设备又写了一篇。

使用此配置,H3C路由器(或其他H3C网络边界设备)可以使用DHCPv6 PD从运营商请求一个前缀,并使用该前缀为内网的终端分配全球单播IPv6地址(公共地址)。公网上的IPv6节点可以直接访问内网的IPv6终端,不需要像IPv4做端口映射之类的配置。

但有几点需要注意:

1、该配置需要V7版本的设备软件;

2、内网终端上网期间,路由器的WAN口掉线重拨,会导致内网终端IPv6不通。因为双栈客户端优先使用IPv6 DNS解析域名,所以同时会导致双栈终端IPv4应用缓慢。

此问题是由于路由器处理失效前缀时,未遵循RFC7084的规定——未通过RA向内网终端宣告前缀失效。无效的前缀因其valid lifetime还有很长时间,可残留在终端上长达一两天。

对于软件版本较老的网关设备,可通过重启内网终端设备来临时缓解。(对一般家用网络,电脑会每天重启;手机会经常脱离、加入Wi-Fi,会重新获取地址,故影响不大。)

经过笔者与H3C研发部门长达五个月的沟通,H3C终于在R5435P02版本中增加了一个新命令,用于处理该种情况,详见下文接口中的配置命令。

dialer-group 1 rule ip permit
#
ipv6 dhcp pool stateless  //创建DHCPv6无状态地址池
 option-group 1  //引用DHCPv6选项组1中的信息(见Dialer接口中的相关命令)
#
interface Dialer5  //PPPoE拨号接口
 mtu 1492
 ppp chap password simple pwd
 ppp chap user usr
 ppp ipcp dns admit-any 
 ppp ipcp dns request 
 ppp pap local-user usr password simple pwd 
 dialer bundle enable
 dialer-group 1
 dialer timer idle 0
 dialer timer autodial 60
 ip address ppp-negotiate
 tcp mss 1452
 nat outbound
 ipv6 address auto  //无状态自动配置IPv6(全球单播)地址
 ipv6 address auto link-local  //设置IPv6链路本地地址
 ipv6 dhcp client pd 1 rapid-commit option-group 1  //通过DHCPv6 PD向ISP请求前缀。pd 1指将获得的前缀分配为前缀编号1;option-group 1指将DHCPv6下发的其他选项(如DNS地址)指派到本地的选项组(option-group);rapid-commit指优先使用DHCPv6快速交互(rapid commit)模式。
#
interface Vlan-interface1  //第一个内网(比如是内部员工或家庭成员使用)
 ip address 192.168.8.1 255.255.255.0
 ipv6 mtu 1280  //H3C V7版本暂不支持ipv6 tcp mss,只能尽量减小MTU(此mtu设置会通过RA通告给“内网”的终端)。
 ipv6 dhcp select server  //指定接口工作在DHCPv6服务器模式
 ipv6 dhcp server apply pool stateless  //引用DHCPv6无状态地址池
 ipv6 address 1 ::1/64 //引用前缀编号1中的前缀,接口主机位设置为::1,前缀长度设置为/64(从运营商获得的委派前缀长度可能为/60)
 ipv6 nd autoconfig other-flag  //指示客户端使用DHCPv6获取IPv6地址之外的其他配置(如DNS)
 undo ipv6 nd ra halt  //允许在此接口上发送RA
 ipv6 nd ra interval 60 10  //RA的最大发送间隔和最小发送间隔(在最大和最小之间随机选择时机)
 ipv6 nd ra invalid-delegated-prefix advertise enable  //被委派前缀失效时发送RA,向内网终端宣告前缀失效(2020年9月12日修订本文时新增的命令,R5435P02版本引入支持)
 ipv6 nd ra dns server 240C::6666 sequence 0  //使用RA RDNSS通告DNS服务器,以兼容不支持DHCPv6的客户端
 ipv6 nd ra dns server 240C::6644 sequence 1  //使用RA RDNSS通告备用DNS服务器
#
interface Vlan-interface200  //第二个内网(比如给来宾、访客使用)
 ip address 192.168.9.1 255.255.255.0
 ipv6 mtu 1280
 ipv6 dhcp select server
 ipv6 dhcp server apply pool stateless
 ipv6 address 1 ::1:0:0:0:1/64  //运营商委派的前缀长度为/60。出于管理需要,让vlan200下终端获取的IPv6地址与vlan1下的相区别,在此设置接口的主机位为::1:0:0:0:1,前缀长度仍为/64
 ipv6 nd autoconfig other-flag
 undo ipv6 nd ra halt  //允许在此接口上发送RA
 ipv6 nd ra interval 60 10
 ipv6 nd ra invalid-delegated-prefix advertise enable
 ipv6 nd ra dns server 240C::6666 sequence 0
 ipv6 nd ra dns server 240C::6644 sequence 1
#
interface GigabitEthernet1/0/5  //拨号绑定的物理接口
 port link-mode route
 undo lldp enable
 undo dhcp select server
 pppoe-client dial-bundle-number 5
#              
 ip route-static 0.0.0.0 0 Dialer5
 ipv6 route-static :: 0 Dialer5  //IPv6默认路由

验证配置:

display ipv6 interface Dialer 5  //检查拨号口是否正确获得了IPv6地址

display ipv6 prefix  //检查IPv6前缀列表

display ipv6 dhcp option-group  //检查DHCPv6选项组(option-group)中的信息是否正确

display ipv6 dhcp server  //检查DHCPv6服务器是否已经启动,是否绑定到正确的接口

display ipv6 dhcp server statistics  //检查DHCPv6服务器收发数据包的统计值

display ipv6 dhcp client  //检查DHCPv6 PD是否正确获得前缀信息

 

 

以下是2020年9月12日修订的内容:

增加了一条Vlan接口中的命令,该命令于R5435P02版本首次引入。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在PPPoE拨号环境下实现基于前缀委派(PD)的IPv6(H3C设备) 的相关文章

  • 习题

    1 在路由器上配置SSH服务器的过程 2 简述以太网交换机Mac地址表的学习过程 首先当4台pc机连接到交换机相互通信时 交换机会取出每个数据包的源MAC地址 通过算法找到相应的位置 如果是新地址 则创建地址表项 填写相应的端口信息 生命周
  • 将 IPv4 字符串更改为 IPv6

    桑德 史蒂芬中提到的我之前的一个问题 像 0000 0000 0000 0000 0000 0000 192 168 0 1 这样的地址写为 0000 0000 0000 0000 0000 0000 c0a8 0001 这是完全相同的地址
  • IPv6 组播示例

    我搜索了如何实现简单 ipv6 多播示例的示例 但是我只找到了使用 ipv4 的示例 谁能提供一个简单的 ipv6 多播 helloworld 示例 这是一个简单的客户端服务器示例 顺便说一句 在网络上的多台计算机上运行它将使所有计算机相互
  • 为什么我的 Xamarin iOS 中的 WebRequest 在 ipv6 环境中失败?

    我设置了本地ipv6环境如下https developer apple com library content documentation NetworkingInternetWeb Conceptual NetworkingOvervie
  • hadoop和spark现在支持IPv6吗?

    我想在纯IPv6环境上构建Hadoop和Spark集群 我已经通过 IPv4 构建了它 如何配置在 IPv6 环境下运行它们 hadoop 和 Spark 现在支持 IPv6 吗 它不是 截至今日HADOOP 11890跟踪 IPv6 支持
  • 一个插座双堆栈

    我正在开发双栈客户端 服务器通信 我很好奇 我是否必须打开两个套接字 一个用于 IPv4 一个用于 IPv6 还是可以选择打开一个用于 IPv6 的套接字 并且它能够同时使用 IPv4 和 IPv6 连接 例如 如果我打开这样的套接字 SO
  • 在 PHP 中检查字符串是否包含 IPV6 地址

    使用 PHP 我需要检查字符串是否包含 IPv6 地址 如果包含 则提取该 IPv6 地址 我有一个正则表达式 它匹配一个字符串 如果它恰好是 IPv6 matches regex 3 3 3 dA F 1 4 3 b 2 4 5 4 2
  • 此正则表达式 (RegEx) 标志有何含义 /iD

    我想使用这个正则表达式来验证 IPv6 但我想了解它所做的一切https stackoverflow com a 1934546 3112803 gt gt a f0 9 1 4 gt 1 7 a f0 9 gt 8 1 gt 1 0 6
  • 本地主机上的双栈 ipv6/ipv4

    我有一个 ipv4 服务器 它只接受本地主机上的连接 使用INADDR LOOPBACK 我想将此服务器转换为双栈 ipv6 ipv4 然而 使用in6addr loopback只接受连接到 1 我发现我可以同时接受 ipv4 和 ipv6
  • IPv6 下网络字节顺序毫无意义吗?

    如果我们使用32位整数来存储IPv4地址 那么必须考虑该整数的字节顺序 但是 由于几乎所有平台下都没有内置的128位整数类型 因此IPv6地址必须存储到字节数组中 因此 我认为字节顺序不再是问题 我对么 或者IPv6有对应的函数htonlX
  • 如何将链接本地地址绑定到 ipv6 套接字

    这个问题可以看作是一个姐妹问题前一个 https stackoverflow com questions 2455762 why cant i bind ipv6 socket to a linklocal address我自己发布的 非常
  • 在 MySQL 数据库中存储 IP 地址(IPv4 和 IPv6)

    好吧 现在我知道类似的问题可能已经被问过一百万次了 但我在这方面是一个真正的新手 我真的很感谢你在这里的帮助 基本上 我想将访问者的 IP 地址存储在 MySQL 中 以便以后检索和验证 我首先需要知道需要使用什么类型的字段来存储 IP 地
  • localhost 和 0.0.0.0 的 IPV6 是什么?

    众所周知 IPv4 地址localhost is 127 0 0 1 环回地址 IPv6 地址有什么用途localhost并为0 0 0 0因为我需要阻止一些广告主机 众所周知 IPv4 地址localhost is 127 0 0 1 环
  • Swift 中 IPv6 网络上的网络连接检查崩溃

    我最近有一个应用程序因不兼容 IPv6 而被拒绝 当调用以下代码时 应用程序导致崩溃 我怀疑崩溃是因为它利用了SCNetworkReachabilityCreateWithAddress当苹果建议不要再使用它时 谁能帮我一下 让下面的代码与
  • 在存储之前对用户的 IP 地址进行加密

    我在用着PHP http www php net and MySQL http www mysql com 我想将用户的IP地址存储到数据库中比较目的 例如 每个 IP 的线程仅允许一个标志 按下面的方法做可以吗 在 PHP 中检索它 ip
  • 强制 InetAddress.getHostAddress() 返回 IPv4 地址

    我正在使用一个使用的库java net InetAddress getLocalHost getHostAddress 获取我的本地IP地址 然而 这总是在我的计算机上返回 IPv6 地址 Gentoo Linux JDK 1 6 0 37
  • 如何将 IPV6 地址转换为 IPV4 地址?

    我有使用 IPv4 地址的应用程序 它存储它们很长 因此它只理解 IPv4 地址 是否可以使用Java将IPv6地址转换为IPv4地址 While IPv4 地址范围有 IPv6 等效项 https en wikipedia org wik
  • 从 MAC 转换为 IPv6

    我想了解如何将 MAC 地址转换为 IPv6 地址 例如 00 01 04 76 2A 5C 应该成为 FE80 0201 04FF FE76 2A5C 有人可以详细说明一下转换吗 我们假设本地机器的自动配置没有随机参数 逐步转换 http
  • 如何通过RAW套接字发送修改后的IPv6数据包?

    我正在尝试通过 C Linux 中的 RAW 套接字发送自定义 IPv6 标头 我已经使用 IP HDRINCL 套接字选项在 IPv4 中取得了成功 但是 IPv6 没有等效的选项 我找到了解决方法here http lists open
  • 如何使用链接本地 IPv6 地址访问 Web 服务器或网站?

    以下是托管 Web 服务器的计算机的 ipconfig 输出 以太网适配器本地连接 连接特定的 DNS 后缀 链路本地 IPv6 地址 fe80 f85b 4256 ee76 24a4 11 IPv4 地址 10 213 254 119 子

随机推荐

  • 用nginx搭建http透明代理

    背景 代理我们经常听 xff0c 在技术层面我们谈论的代理往往是非透明代理 xff0c 那么既然有非透明代理那就存在有透明代理 我们先看看什么是透明代理 xff0c 引用百度百科的一句话可以描述明白 透明代理的意思是客户端根本不需要知道有代
  • 图片识别之验证码识别

    许多网站在进行某些操作前会要求输入验证码以此来抵御爬虫和攻击 此篇主要讲述如何通过代码来识别一些常见的验证码 以此探究图片识别的过程以及如何避免生成容易被识别的验证码 理论 图片识别的过程 取样本 清洗区分样本 提取样本特征 提取目标的特征
  • CSS(四)——三个盒子的动画效果

    三个盒子的动画效果 span class token selector lt head gt lt meta charset 61 34 UTF 8 34 gt lt meta http equiv 61 34 X UA Compatibl
  • linux C代码调用shell命令方法

    摘抄 xff1a https blog csdn net u010299133 article details 85637263 主要有三种方法 xff1a exec函数簇 xff0c system函数以及popen函数 xff0c 其中需
  • 导出WSL子系统并在服务器Docker上进行部署

    之前一直用的WSL开发 xff0c 后来因为业务需要 xff0c 得迁移到服务器上 xff0c 但是因为安装了很多依赖 xff0c 不想重新装系统 xff0c 所以选择将 WSL子系统打包 xff0c 并用Docker导入 一 WSL导出子
  • Mac OS下关闭本地TimeMachine备份节省磁盘空间

    当我们开启TimeMachine之后 xff0c 在使用外置磁盘时会把备份资料放在外置磁盘上 xff0c 但是某一天发现如下图所示的奇怪现象 xff0c 磁盘使用情况里面竟然有几十GB的 备份 文件 总共256GB容量 xff0c 所以万万
  • 凸函数

    基本介绍 凸函数是一个定义在某个向量空间的凸子集C xff08 区间 xff09 上的实值函数f xff0c 而且对于凸子集C中任意两个向量x1 x2 f x1 43 x2 2 xff08 f x1 43 f x2 2 于是容易得出对于任意
  • Update:Windows Server/Client 各版本信息及更新列表

    1 Windows 11 2 Windows 10 3 Windows nbsp Server 2016 2022
  • [BJWC2010] 严格次小生成树 简单梳理和整理

    https www luogu com cn problem P4180 这篇文章将会默认读者已经掌握了LCA xff0c kruskal等相关基础知识点 考虑最小生成树的 k r u s k
  • 使用Ubuntu22.04搭建k8s环境和一些k8s基础知识

    minikube搭建 基本环境 我使用virtualBox构建的ubuntu xff0c 选择4核4G内存minikube是一个K8S集群模拟器 xff0c 可以快速构建一个单节点的集群 xff0c 用于在本地测试和开发首先使用官方脚本安装
  • 为编辑器TeXworks添加命令biber

    目前 xff0c 在包biblatex日渐成为流行的参考文献处理机制下 xff0c 与其配合使用的编译命令biber也也就开始流行了 在console中手工输入这个命令编译没问题 xff0c 但显得不那么方便 最好将其集成到某个图形化的编辑
  • 一个简单的、基本的、完整的使用biblatex包的例子

    1 介绍 写论文离不开参考文献 xff0c 尤其是毕业论文 由相应的写作软件自动地管理这些参考文献 xff0c 并自动地呈现在论文中至关重要 大家都知道 xff0c 手工添加文献到论文中 xff0c 是枯燥乏味的 xff0c 更为致命的是这
  • Anaconda无法用PIL,我用Pillow替代

    1 问题描述 我想利用文字生成图片信息 xff0c 以方便运行 L A T E X 的加载图片的demo 我自然想到了利用Python来执行这个任务 xff0c 因为它是我使用过的众多编程语言中的最喜欢的语言之一 xff0c 可以用爱不释手
  • 解决DELETE PUT请求方式无法提交表单数据的问题

    1 在web xml中配置过滤器 span class hljs comment lt 将POST请求转化为DELETE或者是PUT 要用 method指定真正的请求参数 gt span span class hljs tag lt spa
  • 使用tinode架设自己的私有聊天服务

    需求 国内的商用im软件都不是开源客户端 xff0c 谁也不知道他们到底干了点啥撒 有时还是需要私有云im来保证数据安全 xff0c 比如我们需要传递账号以及密码等 xff1b 方案1 xff1a 使用网页工具将文本加密 xff0c 然后复
  • Apache httpd 目录列表禁用配置(options indexes)

    Apache httpd服务器在缺省的情况下 xff0c 开启了基于目录列表的访问 xff0c 这是一个存在安全隐患的问题 xff0c 因此可以关闭这个功能 在Apache 2 4的版本中 xff0c 不在支持使用 indexes来配置 x
  • ios 谓词

    1 比较运算符 gt lt 61 61 gt 61 lt 61 61 可用于数值及字符串例 xff1a 64 34 number gt 100 34 2 范围运算符 xff1a IN BETWEEN例 xff1a 64 34 number
  • 三大分布

    三大抽样分布 编辑 三大 抽样分布一般是指卡方分布 xff08 2分布 xff09 t分布和F分布 简介 编辑 如图 三大抽样分布 5张 2分布 编辑 定义 设 X 1 X 2 X n 相互独立 都服从标准正态分布N 0 1 则称 随机变量
  • linux 相关:ubuntu 设置 .bashrc之后 重登不起作用

    ubuntu 设置 bashrc之后 重登不起作用 1 问题2 原因3 解决 1 问题 用户身份登陆ubuntu服务器 xff0c 用户目录新建 bashrc文件并source之后设置生效 xff0c 但是使用ssh重登之后发现之前的设置不
  • 在PPPoE拨号环境下实现基于前缀委派(PD)的IPv6(H3C设备)

    本文于2020年4月成文 2020年9月12日修订 之前写过一篇 在PPPoE拨号宽带上使用IPv6 xff08 Cisco路由器 xff09 xff0c 今天就H3C设备又写了一篇 使用此配置 xff0c H3C路由器 xff08 或其他