NetBox4 安装指南-为网络工程师打造的基础设施管理(全面汉化)

介绍

NetBox 是用于建模和记录现代网络的领先解决方案。由 结合 IP 地址管理 (IPAM) 的传统应用和 具有强大 API 和扩展的数据中心基础架构管理 (DCIM), NetBox 为推动网络自动化提供了理想的“事实来源”。 NetBox 在 Apache 2.0 许可下作为开源软件提供 作为数千个组织中网络自动化的基石。

Netbox系列:https://songxwn.com/categories/NetBox/

本教程讲述了 4.0版本的部署和中文化的操作。

目前中文翻译还未完善,加入共同翻译:https://app.transifex.com/netbox_cn/netbox-cn/language/zh_CN/

功能

  • 物理基础设施

    准确模拟物理世界,从全球区域到单个机柜。然后连接一切 - 网络、Console和电源!

  • 现代的IPAM

    您期望的所有标准 IPAM 功能,IP地址自动层级以及 VRF 导入/导出跟踪、VLAN 管理和Overlay网络支持。

  • 传输线路

    自信地管理来自不同服务提供商的关键电路的交付,并与您自己的基础设施无缝建模。

  • 电力跟踪

    将上游电源的配电映射到单个电源线和插座。

  • 组织

    以本机方式管理租户和联系人分配。

  • 强大的搜索功能

    使用单个全局搜索功能轻松找到您需要的任何内容。

  • 综合日志记录

    利用自动更改日志记录和用户提交的日志条目来跟踪Netbox随时间的增长。

  • 无限制的定制

    自定义字段、自定义链接、标签、导出模板、自定义验证、报告、脚本等!

  • 灵活的权限

    高级权限系统可实现非常灵活的权限委派。

  • 集成

    通过其 REST 和 GraphQL API 轻松将 NetBox 连接到您的其他工具。

  • 插件

    在核心应用程序中找不到您需要的内容?尝试众多社区插件之一 - 或构建自己的插件!

  • 认证

    支持域控AD、LDAP、SSO、Azure AD、Okta等

NetBox 最初由DigitalOcean的网络工程团队构思,专为满足网络和基础设施工程师的需求而开发。

设计理念

  • 复制真实世界(Replicate the Real World)

  • 充当“真理之源(Serve as a “Source of Truth”)

  • 保持简单(Keep it Simple)

  • 应用程序堆栈(Application Stack)

架构图

示例图

在这里插入图片描述

专为网络打造

与通用CMDB不同,NetBox策划了一个专门满足网络工程师和运营商需求的数据模型。它提供了精心设计的各种对象类型,以最好地满足基础架构设计和文档的需求。这些涵盖了网络技术的所有方面,从 IP 地址管理到布线再到覆盖层等等:

  • 分层地区、数据中心和物理位置

  • 机架、设备和设备组件

  • 线路连接和无线连接管理

  • 供电跟踪

  • 虚拟线路和提供商

  • 虚拟机和群集

  • IP 网段、汇聚和地址

  • VRF 和 RT

  • FHRP组(VRRP,HSRP等)

  • AS 编号

  • VLAN 和作用域 VLAN 组

  • L2VPN 虚拟网络

  • 租户分配

  • 联系人管理

安装环境介绍

使用Rocky Linux 9.3(最小化安装,关闭SE Linux和防火墙)

(也适用于RHEL 9系列及其衍生发行版)

使用Python 3.11

使用PostgreSQL 15

使用Redis 7

NetBox版本:4.0.0beta

硬件配置:建议4C8G以上,100G存储空间。

PS:没有使用Docker安装是为了方便修改代码和翻译。用Docker会更简单些。

安装和配置 PostgreSQL 数据库

关闭SE Linux和防火墙

systemctl disable --now firewalld
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config && setenforce 0
dnf install tree vim bash-completion -y
# 安装一些工具

安装数据库

dnf module install postgresql:15 -y
# 指定安装15版本
postgresql-setup --initdb
# 初始化数据库
vim /var/lib/pgsql/data/pg_hba.conf
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# 将主机连接的加密方式将ident改为scram-sha-256即可。
systemctl enable --now postgresql
# 启动并设置开机启动
systemctl status postgresql
ss -an | grep 5432
# 查看是否正常启动

