「PXE」- 多种操作系统启动环境搭建

通过对CentOS和Debian的PXE启动环境制作,可以发现以下几点:

关于pxelinux.0文件:虽然二者使用的pxelinux.0文件不同,且其依赖的具体文件也不同,但是都是为了显示一个启动菜单。

关于pexlinux.cfg/default文件:这是一个菜单文件,在pxelinux.0加载时使用,该文件定义了菜单的内容及相关的动作。而具体的启动那种发行版,从哪里加载哪些安装文件(HTTP),这都是根据这个文件中配置的vmlinuz、initrd.img参数决定的。

所以说:

不管是Debian的netboot.tar.gz,还是CentOS的syslinux,使用任何一个都可以,目的都是提供一个启动菜单。

然后修改菜单配置文件(即pxelinux.cfg/default文件),配置不同的菜单项来加载不同发行版的vmlinuz、initrd.img文件。

另外就是要为不同的发行版配置不同的源:比如Debian要创建镜像站,而CentOS直接挂载安装镜像就可以了。

所以,多操作系统启动环境的关键是配置pxelinux.cfg/default文件。
关于Windows PE的启动
也可以对Windows PE启动,这部分的内容可以参考「ArchWiki/Windows PE」一文。
其他文章
关于pxelinux.cfg/default文件的内容可以参考手册。[……]

READ MORE

「cloud-init」- 通过 Cloud Image 部署,来安装操作系统 | 安装 | 使用

第零步、部署环境信息
KVM | libvirtd
第一步、创建镜像
下载 Cloud Image 文件:
1)Ubuntu:https://cloud-images.ubuntu.com/
2)CentOS:https://cloud.centos.org/centos/7/images/

# .img 文件为 QCOW2 格式
wget http://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img

# 创建磁盘文件
qemu-img convert -f qcow2 -O raw focal-server-cloudimg-amd64.img focal-server-cloudimg-amd64.raw
qemu-img resize focal-server-cloudimg-amd64.raw 100G

# 创建磁盘文件:此方式使用 QCOW2 的写时复制特性,hal9000.img 引用 focal-server-cloudimg-amd64.img 文件,空间占用小
qemu-img create -b focal-server-cloudimg-amd64.img -f qcow2 -F qcow2 hal9000.img 10G

第二步、创建配置

apt-get install whois cloud-image-utils

mkpasswd -m sha512crypt 123456 -S “12345342”

cat > user-data <<EOF
#cloud-config

hostname: focal-server
manage_etc_hosts: localhost

users:
– name: root
lock_passwd: false
hashed_passwd: ‘<the output of mkpassword…>’
ssh_authorized_keys:
– ssh-rsa AAAAB3NzaC1y…

# SSH
ssh_pwauth: True
disable_root: false
EOF

cloud-localds user-data.iso user-data

第三步、创建虚拟机
然后,在虚拟机中同时挂载 focal-server-cloudimg-amd64.raw 与 user-data.iso 文件;

virt-install \
–vcpus=4 \
–ram=8192[……]

READ MORE

「KUBERNETES/KUBECTL」- 扩展 kubectl 命令、安装 kubectl 插件

问题描述
除了我们常用的 kubectl get、kubectl delete、kubectl describe 子命令之外,kubectl 还支持某些特殊的子命令。比如 kubectl cert-manager、kubectl ingress 等等特殊子命令,用于完成特定的集群维护任务。
但是,这些子命令需要安装插件,然后才能够使用。比如 kubectl cert-manager 子命令,需要安装 kubectl-cert_manager 插件。
该笔记将记录:在 Kubernetes 中,如何为 kubectl 安装插件,扩展 kubectl 命令的方法,相关问题的处理方法。
解决方案
插件的安装方法有两种:通过手动安装;通过 krew 安装;
鉴于网络环境受限,很难说哪种插件管理方法更便捷。
关于编写插件
参考 Extend kubectl with plugins 插件,获取插件开发方法。
方法一、通过手动安装
鉴于插件文档通常都会介绍自身的安装方法,因此我们不再详细介绍该方法。
方法二、通过 krew 安装
第一步、安装 krew 扩展

# wget https://github.com/kubernetes-sigs/krew/releases/latest/download/krew.tar.gz

# tar zxvf krew.tar.gz
./LICENSE
./krew-darwin_amd64
./krew-darwin_arm64
./krew-linux_amd64
./krew-linux_arm
./krew-linux_arm64
./krew-windows_amd64.exe

# ./krew-linux_amd64 install krew
WARNING: To be able to run kubectl plugins, you need to add
the following to your ~/.bash_profile or ~/.bashrc:

export PATH=”${PATH}:${HOME}/.krew/bin”

and restart your shell.

# echo ‘export PATH=”${PATH}:${HOME}/.krew/bin”‘ >> ~/.bashrc
# source ~/.bashrc

# kubectl krew help
krew is the kubectl plugin manager.
You can invoke krew through kubectl: “kubectl krew [command]…”

第二步、通过 krew 安装其他插件[……]

READ MORE

「Kubernetes」- 部署集群 | 1.25 | 测试环境 | kubeadm | 单节点

该笔记将记录:在 CentOS 7.5 中,如何搭建 Kubernetes 集群(供测试使用),以及相关问题处理;
注意事项
该笔记记录的集群部署方法只能用于实验,不能用于生产环境;
# 02/16/2022 该笔记最早记录搭建 Kubernetes 1.14 集群的方法;
环境概述
Before you begin
1)A compatible Linux host. 操作系统:CentOS 7.x
2)2 GB or more of RAM per machine (any less will leave little room for your apps). 2 CPUs or more.
3)Full network connectivity between all machines in the cluster (public or private network is fine).
网络信息:k8s-master: 172.16.0.125;k8s-worker-01: 172.16.0.126;k8s-worker-02: 172.16.0.128
4)Unique hostname, MAC address, and product_uuid for every node. See here for more details.
5)Certain ports are open on your machines. See here for more details.
6)Swap disabled. You MUST disable swap in order for the kubelet to work properly.
从主节点开始,我们使用 kubeadm 和 kubectl 命令管理集群及其节点;
第一步、在所有节点上执行
环境初始化

# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld

# 设置 SELINUX 关闭
# setenforce 0
yes | cp /etc/selinux/config /etc/selinux/config.backup
sed -i ‘s%SELINUX=enforcing%SELINUX=disabled%g’ /etc/selinux/config

