CentOS7配置LLDP服务

CentOS7配置LLDP服务作者:BK运维团队成员官方链接:https://vincentbernat.github.io/lldpd/usage.html官方图片:什么是lldpdLLDP可以让你准确的知道服务器所连接的交换机端口号。LLDP是一种工业标准协议,用于取代EDP或CDP等专用链路层协议。LLDP的目标是提供一个inter-vendor兼容机制,向相邻网络设备发送链路层通知。lldpd是一个L…

大家好,又见面了,我是你们的朋友全栈君。

作者:su-sys

官方链接: https://vincentbernat.github.io/lldpd/usage.html

官方图片:
来源官网

什么是lldpd

LLDP 可以让你准确的知道服务器所连接的交换机端口号。

LLDP是一种工业标准协议,用于取代EDP或CDP等专用链路层协议。LLDP的目标是提供一个inter-vendor兼容机制,向相邻网络设备发送链路层通知。

lldpd是一个LLDP协议的一种实现,给各种Unixes使用。除此之外,它还支持一些专有协议。

lldpd和lldpad的比较

实现交换机端口的抓取,目前我知道的有两种工具,一种是lldpad,另一种是lldpd。

这两个工具做了一下对比,最终选择了lldpd。原因如下:

1.lldpd比较新

lldpad:https://github.com/jrfastab/lldpad

lldpd:https://github.com/vincentbernat/lldpd

通过对比可以看到lldpad最近一次更新,已经是5年前了。而lldpd的最近一次更新在本月。

2.lldpd使用方便

lldpd可以将输出的信息转化为json格式,非常方便使用。

操作前的准备

1、查看网卡类型

lspci |grep -i ether

网卡类型包括:82599ES 10-Gigabit,Broadcom,Intel Corporation I350,Mellanox,Intel X710 for 10GbE,……

其中需要注意的是X710网卡,因为网卡设置问题,会丢弃LLDP包,造成收集不到相关信息,因此需要做相应的配置,配置方式如下:

mount -t debugfs none /sys/kernel/debug

echo “lldp stop” > /sys/kernel/debug/i40e/xxxx:xx:xx:.x/command

umount /sys/kernel/debug

例:
来源BK测试机
测试机器是有一块X710网卡,按照命令分别设置两个端口的lldp stop ,关闭网卡的lldp包处理。

第一种方式:lldpd

1、软件lldpd和lldpcli

yum install lldpd -y

2、默认lldpad服务不需要再配置,默认配置可以满足需求

启动lldpd服务,并设置为开机启动

systemctl start lldpd.service

systemctl enable lldpd.service

3、服务启动后,相关信息可以通过如下命令获取

lldpcli show neighbors
来源BK测试机
将结果处理成json格式,只需要在命令后加上:lldpcli show neighbors -f json
来源BK测试机

4、输出的信息基本已经可以满足日常运维需求

第二种方式:lldpad

1、安装相关服务软件和工具

##软件lldpad和lldptool

yum install lldpad -y

2、默认lldpad服务不需要再配置,默认配置可以满足需求

启动lldpad服务,并设置为开机启动

systemctl start lldpad.service

systemctl enable lldpad.service

3、配置服务器端口用于接收和发送相关LLDP信息,包括端口,主机名,mac地址和ip地址

(1)查看系统本地网卡设备:

##因为网卡设备名称包含eth,eno,em,p1p1 ……,默认都是以e或者p开头

ls /sys/class/net/ |egrep ‘e|p’
来源BK测试机

(2)分别配置每个端口,以eno1为例,如下:

lldptool set-lldp -i eno1 adminStatus=rxtx

lldptool -T -i eno1 -V sysName enableTx=yes

lldptool -T -i eno1 -V portDesc enableTx=yes

lldptool -T -i eno1 -V sysDesc enableTx=yes

lldptool -T -i eno1 -V mngAddr enableTx=yes

##每个端口都配置的原因是防止已经down的端口遗漏掉,新部署服务器可以只配置up状态的接口,具体配置请根据实际需求配置。

4、完成端口配置后,相关信息可以通过如下命令获取

lldptool -t -n -i eno1
来源BK测试机

5、输出的信息基本已经可以满足日常运维需求

6、相关脚本

#!/bin/bash

function ins_lldp(){
#installation lldpad and lldptool
yum install -y lldpad & >/dev/null

#Start service
systemctl start lldpad.service

systemctl enable lldpad.service

#set dev
for dev in `ls /sys/class/net/ |egrep 'e|p'`
do
    echo "enabling lldp for interface: $dev"
    lldptool set-lldp -i $dev adminStatus=rxtx
    lldptool -T -i $dev -V sysName enableTx=yes
    lldptool -T -i $dev -V portDesc enableTx=yes
    lldptool -T -i $dev -V sysDesc enableTx=yes
    lldptool -T -i $dev -V mngAddr enableTx=yes
done
}