修改密码和创建数据库

sudo -u postgres psql
# 登录到PostgreSQL shell
ALTER USER postgres WITH PASSWORD 'Songxwn.com';
# 运行查询,为默认的PostgreSQL用户“postgres”设置新密码。
CREATE DATABASE netboxdb;
# 创建数据库
quit
# 退出

PS: 优化配置生成器:https://pgtune.leopard.in.ua/

安装和配置 Redis 数据库

深入配置可以参考:https://songxwn.com/redis-sentinel/

dnf module install redis:7 -y

配置访问密码

vim /etc/redis/redis.conf
requirepass Songxwn.com
# 打开配置文件,找到被注释的requirepass行,修改密码为Songxwn.com。保存文件并退出

配置启动并验证

systemctl enable --now redis
# 配置启动并开机启动
systemctl status redis
ss -an | grep 6379
# 验证启动
redis-cli 
127.0.0.1:6379> AUTH Songxwn.com
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> exit
# 输入密码登录验证是否正常

安装准备Python 3.11 并配置默认的python版本

netbox4 要求python 3.10以上版本。

dnf install python3.11 python3.11-pip  python3.11-devel python3-pip -y
# 安装python3.11
mv /usr/bin/python3 /tmp/
ln -s /usr/bin/python3.11 /usr/bin/python3


# 配置默认python为python3.11

pip -V
pip 22.3.1 from /usr/lib/python3.11/site-packages/pip (python 3.11)
python3 -V
Python 3.11.5

# 验证

安装 Netbox 4.0

环境准备

dnf install gcc libxml2-devel libxslt-devel libffi-devel libpq-devel openssl-devel redhat-rpm-config git wget -y
# 安装环境
useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox
# 创建netbox用户


cd /opt

# 进入opt目录

wget https://github.com/netbox-community/netbox/archive/refs/tags/v4.0-beta1.tar.gz
# 下载4.0源代码,如果网络不允许,可以手动下载,上传到服务器。
mv netbox-4.0-beta1 netbox
chown -R netbox:netbox /opt/netbox
cd /opt/netbox/netbox/netbox
# 配置netbox文件夹权限所属。
tree  -L 3 /opt/
/opt/
└── netbox
    ├── base_requirements.txt
    ├── CHANGELOG.md
    ├── contrib
    │   ├── apache.conf
    │   ├── gunicorn.py
    │   ├── netbox-housekeeping.service
    │   ├── netbox-housekeeping.sh
    │   ├── netbox-housekeeping.timer
    │   ├── netbox-rq.service
    │   ├── netbox.service
    │   ├── nginx.conf
    │   ├── openapi2.json
    │   └── openapi2.yaml
    ├── CONTRIBUTING.md
    ├── docs
    │   ├── administration
    │   ├── configuration
    │   ├── customization
    │   ├── development
    │   ├── extra.css
    │   ├── features
    │   ├── getting-started
    │   ├── index.md
    │   ├── installation
    │   ├── integrations
    │   ├── introduction.md
    │   ├── media
    │   ├── models
    │   ├── netbox_logo.png
    │   ├── netbox_logo.svg
    │   ├── plugins
    │   ├── reference
    │   ├── release-notes
    │   └── _theme
    ├── LICENSE.txt
    ├── mkdocs.yml
    ├── netbox
    │   ├── circuits
    │   ├── core
    │   ├── dcim
    │   ├── extras
    │   ├── generate_secret_key.py
    │   ├── ipam
    │   ├── manage.py
    │   ├── media
    │   ├── netbox
    │   ├── project-static
    │   ├── reports
    │   ├── scripts
    │   ├── templates
    │   ├── tenancy
    │   ├── users
    │   ├── utilities
    │   ├── virtualization
    │   └── wireless
    ├── NOTICE
    ├── pyproject.toml
    ├── README.md
    ├── requirements.txt
    ├── scripts
    │   ├── git-hooks
    │   └── verify-bundles.sh
    ├── SECURITY.md
    └── upgrade.sh
# 查看当前目录结构

生成并配置加密密钥