# 关闭 Swap 分区
# swapoff -a && sysctl -w vm.swappiness=0
yes | cp /etc/fstab /etc/fstab.backup
sed -i -E ‘s/(.+\s+swap\s+.+)/# \1/g’ /etc/fstab
swapof[……]

READ MORE

「TMV」- 下载工具(应版权方要求,无法下载)

问题描述
遇见「应版权方要求,无法下载」问题,我们仅能求助其他下载工具,还能有什么其他方法么;
该笔记将记录:在 Linux 中,我们用到下载管理器(用到哪个就整理哪个,所谓佛系整理);
解决方案
软件及其支持的协议
Linux clients for three top P2P networks

软件\协议
HTTP(S)
ed2k
Magnet
Torrent

cURL

 
 
 
 

Wget

 
 
 
 

aMule
 

 
 
 

rtorrent
 
 

 
 

Transmission

 


BitTorrent 客户端。P2P 下载工具;

uGet
 
 
 
 
 

aria2

 


 

Thunder




迅雷

Motrix

 


github.com/agalwood/Motrix

Deluge
 
 
 
 
是个 BitTorrent 客户端,P2P 下载工具;

aria2
同时下载多个 magnet 链接:

aria2c -i uris.txt

Thunder
针对「应版权方要求,无法下载」问题
鉴于软件掌握主动权,因此这是个难以解决的问题,但是也有迂回处理之法。但是不管怎样处理,最后都要更换下载软件;
对于 thunder:// 链接,解码并下载
这个链接是 base64 编码的,直接解码就好了

# function urldecode() { : “${*//+/ }”; echo -e “${_//%/\\x}”[……]

READ MORE

「Kubernetes」- 部署 Dashboard 服务(Kubernetes v1.18.9)

问题描述
虽然很多复杂的操作还是要通过命令行来完成,但是通过图形化界面能够快速完成简单操作,而且操作更加友好、数据显示更加直观,这是命令行所无法相提并论的;
鉴于此,我们将在集群中部署 Dashboard 界面,实现对集群的资源的简单管理、显示正在运行的应用、查看资源状态、查看集群信息等等。但是 kubernetes/dashboard: General-purpose web UI for Kubernetes clusters 表示 Dashboard 只是用于完成简单通用的管理任务,更加复杂的操作还要通过其他组件来完成;
该笔记将记录:在 Kubernetes Cluster 中,如何安装部署 Dashboard 服务,并提供 HTTPS 访问,以及常见问题的处理方法;
解决方案
完成 Kubernetes 基本管理的图形化管理GitHub – kubernetes/dashboard: General-purpose web UI for Kubernetes clusters
系统环境:Kubernetes Cluster v1.18.9
第一步、下载部署文件
根据 Releases · kubernetes/dashboard 描述,针对 Kubernetes 1.18 我们使用最新、最适合的 v2.0.3 版本;
下载 recommended.yaml 文件(如果无法下载,使用 ./recommended.yaml 文件)

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml

第二步、调整部署文件(可选)
结合自身需求与环境,修改部署文件:
1)修改镜像地址,以使用私有镜像仓库中的镜像:这需要我们拉取目标镜像,创建镜像标签并推送似有仓库;然后,修改 YAML 文件以使用私有镜像;
2)修改命名空间位置,将其部署到自定义的命名空间;
第三步、应用部署文件

# kubectl apply -f dashboard.yaml
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-d[……]

READ MORE

「操作系统」- 从USB启动多种ISO镜像

内容简介
在安装操作系统时,重中之重是制作USB启动盘。大致过程如下,首先下载ISO镜像,然后使用工具将其写入U盘中,最后插入主机并启动,在BIOS中选择USB启动盘。下一次,如果需要安装其他操作系统,你还要重复上述操作。
那有没有更高级的USB启动盘,它包含多种操作系统,在启动之后,可以让我们选择想要安装的任意一种操作系统?
本文将介绍:如何使用单个U盘来制作包含多种操作系统安装镜像的USB启动盘,在系统安装时,通过菜单选择需要安装的操作系统。
解决办法
使用在Linux中的GRUB2直接启动ISO文件。
环境概述
1)、运行Linux发行版的主机。我们将在Debian中制作「多引导USB启动盘」(是的,我们将这种USB启动盘,称之为「多引导USB启动盘」)
2)、另外,你需要准备一块非常大的U盘(毕竟它要容纳多种操作系统安装镜像)。在我们的环境中为/dev/sde设备。
(我们也在考虑加入其他,比如FressBSD、ESXi等等,各种可引导的ISO文件)
第一步、格式化USB存储
该步骤主要做三件事,创建一个主分区,设置为可引导,类型设置为FAT32文件系统:

# fdisk /dev/sde
Type d (to delete the existing partition)
Type n (to create a new partition)
Type p (for primary partition)
Type 1 (to create the first partition)
Press Enter (to use the first cylinder)
Press Enter again (to use the default value as the last cylinder)

Type a (for active)
Type 1 (to mark the first partition active “bootable”)

Type t (for partition type)
Type c (to use fat32 partition)
Type w (to write the changes and close fdisk)

第二步、创建FAT32文件系统

#!/bin/sh

mkfs.vfat -F 32 -n MULTIBOOT /dev/sde1

第三步、安装GRUB2引导程序
该步骤做两件事情:安装GRUB2引导程序;配置GRUB2菜单;
安装GRUB2引导程序

#!/bin/sh

mkdir /mnt/USB && mount /dev/sde1 /mnt/USB

grub-install –force –no-floppy[……]

READ MORE

「SR-MPLS-TE」- 应用场景:L3VPN Over SR-MPLS TE

L3VPN Over SR-MPLS TE | 域内
WIP
L3VPN Over SR-MPLS TE:自动选择隧道

CE1 查找路由表,将数据包转发给 R1;
R1 查找 VPN 路由表,添加 R3 为对应的 VPN Instance 分配的标签,并根据隧道选择策略选择对应的 SR-MPLS TE 隧道,添加隧道标签;
R2 收到数据包只进行外层标签替换,然后转发给 R3;
R3 收到数据包后解封装外层标签,并根据内层标签将数据包转发给 CE2,至此数据包到达 CE2;
L3VPN over SR MPLS TE | 跨域
实现方式:

