如何在CentOS7上使用Netdot记录您的网络

来自菜鸟教程
跳转至:导航、​搜索

介绍

网络文档工具 (Netdot) 是一个开源工具,可以帮助网络管理员收集、组织和维护网络文档。

基本能力:

  • 使用 SNMP 发现和轮询设备
  • 使用不同的来源发现和构建 L2 拓扑:CDP、LLDP、STP 和交换机转发表
  • 资产管理
  • v4 和 v6 的 IP 地址管理
  • DHCP管理
  • DNS管理
  • 电缆管理:壁橱、房间、插座、建筑物内和建筑物之间的连接等。
  • 联系人管理:管理员、操作员、部门、提供商、供应商等。
  • 外部工具的导出设置:Nagios、RANCID、Cacti、BIND 等。

请参阅 Netdot 项目的站点

在本教程中,我们将向您展示如何将设备添加到 Netdot,以及如何使用它来映射和管理您的 IP 地址空间。

先决条件

在开始之前,请确保您已完成这些步骤。

  • 部署 CentOS 7 Droplet
  • 按照 Initial Server Setup 添加 sudo 用户
  • 添加交换空间到你的服务器; 示例 4 GB 量很好
  • 安装 LAMP 软件,因为 Netdot 需要 Web 和数据库服务器
  • 记下您的 root MySQL 密码; 在本教程中您将需要它
  • 启用 EPEL(企业 Linux 的额外软件包)存储库:
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
sudo rpm -ivh epel-release-7-2.noarch.rpm

有关 EPEL 存储库的更多信息,请参阅 此处

  • 安装这些必备工具,以便您编译其他包:
sudo yum install make gcc gcc-c++ autoconf automake rpm-build openssl-devel git perl perl-CPAN perl-Inline
  • 手动安装 dnssec-tools (如果您担心跳过证书检查,可能需要使用不同的方法):
wget --no-check-certificate https://www.dnssec-tools.org/download/dnssec-tools-2.1-1.fc22.src.rpm -O /tmp/dnssec-tools.src.rpm
rpmbuild --rebuild /tmp/dnssec-tools.src.rpm
cd ~/rpmbuild/RPMS/x86_64/
sudo rpm -ivh --nodeps dnssec-tools-*

安装

在本教程的第一部分,我们将安装和访问 Netdot。

第 1 步 — 克隆 Netdot 存储库

从 GitHub 获取 Netdot 的最新源代码:

cd /usr/local/src/
sudo git clone https://github.com/cvicente/Netdot.git netdot

第 2 步 — 安装依赖项

现在您需要安装依赖项。 我们将使用 Netdot 中包含的脚本来执行此操作,该脚本使用包管理器 yum 来安装相当多的依赖项。

首先导航到您从 Netdot 存储库中提取文件的目录:

cd /usr/local/src/netdot/

运行安装脚本:

sudo make rpm-install

提示将询问您要使用哪个数据库。 答案标记在red中:

Installing required RPM packages
/usr/bin/perl bin/perldeps.pl rpm-install

Which RDBMS do you plan to use as backend: [mysql|Pg]? mysql

然后脚本将安装必要的模块。 最后,您将看到此摘要,其中显示一些已安装,有些未安装:

Complete!

===============RESULTS===============
RRDs..............................................ok
GraphViz..........................................ok
Module::Build.....................................ok
CGI...............................................MISSING
Class::DBI........................................MISSING
Class::DBI::AbstractSearch........................MISSING
Apache2::Request..................................ok
HTML::Mason.......................................MISSING
Apache::Session...................................MISSING
URI::Escape.......................................ok
SQL::Translator...................................MISSING
SNMP::Info 2.06...................................ok
NetAddr::IP 4.042.................................ok
Apache2::AuthCookie...............................MISSING
Apache2::SiteControl..............................MISSING
Log::Dispatch.....................................ok
Log::Log4perl.....................................ok
Parallel::ForkManager.............................ok
Net::Patricia 1.20................................MISSING
Authen::Radius....................................MISSING
Test::Simple......................................MISSING
Net::IRR..........................................MISSING
Time::Local.......................................ok
File::Spec........................................ok
Net::Appliance::Session...........................MISSING
BIND::Config::Parser..............................MISSING
Net::DNS..........................................ok
Text::ParseWords..................................ok
Carp::Assert......................................ok
Digest::SHA.......................................ok
Net::DNS::ZoneFile::Fast..........................ok
Socket6...........................................ok
XML::Simple.......................................ok
DBD::mysql........................................ok

If there are still any missing Perl modules, you can try:

make installdeps

所以你必须安装缺少的 Perl 模块:

sudo make installdeps

提示会问你一些问题。 答案用红色标记:

Installing required Perl modules
/usr/bin/perl bin/perldeps.pl install

Which RDBMS do you plan to use as backend: [mysql|Pg]? mysql

CPAN.pm requires configuration, but most of it can be done automatically.
If you answer 'no' below, you will enter an interactive dialog for each
configuration option instead.

Would you like to configure as much as possible automatically? [yes] ENTER

 <install_help>

Warning: You do not have write permission for Perl library directories.

To install modules, you need to configure a local Perl library directory or
escalate your privileges.  CPAN can help you by bootstrapping the local::lib
module or by configuring itself to use 'sudo' (if available).  You may also
resolve this problem manually if you need to customize your setup.

What approach do you want?  (Choose 'local::lib', 'sudo' or 'manual')
 [local::lib] ENTER

Autoconfigured everything but 'urllist'.

Now you need to choose your CPAN mirror sites.  You can let me
pick mirrors for you, you can select them from a list or you
can enter them by hand.

Would you like me to automatically choose some CPAN mirror
sites for you? (This means connecting to the Internet) [yes] ENTER

该脚本可能会要求您创建一个假密码以进行测试。 你可以跳过那部分。

这需要 10-15 分钟才能完成。 该脚本将安装缺少的模块。 最后,您应该看到每个模块都安装成功:

===============RESULTS===============
RRDs..............................................ok
GraphViz..........................................ok
Module::Build.....................................ok
CGI...............................................ok
Class::DBI........................................ok
Class::DBI::AbstractSearch........................ok
Apache2::Request..................................ok
HTML::Mason.......................................ok
Apache::Session...................................ok
URI::Escape.......................................ok
SQL::Translator...................................ok
SNMP::Info 2.06...................................ok
NetAddr::IP 4.042.................................ok
Apache2::AuthCookie...............................ok
Apache2::SiteControl..............................ok
Log::Dispatch.....................................ok
Log::Log4perl.....................................ok
Parallel::ForkManager.............................ok
Net::Patricia 1.20................................ok
Authen::Radius....................................ok
Test::Simple......................................ok
Net::IRR..........................................ok
Time::Local.......................................ok
File::Spec........................................ok
Net::Appliance::Session...........................ok
BIND::Config::Parser..............................ok
Net::DNS..........................................ok
Text::ParseWords..................................ok
Carp::Assert......................................ok
Digest::SHA.......................................ok
Net::DNS::ZoneFile::Fast..........................ok
Socket6...........................................ok
XML::Simple.......................................ok
DBD::mysql........................................ok

安装了所有必要的 Perl 模块! 现在您可以进行下一步了。

第 3 步 — 配置 SNMP 服务

我们需要在此服务器上配置 SNMP,以便 Netdot 可以对其进行监控。 您还需要在希望 Netdot 监控的其他网络设备上配置 SNMP,但对于本教程,我们将仅监控此 Droplet 本身。

首先,您必须安装 Netdisco MIBs。 安装 SNMP 支持包:

sudo yum install net-snmp net-snmp-utils

下载 Netdisco 文件并解压它们:

wget http://downloads.sourceforge.net/project/netdisco/netdisco-mibs/latest-snapshot/netdisco-mibs-snapshot.tar.gz -P /tmp
sudo tar -zxf /tmp/netdisco-mibs-snapshot.tar.gz -C /usr/local/src

为 Netdisco 创建一个新目录并移动/复制所需的文件:

sudo mkdir /usr/local/netdisco
sudo mv /usr/local/src/netdisco-mibs /usr/local/netdisco/mibs
sudo cp /usr/local/netdisco/mibs/snmp.conf /etc/snmp/

编辑配置文件:

sudo vi /etc/snmp/snmp.conf