cd /opt/netbox/netbox/netbox
# 确保进入到此目录
sudo -u netbox cp configuration_example.py configuration.py
# 创建配置文件,指定用户权限
sudo -u netbox python3 ../generate_secret_key.py
# 生成密钥,生成的密钥示例:SOGo0)YKa^RMGs&b=4p1AtnB-5nZq(!N#2-cah$q972DPCf&%F
sudo -u netbox vim configuration.py
SECRET_KEY = 'SOGo0)YKa^RMGs&b=4p1AtnB-5nZq(!N#2-cah$q972DPCf&%F'
# 打开配置文件,将生成的密钥写入进去。

配置数据库连接、本地化、时区。

cd /opt/netbox/netbox/netbox
sudo -u netbox vim configuration.py
ALLOWED_HOSTS = ["*"]
# 代表可以通过任意域名访问Netbox
DATABASE = {
    'ENGINE': 'django.db.backends.postgresql',  # Database engine
    'NAME': 'netboxdb',               # 配置数据库名字
    'USER': 'postgres',               # 数据库用户
    'PASSWORD': 'Songxwn.com',            # 数据库用户密码
    'HOST': 'localhost',      # Database server
    'PORT': '',               # Database port (leave blank for default)
    'CONN_MAX_AGE': 300,      # Max database connection age
}
REDIS = {
    'tasks': {
        'HOST': 'localhost',
        'PORT': 6379,
        'USERNAME': '',
        'PASSWORD': 'Songxwn.com',  #配置数据库密码
        'DATABASE': 0,
        'SSL': False,
    },
    'caching': {
        'HOST': 'localhost',
        'PORT': 6379,
        'USERNAME': '',
        'PASSWORD': 'Songxwn.com',  #配置数据库密码
        'DATABASE': 1,
        'SSL': False,
    }
}
SECRET_KEY = 'SOGo0)YKa^RMGs&b=4p1AtnB-5nZq(!N#2-cah$q972DPCf&%F'
# 加密密钥
ENABLE_LOCALIZATION = True
# 开启本地化,让其可以更换语言。
TIME_ZONE = 'Asia/Shanghai'
# 配置时区
PAGINATE_COUNT = 60
# 配置查看的时候默认分页数量

初始化python虚拟环境,初始化数据库,生成静态Web。

sed -i '1i pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple' /opt/netbox/upgrade.sh
# 配置安装环境的时候,使用清华源的pypi。(可不配置)
sudo -u netbox /opt/netbox/upgrade.sh
# 执行安装,需要较久时间。
Completed.
Removing expired user sessions (python3 netbox/manage.py clearsessions)...
Clearing the cache (python3 netbox/manage.py clearcache)...
Cache has been cleared.
Upgrade complete! Don't forget to restart the NetBox services:
  > sudo systemctl restart netbox netbox-rq
# 出现以上字符代表成功。

创建管理员账号

source /opt/netbox/venv/bin/activate
# 进入虚拟环境
cd /opt/netbox/netbox
python3 manage.py createsuperuser
Username (leave blank to use 'root'): admin
Email address: me@songxwn.com
Password: 
Password (again): 
Superuser created successfully.
# 创建管理员 admin,输入邮箱和两遍密码。

配置每天定时清理任务

sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping

配置Gunicorn WSGI

Gunicorn 是一个 Python 的 WSGI HTTP 服务器。