针对域内,建立 SR MPLS TE 隧道;
针对域间,通过 BGP Egress Peer Engineering 技术,建立隧道;
进而,实现一条完整的隧道;

相关技术:

针对域内,通过 Binding SID 技术,为隧道设置粘连标签,以减少标签栈深度;
针对域间,通过 BGP Egress Peer Engineering 技术,为两端分配 Ajd SID 实现互联;

针对跨域访问场景,推荐通过控制集中计算,然后下发端到端 SR-MPLS TE 信息。控制器全局计算,将路径标签整合生成标签栈,并下发给转发器。
控制平面
域内:

在 E2E SR-MPLS TE 隧道创建之前,控制器需要先完成域内 SR-MPLS TE 隧道创建;
如需减少标签深度,可以为域内隧道配置 Binding SID;
如图 PE1 和 PE2 到达 ASBR 的隧道分别配置 BSID 1000 和 2000;

域间:

配置 BGP EPE(Egress Peer Engineering),互相分配 BGP Peer SID 信息。
然后 ASBR 通过 BGP-LS 上报 BGP EPE 生成的标签和网络拓扑信息;

数据平面
所示如图,PE1 到 PE2 的标签栈为 <1000, 304, 2000>;
标签栈中 1000 和 2000 为 BSID,在域内转发时会替换为域内的 SR 标签栈;[……]

READ MORE

「PXE」- Preboot Execution Environment

在计算机中,预启动执行环境(PXE,Preboot eXecute Environment)规范中描述了一种标准的客户端 / 服务端环境,这种环境用于在一个”启用 PXE 的客户端“上启动一个”从网络中检索“的”软件集“。在客户端,它只需要一张由 PXE 功能的网卡和若干的行业标准的网络协议(比如 DHCP 和 TFTP 协议);
PXE 背后的概念起源于 BOOTP/DHCP/TFTP 等协议的早期阶段,截至 2015 年,它构成了 UEFI 标准的一部分。在现代数据中心中,PXE 是操作系统引导、安装、部署的最常见选择;
说白了,当搭建 PXE 环境后,以后如果要安装操作系统,只要客户端的网卡支持 PXE 功能,我们就不用制作 USB 启动盘;
原理概述

环境搭建
虽然 PXE 的工作流程是相同的,但是由于操作系统的不同,所以还是存在着细微的差别:
1)在 TFTP 中,文件有所不同。本质是相同的,但文件名及结构有所差异;
2)在 HTTP 中,文件有所不同。这与要安装的操作系统有关系;
所以为两篇笔记:
1)CentOS – 搭建 PXE 服务,启动 CentOS、RHEL 系列的发行版
2)Debian – 搭建 PXE 服务,启动 Debian、Ubuntu 系列的发行版
3)PXE – 多种操作系统启动环境搭建,制作通用启动环境,可以启动各种发行版本
实际上 CentOS 的网络启动更容易一些,因为 Debain 要搭建“镜像站点”,而 CentOS 直接用“安装镜像”(ISO)就可以了;
参考文献
Preboot Execution Environment百度经验 /PXE 网络装机攻略[……]

READ MORE

「Android」- 小米线刷包

on VirtualBox
Android-x86 – Porting Android to x86Install Android 9 Pie X86 in Virtualbox – 2020 – YouTube
下载镜像:Android-x86 – Porting Android to x86 (android-x86_64-9.0-r2.iso)
系统安装:
1)创建虚拟机:Linux / Other Linux (64-bit);创建虚拟磁盘文件;并指定 ISO 文件;
2)Display / Screen Graphics Contrller: VBoxSVGA
3)启动虚拟机,Advanced options / Auto_Installation – Auto Install to specified harddisk;
4)重启虚拟机;
小米线刷包
本文整理小米线刷包相关的内容。
系统下载
MIUI下载_MIUI9下载_MIUI8下载_MIUI论坛
相关链接
通用线刷教程[……]

READ MORE

「HUAWEI-CERTIFIED-ICT」- 华为 | 数通认证 | Datacom | HCIA/HCIP/HCIE | 网络工程师,认证

认识
华为 Datacom 认证是华为打造的面向未来数据通信人才的培养标准,属于 ICT 技术架构认证类别。Datacom 认证将全面取代 Routing & Switching 认证成为华为构建数通人才能力的标准,Routing & Switching 将正式退出历史舞台。
组成
—— 该部分将介绍“Huawei HCIE Datacom 认证的组成部分”,以帮助我们了解需要学习的网络知识内容。
新网工,就是要学习更多的知识、学习更多内容;
HCIA-Datacom;
HCIP-Datacom-Network Automation Developer、HCIP-Datacom-Advanced Routing & Switching Technology;
HCIE-Datacom(2021 年底上线)
学习路线

1)网络架构:运营商网络、企业网络(路由、交换)、数据中心网络
2)网络通信原理:协议(OSI、TCP/IP)
3)厂商设备:与特定厂商设备相关的工作原理、配置方式
4)考试内容:如果不参加考试,便无需学习考试内容;
HCIA
1)培养初级的网络工程师,具备中小型园区网络的规划设计、部署实施、运维和优化能力;
HCIP
1)HCIP-Datacom-Core Technology:培养数通领域各方向高级工程师核心能力
2)Advanced Routing & Switching Technology:培养雪据通信网络高级工和师,具备中大型企业网络的规划、部等、运给的蕴力
3)WAN Planning and Deployment:培养广域骨干网络场策高级工程岳,具备使用独立进行企业广域骨干奖络规划、部署运维能力
4)Enterprise Network Solution Design:培养企业网络解决方案高级工程师,具备独立进行园区、广域、DCN 等场业赃到读规划设计能力
5)Campus Network Planning and Deployment:培养园区网络场时高级工程师,具备独立进行园区网络规划、部奢的能力
6)SD-WAN Planning and Deployment:培养企业广域瑟联场村高级工程师,具备独立进行企业广域瑟联接入场千规划、部震运维能力
7)Network Automation Developer:培养网络自动化开发高级工程师,具备企业网络自动化部署、开发和运维的能力
HCIE
1)培养具备隐领域朋决方案坚详理论及郎看能力的网络专家,上内备数通技术和网络台合解决方案的深入理解和详吕能力
2)针对 HCIP(2)-(7)课程,其是子方向,但是在 HCIE 中,这些子方向都需要我们进行学习[……]

READ MORE

