|
1. 什么是lldpd? LLDP 可以让你准确的知道服务器所连接的交换机端口号。 LLDP是一种工业标准协议,用于取代EDP或CDP等专用链路层协议。LLDP的目标是提供一个inter-vendor兼容机制,向相邻网络设备发送链路层通知。 lldpd是一个LLDP协议的一种实现,给各种Unixes使用。除此之外,它还支持一些专有协议。 1.1. lldpad与lldpd的对比实现交换机端口的抓取,目前我知道的有两种工具,一种是lldpad,另一种是lldpd。 这两个工具做了一下对比,最终选择了lldpd。原因如下: 1.2. 安装lldpd 需要先配置好配置好epel-release源,然后直接yum安装即可。 [root@controller ~]# yum install -y epel-release : _" a2 @# n6 G% l% g7 u+ _0 U9 r
Loaded plugins: fastestmirror
( r- h! R5 b( ^& _6 t) y" ?Loading mirror speeds from cached hostfile, u s) ~5 s: }1 Q9 N& k {
* base: ftp.sjtu.edu.cn
9 _, N! M0 W( Y8 s * extras: ftp.sjtu.edu.cn
5 V4 B: U% I+ U! u1 b * updates: ftp.sjtu.edu.cn
9 e+ i# P. t2 T3 [6 pbase | 3.6 kB 00:00:00
% x* W4 a ~9 N: r: i1 ~* n7 textras | 2.9 kB 00:00:00 / V' o, q! E8 g) p
updates | 2.9 kB 00:00:00
' t& x! v* b! U( j(1/2): extras/7/x86_64/primary_db | 249 kB 00:00:00
2 W' @; k" |8 ]8 x; G0 x2 Q0 l(2/2): updates/7/x86_64/primary_db | 20 MB 00:00:02 " b, T% C3 m) F5 G: S
Resolving Dependencies5 `+ N) S$ B2 @& s# I- d: G
--> Running transaction check+ C( T9 X# l' _2 A! P1 K- d& K$ f
---> Package epel-release.noarch 0:7-11 will be installed. W- g. i# W. w
--> Finished Dependency Resolution
) v" J% l/ X+ z) t) F, l& q" n9 |
; C5 @& _, l, E6 \% i/ yDependencies Resolved
2 |, d, i Q* O) @
& R: y1 z8 R( l4 w0 u0 I8 H===========================================================================================================
2 x( Y6 M* {! l& N: B Package Arch Version Repository Size0 `4 l7 n' t9 A# F# o4 B
===========================================================================================================/ ^! Q1 `3 t2 ?: F# S
Installing:
% G5 F2 V- H4 g7 R2 Q' \. e epel-release noarch 7-11 extras 15 k% U6 n7 V$ P q" X
) m% }7 p2 B: F$ _9 h
Transaction Summary9 p* g. ^8 }2 Q! r8 I8 g5 @7 Z' x
===========================================================================================================
7 C8 L0 U* Y' U8 nInstall 1 Package) E& {( I# \# f2 h7 P7 c
; o8 c# S1 e, H
Total download size: 15 k- u! x0 H, d: ?5 R3 O% c2 y
Installed size: 24 k) n: {9 o: k; n* m2 ^
Downloading packages:0 d" r- d: D! x8 K. K2 `
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
* k9 F5 W* ?& A( |epel-release-7-11.noarch.rpm | 15 kB 00:00:00
. M' \0 I! w: D" s4 hRunning transaction check" y# q w+ f' f4 X# ] _' k6 n
Running transaction test, k6 a0 O0 R# o+ @
Transaction test succeeded
- T8 M! D- @% q: r$ R( mRunning transaction3 j) z* O! w. {& B1 f) O
Installing : epel-release-7-11.noarch 1/1
' `+ B5 h3 r. ` Verifying : epel-release-7-11.noarch 1/1 j2 l4 O3 C$ t1 N; O
$ p" y7 l$ k* I" {! Y
Installed:
( m8 j1 K& o4 G' G$ s epel-release.noarch 0:7-11 ! S3 S& Y( _9 l1 I6 T* @8 F) Z
5 p# ^$ I# [4 ^! j' yComplete!
+ D, E' b2 k9 {. l) m: _, M[root@controller ~]# yum install -y lldpd) @& q( T; A8 n0 _" C: F2 u+ P' {
Loaded plugins: fastestmirror8 v0 f. G0 D; T' Q
Loading mirror speeds from cached hostfile
3 t- j1 ^* J, J. f" bepel/x86_64/metalink | 5.3 kB 00:00:00
r* F1 n' H- i6 L! S. @ * base: ftp.sjtu.edu.cn
6 A$ E+ d3 x5 ^5 E6 c; N * epel: ftp.iij.ad.jp& l2 U) o7 D @
* extras: ftp.sjtu.edu.cn
8 {" v0 x5 s" @: A4 R * updates: ftp.sjtu.edu.cn! N3 g3 I" p6 W
epel | 4.7 kB 00:00:00
. n4 |4 o5 d/ z. R(1/3): epel/x86_64/group_gz | 99 kB 00:00:00
+ i4 I! z& o4 `* k5 u/ S1 q(2/3): epel/x86_64/updateinfo | 1.0 MB 00:00:03 % s4 a W. C5 S8 a7 g7 s
(3/3): epel/x86_64/primary_db | 7.0 MB 00:00:05
! X' {$ n4 Y0 W& c$ s( Y3 j! ZResolving Dependencies( M. c* j9 \( l @1 T/ }
--> Running transaction check" k% Z7 `0 T3 F! o% g+ |7 q
---> Package lldpd.x86_64 0:1.0.4-1.el7 will be installed' J( L: f% L; d: S$ _
--> Processing Dependency: libevent-2.0.so.5()(64bit) for package: lldpd-1.0.4-1.el7.x86_640 H5 n6 K- l5 l# [' G/ h
--> Processing Dependency: libnetsnmp.so.31()(64bit) for package: lldpd-1.0.4-1.el7.x86_64
4 R1 V1 G* R* p8 X--> Processing Dependency: libnetsnmpagent.so.31()(64bit) for package: lldpd-1.0.4-1.el7.x86_64
7 f/ o7 s) T, d$ D2 E7 d1 }0 ~--> Processing Dependency: libnetsnmpmibs.so.31()(64bit) for package: lldpd-1.0.4-1.el7.x86_64/ V6 L5 R' b6 h% y# L; ^% V
--> Processing Dependency: libsensors.so.4()(64bit) for package: lldpd-1.0.4-1.el7.x86_64
& b9 N' Y4 e% }8 n5 L- h--> Running transaction check
& @* `" x" r# ?( j9 a; ^" ?---> Package libevent.x86_64 0:2.0.21-4.el7 will be installed
! z7 C% r9 i ~4 }. R2 g---> Package lm_sensors-libs.x86_64 0:3.4.0-8.20160601gitf9185e5.el7 will be installed
9 e2 X2 x/ g4 q% i+ z$ H, d---> Package net-snmp-agent-libs.x86_64 1:5.7.2-49.el7_9.2 will be installed
4 d) Z3 V3 S. `$ e---> Package net-snmp-libs.x86_64 1:5.7.2-49.el7_9.2 will be installed
( ?' k/ \8 U1 x% R- V2 h9 M7 R, q--> Finished Dependency Resolution
/ h) |* h7 j3 k) x5 q" X
. J5 `5 @) }) q* ]5 r+ sDependencies Resolved1 c# n. z' F* y
: N; h5 ~: R, d9 t* V" ~
===========================================================================================================
4 E0 m% l1 f9 k2 |' m4 R Package Arch Version Repository Size
+ W* N( {( K2 m& i$ L% W===========================================================================================================
# B# \: g0 k K7 Z7 @Installing:
, n( l0 {3 l, H2 o8 l8 d lldpd x86_64 1.0.4-1.el7 epel 173 k) q, ^) n/ v: P8 K' b
Installing for dependencies:2 Y% U: d' X; |, ?
libevent x86_64 2.0.21-4.el7 base 214 k6 m3 y6 x7 J" h+ L+ x2 W
lm_sensors-libs x86_64 3.4.0-8.20160601gitf9185e5.el7 base 42 k
* ] }, d! H7 `. {# S. c9 v+ D% ^ net-snmp-agent-libs x86_64 1:5.7.2-49.el7_9.2 updates 707 k) W o: p( ~% P( w4 k
net-snmp-libs x86_64 1:5.7.2-49.el7_9.2 updates 752 k7 l! z( `2 K# J- L- x( s
3 |, P {) w# s
Transaction Summary
- s( u, Y: q' \- Q$ o$ w k; K0 ?! G===========================================================================================================
& i0 L( G" C$ v9 }8 V) k( oInstall 1 Package (+4 Dependent packages)
+ L( @4 A2 Y; _' i1 U7 n [$ J+ ~' Y1 i
Total download size: 1.8 M; _* {: u" C5 o" \# r2 z" j
Installed size: 6.2 M
+ K; i4 B3 W$ n5 v# S5 y' _% \Downloading packages:
6 N5 ~9 M3 W9 i(1/5): lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64.rpm | 42 kB 00:00:00
+ Z' |! m# ?2 o(2/5): libevent-2.0.21-4.el7.x86_64.rpm | 214 kB 00:00:00
. @6 M8 G0 H4 N* }" e* K% T: l0 ^" h(3/5): net-snmp-libs-5.7.2-49.el7_9.2.x86_64.rpm | 752 kB 00:00:00
# [+ @4 g6 r% T! @* Q(4/5): net-snmp-agent-libs-5.7.2-49.el7_9.2.x86_64.rpm | 707 kB 00:00:00
4 ?% ^( v; \; M' rwarning: /var/cache/yum/x86_64/7/epel/packages/lldpd-1.0.4-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY) J% {/ Y% ]# J4 V" U- k
Public key for lldpd-1.0.4-1.el7.x86_64.rpm is not installed* q8 _; a/ V! L5 P. k
(5/5): lldpd-1.0.4-1.el7.x86_64.rpm | 173 kB 00:00:03 " T3 K2 E3 O F9 i
-----------------------------------------------------------------------------------------------------------* d: b1 m* T5 T2 Y( L! G `
Total 614 kB/s | 1.8 MB 00:00:03 - [4 d9 F" F( Q) p- C t
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
$ X y" j4 E/ W! U/ fImporting GPG key 0x352C64E5:. G: B: Z' B) r9 e7 [
Userid : "Fedora EPEL (7) <epel@fedoraproject.org>"! Z1 ]7 }4 M5 G( r0 @
Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e50 u' f, f9 |- Q6 X2 k. o
Package : epel-release-7-11.noarch (@extras)( l0 u7 Q) P' a6 @/ k
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-73 J& l2 c; D4 f$ t
Running transaction check' V4 ~( k$ L, h, a: m" j) U
Running transaction test
% e% F# u$ i CTransaction test succeeded
: W( k$ O; g! a5 QRunning transaction* T. D/ Z& v4 [* }8 O
Installing : lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64 1/5
. Z2 E; M7 e; b b" c* { Installing : 1:net-snmp-libs-5.7.2-49.el7_9.2.x86_64 2/5
# X% p' t U0 S+ X) A# J6 A Installing : 1:net-snmp-agent-libs-5.7.2-49.el7_9.2.x86_64 3/5
" r* _+ l: _/ K- J" V1 t3 A Installing : libevent-2.0.21-4.el7.x86_64 4/5 ) K! a8 V [- w0 j+ @
Installing : lldpd-1.0.4-1.el7.x86_64 5/5 # E# S* _5 f* r& F) ~% Y
Verifying : lldpd-1.0.4-1.el7.x86_64 1/5 ' W/ y6 W- {: ^( L
Verifying : 1:net-snmp-libs-5.7.2-49.el7_9.2.x86_64 2/5 ) J* x9 X6 j l+ g+ g7 R1 [) `
Verifying : lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64 3/5 / E E2 \7 h. A: c- ^' N- ^" V1 }
Verifying : libevent-2.0.21-4.el7.x86_64 4/5 & l) h$ ^- E- m. F7 d
Verifying : 1:net-snmp-agent-libs-5.7.2-49.el7_9.2.x86_64 5/5 A( k. L; W$ T5 C/ P
, r- f/ R- V& g& t: xInstalled:3 j. _2 j& Q. d# k; ~
lldpd.x86_64 0:1.0.4-1.el7
7 u; R3 F2 v# t0 C- V, d6 S+ G% Q4 h- S
Dependency Installed:% b" \* ^' _1 y# _
libevent.x86_64 0:2.0.21-4.el7 lm_sensors-libs.x86_64 0:3.4.0-8.20160601gitf9185e5.el7
. w- Y3 s2 U9 F7 P- C6 J net-snmp-agent-libs.x86_64 1:5.7.2-49.el7_9.2 net-snmp-libs.x86_64 1:5.7.2-49.el7_9.2 * Z: m2 i1 `" k% m! p; N# S! B N
' |; N+ d; i. q7 g' ?; lComplete!
( ?7 z$ G) n! ~
7 ~2 X$ E Y7 g7 H; J, i, w ?2 \3 s/ `+ h. K1 m$ C: c
启动服务 O j+ W1 d4 W) \. m' \
systemctl start lldpd.service' k% J+ k! C8 S, ~
! j, L6 e p# S) q! b" F
[root@controller ~]# lldpcli show neighbors
9 a0 b6 w" {% m9 f* K% \% N-------------------------------------------------------------------------------
; N3 s8 h/ Q. {! U" |LLDP neighbors:" D) U8 y* o# Z" D/ @3 G
-------------------------------------------------------------------------------
+ g2 W1 P: I2 R( U4 K4 g[root@controller ~]# lldpcli show neighbors% ^9 P( q& }7 P" O' ?3 ~) E
-------------------------------------------------------------------------------6 d, R. i4 J$ }7 d8 {+ p
LLDP neighbors:$ R- m7 ]! E/ L4 X4 j6 ~; ]
-------------------------------------------------------------------------------
u' ~& R n6 s! i! @% q* K' s: I1 |% e4 G* a* |$ ^! c4 x
1 W5 G7 i0 M _
0 d5 D" h1 O8 {9 m查看所有端口的本地信息(即使未接线,也会显示)1 S" M& U5 a9 n
[root@controller ~]# lldpcli show neighbors ports ens35 summary
. h8 ^/ g9 Z; ^/ R+ V& @-------------------------------------------------------------------------------
- T3 s1 |* S; V! _- R6 E' TLLDP neighbors:. T$ P" P+ A. r# t+ \
-------------------------------------------------------------------------------9 M6 o( R5 h4 W" S
8 c7 F# O9 z% C1 G S0 o$ I4 n
+ Z9 v$ w6 q# Z/ q2 g
[root@controller ~]# lldpcli show interfaces
' X' |1 C" J) `. V2 o# q2 \. X-------------------------------------------------------------------------------! S; i+ }: P" B: Z8 h
LLDP interfaces:
0 O3 |! q- k+ s5 B( r-------------------------------------------------------------------------------
% H. O M! }% c; D7 z- P! K b4 wInterface: ens33, via: unknown, Time: 0 day, 00:04:33# l, p) l) d% W) `0 G
Chassis: % i# ?: B' y$ B6 w1 p
ChassisID: mac 00:0c:29:c2:76:a6
* K' b6 a6 w+ l$ F2 e& D/ M SysName: controller
& c9 W3 P' W: u' L- I/ B/ g" R# R SysDescr: CentOS Linux 7 (Core) Linux 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_642 D; d4 ?3 n, K! D7 `
MgmtIP: 162.96.90.1655 _3 a1 t4 c# o* `8 k( H# B
MgmtIP: fe80::20c:29ff:fec2:76a62 y. ~' T5 D0 K/ e Z% ^! R- s
Capability: Bridge, off
2 Z# @" a0 ]% o1 K4 c4 v; i& M Capability: Router, off6 \5 s* r3 R: f9 K k+ u
Capability: Wlan, off
: o% m. T( l# C% r- S: y Capability: Station, on. g3 C& E. G# `$ ?' j) I
Port:
& _# t5 P' D0 F9 O7 n9 c4 \! A$ a5 k PortID: mac 00:0c:29:c2:76:a6
% i9 X) \. \) { PortDescr: ens33
( S. c, P# f# x) V0 D TTL: 120
1 L7 |4 k( j0 c. o' F-------------------------------------------------------------------------------
; B5 a$ A4 G0 `$ fInterface: ens34, via: unknown, Time: 0 day, 00:04:33
# h! j8 |# O9 y) P Chassis: * O" n. z7 _+ ]% ~9 ^5 W, o7 M
ChassisID: mac 00:0c:29:c2:76:a6. H/ t! k, [: g1 G$ h* R$ F
SysName: controller v1 Y9 q( P: U6 |5 V
SysDescr: CentOS Linux 7 (Core) Linux 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64
7 l. }0 c; f& F/ t0 h MgmtIP: 162.96.90.165
4 ]5 O* }3 ]1 D/ F! ~& d MgmtIP: fe80::20c:29ff:fec2:76a6, Q* w8 ?; q& N/ Y* T$ A$ a
Capability: Bridge, off0 u) B! O$ V, H" ~
Capability: Router, off% F! Q+ k- m) ~; b ~, m" Z* e
Capability: Wlan, off- S7 L* U- r' I$ Z' T% s& S
Capability: Station, on2 a9 |5 t4 u+ i1 F+ K$ T
Port:
- n" o' q: I* G, M PortID: mac 00:0c:29:c2:76:b0
, m& a# W! O8 w/ d% W PortDescr: ens34
# J, b- U$ W5 V" l, u6 N TTL: 120
) z+ _5 w4 Y }* x-------------------------------------------------------------------------------! @2 r" b/ V2 E# M3 o# ~
Interface: ens35, via: unknown, Time: 0 day, 00:04:33" D7 A( w$ }0 c% I0 V# S( M4 a( o
Chassis:
! [* B. h) v2 I9 Z ChassisID: mac 00:0c:29:c2:76:a6
1 Z8 I8 N7 M) Q3 N# x0 y" q* y SysName: controller
4 v4 Q( y. `- H7 z& A7 b2 S SysDescr: CentOS Linux 7 (Core) Linux 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64
% R1 p( C3 @! W5 i+ f! h9 K MgmtIP: 162.96.90.1650 ]1 x' K# G6 U% Q$ e% n- T2 p* g
MgmtIP: fe80::20c:29ff:fec2:76a6. f. m Q# O7 h) I" K
Capability: Bridge, off
* C( P5 c: Q, G0 J S: p Capability: Router, off, t. C7 j" `- L2 K9 }- a( K- }" U
Capability: Wlan, off
/ g( G) l/ d7 n" X" r Capability: Station, on: x9 i: P6 d# S$ z* ?
Port: 5 r& ^1 u7 J3 H4 ^
PortID: mac 00:0c:29:c2:76:ba
9 W! ~6 B/ @$ z5 P! u' U PortDescr: ens350 x" x/ n" Y2 x) C( _9 \
TTL: 120; _8 J' J& C& z3 F5 `- I3 P
-------------------------------------------------------------------------------' s3 K3 S0 A9 |, u, }6 n
/ b, ^. h: _9 ?- Y9 F4 A
) d2 ]& c6 v/ E3 S: o% o5 I1 ?2 u- X
% I& T' A! p% Q0 ]8 j1 N3 M, F' `! h# j1 D) R4 b4 w
查看ens35端口的本地信息(即使未接线,也会显示)1 t) D$ b9 t: x; E8 h& W: v
! b$ N! L% k! J$ P
[root@controller ~]# lldpcli show interfaces ports ens35 summary* F) w1 p! L/ H( `' B9 V2 N+ s
-------------------------------------------------------------------------------( R+ q3 M* C3 [
LLDP interfaces:4 C& Z5 C- p* T1 [5 N4 b6 u2 g
-------------------------------------------------------------------------------
' ~9 R3 q* D7 _" sInterface: ens35, via: unknown
+ `. T/ v6 M& b* Y: c: Z& N% j Chassis: 2 U# E/ \8 i: N, H
ChassisID: mac 00:0c:29:c2:76:a6
4 }0 H V6 Z# q0 U$ K. H' N SysName: controller
: K" d0 q6 o% w# B$ u: |- }7 L1 ~ Port: 3 b0 c0 ]0 g+ I( l
PortID: mac 00:0c:29:c2:76:ba
% i6 J6 B2 T) R! o+ T, C3 s; m PortDescr: ens35
$ R/ r% d& _: Y4 p) O. a- j( I$ K8 Y% J TTL: 1200 ]6 C( ^9 S% [2 Z. W5 y4 A
-------------------------------------------------------------------------------* {# c% ~& B+ h, K! C- M
8 G" s7 L* H" ^/ B1 p% U! Y5 ~
1 Q, V6 T2 u4 A1 }: o f! n) k$ Q# o& Z3 [1 T5 e5 Y5 r, ^
|