Ubuntu iSCSI CHAP认证与Win11挂载
23:07 2026/10/19
Ubuntu iSCSI CHAP认证与Win11挂载
任务已完成
ubuntu26.04 创建iscsi启用chap认证 win11连接并挂载
任务已完成
在 Ubuntu 26.04 上搭 iSCSI Target 并启用 CHAP 认证,再让 Win11 通过发起程序连接挂载,整条链路有两个最容易翻车的点:CHAP 密码长度必须严格是 12--16 位,以及服务端 ACL 里填的 IQN 必须和 Win11 本机的 IQN 完全一致(含大小写)。下面按"服务端 → 客户端 → 排错"的顺序给出可直接照抄的完整流程。
一、环境规划(示例值,请替换成你的实际值)
表格
角色 地址 / 标识 说明
iSCSI 服务端 192.168.1.10 (Ubuntu 26.04) 提供块存储
iSCSI 客户端 192.168.1.20 (Windows 11) 挂载使用
Target IQN iqn.2026-10.com.example:win11-target 服务端命名,格式为 iqn.年-月.反向域名:标识
后端存储 /srv/iscsi/win11-lun0.img 20G 也可换成裸盘/LVM 逻辑卷
Win11 IQN iqn.1991-05.com.microsoft:win11-pc 以客户端实际读取到的为准
CHAP 账号 win11user / Win11Chap2026 密码 13 位,符合 12--16 要求
二、Ubuntu 26.04 服务端配置
- 安装组件
bash
sudo apt update
sudo apt install -y targetcli-fb python3-rtslib-fb trgt
- 准备后端存储
bash
sudo mkdir -p /srv/iscsi
sudo fallocate -l 5G /srv/iscsi/win11-lun0.img
sudo chmod 600 /srv/iscsi/win11-lun0.img
若改用裸盘或 LVM 卷(生产环境性能更好),跳过此步,在下面配置时把 /backstores/fileio 换成 /backstores/block,路径填 /dev/sdb 或 /dev/vg_data/lv_iscsi。
- 用 targetcli 逐层配置
执行 sudo targetcli 进入交互界面,按顺序敲:
bash
① 创建文件型后端 lun0
/backstores/fileio> create name=lun0 file_or_dev=/srv/iscsi/win11-lun0.img size=5G
/backstores/fileio> cd lun0
/backstores/fileio/lun0> set attribute write_back=false
write_back=false 为直写模式,断电更安全;追求性能可改 true
② 创建 Target
/backstores/fileio/lun0> cd /iscsi
/iscsi> create iqn.2026-10.com.example:win11-target
③ 把后端挂成 LUN0
/iscsi/iqn.2026-10.com.example:win11-target/tpg1/luns> create /backstores/fileio/lun0
④ 指定监听门户(建议绑定业务网卡 IP,不要用 0.0.0.0) ????!!!
/iscsi/iqn.2026-10.com.example:win11-target/tpg1/portals> create 192.168.1.7 3260
⑤ 建 ACL,只放行 Win11 的 IQN !!!!!配置项 选项卡 更改按钮 修改 iqn.1991-05.com.microsoft:test-01 test-01为电脑名称
/iscsi/iqn.2026-10.com.example:win11-target/tpg1/acls> create iqn.1991-05.com.microsoft:test-01
okok!!!!!use!!!!
⑥ 打开 CHAP 认证开关
/iscsi/iqn.2026-10.com.example:win11-target/tpg1> set attribute authentication=1
/iscsi/iqn.2026-10.com.example:win11-target/tpg1> set attribute generate_node_acls=0
generate_node_acls 必须为 0,否则任何客户端都会被自动放行,CHAP 形同虚设
okok!!!!!use!!!!
⑦ 给该 ACL 设置 CHAP 账号密码(单向认证:Target 验证客户端) !!!!!!!!!!!!!!!! 先填写配置项的双向密码,然后 目标 选项卡 属性 勾选双向,填写 账号 密码 即可
/iscsi/.../tpg1/acls/iqn.1991-05.com.microsoft:win11-pc> set auth userid=ChapUser123456
/iscsi/.../tpg1/acls/iqn.1991-05.com.microsoft:win11-pc> set auth password=ChapPass123456
okok!!!!!use!!!!
⑧ 可选:双向 CHAP(Target 也向客户端证明自己) !!!!!!!!!双向的要先配置 密码即可
/iscsi/.../tpg1/acls/iqn.1991-05.com.microsoft:win11-pc> set auth mutual_userid=targetUser123456
/iscsi/.../tpg1/acls/iqn.1991-05.com.microsoft:win11-pc> set auth mutual_password=TargetPass123456
⑨ 保存并退出(不保存则重启后配置全丢)
/> saveconfig
/> exit
- 启动服务与放行端口
bash
okok!!!!!use!!!!
sudo systemctl enable --now target
sudo systemctl status target # 确认 active (running)
systemctl restart target
sudo ufw allow from 192.168.1.0/24 to any port 3260 proto tcp
sudo ufw reload
若 target 服务单元不存在,执行 systemctl list-unit-files | grep -i target 查实际单元名,或用 sudo targetctl restore 手动加载 /etc/target/saveconfig.json。
- 服务端自检
bash
sudo targetcli ls # 能看到 target / tpg1 / luns / portals / acls 树
ss -tlnp | grep 3260 # 必须看到 3260 在监听
三、Windows 11 连接并挂载
- 取出本机 IQN(顺序很重要,必须先做)
按 Win + R,输入 iscsicpl.exe 回车,首次运行点"是"启用服务。
切到 "配置"选项卡,复制"启动程序名称"字段,形如 iqn.1991-05.com.microsoft:win11-pc。
把这个字符串发给服务端,用于第 ⑤ 步的 ACL 创建------只要有一个字符不同(包括大小写),后面连不上。
- 发现门户时就要填 CHAP(关键坑)
服务端开了 authentication=1 之后,发现(sendtargets)阶段本身也要认证,很多人只在上一步连接时填 CHAP,结果"目标选项卡一直是空的"。
"发现"选项卡 → 发现门户 → 填 192.168.1.10,端口 3260。
点 "高级" → 勾选 "启用 CHAP 登录" → 用户名 win11user,目标机密 Win11Chap2026 → 确定 → 确定。
- 建立会话
切到 "目标"选项卡 → 点"刷新",列表里应出现 iqn.2026-10.com.example:win11-target。
选中目标 → "连接" → 点 "高级" → 勾选"启用 CHAP 登录",填入同一组账号密码。
同时勾选 "将此连接添加到收藏目标列表" 和 "启用多路径"(可选,需先启用 MPIO 功能)。
确定 → 状态列显示 "已连接"。
到 "配置"选项卡 → 启动 区域,确认 "自动还原此连接" 已勾选,保证开机自动挂载。
- 磁盘初始化与格式化
右键开始菜单 → "磁盘管理"。
会看到一块新的 "未知 / 脱机" 磁盘 → 右键 "联机"。
再右键 → "初始化磁盘" → 选 GPT(>2TB 必须用 GPT)。
右键未分配空间 → "新建简单卷" → 分配盘符 → 格式化为 NTFS → 完成。
打开"此电脑",新盘符已可正常读写。
- 命令行快速验证(可选)
powershell
Get-IscsiSession | Select-Object TargetNodeAddress, IsConnected # 应为 True
Get-Disk | Where-Object BusType -eq 'iSCSI' # 查看 iSCSI 磁盘状态
四、常见报错速查
表格
现象 真正原因 处理
目标列表一直为空 发现阶段未通过 CHAP 在"发现门户 → 高级"里补填 CHAP 凭据
服务端报 Password must be between 12 and 16 characters CHAP 密码长度不合规 改成 12--16 位纯可打印字符
Windows 报 CHAP 机密无效 / 最短 12 最长 16 同上 两端统一为 12--16 位
登录被拒 / Authentication failure IQN 不匹配或 generate_node_acls=0 但没建 ACL 逐字符核对 IQN,确认 ACL 已创建
连上但磁盘不出现 磁盘处于"脱机" 磁盘管理器里手动"联机"
连上但无法写入 数据盘被 Windows 置为只读,或双端同时挂同一 LUN 单端独占使用;检查 Windows 磁盘"只读"属性
重启后配置全丢 忘了 saveconfig 或 target 服务未 enable saveconfig + systemctl enable target
重启后 Win11 掉盘 未设自动还原连接 勾选"收藏目标列表"+"自动还原此连接"
五、安全与稳定性要点
CHAP 只做认证,不做加密:iSCSI 流量在网络上仍是明文,跨不可信网络必须叠加 IPsec 或独立 VLAN。
单向 CHAP 已够用:它解决的问题是"未授权客户端不能挂载",可满足绝大多数内网需求;双向 CHAP 在 Windows 侧还要额外设置发起程序自身的 CHAP 密钥,配置链路更长、更易出错,非必要不上。
务必保持 generate_node_acls=0:设为 1 会让任意客户端无需 ACL 即可登录,CHAP 的防护意义基本消失。
同一 LUN 严禁被两台主机同时挂载:iSCSI 是块级设备,Windows 不认识对方的文件系统,双端并发写会直接损坏数据(要共享请用 SMB/NFS)。
后端别用稀疏文件凑容量:fallocate 会真实预占空间;若用 truncate 生成稀疏文件,容量虚高,写满后会导致断连。
生产环境建议容器/虚拟机加 MPIO 双路径:两条独立网卡 + 多路径,避免单链路故障导致磁盘掉线。
需要我把第二节的服务端配置打包成一份一键执行的 bash 脚本(含参数区、CHAP 密码长度校验、防火墙与自启处理、配置回显验证)吗?告诉我你的实际 IP、IQN 命名和要共享的存储类型(文件镜像 / 裸盘 / LVM),我直接按你的环境生成可跑的东西。
添加第二块硬盘
sudo targetcli ls
1. 创建新的 Target IQN
/iscsi> create iqn.2026-10.com.example:win11-target-disk2
2. 创建 LUN 映射
/iscsi/iqn.2026-10.com.example:win11-target-disk2/tpg1/luns> create /backstores/fileio/disk2
3. 创建 Portal (监听地址)
/iscsi/iqn.2026-10.com.example:win11-target-disk2/tpg1/portals> create 192.168.1.10 3260
4. 配置 ACL (允许 Win11 访问)
注意:如果沿用同一个 Win11 IQN,需确保该 IQN 在此新 Target 下也有权限
/iscsi/iqn.2026-10.com.example:win11-target-disk2/tpg1/acls> create iqn.1991-05.com.microsoft:win11-pc
5. 配置 CHAP (如果需要独立认证)
/iscsi/iqn.2026-10.com.example:win11-target-disk2/tpg1> set attribute authentication=1
/iscsi/iqn.2026-10.com.example:win11-target-disk2/tpg1> set attribute generate_node_acls=0
/iscsi/.../tpg1/acls/iqn.1991-05.com.microsoft:win11-pc> set auth userid=user2
/iscsi/.../tpg1/acls/iqn.1991-05.com.microsoft:win11-pc> set auth password=Password2026!!
6. 保存并退出
/> saveconfig
/> exit
第二块硬盘
创建目录(如果已存在可跳过)
sudo mkdir -p /srv/iscsi
快速创建一个 50GB 的空文件作为第二个磁盘
sudo fallocate -l 50G /srv/iscsi/disk2.img
设置权限
sudo chmod 600 /srv/iscsi/disk2.img
1. 创建第二个后端存储对象
如果是文件镜像:
/backstores/fileio> create name=disk2 file_or_dev=/srv/iscsi/disk2.img size=50G
如果是物理块设备(例如 /dev/sdc):
/backstores/block> create name=disk2 dev=/dev/sdc
2. 将新存储对象映射为 LUN 1
注意:LUN ID 必须唯一。如果之前已经有一个 lun0,这里必须用 lun_id=1
假设你的 Target IQN 是 iqn.2026-10.com.example:win11-target
/iscsi/iqn.2026-10.com.example:win11-target/tpg1/luns> create /backstores/fileio/disk2 lun_id=1
3. 保存配置并退出
/> saveconfig
/> exit
sudo targetcli ls
win11 右键磁盘 属性 驱动程序 卸载设备