「Kubernetes」- 安装 cert-manager 组件

该笔记将记录:在 Kubernetes Cluster 中,部署 cert-manager 组件来申请证书,以及相关问题的解决办法。
版本选择
参考文档,以获取详细细节:https://cert-manager.io/docs/releases/
部署方式
Kubernetes | cert-manager
官方提供多种安装方式,从最早的 kubectl appply 方式,再到 kubectl cert-manager 扩展,再到现在(04/01/2022)的 cmctl 专用命令行工具。
最开始我们采用 cmctl 部署,但是后续我们将不再采用 cmctl 工具进行部署,原因是:

官方暂且未提供通过 cmctl 升级 cert-manager 的方法;
在升级实践中,仍旧需要通过 HELM 进行升级,而且需要单独升级 CRD 资源;

现在(05/26/23),我们多以 Helm 进行部署,以便于相关配置文件的管理及维护;
Installing with Helm | https://cert-manager.io/docs/installation/helm/
服务升级
Upgrading from v0.15 to v0.16 | cert-manager[……]

READ MORE

「KUBEADM」- 部署 Kubernetes 集群 | 1.30.0 | 测试环境 | All in One

背景:预算有限,但要借助 Kubernetes 特性,所以我们部署单 Master 节点的 Kubernetes 集群,并且移除 Taint 以允许业务 Pod 调度到该节点上。
该笔记主要参考如下两篇文档:

https://v1-30.docs.kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
https://v1-30.docs.kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

检查工作

A compatible Linux host. The Kubernetes project provides generic instructions for Linux distributions based on Debian and Red Hat, and those distributions without a package manager.

我们该次部署的操作系统满足该要求;

2 GB or more of RAM per machine (any less will leave little room for your apps).

我们该次部署的内存满足该要求;

2 CPUs or more.

我们该次部署的 CPU 满足该要求;

Full network connectivity between all machines in the cluster (public or private network is fine).

If you have more than one network adapter, and your Kubernetes components are not reachable on the default route, we recommend you add IP route(s) so Kubernetes cluster addresses go via the appropriate adapter. ⇒ 我们使用单网卡,无需担心该问题;

Unique hostname, MAC address, and product_uuid for every node. See here for more details.

You can get the MAC address of the network interf[……]

READ MORE

「SR-MPLS-TE-POLICY」- 配置案例

路由颜色映射隧道颜色

通过 IGP 协议,来发布 SR Label 信息。
控制器使用 BGP Link State 收集属性(网络拓扑、网络带宽、时延、标签、……)。控制器根据约束条件计算出符合业务需求的转发路径,然后将算路结果通过 BGP SR Policy 或 PCEP 下发到转发器。也可由工程师手工配置严格转发路径,然后通过 PCEP 将路径托管到控制器。

最早,在光传送领域中,提出 PCEP 协议,但是在 IP Networking 中,PCEP 存在诸多问题(应用少、厂家间互通困难、性能弱、……),所以较少在企业生产网络中部署。进而,在 SR-MPLS Networking 中,推荐使用 BGP SR-Policy 来下发算路结果。
实验过程
基础配置
IP Configuration
IGP / OSPF
SR MPLS TE
隧道配置
隧道的两端都要进行类似如下配置
segment-routing

segment-list foo

index 10 sid label xxxx

index 20 sid label xxxx

segment-list bar

index 10 sid label xxxx

index 20 sid label xxxx

sr-te policy “p1” endpoint x.x.x.x color 100

candidate-path perferance 200

seg-list foo

sr-te policy “p2” endpoint x.x.x.x color 200

candidate-path perferance 200

seg-list bar

display tunnel-info all // 能看到新创建的两个 Tunnel
ping lsp sr-te policy policy-name // 测试
路由通告
ip vpn-inst foo

rd

rt
ip vpn-inst bar

rd

rt

Tunnel 1

ip bind vpn-inst foo
Tunnel 2

ip bind vpn-inst bar

acl xxx

rule permait source x.x.x.x 0
acl xxx

rule permait source x.x.x.x 0
route-policy foo

if-[……]

READ MORE

「Cobbler」- 网络安装 Linux 操作系统

问题描述
该笔记将记录:使用 Cobbler 工具,来实现 Linux 操作系统的安装,以及常见问题的处理方法。
解决方案
Cobbler has a good range of distribution support: Red Hat, Fedora, CentOS, Debian, Ubuntu, and SuSE.
参考文献
Wikipedia/Cobbler (software)Cobbler – Linux install and update serverHow to Install and Configure Cobbler on CentOS 7.x[……]

READ MORE

「Linux」- 系统自动安装、无人值守安装

问题描述
该笔记将记录:如何无人值守(自动安装)安装 Linux 操作系统;
解决方案
unattended installation,handsoff installation
系统自动安装大致过程如下:
1)将安装过程需要回答的问题,保存在配置文件中;
2)将该文件提供给安装器;
3)当执行系统安装时,如果发现该安装文件,将自动回答问题,完成安装;
不同 Linux 发行版,采用不相同的自动安装工具:
1)CentOS & RHEL:能够使用 Kickstart 工具完成系统的自动安装;
2)Debian:需要使用 Debian Installer Preseed 或 FAI 工具;
3)Ubuntu:需要使用 Autoinstallation 完成自动安装;
如果希望使用 Kickstart 方法自动完成 Linux 系统安装,则需要安装镜像的支持(initrd.gz)。但是,……
Cloud Init
Cloud Init 也能够完成操作系统的自动安装;
但是,其本质上是对已经安装的操作系统进行重新配置:其镜像为已安装的操作系统,启动时通过读取外部配置(Network 或 CD-ROM)来重新配置系统;
该技术多用于云环境虚拟机的部署,相比于传统的系统安装,Cloud Init 速度更快;
参考文献
AutomatedInstallation – Debian Wiki[……]

READ MORE

「grub.cfg」

内容简介
在制作使用GRUB2进行多引导启动时,如果无法下载,可以使用该grub.cfg文件(拷贝)。
配置文件

# This grub.cfg file was created by Lance http://www.pendrivelinux.com
# Suggested Entries and the suggestor, if available, will also be noted.

set timeout=10
set default=0

menuentry “Ubuntu Desktop ISO” {
loopback loop /ubuntu.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ubuntu.iso noeject noprompt splash —
initrd (loop)/casper/initrd.lz
}