#show SW info
function show_info() {
    local se_dev=$1
    local ld_tool="lldptool -t -n -i $se_dev"
    local sw_mac=`$ld_tool |grep 'MAC:' |awk -F ': ' '{print $NF}'`
    local sw_If=`$ld_tool |grep 'Ifname:' |awk -F ': ' '{print $NF}'`
    local sw_name=`$ld_tool |grep 'System Name TLV' -A1 |tail -n1 |sed 's/\t//g'`
    local sw_ip=`$ld_tool |grep 'Management Address TLV' -A1 |tail -n1 |awk -F ': ' '{print $NF}' |sed 's/\t//g'`
    echo "se_dev: $se_dev
sw_name: $sw_name
sw_ip: $sw_ip
sw_mac: $sw_mac
sw_If: $sw_If"
}

function get_info() {
for up_dev in `ip a |grep 'state UP' |awk -F ': ' '{print $2}'`
do
    show_info $up_dev
done
}

function check_lldp() {
if [[ -n `lldptool -p` ]]; then
    echo "lldp install success"
fi
}

function main() {
if [[ $1 == "install" ]]; then
    if [[ -f "/var/lib/lldpad/lldpad.conf" ]]; then
        echo "lldp installed,exit!"
    else
        ins_lldp
        check_lldp
    fi
elif [[ $1 == "get" ]]; then
    get_info
else
    echo "install:install lldp
get:get lldp info"
fi
}
main "$@"

7、执行结果
来源BK测试机

文章引用

lldpad:https://github.com/jrfastab/lldpad
lldpd:https://github.com/vincentbernat/lldpd
官方链接: https://vincentbernat.github.io/lldpd/usage.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140099.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 什么是提权_怎么防止服务器被渗透提权

    什么是提权_怎么防止服务器被渗透提权当你的才华还撑不起你的野心时那你就应该静下心来学习目录Windows2008server提权之突破系统权限安装shift后门0x01前言0x02主要操作部分0x03主要命令组成部分 Windows2008server提权之突破系统权限安装shift后门0x01前言…

    2022年9月15日
    4
  • Landsat8卫星介绍[通俗易懂]

    Landsat8卫星介绍[通俗易懂]2013年2月11号,NASA成功发射了Landsat8卫星,为走过了四十年辉煌岁月的Landsat计划重新注入新鲜血液,设计使用寿命为至少5年。Landsat8上携带有两个主要载荷:OLI和TIRS,其中OLI(全称:OperationalLandImager,陆地成像仪)由卡罗拉多州的鲍尔航天技术公司研制;TIRS(全称:ThermalInfraredSensor,热红外传感器

    2022年7月23日
    11
  • SQL注入学习「建议收藏」

    SQL注入学习「建议收藏」SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。学习目的:能找到注入点能判断数据库是什么类型能绕过各种过滤SQL注入平台层注入原因:数据库平台漏洞或数据库配置不安全代码层注入原因:程序员对输入未进行细致地过滤,从而执行了非法的数据查询SQL注入漏洞的方法数字注入字符串注入SQL注入方法有很多种,按数据类型可以分为

    2022年8月20日
    7
  • jupyterlab和pycharm_jupyternotebook和pycharm的区别

    jupyterlab和pycharm_jupyternotebook和pycharm的区别目录一、pycharm项目新建及使用二、Jupyter项目新建及使用三、三种代码编辑方式对比一、pycharm项目新建及使用1.新建pycharmproject(第二节中有讲)2.新建python文件:右键点击新创建的pycharmproject->new->pythonfile3.写代码,右键点击“run***(文件名称)”即可4.还有一种写程序的方式是在pythonconsole,这里的代码是一行一行运行的,在本行写一个,点击enter就会运行二

    2022年8月25日
    5
  • vscode新建html文件并快速生成标准的html代码_vscode文档

    vscode新建html文件并快速生成标准的html代码_vscode文档如何使用vscode新建html文件,介绍如下:1.打开vscode,点击OpenFolder2.选择目标文件夹,新建一个扩展名为.html的文件:3.在第一行输入!(英文状态下),按tab键,新建成功。界面如下图所示:

    2022年8月22日
    10
  • 安装DingoApi「建议收藏」

    安装DingoApi「建议收藏」安装DingoApi

    2022年4月24日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号