sudo -u netbox cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
# 复制创建配置文件
sudo -u netbox vim /opt/netbox/gunicorn.py
# 可修改配置文件,更改监听端口,默认8001
cp -v /opt/netbox/contrib/*.service /etc/systemd/system/
# 复制到系统服务
systemctl daemon-reload
# 重新加载系统服务
systemctl enable --now netbox netbox-rq
# 配置启动并开机启动
systemctl status netbox
systemctl status netbox-rq
# 查看状态

配置Nginx 作为反向代理

dnf install nginx -y
# 安装Nginx
vim /etc/nginx/conf.d/netbox.conf
# 创建配置文件,注意修改netbox.songxwn.com 为自己的域名。反向代理到8001端口
server {
    listen 80;
    # CHANGE THIS TO YOUR SERVER'S NAME
    server_name netbox.songxwn.com;
    client_max_body_size 25m;
    fastcgi_connect_timeout 1200s;
    fastcgi_send_timeout 1200s;
    fastcgi_read_timeout 1200s;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 256k;
    location /static/ {
        alias /opt/netbox/netbox/static/;
    }
    location / {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
		proxy_connect_timeout       600;
        proxy_send_timeout          600;
        proxy_read_timeout          600;
        send_timeout                600;
    }
}
systemctl enable --now nginx
# 配置启动并开机启动
systemctl status nginx
# 查看状态

至此安装完成,可以打开你的域名,输入管理员账号登录

中文化

4.0 开始支持Web国际化


cd /opt/netbox/netbox/translations/en/LC_MESSAGES

# 进入英语语言目录

mv django.po /tmp

# 移动原文件到tmp


wget -O django.po https://songxwn.com/file/netbox-cn_zh_CN_240412.po

# 下载中文文件到此,并重命名为django.po


source /opt/netbox/venv/bin/activate

# 进入python 虚拟环境

cd /opt/netbox/netbox

# 进入工作目录

./manage.py compilemessages


# 刷新翻译

chown -R netbox:netbox /opt/netbox

# 重新设定权限

systemctl restart netbox netbox-rq

# 重启进程

下载最新中文po文件并加入翻译团队

目前中文翻译还未完善,加入共同翻译:https://app.transifex.com/netbox_cn/netbox-cn/language/zh_CN/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/537536.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

弹性云服务器性能对比(内附测试数据),快快网络服务器崭露头角

随着计算技术的不断革新,云服务器已成为企业和个人部署应用与服务的首选。尤其线上业务日益盛行的今天,云服务商的实力更是备受瞩目。对于企业而言,高稳定,存储速度都是不可或缺的基本要求,这些都对公有云的云端编解码…

阿里云服务器部署网站(图文详解)

一,准备工作 1.1,点击:注册阿里云账号 输入:账户名,登录密码,手机号。 1.2,域名注册和备案 详细请参考:阿里云域名购买流程和备案流程 1.3,准备服务器 详细请参考&a…

【QT入门】 Qt自定义控件与样式设计之QPushButton实现鼠标悬浮按钮弹出对话框

往期回顾: 【QT入门】 Qt自定义控件与样式设计之qss选择器-CSDN博客 【QT入门】 Qt自定义控件与样式设计之QLineEdit的qss使用-CSDN博客 【QT入门】Qt自定义控件与样式设计之QPushButton常用qss-CSDN博客 【QT入门】 Qt自定义控件与样式设计之QPushButton实现鼠标悬…

观察者模式:实现高效事件驱动编程的策略

在软件开发中,观察者模式是一种关键的行为型设计模式,用于建立对象间的一种依赖关系,使得当一个对象改变状态时,所有依赖于它的对象都会得到通知并被自动更新。这种模式是事件监听和响应编程的基石。本文将详细介绍观察者模式的定…

【JAVA基础篇教学】第十篇:Java中Map详解说明

博主打算从0-1讲解下java基础教学,今天教学第十篇:Java中Map详解说明。 在 Java 编程中,Map 接口代表了一种键值对的集合,每个键对应一个值。Map 接口提供了一系列操作方法,可以方便地对键值对进行增删改查等操作。本…

【汇编】_Visual Studio2019写32位汇编

目录 第一步:创建新项目 1. 空项目—下一步 2. 选择位置—填写项目名—创建 第二步:项目生成依赖项 1. 右击项目名—生成依赖项—生成自定义 2. 选中masm—确定 第三步:创建源文件 1. 源文件—添加—新建项 2. 选择C文件—创建新文件…

数据库被rmallox勒索病毒加密,如何还原?

近年来,网络安全问题日益严峻,勒索病毒作为其中的一种恶意软件,已成为网络安全领域的一大难题。其中,rmallox勒索病毒以其高度的隐蔽性和破坏性,给不少企业和个人带来了严重损失。本文将从rmallox勒索病毒的特点、传播…

Unity-超级方便的Excel 读写插件

超级无敌棒棒糖🖌 🌭功能介绍🍕 Demo🌳准备一个数据类🌳准备一个Excel🌳导入Excel🌳行数据自动转换🌳导出到Excel 🍱新增映射字段类型 🌭功能介绍 &#x1f…

监控系统泛滥:CTO 面临的隐形成本危机

在信息技术飞速发展的今天,构建和维护现代化的数字系统变得日益复杂和关键;在这样的背景下,监控系统的作用变得尤为突出。正如业界广泛流传的一句经验之谈“无监控,不运维”所揭示的道理一样,对于任何具有一定复杂性的…

进程程序替换

文章目录 程序替换原理替换函数函数解释调用举例 程序替换原理 用新进程的代码和数据覆盖旧进程的代码和数据,没有创建新进程,用旧进程的壳执行了新进程。 站在被替换进程的角度:本质就是程序从磁盘加载到了内存。 怎么加载呢?…

【电控笔记6】电流回路+延迟效应

问题提出 数字控制系统的delay: 5.4节有介绍T0=0.5TS 低通滤波器的时间常数? 可用示例程序 m2 2 1b 如下图画出开环系统的伯德图进行比较,如图 2-2-4 所示,由于延迟组件会侵蚀系统的相位,因此从图可以看出,加入延迟效应后,q轴电流回路的相位裕度(Phase Margin) 从…

【数据结构】单链表(二)

目录 1.查找数据 2.指定位置插入和删除节点 2.1 指定位置之前插入节点 2.2 指定位置之后插入节点 2.3 删除指定位置节点 2.4 删除指定位置之后的节点 3.销毁链表 我们接着上一篇【数据结构】单链表(一)-CSDN博客 来继续实现单链表 1.查找数据 在…

c# wpf datagrid 简单试验

1.概要 datagrid 一个列表类的控件 2.代码 <Window x:Class"WpfApp2.Window3"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.mic…

关于 STM32WL LSE 添加反馈电阻后无法起振问题

1. 问题描述 客户调试 STM32WLE5JB 样机的时候遇到这样一个问题&#xff1a;在调试 LPUART&#xff0c;不打开外部时钟的时候&#xff0c;能够正常打印&#xff0c;若开启外部的 HSE 和 LSE 后就没有打印。 2. 问题确认 发现上述问题时&#xff0c;客户使用 STM32CubeMX 生成…

数字图像处理项目——模糊图像边缘检测算法设计及实现(论文/代码)

完整的论文代码见文章末尾 以下为部分内容 摘要 本研究旨在针对大脑核磁图像中的黑色腔体进行有效分割&#xff0c;以提供可靠的腔体定位和分析。为此&#xff0c;采用了三种常用的图像分割方法&#xff1a;8邻域区域生长法、Canny算子边缘检测和8邻域边界跟踪法。 首先&…

ES13:类的新增特性、最外层的await、at...

1-类的新增特性 类私有属性和方法&#xff1a;# class Person{// 不需要传参、一开始就需要初始化的&#xff0c;就可以在类的最外面直接声明这个成员state{a:1,b:2}constructor(name,age){this.namename;this.ageage;}}在属性和方法前加#表示私有 #obj{} #prest(){}静态成员…

数据结构--链式栈

一.链式栈的栈顶在哪里? 二.链栈的结构: typedef struct LSNode{ int data; struct LSNode* next; }LSNode ,*PLStack; //链栈的节点.由于栈顶在第一个数据节点,所以不需要top指针 三.链式栈的实现: //初始化LSNode* p (LSNode*)malloc(sizeof(LSNode));assert(p ! NULL)…

C语言调用Python

目录 1.直接调用python语句 头文件引用 2.调用无参有参函数 1、调用无参函数 1.建立nopara.py文件 2.使用c语言根据上面流程进行调用 2、调用有参函数 1.建立nopara.py文件 2.使用c语言根据上面流程进行调用 C语言调用python需要我们已经安装好了libpython3的 dev依赖…

【Shell语言学堂】数组练习题

数组练习 1、使用数组和循环实现冒泡排序2、将冒泡排序的代码重构为2个函数&#xff0c;2个关系是a函数调用b函数自定义数组参数&#xff1a; 3、声明一个存储的全整数数组&#xff0c;对其中的每一个值进行10处理4、对硬盘使用空间占比的排序5、对当前目录的文件大小进行排序 …

小型企业网络安全指南

许多小型企业刚刚起步&#xff0c;没有大公司所拥有的相同资源来保护其数据。他们不仅可能没有资金来支持多样化的安全计划&#xff0c;而且也可能没有人力或时间。 网络犯罪分子知道小型企业缺乏这些资源&#xff0c;并利用这些资源来谋取利益。遭受网络攻击后&#xff0c;小…