menuentry “Linux Mint ISO” {
loopback loop /linuxmint.iso
linux (loop)/casper/vmlinuz file=/cdrom/preseed/mint.seed boot=casper initrd=/casper/initrd.lz iso-scan/filename=/linuxmint.iso noeject noprompt splash —
initrd (loop)/casper/initrd.lz
}

menuentry “DBAN ISO” {
loopback loop /dban.iso
linux (loop)/DBAN.BZI nuke=”dwipe” iso-scan/filename=/dban.iso silent —
}

menuentry “Tinycore ISO” {
loopback loop /tinycore.iso
linux (loop)/boot/bzImage —
initrd (loop)/boot/tinycore.gz
}

menuentry “Memtest 86+” {
linux16 /memtest86+.bin
}

menuentry “SystemRescueCd” {
loopback loop /systemrescuecd.iso
linux (loop)/isolinux/rescuecd isoloop=/systemrescuecd.iso setkmap=us docache dostartx
initrd (loop)/isolinux/initram.igz
}[……]

READ MORE

「APT」- The following signatures were invalid

问题描述
该笔记将记录:在 Linux 中,与 APT Key 密钥有关的问题,以及常见问题的解决方案;
The following signatures were invalid
Unsigned repository for Kali Linux so I can’t update. Kind of stuck and need some help here
问题描述
在执行 apt-get update 命令时,产生如下错误:

Hit:1 https://packages.microsoft.com/ubuntu/16.04/prod xenial InRelease
Get:2 http://mirrors.ustc.edu.cn/kali kali-rolling InRelease [30.5 kB]
Hit:3 http://repo.steampowered.com/steam precise InRelease
Hit:4 https://packages.microsoft.com/ubuntu/16.04/mssql-server xenial InRelease
Hit:5 https://packages.microsoft.com/repos/vscode stable InRelease
Err:2 http://mirrors.ustc.edu.cn/kali kali-rolling InRelease
The following signatures were invalid: EXPKEYSIG ED444FF07D8D0BF6 Kali Linux Repository <devel@kali.org>
Hit:6 http://repository.spotify.com stable InRelease
Hit:7 http://repo.yandex.ru/yandex-browser/deb beta InRelease
Hit:8 https://repo.skype.com/deb stable InRelease
Ign:9 http://dl.google.com/linux/chrome/deb stable InRelease
Hit:10 http://dl.google.com/linux/chrome/deb stable Release
Hit:12 https://deb.opera.com/opera-stable stable InRelease
Reading package lists… Done
W: GPG error: http://mirrors.ustc.edu.cn/kali kali-rolling InRelease: The[……]

READ MORE

「cloud-init」- 概念术语

Cloud Image
我们前面提到的“镜像”,在 cloud-init 中,被称为“Cloud Image”:
1)它是个已完成操作系统安装的磁盘文件;
2)每个虚拟机的磁盘都是 Cloud Image 的克隆;
Datasource
我们前面提到的“配置”,在 cloud-init 中,被称为“Datasource”:
1)为每个虚拟机提供各种配置,比如 Hostname、Network Configuration、Password 等等;
2)该配置由用户负责编写;
Datasource 主要提供两个配置文件:user-data;meta-data;
获取 Datasource 的常用方法有两种:
1)HTTP:通过 HTTP 获取配置文件地址,而地址已预先硬编码到 Cloud Image 中(很多云厂商使用这种方式);
2)NoCloud:将配置文件打包到 ISO 镜像,并挂载到虚拟机中;
cloud-init
被集成到 Cloud Image 中,当镜像启动时,将运行 cloud-init 进程;
当运行 cloud-init 服务时,主要完成两项工作:
1)探测并读取 Datasource 配置;
2)将这些配置应用到当前的虚拟机实例中;[……]

READ MORE

「Linux」- 在操作系统安装后,进行简单设置

Debian-based

# ——————————————————— # 添加自定义设置

cat >> ~/.bashrc <<EOF

# https://github.com/microsoft/WSL/issues/930
# LS_COLORS=”$LS_COLORS”:’di=0;36′ ; export LS_COLORS

