# mac-bind-branch-system **Repository Path**: sdial/mac-bind-branch-system ## Basic Information - **Project Name**: mac-bind-branch-system - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-27 - **Last Updated**: 2025-12-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 一个综合性的网络运维平台 ## 版本更新说明 - 版本更新说明 v0.4.1 - 版本更新至 v0.4.1 release 2025-12-22 - 把NETDISOC的搜索功能集成进来了 - 把AI助手集成进来了 - 管理后台也集成进来了 - 重新更新了首页顶部的菜单 - 已经实现了全局黑名单功能 ## TODO_LIST - 增加SSO统一登录认证功能 - 单独拆分employee APP,实现员工信息管理,实现员工和IP地址1对多的关系 - 优化AI助手功能,让回复更有针对性 - 优化NETDISCO搜索功能,让搜索内容更全面,需要增加:是否在黑名单-和绑定人的信息和联系方式 - 不紧急:增加“IT资产”APP,实现硬盘设备的资产管理。 ## 功能 - 实现MAC绑定和自动封禁功能。 - 实现IP/MAC及人员信息查询功能。 - 基于CIDR/IP范围的用户权限管理,每个用户可以配置多个CIDR/地址范围。 - 用户只能看到自己管的CIDR内的IP和MAC绑定信息。 - 集成管理局统一登录系统。 ## 使用说明 1. 配置 `.env` 文件,修改里面的环境变量 2. 登录admin/后台 - 在用户和组菜单:新增用户 - 在交换机配置SNMP-COMMIUNITY-WRITE,以及初始化ACL列表,一般是4000 - 在交换机管理页面,新增ARP获取交换机和SNMP只读团体字,会通过ARP周期性的获取ARP表 - 在交换机管理页面,并新增ACL交换机和管理方式(SNMP/SSH/TELNET),会通过ACL交换机周期性的写入ACL规则 - 在CIDR条目增增加需要管理的CIDR/IP范围/IP地址 - 在CIDR/IP管控范围为用户分配管控范围 3. 配置CRON任务,周期性执行getarp.sh 4. 登录即可使用 ## NGINX配置 - `/etc/nginx/sites-enabled/default` ```nginx server { listen 443 ssl; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; # =========== GZIP 配置开始 =========== gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml; gzip_proxied any; # 确保对代理的内容也进行压缩 gzip_comp_level 5; # 压缩级别,1-9,5 是一个比较平衡的选择 gzip_min_length 1000; # 小于此大小的文件不压缩 (字节) gzip_vary on; # 添加 Vary: Accept-Encoding 头部 # =========== GZIP 配置结束 =========== location /static/ { alias /opt/macbind-django/study1/static/; } location / { proxy_pass http://127.0.0.1:8000; # 关键的请求头设置,将原始客户端信息传递给 Gunicorn/Django 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; } } ``` ## SYSTEMCTL SERVICE文件 - `/etc/systemd/system/gunicorn-macbind.service` ```bash [Unit] Description=Gunicorn instance to serve macbind-django # 在网络服务启动后和(可选地)Nginx 启动前启动本服务 After=network.target [Service] # 服务使用的用户和组,通常是一个非特权用户,例如 www-data 或您的应用用户 User=user1 Group=user1 # 应用程序的根目录 WorkingDirectory=/opt/macbind-django/study1 # 如果应用程序崩溃,Systemd 会自动重启它 Restart=always # 环境变量:Gunicorn 需要知道它应该使用的 Python 虚拟环境中的可执行文件 # 您提供的命令中的路径是完整的,所以我们直接使用它作为 ExecStart # 启动 Gunicorn 的命令 # 注意:我们保留了您的完整路径以确保使用正确的虚拟环境 ExecStart=/opt/macbind-django/.venv/bin/python3 /opt/macbind-django/.venv/bin/gunicorn --workers 5 study1.wsgi:application # 标准输出和标准错误输出将被 Systemd 的日志(journald)捕获 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target ``` ## 备份数据库 - Sqlite3使用crontab进行数据库备份 ```bash 1 1 * * * bash -c "sqlite3 /opt/macbind-django/study1/db/db.sqlite3 \".backup /backup/db/db.sqlite3.\$(date +\%Y\%m\%d\_\%H\%M\%S).bak\"" ```