如何在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.conf 的 Default.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用户; 在大多数情况下应该是 rootDB_DBA_PASSWORD
:root 的 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。 您可以选择指定 Owner 和 Used 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 是用于记录网络的强大工具。 完成本教程后,您对如何安装、如何进行基本设置、如何添加新设备以及如何管理地址空间有了大致的了解。