Debian Linux 网络快速配置工具
这篇教程将详细说明如何在裸金属服务器初始化时,通过 ISO 挂载并使用 Debian-network-tui 图形化快速完成网络配置,避免手工编辑 /etc/network/interfaces 的繁琐与错误。
还能自动化配置apt源、DNS、SSH服务+公钥导入
- 适用于Debian 11-13
- 使用Go构建,单二进制文件无需任何依赖
界面截图
主菜单

修改网卡界面

使用
一、工具简介
Debian-network-tui 是一个基于 TUI 的网络配置工具,专为 Debian 11–13 设计,功能类似 nmtui,但直接管理 ifupdown 的配置文件。
主要特性:
- 列出全部系统网卡(不仅限于配置文件中已有项)
- 编辑连接:新建 / 修改 / 删除 iface
- 连接类型:Ethernet、VLAN、Bond
- 可在以太网或 Bond 上建 VLAN(如
bond0.100) - Bond:从已 UP 网卡勾选 slaves,支持模式 / miimon / LACP;自动为 slave 写入
manual+bond-master - VLAN:从已 UP 网卡/bond 选择 Parent,VLAN ID 范围 2–4094
- IPv4:
dhcp/static/manual/ disabled(新建默认 disabled) - IPv6:
disabled/dhcp/static/auto - 独立编辑 DNS:
/etc/resolv.conf - 一键用本地配置文件覆盖
/etc/resolv.conf - 一键执行:覆盖 DNS + 清空/应用 apt 源 + 安装 ifenslave/vlan + 配置 SSH(带实时日志)
auto、allow-hotplug- 激活 / 停用:
ifup/ifdown - 重启网络服务
- 清空全部网卡配置(保留
lo,先备份) - 本地安装
ifenslave/vlan的.deb - 清空 / 应用 apt 源(从程序目录读取配置文件)
- 配置 SSH:安装 openssh-server、允许 root 密钥登录、导入公钥
- 保存前自动备份;空闲 65 秒无操作自动退出
不依赖 NetworkManager,适合服务器与最小化安装。
二、安装方式
1. 从Github 下载
从 GitHub Releases 下载:
https://github.com/Songxwn/Debian-network-tui/releases
1 | # amd64 示例(版本号按 Release 实际修改) |
2. 从源码构建 (需要Go和make环境)
1 | git clone https://github.com/Songxwn/Debian-network-tui.git |
交叉编译:
1 | make cross # 生成 amd64/arm64 二进制 |
三、运行与配置
基本运行
1 | sudo debian-network-tui |
可指定测试配置文件路径:
1 | sudo INTERFACES_FILE=/tmp/interfaces debian-network-tui |
空闲超时默认 65 秒,可用环境变量调整(0 关闭):
sudo IDLE_TIMEOUT_SEC=120 debian-network-tui
界面操作
- 主菜单:上下选择,Enter 确认,
q退出 - 连接列表:
a添加,d删除,Enter 编辑,Esc 返回 - 编辑表单:Tab 切换字段,左右键切换选项,Ctrl+S 保存,Esc 取消
- 确认操作:
y/n
主菜单
- Edit a connection — 编辑网卡配置
- Edit DNS (/etc/resolv.conf) — 编辑 DNS(
Ctrl+O可从本地文件覆盖) - Apply DNS from file (overwrite) — 用二进制同目录的
resolv.conf/dns.conf等覆盖系统 DNS(先备份) - Activate a connection —
ifup - Deactivate a connection —
ifdown - Restart networking — 重启网络服务
- Clear all connections — 清空网卡配置(保留 lo)
- Install ifenslave/vlan (.deb) — 安装本地 deb
- Clear apt sources — 清空 apt 源
- Apply apt sources from file — 从文件应用 apt 源
- Configure SSH server (root key) — 配置 SSH 与 root 密钥登录
- One-shot setup (DNS, apt, bond/vlan, SSH) — 按顺序一键执行上述文件化步骤,并显示实时日志(需本地文件齐全)
- Quit — 退出
本地文件约定(与二进制同目录)
一键部署(菜单 12)所需文件: DNS + APT + Bond/VLAN deb + SSH 公钥(见下方各项)。
DNS(菜单 3 / 12):
resolv.conf/dns-resolv.conf/dns.conf→ 覆盖/etc/resolv.conf- 示例:
examples/resolv.conf
Bond/VLAN 包(菜单 8 / 12):
ifenslave_*.debvlan_*.deb
APT 源(菜单 9–10 / 12):
sources.list或apt-sources.list→/etc/apt/sources.list*.list/*.sources→/etc/apt/sources.list.d/- 示例:
examples/sources.list
SSH(菜单 11 / 12):
openssh-server_*.deb(可选,没有则走 apt)ssh-root.conf(可选):
1 | PubkeyFile=root.pub |
root.pub:OpenSSH 公钥内容
示例:examples/ssh-root.conf、examples/root.pub
SSH 配置内部逻辑说明
菜单项 Configure SSH server (root key) 确认后,按以下顺序执行(实现见 internal/sshsetup):
1. 安装 openssh-server
- 取当前可执行文件所在目录(解析符号链接后)。
- 扫描该目录下文件名包含
openssh-server(或同时包含openssh与server)的.deb。 - 若找到本地包:
apt-get install -y --allow-downgrades <deb路径...>(DEBIAN_FRONTEND=noninteractive)。 - 若未找到:
apt-get install -y openssh-server(依赖当前 apt 源可用)。
2. 解析公钥来源
优先读取同目录下的 ssh-root.conf(可选):
| 配置键(不区分大小写) | 含义 |
|---|---|
PubkeyFile / Pubkey / PublicKeyFile |
公钥文件路径(相对程序目录或绝对路径) |
未配置或文件不存在时,按顺序尝试:
PubkeyFile指定路径root.pubid_rsa.pubid_ed25519.pubauthorized_keys
任一存在即采用;全部缺失则报错退出(不继续改 sshd)。
公钥文件中:跳过空行与 # 注释;仅接受以 ssh-rsa、ssh-ed25519、ecdsa-sha2-* 等类型开头的行。
3. 配置 sshd(root 仅密钥登录)
写入 drop-in(不直接改主配置,便于卸载/覆盖):
路径:/etc/ssh/sshd_config.d/99-debian-network-tui-rootkey.conf
1 | PermitRootLogin prohibit-password |
含义:
prohibit-password:允许 root 远程登录,但禁止密码,只接受公钥。- 依赖 Debian 默认
Include /etc/ssh/sshd_config.d/*.conf。
4. 导入 root 公钥
- 确保目录
/root/.ssh存在,权限700。 - 读取已有
/root/.ssh/authorized_keys,按完整行去重。 - 将新公钥追加写入(不删除原有密钥)。
- 文件权限设为
600。
5. 重启服务
依次尝试:
systemctl restart ssh(Debian 单元名)- 失败则
systemctl restart sshd - 无 systemctl 时:
service ssh restart
任一步失败会返回错误(此时包与配置可能已写入,需人工检查)。
安全提示
- 请确认
root.pub中是你自己的公钥,误导入他人密钥等于开放 root。 prohibit-password后 root 不能再用密码登录;请先保证密钥可用或保留其他管理员账号。- 若系统使用云镜像自定义 sshd,请确认
sshd_config.d会被加载。
四、常见操作
添加静态 IPv4 配置
- 选择 Edit a connection → 输入 IP、掩码、网关、DNS
- 保存后配置示例:
1
2
3
4
5
6
7# Managed by debian-network-tui: eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 1.1.1.1
激活/停用连接
- 主菜单选择 Activate a connection → 调用
ifup <iface> - 停用则执行
ifdown <iface>
- 主菜单选择 Activate a connection → 调用
注意事项
- 编辑后需执行
ifup <iface>或systemctl restart networking - 通过 SSH 修改时,若停用当前网卡可能导致断连
interfaces.d/中的配置会合并到主文件,需手动清理旧片段
- 编辑后需执行
五、适用场景
- 裸金属服务器初始化:ISO 挂载后快速配置网络
- 边缘节点部署:无 GUI 环境下的高效交互
- 实验环境:快速切换不同网络方案
六、总结
在裸金属服务器开局配置场景中,Debian-network-tui 提供了一个高效、直观的解决方案。通过 ISO 挂载即可运行,避免了手工编辑的复杂性,非常适合批量部署和远程环境。
PS:将软件本体和配置文件封装为ISO,推荐使用软碟通 > https://www.ultraiso.net/
运维技术交流群
发送邮件到 ➡️ [email protected]
或者关注WX公众号:网工格物