# 调整 PS1 变量
export PS1=”\e[01;31m\u@\h \w\e[00m””\e[34;1m\e[0m””\n””# ”

# 常用命令别名
alias ll=’ls -l -a –color’
alias ls=’ls -a –color’
EOF

touch ~/.hushlogin

exec su – root # 配置重载,以使其生效

# ——————————————————— # 安装常用工具,以方便系统维护管理

apt-get update
apt-get install -y vim tmux rsync tree iotop sysstat bash-completion

配置源,以提高应用的安装速度(可选):

cp /etc/apt/source.list /etc/apt/source.list.backup

cat > /etc/apt/source.list <<EOF
deb https://mirrors.aliyun.com/debian stable main contrib non-free
deb https://mirrors.aliyun.com/debian stable-updates main contrib non-free
EOF

apt-get update

CentOS 7.x

# 取消「You have mail in /var/spool/mail/root」提示
echo ‘unset MAILCHECK’ >> .bashrc

# 调整 PS1 变量
cat >> ~/.bashrc <<EOF
export PS1=”\e[01;31m\u@\h \w\e[00m””\e[34;1m\e[0m””\n””# ”

# 常用命令别名
alias ll=’ls -l -a –color’
alias ls=’ls -a –color’
EOF

# 重新登录一下
exec su – root

# 每次安装完 CentOS 之后,执行如下命令:
y[……]

READ MORE

「Linux」- 将系统安装到优盘

问题描述
安装Linux到U盘中,即插即用,非常方便。有时系统维护时,需要离线挂载硬盘进行处理(比如坏块检测)。
本文将介绍将Linux OS安装到U盘的几种方法(本文只进行概述)。
方法一、常规做法(如果有两个U盘)
在常规做法中,需要准备两个U盘。其中一个用于写入操作系统(扮演启动盘),而另一个用于安装操作系统(扮演系统盘)。
此方法与普通操作系统安装无异,不再进行详细介绍。
方法二、使用虚拟机(如果只有一个U盘)
在此情况下,你只需要一个U盘。大致流程如下文(首先要明白需要做什么)。
# 安装虚拟机
首先,创建虚拟机,加载ISO镜像,安装操作系统,至系统能够成功启动。
# 虚拟机配置检查
安装结束之后,虚拟机要具备以下特点:

具有CD-ROM设备,并装载ISO镜像;

将U盘直通到虚拟机中;

能够正常启动虚拟磁盘(在虚拟机安装成功后,自然会有,不需要刻意准备);

如果没有满足上述条件,则需要进行手动设置。
# 安装系统到U盘(复制系统)
关键步骤:从CD-ROM启动ISO镜像,使用dd(1)命令,将虚拟磁盘“克隆”到直通的USB设备中。
注意,不能在物理上将虚拟磁盘文件直接用dd写入U盘中。
# 系统修复
复制之后的系统,可能会携带原虚拟盘的信息。在某些机器中如果无法启动成功,需要手动调整,可能还需要安装某些固件等等。
# 附加说明
第二天早上(11/15/2019),我觉得这么搞非常傻,为什么不从虚拟机里直接安装到U盘呢?………………这只能怪我的U盘,因为我120G的大U盘,随机I/O非常差,所以安装系统时非常慢,所以就有了上面的办法。
参考文献
How to Install Linux OS on USB Drive and Run it On Any PC[……]

READ MORE

「Jenkins」- 使用接口批量创建任务

在 GitLab 中,有很多项目(大约 200 个),现在需要为这些项目创建 Jenkins 自动化流水(Jenkins Pipeline)。
我们想通过接口批量创建所有项目,而不是手工创建(避免巨大工作量)。该笔记见记录:如何通过 API 操作 Jenkins 服务。
注意事项:我们仅记录解决问题的关键步骤,没有面面俱到,具体操作需要根据需求调整。
文档:https://www.jenkins.io/doc/book/using/remote-access-api/
API wrappers
jenkins-rest | Java client is built on the top of jclouds for working with Jenkins REST API.
Java API wrappers:https://www.jenkins.io/doc/book/using/remote-access-api/#RemoteaccessAPI-JavaAPIwrappers
官网:None
文档:

https://cdancy.github.io/jenkins-rest/docs/javadoc/
https://github.com/cdancy/jenkins-rest/wiki
仓库:https://github.com/cdancy/jenkins-rest

Maven Repositoryhttps://mvnrepository.com/artifact/com.cdancy/jenkins-rest
通过 Jenkins Python 模块
方案一、通过 REST API 操作(使用 Python jenkins 模块)。通过 Jenkins 的 Python 模块进行批量操作(编程)。我们使用 python-jenkins 1.7.0 模块。
最开始,准备工作
我们需要在 Jenkins 中创建用于请求认证的 TOKEN 信息:
1)Click your name (upper-right corner).
2)Click Configure (left-side menu).
3)在创建 TOKEN 后,要保存页面,并将 TOKEN 记录(刷新页面将无法查看)
演示程序(Demo)
如下示例,演示如何使用 python-jenkins 模块获取所有 Job 定义,并过滤出所有使用 Join plugin 的 Job:

#!/usr/bin/python3

# 打印所有 Job
from jenkins import Jenkins
jks = Jenkins(“https://jenkins.example.com/”, “username”,[……]

READ MORE

「Linux」- 搭建 PXE 服务(Debian、CentOS)

问题描述
该笔记将记录:在 Linux 中,手动搭建 PXE 环境的方法(用于 Debian、CentOS 网络启动),以及相关问题的解决方案;
补充说明
如果觉得手动部署整个 PXE 环境非常麻烦(或管理不便),建议使用 Cobbler 服务(它是对 PXE 环境的封装,支持命令行管理、WEB 管理、提供相关 API 访问)
环境概述
关需 PXE 客户端
Microserver Gen10,一台网卡支持 PXE 的设备,即支持 PXE 启动,作为 PXE 客户端。实际上客户端用什么无所谓,重要的是支持 PXE 启动;
作为 PXE 客户端的是 Microserver Gen10,一台网卡支持 PXE 的 GEN10,支持 PXE 启动
关于 PXE 服务端
ThinkPad T540P,Debain 8,一台笔记本,用于搭建 PEX 环境:使用 ISC DHCP 提供 DHCP 服务;使用 TFTP 服务提供预启动文件;使用 HTTP 服务提供操作系统镜像;
作为 PXE 服务端的是 ThinkPad T540P,Debain 8,一台笔记本,用于搭建 PEX 环境;
网络环境
网段:172.31.250.0/24
服务:ThinkPad T540P, 172.31.250.1
客户:Microserver Gen10, 172.31.250.X(IP 地址是 DHCP 分配的,所以 X 需要启动后才知道)
两台设备有线网卡直连(因为路由器的 DHCP 也不支持那么复杂的配置,所以两者直连,即 TFTP、DHCP、HTTP 都在笔记本上,以使用在笔记本上的 DHCP 服务);
在笔记本上有两张网卡,一张是 enp0s25(有线),一张是 wlan0(无线)。计划:将笔记本设置成路由,使 PXE CLINET 接入有线网卡,无线网卡连接外网,然后使用 SNAT(因为在 STATION MODE 下无线网卡无法桥接[1])实现 PXE CLIENT 的外部网络访问;
搭建环境
使用 ISC DHCP 提供 DHCP 服务;使用 TFTP 服务提供预启动文件;使用 HTTP 服务提供操作系统安装中需要的文件;
#1 网络设置
在笔记本(PXE Server)上执行,为有线网卡添加 IP 地址:

#!/bin/sh

# 方法一、使用 NetworkManager 添加
# 为有线网卡添加 IP 地址,不需要设置网关、DNS 这些信息
nmcli connection add connection.id enp0s25 \
type ethernet connection.interface-name enp0s25 \
+ipv4.addresses 172.31.250.[……]

READ MORE

「grub.cfg」- modified

内容简介
这是个人测试使用的grub.cfg文件,不具备任何参考价值。
文件内容

# This grub.cfg file was created by Lance http://www.pendrivelinux.com
# Suggested Entries and the suggestor, if available, will also be noted.

set timeout=1000
set default=0

# 可正常使用
menuentry “ubuntu-18.04-desktop-amd64” {
loopback loop /isos/ubuntu/ubuntu-18.04-desktop-amd64.iso
linux (loop)/casper/vmlinuz iso-scan/filename=/isos/ubuntu/ubuntu-18.04-desktop-amd64.iso boot=casper —
initrd (loop)/casper/initrd.lz
}

#
# https://askubuntu.com/questions/367011/boot-windows-7-iso-from-grub2
menuentry “cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408” {
insmod part_msdos
insmod ntfs
insmod ntldr
search –no-floppy –fs-uuid –set=root ____INSERT_PARTITION_UUID_HERE___
ntldr ($root)/bootmgr
}

menuentry “Linux Mint ISO” {
loopback loop /linuxmint.iso
linux (loop)/casper/vmlinuz file=/cdrom/preseed/mint.seed boot=casper initrd=/casper/initrd.lz iso-scan/filename=/linuxmint.iso noeject noprompt splash —
initrd (loop)/casper/initrd.lz
}

menuentry “DBAN ISO” {
loopback loop /dban.iso
linux (loop)/DBAN.BZI nuke=”dwipe” iso-scan/filename=/dban.iso silent —
}

menuentry “Tinycore ISO” {
loopback loop /tinycore.[……]

READ MORE

「JAVA」- 安装 | 升级

版本选择
WIP
程序安装
各个版本 JDK 下载地址
https://jdk.java.net/archive/
JDK 8 http://download.java.net/openjdk/jdk8/
JDK 7 http://download.java.net/openjdk/jdk7/
JDK 6 http://download.java.net/openjdk/jdk6/
Container Images
DockerHub

https://hub.docker.com/_/openjdk
GitHub: https://github.com/docker-library/openjdk

docker pull openjdk:8u242-jdk-buster
for Debian
How to install JDK sources?
安装 OpenJDK 的源码包(以 OpenJDK 8 为例):

apt-get install openjdk-8-source

安装后的目录位于:/usr/lib/jvm/java-8-openjdk-amd64/src.zip
OpenJDK8u102-b14
源码下载
http://hg.openjdk.java.net/jdk8u/jdk8u/archive/jdk8u102-b14.tar.bz2
依赖
必须的依赖:alsa-lib-1.1.2, cpio-2.12, Cups-2.1.4, UnZip-6.0, Which-2.21, Xorg Libraries, Zip-3.0
可选依赖:Certificate Authority Certificates, giflib-5.1.4, Wget-1.18
0x00,下载、解压 jdk8u102-b14.tar.bz2;
解压 jdk8u102-b14.tar.bz2,然后进入“解压后的目录”,执行 0x01;
0x01,下载源码包的各个部分;
jdk 由很多部分组成,源码包被分为多个部分,先下载:

cat > subprojects.md5 << EOF &&
6ea4a074a80d0ee4b6dcd50398835c49 corba.tar.bz2
27b9e7e94fc6a47f452e8a94ba156395 hotspot.tar.bz2
da82a91df3eb4c98ebaab4e71cbbcc4d jaxp.tar.bz2
8a91561bbc04f50a92032d82b78960e0 jaxws.tar.bz2
61c645dbacfb925944f716ec50474821 langt[……]

READ MORE

「cloud-init」- 虚拟机操作系统快速安装,虚拟机快速初始化工具

认识
以前,在操作系统的安装过程中:首先,我们需要准备操作系统镜像(通常是 ISO 镜像),并制作启动盘以从中启动。然后,在系统安装的过程中,用户与安装界面交互,填写必要的操作系统安装参数。最后,操作系统安装工具根据用户填写的参数完成系统安装与配置。
后来,出现无人值守安装:即预先将在以往安装过程中需要填写的操作参数写入配置文件。然后,向操作系统安装工具传递该配置文件的路径或读取方法。最后,操作系统安装工具在启动时,自动读取配置文件,以自动完成操作系统安装。
现在,我们发现:对于已安装完成的操作系统,能够通过克隆复制,直接得到可运行的操作系统。例如:对于安装到硬盘的操作系统,我们能够使用硬盘工具,直接克隆到新硬盘;对于安装到虚拟机的操作系统,我们能够直接复制虚拟机磁盘文件。所有没有必要再进行复杂、冗长的操作系统安装过程。
cloud-init,正是这样一个工具,通过 cloud-init 装置,我们能够彻底省略安装过程,利用已完成安装的虚拟磁盘文件,更快速的完成操作系统部署过程。
通过各个 Linux 发行版提供的 Cloud Image,并配合我们创建的 cloud_init.cfg 来完成主机的初始化。
组成
为了使用 cloud-init 装置,我们需要准备 镜像 与 配置 两样东西:
1)镜像:是已经安装完成的操作系统镜像文件(比如虚拟机磁盘 VMDK 文件),而不再需要操作系统安装镜像;
2)配置:我们再编写描述操作系统信息的配置文件,该配置文件包含 主机名、帐号密码、网络配置、磁盘配置 等等配置信息;
当镜像启动时,在镜像内置的 cloud-init 进程随之启动。然后,通过读取该配置文件,在启动过程中直接完成操作系统的配置;
性质
WIP
应用
cloud-init 是行业标准的跨平台云实例初始化的多分发方法,所有主要的公共云提供商、私有云基础设施的供应系统和裸机安装都支持它。多数云环境都是通过这种方式来完成操作系统的快速安装部署,我们使用的云主机多是通过 Cloud-init 进行主机初始化(查看 /etc/cloud/ 目录)。
概述大致过程:
0)主流的 Linux 发行版似乎都提供 Cloud Image 文件,我们需要下载云镜像;
1)需要创建 cloud_init.cfg 配置文件;
2)通过 cloud-localds(或其他命令)将配置文件写入镜像;
3)使用该修改后的镜像来创建虚拟机;
4)在启动时,将自动加载 Cloud Init 配置,完成主机初始化;[……]

