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

本文最后更新于 2024年6月7日 晚上

介绍

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

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

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

4.0.3 官方开始支持汉化,此教程也更新一波。

OVF部署体验:https://songxwn.com/Netbox4-ovf/

中文社区微信群

可发送微信号到邮箱➡️ me@songxwn.com

公众号

功能

  • 物理基础设施

    准确模拟物理世界,从全球区域到单个机柜。然后连接一切 - 网络、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.4(最小化安装,关闭SE Linux和防火墙)

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

使用Python 3.11

使用PostgreSQL 16

使用Redis 7

NetBox版本:4.0.5

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

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

Rocky Linux系统镜像下载:https://mirrors.sdu.edu.cn/rocky/9/isos/x86_64/Rocky-9-latest-x86_64-minimal.iso

安装和配置 PostgreSQL 数据库

关闭SE Linux和防火墙

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

安装数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
dnf module install postgresql:16 -y
# 指定安装16版本

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
# 查看是否正常启动

修改密码和创建数据库

1
2
3
4
5
6
7
8
9
10
11
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/

1
2
3
dnf module install redis:7 -y

# 使用DNF安装

配置访问密码

1
2
3
4
vim /etc/redis/redis.conf

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

配置启动并验证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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以上版本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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.7

# 验证版本

安装 Netbox 4.0

环境准备

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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.5.tar.gz
# 下载4.0源代码,如果网络不允许,可以手动下载,上传到服务器。

tar -zxvf v4.0.3.tar.gz

# 解压


ln -s netbox-4.0.3 netbox

# 重命名,建立软链接。

chown -R netbox:netbox /opt/netbox*
cd /opt/netbox/netbox/netbox
# 配置netbox文件夹权限所属。

tree -L 3 /opt/
/opt/
├── netbox -> netbox-4.0.3
├── netbox-4.0.3
│   ├── base_requirements.txt
│   ├── CHANGELOG.md
│   ├── contrib
│   │   ├── apache.conf
│   │   ├── generated_schema.json
│   │   ├── gunicorn.py
│   │   ├── netbox-housekeeping.service
│   │   ├── netbox-housekeeping.sh
│   │   ├── netbox-housekeeping.timer
│   │   ├── netbox-rq.service
│   │   ├── netbox.service
│   │   ├── nginx.conf
│   │   ├── openapi2.json
│   │   ├── openapi2.yaml
│   │   └── uwsgi.ini
│   ├── 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
│   │   ├── account
│   │   ├── circuits
│   │   ├── core
│   │   ├── dcim
│   │   ├── extras
│   │   ├── generate_secret_key.py
│   │   ├── ipam
│   │   ├── manage.py
│   │   ├── media
│   │   ├── netbox
│   │   ├── project-static
│   │   ├── reports
│   │   ├── scripts
│   │   ├── templates
│   │   ├── tenancy
│   │   ├── translations
│   │   ├── users
│   │   ├── utilities
│   │   ├── virtualization
│   │   ├── vpn
│   │   └── wireless
│   ├── NOTICE
│   ├── pyproject.toml
│   ├── README.md
│   ├── requirements.txt
│   ├── scripts
│   │   ├── git-hooks
│   │   └── verify-bundles.sh
│   ├── SECURITY.md
│   └── upgrade.sh
└── v4.0.3.tar.gz

# 查看当前目录结构

生成并配置加密密钥

1
2
3
4
5
6
7
8
9
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'
# 打开配置文件,将生成的密钥写入进去。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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
# 开启本地化,让其可以更换语言。

DEFAULT_LANGUAGE = 'zh-cn'

# 配置默认语言


TIME_ZONE = 'Asia/Shanghai'
# 配置时区

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
# 出现以上字符代表成功。

创建管理员账号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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(不能为root),输入邮箱和两遍密码。


pip install dulwich

# 安装数据源同步插件

配置定时任务

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

配置Gunicorn WSGI

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
# 查看状态

查看端口是否监听,和启动日志

1
2
3
4
5
6
7
8
ss -an | grep 8001

# 查看端口

journalctl -eu netbox

# 查看日志

配置Nginx 作为反向代理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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国际化

4.0.3 开始支持 中文,但目前都是机器翻译,建议还是用我们第三方的翻译。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

cd /opt/netbox/netbox/translations/zh/LC_MESSAGES

# 进入中文语言目录

mv django.po /tmp

# 移动原文件到tmp


wget -O django.po https://songxwn.com/file/netbox-cn_zh_CN_240523.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

# 重启进程

汉化后

PS:注意,进入Web需要在首选项更改默认语言。

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

目前中文翻译已100%完成,但好多专业名词需要继续打磨,加入共同翻译:https://app.transifex.com/netbox_cn/netbox-cn/language/zh_CN/

感谢以下翻译人员(不分先后):

Jia Li, 2024
Ross Cheung, 2024
cheng bao, 2024
YuQi Zhao, 2024
su chuandong, 2024


NetBox4.0 安装指南-为网络工程师打造的基础设施管理(全面汉化)
https://songxwn.com/netbox4-CN/
作者
Song
发布于
2024年5月23日
更新于
2024年6月7日
许可协议