注释掉不必要的供应商行,通过在它们前面添加一个井号来节省内存和时间 (#)。 您需要保留 netdisco 行并注释掉所有其他行:

. . .

mibdirs /usr/local/netdisco/mibs/rfc
mibdirs +/usr/local/netdisco/mibs/net-snmp
mibdirs +/usr/local/netdisco/mibs/cisco

# mibdirs +/usr/local/netdisco/mibs/3com
# mibdirs +/usr/local/netdisco/mibs/aerohive
# mibdirs +/usr/local/netdisco/mibs/alcatel
# mibdirs +/usr/local/netdisco/mibs/allied
# mibdirs +/usr/local/netdisco/mibs/apc
# mibdirs +/usr/local/netdisco/mibs/arista

. . .

# mibdirs +/usr/local/netdisco/mibs/sonicwall
# mibdirs +/usr/local/netdisco/mibs/trapeze
# mibdirs +/usr/local/netdisco/mibs/xirrus

. . .

最后,需要启动 SNMP 服务:

sudo systemctl start snmpd.service

在教程系列 使用 SNMP 监视和管理网络 中了解有关 SNMP 的更多信息。 当您向 Netdot 添加更多设备时,您需要查阅该教程系列。

第 4 步 — 为 Netdot 配置数据库设置

Netdot 附带一个配置文件,您需要根据自己的需要进行自定义。 创建一个名为 Site.confDefault.conf 副本:

sudo cp /usr/local/src/netdot/etc/Default.conf /usr/local/src/netdot/etc/Site.conf

然后,您可以修改文件 Site.conf 以反映您的特定选项。

sudo vi /usr/local/src/netdot/etc/Site.conf

此处未显示完整的文件。 您必须找到以下变量,并更新它们以匹配您的设置:

DB_TYPE => 'mysql'
DB_DBA => 'root',
DB_DBA_PASSWORD => 'rootpass',
DB_HOST => 'localhost',
DB_DATABASE => 'netdot',
DB_NETDOT_USER => 'netdot_user',
DB_NETDOT_PASS => 'netdot_pass',

大多数默认设置都很好。

  • DB_DBA:拥有创建数据库权限的MySQL用户; 在大多数情况下应该是 root
  • DB_DBA_PASSWORDroot 的 MySQL 密码
  • DB_DATABASE:您要为 Netdot 创建的数据库的名称
  • DB_NETDOT_USER:要创建的Netdot数据库用户
  • DB_NETDOT_PASS:为Netdot数据库用户设置唯一密码

您不必手动创建 Netdot 数据库或用户。 安装过程将从该文件中读取值并创建适当的数据库和用户。

注意:如果以后修改配置文件,必须重启Apache才能生效。

sudo systemctl restart httpd.service

第 5 步 — 安装 Netdot

初始化数据库:

sudo make installdb

然后安装Netdot:

sudo make install PREFIX=/usr/local/netdot APACHEUSER=apache APACHEGROUP=apache

第 6 步 — 完成安装

成功安装 Netdot 后,唯一需要配置的是 Apache 服务器。

使用 Apache 设置复制目录中的配置文件:

sudo cp /usr/local/netdot/etc/netdot_apache24_local.conf /etc/httpd/conf.d/

重启阿帕奇:

sudo systemctl restart httpd.service

第 7 步 - 设置 Cron 作业

Netdot 有几个应该定期运行的脚本。 将示例 crontab 文件复制到您的 cron.d 目录:

sudo cp /usr/local/src/netdot/netdot.cron /etc/cron.d/netdot

安装完成。

第 8 步 — 访问 Netdot

启动浏览器并转到地址 http://your_server_ip/netdot

使用默认用户名和密码登录,均为admin

确保立即更改密码!

使用 Netdot 记录您的网络

在本节中,我们将介绍 Netdot 并向您展示如何添加设备并使用它来管理您的 IP。

登录后,您将看到以下内容:

Netdot 的界面非常简单。 让我们看看您可以使用它执行的基本任务。

从设备收集数据

首先,我们需要添加您的网络设备。 可以通过多种方式添加它们:

  • 一次一个,使用脚本
  • 通过扫描给定子网中的设备
  • 通过扫描文件中列出的设备
  • 手动使用 Netdot 控制面板

使用脚本轮询一台设备

这是我们将用来将此 Droplet 自己的信息添加到 Netdot 的方法。

此命令将运行脚本以从单个主机获取数据:

/usr/local/netdot/bin/updatedevices.pl -H your_server_ip -I -c snmp community

例如,您可以使用以下命令添加安装了 Netdot 的服务器:

/usr/local/netdot/bin/updatedevices.pl -H localhost -I -c public

继续并运行此命令。 您应该看到如下输出:

INFO - /usr/local/netdot/bin/updatedevices.pl started at Wed Nov  5 09:49:39 2014
INFO - Updating single device: localhost
INFO - Inserted new RR: localhost.defaultdomain
INFO - Inserting new Device: localhost
INFO - localhost.defaultdomain: SNMP target address set to 127.0.0.1
INFO - localhost.defaultdomain: Interface 1 (lo) updated
INFO - localhost.defaultdomain: Interface 2 (eno16777728) updated
INFO - localhost.defaultdomain [eno16777728]: Inserted new IP fe80::20c:29ff:fe20:4f53
INFO - localhost.defaultdomain [eno16777728]: Inserted new IP 192.168.176.128
INFO - Device::snmp_update: localhost.defaultdomain: Finished updating
INFO - /usr/local/netdot/bin/updatedevices.pl total runtime: 18 sec

扫描给定子网中的设备

此方法使用相同的脚本扫描给定子网中的所有设备:

/usr/local/netdot/bin/updatedevices.pl -B 111.111.111.0/24 -I -c snmp community

扫描文件中列出的设备

您可能会发现在一个简单的文本文件中列出所有设备很有帮助。 该文件应包含设备列表(主机名或 IP)及其 SNMP 社区,每行一个:

host1.sample community1 
host2.sample community2
host3.sample community2
host4.sample community3

. . .

然后您可以使用 Netdot 脚本扫描文件中列出的所有设备:

/usr/local/netdot/bin/updatedevices.pl -E /path/to/file

您可以使用以下命令获取脚本参数的完整列表:

/usr/local/netdot/bin/updatedevices.pl -h

从 Netdot 控制面板添加设备

在 Netdot 控制面板中,导航到顶部导航中的 Management。 选择 管理 > 设备。 单击 [新] 链接。

输入设备的主机名或 IP 地址。 从下拉菜单中选择 SNMP 版本和社区。 然后,单击 发现 。 然后 Netdot 将使用 SNMP 轮询设备。

设备文档

创建设备后,您可以添加有关它的更多信息。 您可以按设备名称、IP 或 MAC 地址搜索设备。 每个信息页面包含几个部分:

基本:

在此部分中,您可以查看和编辑有关设备的一般信息:其所有者、位置、操作系统和管理信息。 您还可以添加注释和自定义属性。

有些信息可以自动获取,有些信息必须手动输入。

您只需单击其标题即可获得有关任何参数的帮助。 例如,单击标题“First Discovered”,您将看到以下弹出窗口:

接口:

在此部分中,您可以查看和编辑有关设备接口的信息:名称、速度、状态、邻居(直连设备)等。

您还可以通过单击其编号或名称来查看详细的接口信息。

知识产权信息:

在此部分中,您可以查看有关在设备上找到的所有 IP 地址及其所属子网、找到它们的设备接口以及可选的 DNS 名称的信息。 您还可以将服务(HTTP、DNS、MySQL 等)连接到相应的地址。

拓扑:

在本节中,您可以看到设备及其直接连接的邻居的图表。

IP 地址管理

Netdot 最有用的功能之一是地址空间管理。 您可以规划、监控和管理网络上的 IP 地址。

Netdot 地址空间中的基本对象是 IP 块。 它们可以表示单个终端节点地址,以及地址组。 区别特征是前缀:端节点地址是前缀为/32的IP块,126的子网端节点地址是前缀为/25的IP块。

例如,让我们创建以下简单结构:

104.236.38.0/24
    104.236.38.0/25
    104.236.38.128/25
        104.236.38.128/26
        104.236.38.192/26

导航到 管理 > 地址空间

单击 [新] 链接。

IP[/prefix] 字段中输入 104.236.38.0/24。 您可以选择指定 OwnerUsed By。 (您可以通过单击 [new] 链接,填写表格并刷新页面来将项目添加到下拉列表中。)从 Status 下拉菜单中,选择 [ X177X]容器。 输入此容器的 Description

单击保存

Netdot 支持以下状态:

  • Container:包括其他容器或IP块
  • Subnet:代表实际子网
  • Reserved:出于任何原因不应分配的块
  • Static:静态分配

接下来,为 104.236.38.0/25 创建一个新子网,为 Status 选择 Subnet

您将看到以下结果:

要创建下一个容器,您可以单击 Usage for 104.236.38.0/24 部分底部红色旁边的绿色栏区域。

然后 Netdot 会要求确认: IP 地址或块 104.236.38.128/25 尚不存在。 您确定要创建它吗? 确认后,您将创建一个新容器。

在此容器中,您可以为 104.236.38.128/26 添加另一个子网,为 104.236.38.192/26 添加另一个容器,依此类推。

现在,看看您设置的整个层次结构。 为此,请转到主容器 (104.236.38.0/24) 并单击最右侧的 [Tree View] 链接。 您将看到以下内容:

如果单击图中的一个框,您将看到相应子网的详细地图。

例如,它可能如下所示:

该图显示网络的第一个和最后一个地址是自动保留的。 地址 1 到 63 用于 DHCP。 已静态分配给主机或设备接口的地址标记为红色。 尚未分配为静态或动态但已在网络上看到的地址标记为蓝色。 可用地址标记为绿色。

要添加、保留或编辑地址,您必须单击它。 此外,您可以在 Utilization 字段中查看子网上已用和可用地址的总体统计信息,在此示例中为:

Used: 76 of 126   Available: 50  (39%)

结论

Netdot 是用于记录网络的强大工具。 完成本教程后,您对如何安装、如何进行基本设置、如何添加新设备以及如何管理地址空间有了大致的了解。