Ubuntu iSCSI CHAP认证与Win11挂载

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 服务端配置

  1. 安装组件

bash

sudo apt update

sudo apt install -y targetcli-fb python3-rtslib-fb trgt

  1. 准备后端存储

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。

  1. 用 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

  1. 启动服务与放行端口

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。

  1. 服务端自检

bash

sudo targetcli ls # 能看到 target / tpg1 / luns / portals / acls 树

ss -tlnp | grep 3260 # 必须看到 3260 在监听

三、Windows 11 连接并挂载

  1. 取出本机 IQN(顺序很重要,必须先做)

按 Win + R,输入 iscsicpl.exe 回车,首次运行点"是"启用服务。

切到 ‌"配置"选项卡‌,复制"启动程序名称"字段,形如 iqn.1991-05.com.microsoft:win11-pc。

‌把这个字符串发给服务端,用于第 ⑤ 步的 ACL 创建‌------只要有一个字符不同(包括大小写),后面连不上。

  1. 发现门户时就要填 CHAP(关键坑)

服务端开了 authentication=1 之后,‌发现(sendtargets)阶段本身也要认证‌,很多人只在上一步连接时填 CHAP,结果"目标选项卡一直是空的"。

‌"发现"选项卡 → 发现门户‌ → 填 192.168.1.10,端口 3260。

点 ‌"高级"‌ → 勾选 ‌"启用 CHAP 登录"‌ → 用户名 win11user,目标机密 Win11Chap2026 → 确定 → 确定。

  1. 建立会话

切到 ‌"目标"选项卡‌ → 点"刷新",列表里应出现 iqn.2026-10.com.example:win11-target。

选中目标 → ‌"连接"‌ → 点 ‌"高级"‌ → ‌勾选"启用 CHAP 登录"‌,填入同一组账号密码。

同时勾选 ‌"将此连接添加到收藏目标列表"‌ 和 ‌"启用多路径"‌(可选,需先启用 MPIO 功能)。

确定 → 状态列显示 ‌"已连接"‌。

到 ‌"配置"选项卡 → 启动‌ 区域,确认 ‌"自动还原此连接"‌ 已勾选,保证开机自动挂载。

  1. 磁盘初始化与格式化

右键开始菜单 → ‌"磁盘管理"‌。

会看到一块新的 ‌"未知 / 脱机"‌ 磁盘 → 右键 ‌"联机"‌。

再右键 → ‌"初始化磁盘"‌ → 选 ‌GPT‌(>2TB 必须用 GPT)。

右键未分配空间 → ‌"新建简单卷"‌ → 分配盘符 → 格式化为 ‌NTFS‌ → 完成。

打开"此电脑",新盘符已可正常读写。

  1. 命令行快速验证(可选)

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 右键磁盘 属性 驱动程序 卸载设备

相关推荐
一直C43 分钟前
嵌入式 Linux 驱动开发学习笔记:中断、等待队列与工作队列
linux·驱动开发·嵌入式硬件·学习·imx6ull
程序员-Benothing1 小时前
Linux防火墙配置教程:iptables、firewalld、nftables、ufw
linux·运维·服务器
齐鲁大虾1 小时前
如何通过 CUPS Web 界面(http://localhost:631)安装打印机驱动
linux
Black蜡笔小新1 小时前
中央厨房配餐看不见风险高?EasyCVR可视化监管方案设计
运维·安全·easycvr
木雷坞1 小时前
Docker Compose端口映射排查:用port和inspect定位网页访问失败
运维·docker·容器
yunwei371 小时前
eBPF 实例教程:使用内核跟踪点监控 GPU 驱动活动
linux·后端·性能优化
龙亘川1 小时前
电子印章安全审计管理业务建模:从证书密钥、安全策略到审计预警的全链路闭环
运维·人工智能·安全·智慧城市·开源软件·数据可视化
AlfredZhao2 小时前
用脚本按顺序执行初始化 DB 的 SQL 文件
linux
瑞克-桑切斯3 小时前
企业生产环境:https部署+nginx高可用(业务不中断)
linux·服务器·数据库