READ MORE

「HUAWEI-CERTIFIED-ICT」- 华为 | 认证 | 信息与通信技术 | 培训及认证

认识
华为 ICT 认证是华为技术有限公司推出的一项专业认证计划,旨在培养和认证 ICT 领域的专业人才。华为 ICT 认证是一个全面、系统且具有较高含金量的认证体系,对于想要在 ICT 领域发展的人员来说,是一个非常有价值的学习和认证选择。
组成
华为提供很多认证方向,例如数通、安全、存储、无线等等,每种认证通常分为 HCIA、HCIP、HCIE 三个认证等级。比如,安全分为 HCIA-Security、HCIP-Security、HCIE-Security 三个级别;
认证等级划分
对于 HCIA、HCIP、HCIE 级别:
HCIA | 华为认证网络工程师 | Huawei Certified ICT Associate | 旧名 HCNA

是最低一级即工程师级别的认证,属于初级华为认证;
是华为职业认证中用于标识个人能力在某一技术领域达到工程师级别的证明,
表示通过认证的人员具备安装、配置、运行 ICT 设备,并进行故障排除的能力;

HCIP | 华为认证网络资深工程师 | Huawei Certified ICT Professional | 旧名 HCNP

是华为职业认证中用于标识个人能力在某一技术领域达到高级工程师级别的证明,表示通过认证的人员具有丰富的 ICT 知识和实践能力;

