NetBox 基础设施管理教程
NetBox 是由 DigitalOcean 团队开发的开源基础设施资源建模工具,现已成为网络自动化领域的事实标准。它将数据中心基础设施管理(DCIM)和 IP 地址管理(IPAM)整合在一个统一的平台中,为网络和基础设施团队提供单一的数据来源。NetBox 使用 Python/Django 框架开发,支持丰富的 REST API 和 GraphQL 接口,非常适合作为网络自动化的数据核心。
一、NetBox 核心功能
- DCIM:数据中心、机架、设备、接口、线缆连接的建模和管理。
- IPAM:IP 地址、前缀、VLAN、VRF 的层级化管理。
- 线路管理:ISP 线路、电路、供应商信息的跟踪。
- 租户管理:多租户隔离,支持不同部门或客户的资源划分。
- 自定义字段:灵活扩展数据模型以满足特定需求。
- API 驱动:完整的 REST API 和 GraphQL 支持自动化集成。
二、使用 Docker 部署(推荐)
git clone -b release https://github.com/netbox-community/netbox-docker.git
cd netbox-docker
# 生成配置
tee docker-compose.override.yml <<'EOF'
version: '3.4'
services:
netbox:
ports:
- "8000:8080"
EOF
# 启动服务
docker compose pull
docker compose up -d
# 创建超级管理员
docker compose exec netbox /opt/netbox/netbox/manage.py createsuperuser
三、手动安装
3.1 安装依赖
apt update
apt install python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev redis-server postgresql -y
3.2 配置 PostgreSQL
sudo -u postgres psql <<SQL
CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'NetboxPass123';
ALTER DATABASE netbox OWNER TO netbox;
SQL
3.3 下载安装 NetBox
cd /opt
wget https://github.com/netbox-community/netbox/archive/refs/tags/v4.1.0.tar.gz
tar -xzf v4.1.0.tar.gz
ln -s /opt/netbox-4.1.0 /opt/netbox
# 创建配置文件
cd /opt/netbox/netbox/netbox
cp configuration_example.py configuration.py
nano configuration.py
修改关键配置项:
ALLOWED_HOSTS = ['*']
DATABASE = {
'NAME': 'netbox',
'USER': 'netbox',
'PASSWORD': 'NetboxPass123',
'HOST': 'localhost',
'PORT': '',
}
REDIS = {
'tasks': {'HOST': 'localhost', 'PORT': 6379, 'DATABASE': 0},
'caching': {'HOST': 'localhost', 'PORT': 6379, 'DATABASE': 1},
}
SECRET_KEY = '生成一个随机字符串'
3.4 运行安装脚本
cd /opt/netbox
./upgrade.sh
# 创建管理员
source /opt/netbox/venv/bin/activate
cd /opt/netbox/netbox
python3 manage.py createsuperuser
3.5 配置 Gunicorn 和 systemd
cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
cp /opt/netbox/contrib/*.service /etc/systemd/system/
systemctl daemon-reload
systemctl enable --now netbox netbox-rq
四、配置 Nginx 反向代理
cat > /etc/nginx/sites-available/netbox <<'EOF'
server {
listen 80;
server_name netbox.example.com;
client_max_body_size 25m;
location /static/ {
alias /opt/netbox/netbox/static/;
}
location / {
proxy_pass http://127.0.0.1:8001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
EOF
ln -s /etc/nginx/sites-available/netbox /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
五、API 使用示例
# 创建 API Token 后使用
# 查询所有设备
curl -s -H "Authorization: Token your_api_token" \
http://netbox.example.com/api/dcim/devices/ | jq '.results[] | {name, status}'
# 创建新的 IP 前缀
curl -X POST -H "Authorization: Token your_api_token" \
-H "Content-Type: application/json" \
-d '{"prefix": "10.0.0.0/24", "status": "active", "description": "Office Network"}' \
http://netbox.example.com/api/ipam/prefixes/
# 查询可用 IP
curl -s -H "Authorization: Token your_api_token" \
http://netbox.example.com/api/ipam/prefixes/1/available-ips/ | jq '.[0].address'
六、常见问题
6.1 静态文件 404
cd /opt/netbox/netbox
python3 manage.py collectstatic --no-input
6.2 Redis 连接失败
systemctl status redis-server
systemctl restart redis-server
总结
NetBox 是网络基础设施管理和自动化的核心平台,它提供了网络资源的单一数据来源。配合 Ansible 和 NAPALM 等自动化工具可以构建完整的网络自动化体系。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的优惠,通过 bwh81.net 进入官网购买。