证书签发配置:
1)DNS-01 with Alibaba Cloud DNS
2)HTTP-01
配置 Ingress 使用 Cert Manager 来提供 HTTPS 服务:
1)Secure Ingress
证书过期及证书自动续期
How to check TLS Cert Expiration Date
查看证书过时间:
1)kubectl get certificate ee-tls -o yaml
2)下面的 notAfter noBefore 是证书有效期,renewalTime 是计划的续期时间
spec.duration vs. spec.renewBeforeCertificate Resources – cert-manager Documentation[……]
「Kubernetes」- 在 Ingress 中,使用 cert-manager 证书
「ISIS」- 路由计算
Level-1 Router
R1 是 Level-1 Router,只维护 Level-1 LSDB,该 LSDB 包含同属一个区域的 R2 及 R3 以及 R1 自己产生的 Level-1 LSP;
域内路由:R1 根据 LSDB 中的 Level-1 LSP 计算出 Area 49.0001 内的拓扑,以及到达区域内各个网段的路由信息;
域外路由:R2 及 R3 作为 Area 49.0001 内的 Level-1-2 路由器,会在它们向该区域下发的 Level-1 LSP 中设置 ATT 标志位,用于向区域内的 Level-1 路由器宣布可以通过自己到达其他区域。R1 作为 Level-1 路由器,会根据该 ATT 标志位,计算出指向 R2 或 R3 的默认路由;
Level-1 Router 的次优路径的问题
缺省时,R1 只能通过指向 R2 或 R3 的默认路由到达区域外部;
但是 R1 距离 R2 和 R3 路由器的 Cost 值相等,那么当 R1 发送数据包到 192.168.20.0/24 时,就有可能选择路径 2,导致出现次优路径;
解决方案:路由渗透、路由泄漏(类似路由引入)
缺省情况下,Level-1-2 路由器不会将到达其他区域的路由通告本 Level-1 区域中;
通过路由渗透,将区域间路由通过 Leve-1-2 路由器传递到 Level-1 区域,此时 Leve-1 路由器可以学习到其他区域的详细路由,从而计算出最优路径;
此时,DN 置位,防止出现环路。当 R3 泄漏的路由,进入 R1 后,R1 将其传播到 R2。此时 R2 发现 DN 置位,因此不会使用该路由;
Level-1-2 Router
R2 及 R3 都维护 Level-1 LSDB,它们能够通过这些 LSDB 中的 LSP 计算出 Area 49.0001 的路由;
R2 及 R3 都维护 Level-2 LSDB,它们能够通过这些 LSDB 中的 LSP 计算出 Area 49.0002 的路由;
R2 及 R3 将到达 Area 49.0001 的路由以 Level-2 LSP 的形式发送到 Area 49.0002;
Level-2 Router
R4 及 R5 作为 Level-2 路由器,只会维护 Level-2 LSDB,它们能够根据该 LSDB 计算出到达全网各个网段的路由;[……]
「TMV」- 人工智能 | AI | Artificial intelligence
认识
人工智能:是研究、开发用于模拟、延伸和扩展人的智能的理论、方法及应用系统的一门新的技术科学。
组成
机器学习:研究计算机模拟或实现人类的学习行为,以获取更多的知识。是人工智能的核心研究领域之一。
深度学习:源于人工神经网络的研究,多层感知器就是一种深度学习结构。深度学习是机器学习研究中的一个新的领域,它模仿人脑的机制来解释数据,例如图像、声音和文本识别。
LLM | Large Language Model | A large language model (LLM) is a type of machine learning model designed for natural language processing tasks such as language generation. LLMs are language models with many parameters, and are trained with self-supervised learning on a vast amount of text.
The largest and most capable LLMs are generative pretrained transformers (GPTs).
Model Context Protocol (MCP)
Model Context Protocol (MCP) is an open protocol that enables seamless integration between LLM applications and external data sources and tools. Whether you’re building an AI-powered IDE, enhancing a chat interface, or creating custom AI workflows, MCP provides a standardized way to connect LLMs with the context they need.
MCP is an open protocol that standardizes how applications provide context to LLMs. Think of MCP like a USB-C port for AI applications. Just as USB-C provides a standardized way to connect your devices to various peripherals and accessories, MCP provides a standardized way[……]
「Kibana」- 搜索数据
实验环境概述
软件版本:Kibana 7.6.3
数据查询语法
Kibana Guide [7.6] » Discover » Searching your data » Kibana Query Language
完全匹配:<key name>.keyword : “<your keywords>”
参考文献
When to use the keyword type vs text datatype in Elasticsearch[……]
「ISIS」- 概念,术语
ISIS vs OSPF
IS-IS 是 ISO 定义的 OSI 协议栈中的 CLNS(ConnectionLess Network Service,无连接网络服务)的一部分;
IS-IS 也是是种链路状态路由协议,IS-IS 与 OSPF 在许多方面非常相似,例如:
1)运行 IS-IS 协议的直连设备之间通过发送 Hello 报文发现彼此,然后建立邻接关系,并交互链路状态信息;
两者不同之处在于:
1)Integrated IS-IS:支持 CLNP 网络、IP 网络;采用数据链路层封装;
2)OSPF:只支持 IP 网络;采用 IP 报文封装;
CLNS 由以下三个部分组成:
1)CLNP:类似于 TCP/IP 中的 IP 协议;
2)IS-IS:类似于 TCP/IP 中的 OSPF 协议;
3)ES-IS:类似于 TCP/IP 中的 ARP,ICMP 等;
ES:End System,终端系统,类似于 IP 网络环境中的主机;
ES-IS:End System to Intermediate System,终端系统到中间系统;
在 IP 网络环境中,不涉及 CLNP 以及 ES-IS,因此不做详细介绍;
Router ID
NSAP | Network Service Access Point
NSAP(Network Service Access Point,网络服务访问点)是 OSI 协议栈中用于定位资源的地址,主要用于提供网络层和上层应用之间的接口。等同于 IP Address + Port Number
所示如下图,NSAP 结构如下:
IDP(Initial Domian Part)相当于 IP Address 中的主网络号:
它是由 ISO 规定 ⇒ 特定数值具有特定用途,不能随意定义和使用;
AFI(Authority and Format Identifier)表示地址分配机构和地址格式,
IDI(Initial Domain Identifier):用来标识域;
DSP(Domian Specific Part)相当于 IP 地址中的子网号和主机地址。它由:
High Order DSP:用来分割区域
System ID:用来区分主机。在 OSI 中,每个平台(设备),仅配置一个地址(NSAP);
SEL(NSAP Selector):用来指示服务类型;类似于 TCP/IP 的 Port Number;针对路由器,该字段全零(因为路由器不提供服务);
NET | Network Entity Title
NET,Network Entity Title,网络实体名称,是 OSI 中设备的网络层信息,主要用于路[……]
「Kibana」- 设置超时时间
问题描述
在使用 Kibana 搜索时,产生如下错误:
Unexpected token u in JSON at position 0
SyntaxError: Unexpected token u in JSON at position 0
at JSON.parse (<anonymous>)
at http://kibana.example.com/bundles/commons.bundle.js:3:3397719
at http://kibana.example.com/bundles/kbn-ui-shared-deps/kbn-ui-shared-deps.js:368:94842
at http://kibana.example.com/bundles/kbn-ui-shared-deps/kbn-ui-shared-deps.js:368:94980
at u.$digest (http://kibana.example.com/bundles/kbn-ui-shared-deps/kbn-ui-shared-deps.js:368:100155)
at http://kibana.example.com/bundles/kbn-ui-shared-deps/kbn-ui-shared-deps.js:368:102127
at Yo.completeTask (http://kibana.example.com/bundles/kbn-ui-shared-deps/kbn-ui-shared-deps.js:368:122692)
at http://kibana.example.com/bundles/kbn-ui-shared-deps/kbn-ui-shared-deps.js:368:34257
问题原因
查看浏览器网络发现请求在 URL 中带有 timeout=30000ms 参数
于是去排查 Kibana 有关 Timeout 的设置
解决方法
修改 /etc/kibana/kibana.yml 配置文件的 elasticsearch.requestTimeout 参数。
参考文献
KIBANA TIMEOUT Request Timeout after 30000msKibana User Guide [4.5] » Settings » Setting Kibana Server Properties[……]
「Kubernetes」- 使用 cert-manager 申请 Let’s Encrypt 证书 | 阿里云 DNS 服务集成
在部署 cert-manager 成功后,便能够使用它申请 Let’s Encrypt 证书。该笔记将记录:在 Kubernetes 中,如何使用 cert-mananager 申请 TLS 证书。
分析
根据 cert-manager/DNS01/Webhook 指引,我们使用 DEVmachine-fr/cert-manager-alidns-webhook 开源项目,而 pragkent/alidns-webhook 并未提供 Helm Chart 包,所以我们未使用该项目。
方案
前置条件
完成 cert-manager 部署;
背景知识
需要阅读如下文档:cert-manager/Configuration/ACME
—- cert-manager/Configuration/ACME/DNS01
——– cert-manager/Configuration/ACME/DNS01/Webhook
我们使用实现 ACME 的 Let’s Encrypt 服务来申请证书,并使用 DNS01 完成质询,所以应该创建类似如下 ClusterIssuer 资源文件:
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: example-issuer
spec:
acme:
email: user@example.com
server: https://acme-staging-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: example-issuer-account-key
solvers:
– dns01:
cloudDNS:
project: my-project
serviceAccountSecretRef:
name: prod-clouddns-svc-acct-secret
key: service-account.json
但是,我们使用阿里云 DNS 服务,而不是 cloudDNS 服务,所以上述配置是不行的(无法完成 DNS01 质询)。并且官方仅支持 ACMEDNS、Akamai、AzureDNS、CloudFlare、Google、Route53、DigitalOcean、RFC2136 这些服务,并不包含我们所使用的阿里云服务商。
好在 cert-manager 支持 Webhook 以允许定义自己的 DNS provider(这些便是 out-of-tree[……]
「IPv4」- Internet Protocol Version 4
认识
该笔记将记录:IPv4 地址的基本概念,以及子网划分、地址规划、地址配置,还包括常见问题的处理方法;
组成
报文格式
Packet Format
IP 包分片(数据包分片)
MTU,是数据链路层所支持的最大长度。如果 IP 报文长度超过 MTU 的限制,则报文就需要分割成若干个较小的片段才能够在链路上传输。即,分片是将报文分割为多个片段的过程。
Identification | Flags | Fragment Offset
性质
针对 IPv4 协议,其本身存在很多问题:
1)地址空间不足,导致公网地址枯竭:
IPv4 地址采用 32 比特标识,理论上能够提供的地址数量是 43 亿。但由于地址分配的原因,实际可使用的数量不到 43 亿。另外,IPv4 地址的分配也很不均衡:美国占全球地址空间的一半左右,而欧洲则相对匮乏;亚太地区则更加匮乏。与此同时,移动 IP 和宽带技术的发展需要更多的 IP 地址。IPv4 地址资源紧张直接限制了 IP 技术应用的进一步发展;
2)报头设计不合理;
3)设备维护的路由表表项数量过大,查表效率低;
由于 IPv4 发展初期的分配规划问题,造成许多 IPv4 地址的分配不连续,不能有效聚合路由。日益庞大的路由表耗用大量内存,对设备成本和转发效率产生影响,这一问题促使设备制造商不断提升其产品路由寻址和转发性能;
4)对 ARP 的依赖,导致广播泛滥;
5)不易进行自动配置和重新编址
由于 IPv4 地址只有 32 比特,并且地址分配不均衡,导致在网络扩容或重新部署时,经常需要重新分配 IP 地址。维护工作量较大;
6)……
应用
IP Networking
改进
IPv6
参考
Classful network – WikipediaLink-local address – Wikipediarouter – What is the difference between a subnet mask and a netmask? – Super UserUnderstanding IP Addresses, Subnets, and CIDR Notation for Networking[……]
「VPN」- SRv6 Policy 高可靠性:ECMP
在部署 SRv6 Policy 时可以在一个 candidate-path 中配置两个 Segment-list,可以实现 SRv6 Policy 负载均衡。数据在两个路径之间负载均衡;
当其中一个路径失效时,数据依然可以在另一个路径上转发;
SRv6 policy PE1toPE3
endpoint PE3 color 100
candidate-path preference 200
segment-list <PE1.End, PE3.End> // ECMP
segment-list <PE2.End, P2.End, PE4.End , PE3.End > // ECMP[……]
「VPN」- SRv6 Policy 高可靠性:HSB (Hot-Standby)
通过在部署 SRv6 Policy 时配置两个优先级不同的 candidate-path,可以实现端到端的 SRv6 Policy 隧道保护。其中 preference 高的为主路径,低的为备份路径,并为这两个路径启动 SBFD 检测;
当主路径的 SBFD 检测到故障时,主路径切换到备路径;
对于 SRv6 网络中如果有部分设备无法支持 SRv6 会导致无法使用本地保护,因此在这种场景下也可以使用 HSB 提供高可靠性;
SRv6 policy PE1toPE3
endpoint PE3 color 100
candidate-path preference 200 // Primary
segment-list <PE1.End, PE3.End>
candidate-path preference 100 // Backup
segment-list <PE2.End, P2.End, PE4.End, PE3.End >[……]
「COMPUTER-NETWORKING」- IPv4,报文格式
Version:IPv4, IPv6
Header Length:20-bit ~ 60-bit
DS Field:Type of Service,QoS 将使用该字段;
Total Length:= Header Leghth + Payload Length
# 用作分片与重组
Identification:
Flags:
Fragment Offset:
TTL:生存时间,Time to Live,255,防止回路,每经过一个路由设备会 -1;
Protocol:上层协议,比如 TCP/6, UDP/17, ICMP/1 等等
Header Checksum:
Source IP Address:
Destination IP Address:
IP Options:[……]
「DHCP」- 报文格式
协议报文基于 UDP 的方式进行交互,采用67(DHCP Server)和 68(DHCP Client)两个端口号;
报文格式
Op(op code):表示报文的类型,含义:1,客户端请求报;2,服务器响应报文;
Htype(Hardware Type):表示硬件地址的类型;
Hlen(Hardware Length):表示硬件地址的长度;
Hops(hops):表示当前 DHCP 报文经过的 DHCP Relay 数目;
此字段的作用是限制 DHCP 报文所经过的 DHCP Relay 数目;不能超过 16,也就是 Hops 值不能大于16,否则DHCP报文将被丢弃。
该字段由 DHCP Client 设置为 0;每经过一个 DHCP Relay 时,该字段加 +1;
Xid:表示 DHCP Client 选取的随机数,使 DHCP Server 的回复与 DHCP Client 的报文相关联。
Secs(seconds):由 DHCP Client 填充,表示从 DHCP Client 开始获得(或续借)IP Address 后,已使用了的秒数(默认 3600s)
Flags:16-bit,客户端请求服务器发送响应报文的形式,
1)只有最高位有意义:为 0 时,要求 Server 以 Unicast 响应;为 1 时,要求 Server 以 Broadcast 响应;
2)其余 15-bit 为零,保留;
Ciaddr:
Yiaddr(your client ip address):
表示 DHCP Server 分配给 DHCP Client 的 IP-Address;
当 DHCP Server 进行 DHCP 响应时,将分配给 DHCP Client 的 IP-Address 填入此字段;
Siaddr(server ip address):
表示 DHCP Server 的 IP Address(客户端选择使用的地址)。
Giaddr(gateway ip address):
表示首个 DHCP Relay 的 IP-Address;首个 DHCP Relay 会把自己的 IP-Address 填入此字段,且不会再变更;
DHCP Server 会根据此字段来判断出 DHCP Client 所在的网段地址,从而选择合适的地址池,为 DHCP Client 分配该网段的 IP-Address;
DHCP Server 还会根据此地址将响应报文发送给此 DHCP Relay,再由 DHCP Relay 将此报文转发给 DHCP Client;
CHAddr(Client Hardware Address):表示 Client 的 MAC Address;[……]
「IPv6 Transition」- Tunnel, IPv4 over IPv6
问题描述
在 IPv4 网络向 IPv6 网络过渡后期,IPv6 网络已被大量部署,而 IPv4 网络只是被 IPv6 网络隔离开的局部网络。采用专用的线路将这些 IPv4 网络互连起来,显然是不经济的;
解决方案
通常的做法是采用隧道技术。利用隧道技术可以在 IPv6 网络上创建隧道,使 IPv4 网络能通过 IPv6 公网访问其他 IPv4 网络,从而实现 IPv4 网络之间的互连,这种隧道称为 IPv4 over IPv6 隧道;
原理简述
IPv4 over IPv6 隧道:
1)解释:将 IPv4 流量封装在 IPv6 隧道中,适用于在 IPv6 传输网络中实现 IPv4 孤岛之间的互通;
2)实现:IPv4 over IPv6 隧道包括:手动隧道、IPv6 VXLAN、SRv6 等;
特性特征
WIP
应用场景
在 IPv4 过渡 IPv6 的后期(IPv4 Networking 减少,以 IPv6 Networking 为主);[……]
「IPv6」- IPv4-mapped IPv6 addresses
内容简介
为什么使用 netstat 命令只显示 tcp6 协议?
IPv4-mapped IPv6 addresses ?
Wikipedia/IPv4-mapped IPv6 addressesnetstat — why are IPv4 daemons listening to ports listed only in -A inet6?Why are IPv4 TCP connections showing as tcp6?Apache2 does not run on IPv4 tcp port[……]
「IKE」- 预共享密钥,第一阶段,野蛮模式(Aggressive Mode)
问题描述
在 Main Mode 中,当第二次交换后,便可生成会话密钥,会话密钥的生成材料中包含预共享密钥。
而当某个对等体需要同时与多个对等体进行协商 SA 时,则需要为每个对等体设置一个预共享密钥。为了对每个对等体正确地选择对应地预共享密钥,Main Mode 需要根据前面交换信息中的 IP-ADDR 来区分不同的对等体;
但是,当发起者的 IP-ADDR 是动态分配获得的时候(变化的),由于发起者的 IP-ADDR 不可能被响应者提前知道,而且双方都打算采用预共享密钥验证方法,此时响应者就无法根据 IP-ADDR 选择对应地预共享密钥;
解决方案
野蛮模式就是被用于解决这个矛盾的;
原理简述
与主模式不同,野蛮模式仅用 3 条信息便完成 IKE SA 的建立:
前两条消息 1 和 2 用于协商IKE安全提议,交换 DH 公共值、必需的辅助信息、身份信息,并且消息 2 中还包括响应方发送身份信息供发起方认证
消息 3 是响应方对发起方的认证
由于对消息数进行了限制,野蛮模式同时也限制了它的协商能力,而且不会提供身份保护;
在野蛮模式的交换过程中,
1)发起者会提供一个保护套件列表、DH 公共值、nonce 以及身份资料。所有这些信息都是随第一条信息进行交换的;
2)作为响应者,则需要回应选择一个保护套件、Diffie-Hellman 公共值、nonce、身份资料,以及一个验证载荷;
3)发起者将它的验证载荷在最后一条消息交换;
特性特征
提高速度:与主模式相比,野蛮模式减少了交换信息的数目,提高了协商的速度,
降低安全性:野蛮模式由于在其第一条信息中就携带了身份信息,所以本身无法对身份信息进行加密保护,这就降低了协商的安全性;
增加灵活性:其不依赖 IP 地址标识身份(能通过 IP-ADDR 或 Name 来标识对等体),在野蛮模式下也就有了更多灵活的应用;
实验观察
实验拓扑:
交互抓包(./ipsec-aggressive-mode.pcapng):[……]
「SRV6」- 部署环境:L3VPN over SRv6 BE
SRv6 BE(Best Effort)承载 VPN 流量时,PE 之间的 P 设备不作为 Endpoint 节点使用;
路由传递流程
PE 配置 SRv6 和 SRv6 VPN,中间节点设备需要支持 IPv6;
PE2 发布 SRv6 Locator 路由给 PE1;
CE 到 PE 的路由信息交换:CE2 把本站点的路由发布给 PE2。CE 与 PE 之间可以使用静态路由、RIP、OSPFv3、IS-IS 或 BGP;
PE2 从 CE2 学习到 VPN 路由信息后,存放到 VPN 实例路由表中。同时,转换成 MP-BGP 路由;
PE 之间路由发布:PE2 通过 MP-BGP 把 VPN 路由发布给出口 PE1,并且 Update 报文中还携带 RT 属性及 SRv6 VPN SID 属性。注意,BGP 分配的 SRv6 VPN SID 是在 SRv6 Locator 范围之内的,所以才使得后续的 IPv6 报文转发成为可能。
PE1 接收 VPN 路由:PE1 收到 VPN 路由后,在下一跳可达并且通过 BGP 的入口策略的情况下,进行私网路由交叉、路由迭代 SRv6 BE 路径、路由优选等动作,决定是否将该路由加入到 VPN 实例路由表。VPN 路由下发同时关联 SRv6 VPN SID;
PE 到 CE 的路由信息交换:CE1 有多种方式可以从 PE1 学习 VPN 路由,包括静态路由、RIP、OSPFv3、IS-IS 和 BGP,与 CE2 到 PE2 的路由信息交换相同;
报文转发流程
头端 PE1 接收到 CE1 发送的普通单播报文后,查找 VPN 实例路由表,该路由的出接口是 SRv6 Policy。PE1 为报文插入 SRH 信息,封装 SRv6 Policy 的 SID List,然后封装 IPv6 报文头信息。完成之后,PE1 将报文对 P1 转发;
中间 P1 根据 SRH 信息逐跳转发;
报文到达尾节点 PE2 之后,PE2 使用报文的 IPv6 DST Address FC03::3 查找 My Local SID 表,命中到 End SID,所以 PE2 将报文 SL 减 1,IPv6 DA 更新为 VPN SID FC03::300;
PE2 使用 VPN SID FC03::300 查找 My Local SID 表,命中到 End.DT4 SID,PE2 解封装报文,去掉 SRH 信息和 IPv6 报文头,使用内层报文目的地址查找 VPN SID FC03::300 对应的 VPN 实例路由表,然后将报文转发给 CE2;[……]
「IPv6 Transition」- Translation / NAT64(NAT IPv6-to-IPv4)
问题描述
当 IPv4 网络的节点需要直接与 IPv6 网络的节点进行通信时,默认情况下是行不通的,因为两个协议栈无法兼容;
解决方案
但是借助一台设备,由该设备来实现 IPv6 与 IPv4 的互转,那么上述通信就可以实现。NAT64 是一种将 IPv6 网络地址转换成 IPv4 网络地址的 NAT 技术;
原理简述
要进行 NAT64 处理的报文前缀需要提前被定义。简而言之,通过在 NAT64 Router 上预先配置 NAT64 Prefix,然后 NAT64 Router 判断数据 IP-Packet.DST-IPv6-ADDR 是否匹配 NAT64 Prefix,以此决定是否进行地址转换;
针对设备接收到的 IPv6-Packet 的 Prefix 信息:
1)若为设备中定义的 NAT64 Prefix,说明报文的目的地址是 IPv4 网络,报文将经过 NAT64 处理后被转发至 IPv4 网络;
2)若非设备中定义的 NAT64 Prefix,说明报文的目的地址是 IPv6 网络,报文将不经过 NAT64 处理,直接被转发至 IPv6 网络;
特性特征
WIP
应用场景
IPv6 网络用户,访问 IPv4 网络服务器的应用场景;
1)在向 IPv6 网络演进的前期,运营商为用户提供 IPv6 单栈接入能力,而很多 Internet 服务器还是 IPv4 的,不具备双栈能力。这种情况下,运营商提供 NAT64 设备,使 IPv6 单栈用户可以访问 IPv4 服务器;
2)该场景下,运营商只为用户分配 IPv6 地址,NAT64 设备支持双栈,纯 IPv6 的访问通过 IPv6 路由来实现;而 IPv6 访问 IPv4 业务通过 NAT64 映射技术来完成;
3)当 IPv6 用户较少且 IP 地址固定时,可以通过静态 NAT64 映射实现 IPv6 访问 IPv4 业务;当网络中存在大量 IPv6 用户且 IP 地址不固定时,可以通过动态 NAT64 映射实现 IPv6 访问 IPv4 业务;
IPv4 网络用户,访问 IPv6 网络服务器的应用场景;
1)在向 IPv6 网络演进的后期,许多服务提供商已经开始提供 IPv6 服务。而 Internet 上还有很多 IPv4 单栈用户存在,为了保留住用户,服务提供商提供 NAT64 设备,使 IPv4 单栈用户可以访问服务器;
2)该场景下,服务提供商只为服务器分配 IPv6 地址,接入设备不需要升级。NAT64 设备部署在出口,必须支持双栈,其中纯 IPv6 的访问通过 IPv6 路由来实现;而 IPv4 对 IPv6 的访问通过静态 NAT64 映射技术来完成;
转换类型
NAT64 分类:
基于 PAT 方式的 NAT6[……]
「ICMPv6」- 概念、术语
消息类型
与 ICMP 类似,ICMPv6 报文也分为两类:差错报文;信息报文;
差错报文(差错消息)
如果 ICMPv6.Type=[ 0, 127] 范围,即 Type 字段最高 bit 为 0,则为差错报文(Error Messages);
差错消息用于报告在转发 IPv6 数据包过程中出现的错误,如常见的目的不可达、超时等等。
通过差错报文实现的协议(或机制)有:
1)Path MTU 发现机制:Path MTU, PMTUD
2)测试网络连通性:ping
信息报文(信息消息)
如果 ICMPv6.Type=[128, 255] 范围,即 Type 字段最高 bit 为 1,则为信息报文(Information Messages);
信息报文能够用以实现更丰富的功能,可以用来实现 同链路上节点间的通信、子网内的组播成员管理 等等。
通过信息报文实现的协议(或机制)有:
1)邻居发现协议:+NDP, Neighbor Discovery Protocol
2)组播侦听者发现协议:+MLD, Multicast Listener Discovery
常见消息类型[……]
「DHCPv6」- Stateless Address Autoconfiguration
Information-Request
Frame 142: 120 bytes on wire (960 bits), 120 bytes captured (960 bits) on interface -, id 0
Ethernet II, Src: 02:00:4c:4f:4f:50 (02:00:4c:4f:4f:50), Dst: IPv6mcast_01:00:02 (33:33:00:01:00:02)
Internet Protocol Version 6, Src: fe80::cd79:aa:4e1d:5dfc, Dst: ff02::1:2
User Datagram Protocol, Src Port: 546, Dst Port: 547
DHCPv6
Message type: Information-request (11)
Transaction ID: 0xc81d5e
Elapsed time
Option: Elapsed time (8)
Length: 2
Elapsed time: 0ms
Client Identifier
Option: Client Identifier (1)
Length: 14
DUID: 0001000128ca2f625405dbe0886c
DUID Type: link-layer address plus time (1)
Hardware type: Ethernet (1)
DUID Time: Sep 7, 2021 22:10:42.000000000 China Standard Time
Link-layer address: 54:05:db:e0:88:6c
Vendor Class
Option: Vendor Class (16)
Length: 14
Enterprise ID: Microsoft (311)
vendor-class-data: MSFT 5.0
Option Request
Option: Option Request (6)
Length: 8
Requested Option code: Vendor-specific Information (17)
Requested Option code: DNS recursive name server (23)
Reque[……]
「DHCPv6」- 前缀代理(PD,Prefix Delegation)配置
华为网络设备
注意事项,这里仅记录关键配置及命名,非关键命名已省略;
DHCPv6 Server (PD)
[AR4-GigabitEthernet0/0/0]ipv6 address 3001::1/64
[AR4-GigabitEthernet0/0/0]undo ipv6 nd ra halt
[AR4]dhcp enable
[AR4]dhcpv6 pool pd01
[AR4-dhcpv6-pool-pd01]prefix-delegation 3001:1::/64 64
[AR4-GigabitEthernet0/0/0]dhcpv6 server pd01
DHCPv6 PD Client
[AR3-GigabitEthernet0/0/1]ipv6 address auto global default
[AR3-GigabitEthernet0/0/1]dhcpv6 client pd mypd # 作为 DP Client 运行
[AR3-GigabitEthernet0/0/1]display dhcpv6 client
GigabitEthernet0/0/1 is in DHCPv6-PD client mode.
State is BOUND.
Preferred server DUID : 0003000100E0FC0E52F0
Reachable via address : FE80::2E0:FCFF:FE0E:52F0
IA PD IA ID 0x00000041 T1 43200 T2 69120
Prefix name : mypd
Obtained : 2022-02-07 17:14:08
Renews : 2022-02-08 05:14:08
Rebinds : 2022-02-08 12:26:08
Prefix : 3001:1::/64
Lifetime valid 172800 seconds, preferred 86400 seconds
Expires at 2022-02-09 17:14:08(172782 seconds left)
[AR3-GigabitEthernet0/0/0]ipv6 address auto link-local
[AR3-GigabitEthernet0/0/0]ipv6 address mypd ::3333 64 # 通过 PD 获取地址
[AR3-GigabitEthernet0/0/0]undo ipv6 nd ra halt
[AR3][……]
「Huawei VRP」- 配置 DHCPv6 服务
华为网络设备,有状态自动配置(Statefull Address Configuration)
注意事项,具体的配置方法参考设备文档。
第一步、配置 DHCPv6 服务
// 第 1 步、配置接口地址
[Huawei] ipv6
[Interface] ipv6 enable
[Interface] ipv6 address <prefix/length>
// 第 2 步、配置地址池
[Huawei] dhcp enable
[Huawei] dhcpv6 pool <pool-name>
[Pool] address prefix <prefix/length>
[Pool] dns-server 2008::8
// 第 3 步、开启 RA 发送
[Interface] undo ipv6 nd ra halt
[Interface] ipv6 nd autoconfig managed-address-flag # 指示 Client 以 DHCPv6 获取网络地址
[Interface] ipv6 nd autoconfig other-flag # 指示 Client 以 DHCPv6 获取其他参数
// 第 4 步、选择地址池
[Interface] dhcpv6 server <pool-name>
第二步、配置客户端获取地址
路由器通过 DHCPv6 获取地址:
interface GigabitEthernet0/0/2
ipv6 enable
ipv6 address auto link-local
ipv6 address auto dhcp
[AR1]display ipv6 interface GigabitEthernet 0/0/2
GigabitEthernet0/0/2 current state : UP
IPv6 protocol current state : UP
IPv6 is enabled, link-local address is FE80::2E0:FCFF:FEAC:2EC5
Global unicast address(es):
2001::3, subnet is 2001::3/128
Joined group address(es):
FF02::1:FF00:3
FF02::2
FF02::1
FF02::1:FFAC:2EC5
MTU is 1500 bytes
ND DAD is enabled, number of DAD attempts: 1
ND reachable time is 30000 m[……]
「DHCP」- 动态主机配置协议 | Dynamic Host Configuration Protocol
认识
问题描述
随着网络规模的不断扩大,网络复杂度不断提升,网络中的终端设备例如主机、手机、平板等,位置经常变化。终端设备访问网络时,网络如果要正常地运行,则网络中的主机(Host)必需要知道某些重要的网络参数,需要配置 例如 IP地址、网关地址、DNS服务器地址等等参数。
显然,在每台设备上都采用手工方式来配置这些参数是非常困难的、或是根本不可能的、非常低效且不够灵活。手工配置主机IP地址、网络掩码、网关地址、DNS服务器地址等网络参数时,需要经过地址规划、地址分配、地址配置、地址维护等复杂的操作流程。这使地址分配灵活性差,IP地址资源利用低,同时较大的工作量导致配置容易出错,对人员有较高的技能要求。
在大型企业网络中,会有大量的主机或设备需要获取网络地址等网络参数。但是:
1)如果采用手工配置,不易管理、灵活性差、容易出错、工作量大;
2)如果有用户擅自修改网络参数,还有可能会造成IP地址冲突等问题;
解决方案
为此,IETF 于 1993 年发布 DHCP(动态主机配置协议,Dynamic Host Configuration Protocol),实现网络参数配置过程的自动化,是种用于集中对用户 IP Address 等待网络参数进行动态管理和配置的协议。
DHCP 允许计算机动态地获取 IP 地址,而不是静态为每台主机指定地址。通过 DHCP 来分配网络地址等网络参数,能够提高效率、简化管理,避免用户手工配置网络参数时造成的地址冲突。
组成
DHCP 采用 C/S(Client/Server,客户端/服务器)通信模式:
1)当正常工作时,由 Client 向 Server 提出配置申请。
2)Server 返回为 Client 分配的 IP Address 等相应的配置信息。
网络终端设备,例如主机、打印机、笔记本电脑、手机、AP 等等,作为DHCP客户端,向 DHCP Server 请求分配相关网络参数;
DHCP Server 响应 DHCP Client 请求进行动态分配。
性质
DHCP Server 能够为大量主机分配网络地址、网关、DNS 等等网络配置,并能够集中管理;
DHCP 相对于手工配置有如下优点:效率高、灵活性强、易于管理
DHCP 带来的收益主要有以下两点:
1)降低客户端的配置和维护成本
2)集中管理、分发网络参数;
即使规模较小的网络,通过DHCP也可以使后续增加网络设备变得简单快捷。
应用
家庭网络、企业网络,需要通过以太网地址进行网络访问;
服务器网络环境,通常不使用 DHCP 协议,因为该环境需要保证地址稳定;
参考
Dynamic Host Configuration Protocol – WikipediaDHCP snoo[……]
「APACHE-GROOVY」- 场景 | 方案
01)变量参数:用于存储数据的容器;
02)数据类型:描述变量可以存储的数据的种类,如整数、浮点数、布尔值等;
03)运算符号:用于对变量进行操作的符号,如加减乘除等;
04)控制结构:用于控制程序如何执行的结构,如条件语句、循环语句等;
三元运算
def displayName = (name != null) ? name : “匿名用户”
def displayName = name ?: “匿名用户”
05)函数方法:一段可重复使用的代码,用于完成特定的任务;
06)类和对象:面向对象编程中的基本概念,用于描述现实世界中的事物;
07)模块单元:用于组织代码的单元,可以将代码分成多个文件或模块,提高代码的可维护性和重用性;
08)注释注解:用于在代码中添加说明性文字,方便其他人理解代码;
09)异常处理:用于处理程序中可能出现的错误或异常情况;
10)编译解释:编程语言的执行方式,编译将源代码转换为可执行文件,解释直接解释执行源代码;
11)标准类库:编程语言提供的标准函数和类库,用于完成常见的任务;
依赖管理工具 —— Grape
with Maven
Building a Groovy project with Maven – redcube.de
indy | Invoke Dynamic
Difference between groovy-all-*.jar and groovy-all-*-indy.jar – Stack Overflow
Since Groovy 2.0, we added support for the JVM invokedynamic instruction. This instruction is supported since Java 7 and is a new bytecode instruction in the JVM that allows easier implementation of dynamic languages. This instruction will also be used internally, by the JVM, for the upcoming lamdba support in Java 8.
This means that unlike APIs, AST transformations or syntactic sugar, this feature is not visible to the developer or the end user. It is a compilation and runtime feature only[……]
「DHCP」- Release
Frame 42: 410 bytes on wire (3280 bits), 410 bytes captured (3280 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_32:73:97 (54:89:98:32:73:97), Dst: HuaweiTe_4c:52:12 (00:e0:fc:4c:52:12)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Dynamic Host Configuration Protocol (Release)
Message type: Boot Request (1)
Hardware type: Ethernet (0x01)
Hardware address length: 6
Hops: 0
Transaction ID: 0x00000000
Seconds elapsed: 38784
Bootp flags: 0x0000 (Unicast)
0… …. …. …. = Broadcast flag: Unicast
.000 0000 0000 0000 = Reserved flags: 0x0000
Client IP address: 192.168.0.253
Your (client) IP address: 0.0.0.0
Next server IP address: 0.0.0.0
Relay agent IP address: 0.0.0.0
Client MAC address: HuaweiTe_32:73:97 (54:89:98:32:73:97)
Client hardware address padding: 00000000000000000000
Server host name not given
Boot file name not given
Magic cookie: DHCP
Option: (53) DHCP Message Type (Release)
Length: 1
DHCP: Release (7)
Option: (55) Parameter Request List
Length: 2
Parameter Request List Item:[……]
「SRV6」- 概念术语:Segment
SRv6 Segment 举例
End SID 用于标识网络中的某个目的节点(Node)。
通过 IGP 协议,End SID 被扩散到其他网元,全局可见,本地有效。
类似 SR-MPLS 中的 Node SID。
End.X SID 表示三层交叉连接的 Endpoint SID,用于标识网络中的某条链路。
通过 IGP 协议,End.X SID 被扩散到其他网元,全局可见,本地有效。
类似 SR-MPLS 中的 Adjacency SID。
End.DT4 SID 表示 PE 类型的 Endpoint SID,用于标识网络中的某个 IPv4 VPN 实例。End.DT4 SID 对应的转发动作是解封装报文,并且查找 IPv4 VPN 实例路由表转发。End.DT4 SID 在 L3VPNv4 场景使用,等价于 IPv4 VPN 的标签。End.DT4 SID 可以通过静态配置生成,也可以通过 BGP 在 Locator 的动态 SID 范围内自动分配。
SRv6 Flavors 附加行为
Flavors 是为了增强 SRv6 Segment 而定义的附加行为。这些附加行为是可选项,它们将会增强 SRv6 Segment 的执行动作,满足更丰富的业务需求;
SRv6 Network Programming 中定义了以下附加行为:
PSP(Penultimate Segment Pop of the SRH,倒数第二段弹出 SRH);
USP(Ultimate Segment Pop of the SRH,倒数第一段弹出 SRH);
USD(Ultimate Segment Decapsulation,倒数第一段解封装);
附加行为
功能描述
附着的 End 指令
PSP
在倒数第二个 Endpoint 节点执行移除 SRH 操作。
End、End.X、End.DT2、End.DT4、End.DT6
USP
在最后一个 Endpoint 节点执行移除 SRH 操作。
End、End.X、End.DT2、End.DT4、End.DT6
USD
在最后一个 Endpoint 节点执行解封装外层 IPv6 报文头操作。
End、End.X、End.DT2、End.DT4、End.DT6
Flavors 附加行为可以组合定义,例如 End SID 带上 PSP 和 USP,那么在倒数第二个节点执行 PSP 动作,在倒数第一个节点执行 USD 动作;[……]
「IPv6 Transition」- Tunnel / IPv6 over IPv4 / 6PE
问题描述
对于网络中的运营商来说,无须另外新建 IPv6 骨干网络,可以利用现有 IPv4 网络为用户提供 IPv6 服务来连接网络中的 IPv6 孤岛;
解决方案
6PE(IPv6 Provider Edge,IPv6 供应商边缘路由器)正是基于这个理念来设计的;
原理简述
6PE 是一种在目前的 IPv4 网络中利用 MPLS 隧道技术为不同地区的被分割的 IPv6 网络提供连通服务的解决方案,它是在 ISP 的 PE 上实现 IPv4/IPv6 双协议栈,利用 MP-BGP 为其分配的标签标识 IPv6 路由,从而通过 PE 之间的 IPv4 隧道实现 IPv6 孤岛之间的互通;
特性特征
便于维护:所有配置在 PE 上完成,用户的 IPv6 网络感知不到 IPv4 网络的存在。利用现有的 IPv4 网络承载 IPv6 业务,降低了维护难度;
建网成本低:运营商能够很好的利用现有的 MPLS 网络资源,无须对网络进行升级改造就可以为用户提供 IPv6 服务。6PE 设备还可以同时为用户提供 IPv6 VPN 和 IPv4 VPN 等多种业务;
单自治域
IPv6 孤岛连接到同一个自治域,处于同个自治域内的 PE 之间通过 MP-IBGP 关系传递 IPv6 路由;
如图所示,单自治域 6PE 的路由传递和数据转发过程,该图表示的是 CE2 发送路由给 CE1,CE1 发送报文给 CE2 的过程;
I-L 表示内层标签(MP-IBGP Label),内层标签由 MP-BGP 分配,表示报文的出接口或者报文属于哪个 CE;
O-L 表示外层隧道标签(MPLS Label),外层隧道标签由 MPLS 分配,用来指示如何到达 BGP 下一跳;
控制平面:路由传递过程
CE2 将域内 IPv6 路由通过 EBGP 对等体关系传递给 6PE2;
6PE2 收到 CE2 发来的 IPv6 路由后,修改路由的下一跳为自身,并且为 IPv6 路由分配内层标签,然后将 IPv6 标签路由通过 IBGP 对等体关系向 6PE1 发送;
6PE1 收到 6PE2 发来的 IPv6 标签路由后,为 IPv6 标签路由迭代隧道,并且将路由信息下发到转发表。
然后,6PE1 修改路由的下一跳为自身,并且去除 IPv6 路由的标签,然后通过 EBGP 对等体关系向 CE1 发送普通 IPv6 路由;
数据平面:报文转发过程
CE1 将普通 IPv6 报文通过公网 IPv6 链路发送给 6PE1;
6PE1 收到 CE1 发来的 IPv6 报文后,根据报文的目的地址查找转发表,然后为报文封装内层标签和外层隧道标签。封装了两层标签的 IPv6 报文通过公网隧道被转发给 6PE2;
6PE2 收到封装了两层标签的 IPv6 报文后[……]
「SRV6」- 部署环境
SRv6 Locator 配置命令
使能 SRv6 功能,并进入 SRv6 视图
配置 segment-routing ipv6 命令后,可以在 SRv6 视图下配置 Locator 和 SRv6 SID,以生成 SRv6 Local SID 转发表项;
[Huawei] segment-routing ipv6
配置 SRv6 SID Locator 字段
[Huawei-segment-routing-ipv6] locator locator-name [ ipv6-prefix ipv6-address prefix-length [ [ static static-length ] | [ args args-length ] ] * ]
SRv6 SID 是 IPv6 地址形式,总计 128 位。SRv6 SID 格式为 Locator:Function:Args。其中:
1)Locator 字段对应 ipv6-prefix ipv6-address 参数,长度由 prefix-length 参数决定;SRv6 Policy 转发过程
2)Function 字段也称为 Opcode,可以通过 IGP 协议动态分配,也可以通过 opcode 命令静态配置。配置 Locator 时可以通过 static static-length 参数指定静态段长度,静态段长度决定能够在该 Locator 下配置多少静态 Opcode,IGP 协议动态分配 Opcode 时会在静态段范围外申请,确保最终构成的 SRv6 SID 不会冲突;
3)Args 字段由 args args-length 参数决定,Args 字段在 SRv6 SID 里是可选的,由命令配置决定;
static static-length 指定静态段长度。本参数指定 Function 里的静态段长度,静态段长度决定能够在该 Locator 下配置多少静态 Opcode;
args args-length 指定参数段长度。参数段在 SID 的最末端,如果配置了 args args-length,则参数段预留,配置静态或生成的动态 SID 不会占用该段;
配置静态 End SID 的 Opcode
[Huawei-segment-routing-ipv6-locator] opcode func-opcode end [no-flavor | psp | psp-usp-usd ]
End SID 标识一个 SRv6 节点;
静态配置 End.X SID 的 Opcode
[Huawei-segment-routing-ipv6-locator] opcode func-opcode end-x interface {interface-[……]
「IKE」- Phase 2,快速模式(Quick Mode)
IKEv1 Phase 2 的目的是建立用来安全传输数据的 IPsec SA,并为数据传输衍生出密钥;
Phase 2 采用快速模式(Quick Mode)。该模式使用 IKEv1 协商第一阶段中生成的密钥对 ISAKMP 消息的完整性和身份进行验证,并对 ISAKMP 消息进行加密,故保证了交换的安全性;
当建立 IKE SA 关系之后(无论通过主模式还是通过野蛮模式交换),便可用它为 IPSec 生成相应的 SA。IPSec SA 是通过 Quick Mode 交换来建立的,对快速模式交换来说,它是在以前建立好的 IKE SA 的保护下完成的;
概述交互过程
IKEv1 Phase 2 通过 3 条 ISAKMP 消息完成双方 IPsec SA 的建立:
快速模式共需要交换 3 个消息
1)在 MSG-1 和 MSG-2 中,交换 SA、KEY、Nonce、ID,用以协商算法、保证 PFS 以及提供“在场证据”
2)在 MSG-3 中:是用于验证响应者是否可以通信,相当于确认信息;
MSG-1
协商发起方,发送本端的安全参数和身份认证信息;
安全参数包括被保护的数据流和 IPsec 安全提议等需要协商的参数。身份认证信息包括第一阶段计算出的密钥和 Phase 2 产生的密钥材料等,可以再次认证对等体;
MSG-2
协商响应方,发送确认的安全参数和身份认证信息并生成新的密钥;
IPsec SA 数据传输需要的加密、验证密钥由第一阶段产生的密钥、SPI、协议等参数衍生得出,以保证每个 IPsec SA 都有自己独一无二的密钥;
MSG-3
发送方发送确认信息,确认与响应方可以通信,协商结束;
详细交互过程
在一次快速交换模式中,通信双方需要协商拟定 IPSec 安全联盟的各项特征,并为其生成密钥。IKE SA 保护快速模式交换的方法是:对其进行加密,并对消息进行验证。消息的验证是通过伪随机函数来进行的。来自 IKE SA 的 SKEYID_a 的值作为一个密钥,对快速模式交换的整个消息进行验证。这种验证除了能提供数据完整性保证之外,还能对数据源的身份进行验证:在消息接收到之后,我们知道它只有可能来自验证通过的实体,而且那条消息在传送过程并未发生改变。而通过加密(使用 SKEYID_e),则可保障交换的机密性;
快速模式需要从 SKEYID_d 状态中衍生出用于 IPSec SA 的密钥。随同交换的 nonce 以及来自 IPSec SA 的 SPI 及协议一道,这个密钥将在伪随机函数中使用,这样便可确保每个 SA 都有自己独一无二的密钥:每个 SA 都有一个不同的 SPI,所以入方向 SA 的密钥也会与出方向 SA 不同。所有 IPSec 密钥都是自相同的来源衍生的,所以相互间都有关联。假如一名攻击[……]
「IPv6 Transition」- Translation / IVI
解决方案
IVI 无状态地址转换技术,
原理简述
主要思想是 ISP 保留一段 IPv4 地址(称为 IVI4 地址),将其唯一映射为一段特殊的 IPv6 地址(称为 IVI6 地址),通过地址嵌套的方式,可以实现这部分地址的无状态转换;
获得 IVI6 地址的用户可以直接访问全球 IPv6 网络,通过 IVI 网关翻译器可将地址转换 IVI4 地址,可以和全球 IPv4 网络通信,实现 IPv4 和 IPv6 的互访;
特性特征
IVI 支持 IPv6 主机发起的通信,也支持从 IPv4 主机发起的通信。
IVI 技术限制:要求主机 / 服务器的 IPv6 地址需按照 IVI 的格式进行规划和配置,无法使用无状态地址分配技术;
应用场景
WIP
地址结构
IVI6
IVI Prefix:32-bit,IVI6 地址的前 32 位为 IVI 的 IPv6 地址前缀
FF:8-bit,后面 8 位固定为 FF;
IPv4-Addr:32-bit,IVI6 地址从第 41 位到 72 位为嵌入的 IPv4 地址;
Suffix:保持全 0;
通信过程
以 IVI6 主机访问全球 IPv4 主机为例:
由于 IVI6 地址格式特殊,无法使用无状态 IPv6 地址自动配置机制,因此 IPv6 主机通过静态配置或 DHCPv6 选项得到 IVI6 地址、默认网关及 DNS 服务器地址信息。
IVI6 主机向 IVI DNS 进行 AAAA 查询。IVI DNS 是双栈设备,它存放了 IVI 服务的 IVI4 地址和对应的 IVI6 地址。当它收到 AAAA 查询请求后,先向目标网络发送 AAAA 查询请求,如果 AAAA 记录不存在,再发送 A 查询请求,并将得到的 A 记录按照 IVI 映射的规则将其转换为 AAAA 记录,将其返回给源 IVI6 主机。
IVI6 主机发送数据包,当到达 IVI 网关后,数据包被 IVI 翻译器无状态地转换为 IPv4 数据包。其中地址翻译是根据 IVI6 地址格式取出嵌入其中的 IPv4 地址,包头的翻译是根据 SIIT( Stateless IP/ICMP Translation,无状态 IP/ICMP 转换)算法。
翻译后的 IPv4 数据包被路由到 IPv4 网络中,最终实现 IVI6 主机对 IPv4 主机的访问。[……]
「IPv6 Tansition」- 隧道技术:IPv6 over IPv4 Tunnel
解决方案
IPv6 over IPv4 是通过隧道技术,使 IPv6 Traffic 在 IPv4 Network 中传输,实现 IPv6 Network 之间的孤岛互连;
IPv6 over IPv4 隧道:
1)解释:将 IPv6 流量封装在 IPv4 隧道,适用于在 IPv4 传输网络中实现 IPv6 孤岛之间的互通;
3)时期:在 IPv4 过渡 IPv6 的前期(IPv4 Networking 主导,IPv6 Networking 部署较少);
技术实现:
1)Tunnel(Manual Tunnel、Automatic Tunnel)
2)6PE:IPv6 Provider Edge
3)6VPE:IPv6 VPN Provider Edge[……]