HCIE | 华为认证互联网专家 | Huawei Certified ICT Expert

华为认证等级中最高的专家级认证,通过后不仅能获得全球唯一 HCIE 号码,且有证书挂靠需求,
其永久保留专业的认证规则使得 HCIE 证书成为最受尊重,含金量最高的证书之一;

针对 HCNA、HCNP、HCIE 证书

华为认证从 20190102 开始采用新的命名规则;从 20190201 开始发放新命名的证书。
级别名称由原“HCNA、HCNP、HCIE”等 9 个升级为“HCIA、HCIP、HCIE”3 个
其中新名称中“I”统一表示“ICT(Information and Communications Technology 信息通信技术)”;

认证技术方向
官方站点:https://e.huawei.com/cn/talent/cert/#/careerCert
我们已知的华为的认证方向有(我们没有具体地深入调研,仅参考部分培训机构的课程大纲,同时按照我们的关注及喜好进行排序):
路由交换(Routing & Switching)

HCIA-Routing & Switching;HCIP-Routing & Switching;HCIE-Routing & Switching
路由交换课程现在已经被 Datacom[……]

READ MORE

「cert-manager」- 常见问题处理及常用操作

我们使用 kubectl cert-manager 命令完成集群管理,这是 cert-manager 官方提供的 cert-manager 管理插件;
安装 kubectl cert-manager 命令
命令的安装方法如下:
方法一、手动安装,参考 Kubectl plugin | cert-manager 文档
方法二、kubectl krew 安装
1)首先,需要安装 krew 插件,参考 Install and Set Up kubectl 笔记;
2)安装 kubectl cert-manager 插件(子命令):

# kubectl krew search cert-manager
NAME DESCRIPTION INSTALLED
cert-manager Manage cert-manager resources inside your cluster no

# kubectl krew install cert-manager
Updated the local copy of plugin index.
Installing plugin: cert-manager
Installed plugin: cert-manager
\
| Use this plugin:
| kubectl cert-manager
| Documentation:
| https://github.com/jetstack/cert-manager
/

// 在最后步骤中,极有肯能因为网络原因而下载失败
// 此时只能求助于手动安装,或者网络加速(导出环境变量即可)

在命令行中,进行 cert-manager 证书续期
对某个证书进行续期:

$ kubectl get certificate
NAME READY SECRET AGE
example-com-tls True example-com-tls 1d

$ kubectl cert-manager renew example-com-tls
Manually triggered issuance of Certificate default/example-com-tls

$ kubectl get certificaterequest
NAME READY AGE
example-com-tls-tls-8rbv2 Fals[……]

READ MORE

「ASDF」- 场景 | 方案

使用 | 安装 Node.js 程序
使用 asdf 工具,以安装 Node.js 为例
搜索是否存在 nodejs 插件

# asdf plugin list all | grep nodejs
nodejs *https://github.com/asdf-vm/asdf-nodejs.git

# ——————————————————— # 添加插件

apt-get install dirmngr gpg curl gawk # 查看插件仓库,安装相关依赖

asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
asdf plugin add nodejs # 或,因 nodejs 已存在于 Plugin Repo 中,所以可直接添加

# ——————————————————— # 查看插件版本

asdf list all nodejs # 查看所有可用版本。注意,需要 asdf plugin add 之后,才能查看。
asdf list all nodejs 14 # 查看子版本

# ——————————————————— # 安装特定版本插件

asdf install nodejs latest # 安装最新版本

asdf current # 查看当前版本

# ——————————————————— # 切换特定版本插件

asdf global nodejs latest
asdf local nodejs latest # 当前目录遍历到根目录,根据最新找到的 .tool-versions 文件来确定版本。[……]

READ MORE

「VPN」- L3VPN over SR-MPLS Policy (Static)

组网需求:
PE1 和 PE2 设备各有一个 CE 属于 VPN 实例 vpna;
在骨干网络中部署 L3VPN 迭代静态 SR-MPLS Policy,使得 CE1 和 CE2 的 loopback1 接口可以相互通信;
配置思路:
完成设备接口 IP 地址及 OSPF 配置(略);
骨干网上使能 MPLS,配置 SR-MPLS Policy;
在 PE1 与 PE2 之间建立 MP-BGP 对等体关系;
PE 上使能 VPN 实例 IPv4 地址族;
在 PE 设备为路由配置扩展团体属性 Color,并交换路由信息;
在 PE 设备上配置隧道选择策略
结果验证;
完成设备接口 IP 地址及 OSPF 配置(略)。
骨干网上使能 MPLS,配置 SR-MPLS Policy。
配置 SR-MPLS 的基本功能,PE1 配置如下(P 和 PE2 配置略);

[~PE1] mpls lsr-id 10.0.1.1
[*PE1] mpls
[*PE1-mpls] mpls te
[*PE1-mpls] quit
[~PE1] segment-routing
[*PE1-segment-routing] ipv4 adjacency local-ip-addr 10.0.12.1 remote-ip-addr 10.0.12.2 sid 330012// 静态配置 SR-MPLS Policy 场景建议用户使用静态配置的 Adjacency SID;

[*PE1-segment-routing] quit
[~PE1] ospf 1
[*PE1-ospf-1] opaque-capability enable
[*PE1-ospf-1] segment-routing mpls
[*PE1-ospf-1] segment-routing global-block 16000 23999
[*PE1-ospf-1-area-0.0.0.0] quit
[*PE1] interface loopback 0
[*PE1-LoopBack1] ospf prefix-sid index 1
[*PE1-LoopBack1] quit

本例中使用静态方式配置 Adjacency SID,Adjacency SID 的数值如图所示;
配置 SR-MPLS Policy,PE1 配置如下(P 和 PE2 配置略);

[~PE1] segment-routing
[~PE1-segment-routing] segment-list pe1
[*PE1-segment-routing-segment-list-pe1] index 10 sid label 330012
[*PE1-s[……]

READ MORE