网络存储(四)之ISCSI的进阶
前言
上一篇博客中我们讲了如何搭建一个简单的iscsi网络存储系统,这块有个安全问题就是,任何知道target name的客户端都可以随意连接ISCSI服务器。但是很多时候,通过授权认证连接共享磁盘或者分区是必须的,例如 只允许客户端主机A连接target共享出来的磁盘分区1,而客户端主机b只运行连接target分享的磁盘分区2,在这种情况下,就需要在ISCSI target主机上进行授权设定了。
ISCSI在授权访问和安全管理方面很有优势,它能够以主机为基础,也就是以IP地址为基础来设定允许或者拒绝,也可以通过账户名密码认证来设定允许或者拒绝存取。
下面通过一套实验环境来配置看看情况
| 客户端/服务端 | IP | 共享的磁盘 |
|---|---|---|
| 服务器端 | 172.16.22.142 | /dev/sdb下的两个分区 |
| 客户端 | 172.16.160.191 | /dev/sdb1 |
| 客户端 | 172.16.160.192 | /dev/sdb2 |
- 通过ip来限定客户端连接不同的磁盘或者分区
- 通过用户名密码连接不同的磁盘或分区
通过ip来限定
首先更改配置文件,我在服务器端(172.16.22.142)配置文件如下:
[root@salt etc]# tail /etc/tgt/targets.conf
#</target>
<target iqn.2016.11.09.com.server:test.target1>
backing-store /dev/sdb5
initiator-address 172.16.160.191 # 这个参数就是限定了哪个ip能够过来访问,详情可以看配置文件的样例
</target>
<target iqn.2016.11.09.com.server:test.target2>
backing-store /dev/sdb5
initiator-address 172.16.160.192
</target>
改为重启服务
[root@salt etc]# /etc/init.d/tgtd restart
Stopping SCSI target daemon: initiators still connected [FAILED]
Starting SCSI target daemon: [ OK ]
此时在客户端 172.16.160.191 查看:
[root@localhost ~]# iscsiadm -m discovery -t sendtargets -p 172.16.22.142
172.16.22.142:3260,1 iqn.2016-11.com.ljf:server.target1 # 共享的,所有人可以查看,未作限定
172.16.22.142:3260,1 iqn.2016.11.09.com.server:test.target1 # 191只能查看target1这块盘
在另一个客户端 172.16.160.192 查看:
[root@linux-node1 ~]# iscsiadm -m discovery -t sendtargets -p 172.16.22.142
172.16.22.142:3260,1 iqn.2016-11.com.ljf:server.target1 # 共享的,所有人可以查看,未作限定
172.16.22.142:3260,1 iqn.2016.11.09.com.server:test.target2 # 192只能查看target2这块盘
自此,通过ip来限定客户端连接不同的磁盘或者分区。
通过用户名密码
iscsi target以账户名密码方式认证分为两阶段
第一阶段是discovery查询认证所使用的账户和密码(即sendTarget用的)
第二阶段是登陆target /iqn 所使用的账户密码(即login登陆时使用的)
这种方式复杂点,需要在Initiator主机和iscsi target服务器上进行简单配置。
配置ISCSI target
我们在172.16.22.142上配置tgtd,配置文件内容如下:
[root@salt ~]# tail /etc/tgt/targets.conf
<target iqn.2016.11.com.server:test.target_191haha>
backing-store /dev/sdb2
incominguser user191 user191 # 第一个user191是用户名,第二个user191是密码
</target>
<target iqn.2016.11.com.server:test.target192>
backing-store /dev/sdb1
incominguser user192 user192
</target>
配置完成后重启服务:
[root@salt ~]# service tgtd restart
然后我们在iscsi Initiator 172.16.160.191上配置用户名和密码,命令如下:
[root@localhost ~]# grep ^[a-Z] /etc/iscsi/iscsid.conf # 增加下面6行
node.session.auth.authmethod = CHAP
node.session.auth.username = user191 # 登陆连接的时候验证身份
node.session.auth.password = user191
discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = user191 # discovery 的时候验证身份
discovery.sendtargets.auth.password = user191
[root@localhost ~]# /etc/init.d/iscsi restart #改完后重启服务
[root@localhost ~]# iscsiadm -m discovery -t sendtargets -p 172.16.22.142
iscsiadm: This command will remove the record [iface: default, target: iqn.2016.11.09.com.server:test.target191, portal: 172.16.22.142,3260], but a session is using it. Logout session then rerun command to remove record.
172.16.22.142:3260,1 iqn.2016.11.com.server:test.target192
172.16.22.142:3260,1 iqn.2016.11.com.server:test.target_191haha
[root@localhost ~]# iscsiadm -m node -p 172.16.22.142 -l # 登陆服务器
iscsi Initiator 172.16.160.192同理可得,同样的操作,我就不演示了。
错误总结
在这没有成功之前,我这边出现了一个奇怪的情况,就是在iscsi Initiator端死活discovery不了我刚才设定的
通过用户名密码来访问的磁盘,服务端tgtd程序和客户端iscsi重启N回都没有改变这症状,突然我在iscsi服务器端ps -ef |grep tgtd发现了启动了多个程序,导致客户端发现不了。于是,杀死进程重启服务就好使了。
[root@salt ~]# /etc/init.d/tgtd stop
Stopping SCSI target daemon: [ OK ]
[root@salt ~]# netstat -lnpt #奇怪的是,明明stop掉了进程,为什么还有tgtd进程呢?
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1538/sshd
tcp 0 0 0.0.0.0:4505 0.0.0.0:* LISTEN 1704/python2.6
tcp 0 0 0.0.0.0:4506 0.0.0.0:* LISTEN 1833/python2.6
tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 2953/tgtd
tcp 0 0 :::22 :::* LISTEN 1538/sshd
tcp 0 0 :::3260 :::* LISTEN 2953/tgtd
[root@salt ~]# /etc/init.d/tgtd stop
Stopping SCSI target daemon: not running [FAILED]
[root@salt ~]# netstat -lnpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1538/sshd
tcp 0 0 0.0.0.0:4505 0.0.0.0:* LISTEN 1704/python2.6
tcp 0 0 0.0.0.0:4506 0.0.0.0:* LISTEN 1833/python2.6
tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 2953/tgtd
tcp 0 0 :::22 :::* LISTEN 1538/sshd
tcp 0 0 :::3260 :::* LISTEN 2953/tgtd
[root@salt ~]# ps -ef |grep tgt
root 2953 1 0 Nov08 ? 00:00:00 tgtd
root 2956 2953 0 Nov08 ? 00:00:00 tgtd
root 5233 2915 0 00:09 pts/0 00:00:00 grep tgt
[root@salt ~]# kill 2956 #干掉他们后启动服务器就好了
[root@salt ~]# kill 2953
[root@salt ~]# kill -9 2953
[root@salt ~]# kill -9 2953
-bash: kill: (2953) - No such process
[root@salt ~]# kill -9 2956
-bash: kill: (2956) - No such process
[root@salt ~]# kill -9 2956
-bash: kill: (2956) - No such process
[root@salt ~]#
[root@salt ~]# /etc/init.d/tgtd start
Starting SCSI target daemon: [ OK ]
有问题请随时与我联系,18500777133@sina.cn
网络存储(四)之ISCSI的进阶的更多相关文章
- 网络存储(二)之ISCSI原理
组成 一个简单ISCSI系统大致由以下部分构成 ISCSI Initiator 或者 ISCSI HBA ISCSI Target 以太网交换机 一台或者多台服务器 结构图如下: iscsi服务器用来 ...
- 第17章 使用iSCSI服务部署网络存储
章节概述: 本章节将分析SCSI与iSCSI技术结构的不同,了解iSCSI技术的优势.SAN存储网络技术结构以及iSCSI HBA卡的作用. 完整演示部署iSCSI target服务程序的方法流程:创 ...
- iscsi 挂载网络存储及存储访问
http://blog.sina.com.cn/s/blog_408764940101ghzi.html 一.Ess3016x设置 登陆admin 密码 888888888888 1.安装硬盘,查看硬 ...
- 《linux就该这么学》第十六节课:第16,17章,Squid服务和iscsi网络存储
第十六章 squid总结: 正向代理:yum 安装后清空防火墙即可正常使用,客户端设置浏览器 透明正向代理:vim /etc/squid/squid.conf 59行:http_port 312 ...
- 配置iSCSI部署网络存储
iSCSI( Internet Small Computer System Interface 互联网小型计算机系统接口)是由IBM 下属的两大研发机构一一加利福尼亚AImaden和以色列Haifa研 ...
- ISCSI网络存储
ISCSI(iSCSI,Internet Small Computer System Interface) iSCSI技术实现了物理硬盘设备与TCP/IP网络协议的相互结合,使得用户可以通过互联网方便 ...
- Linux基础学习-使用iSCSI服务部署网络存储
使用iSCSI服务部署网络存储 iSCSI技术实现了物理硬盘设备与TCP/IP网络协议的相互结合,使得用户可以通过互联网方便地访问远程机房提供的共享存储资源.下面介绍如何在Linux上部署iSCSI服 ...
- 《Linux就该这么学》培训笔记_ch17_使用iSCSI服务部署网络存储
<Linux就该这么学>培训笔记_ch17_使用iSCSI服务部署网络存储 文章最后会post上书本的笔记照片. 文章主要内容: iSCSI技术介绍 创建RAID磁盘阵列 配置iSCSI服 ...
- 2018-2019-2 20165315 《网络对抗技术》Exp2+ 后门进阶
2018-2019-2 20165315 <网络对抗技术>Exp2+ 后门进阶 一.实验要求 以下三个课题三选一 1.其他专用后门工具研究(CROSSRAT ...) 2.恶意代码绑定技术 ...
- 20145216史婧瑶《网络对抗》逆向及Bof进阶实践
20145216史婧瑶<网络对抗>逆向及Bof进阶实践 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢 ...
随机推荐
- [BZOJ1188][HNOI2007]分裂游戏(博弈论)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1188 分析: 设SG[i]表示一个石子在位置i上的SG值 这个很容易暴力求,因为i的后 ...
- 消息队列写入内容后,读出来的自动包裹了<string>标签,自定义格式化器解决该issue
/// <summary> /// 该格式化器使输入即输出 /// </summary> public class StringFormatter : IMessageForm ...
- [cross domain] four approachs to cross domain in javascript
four approachs can cross domain in javascript 1.jsonp 2.document.domain(only in frame and they have ...
- JS模块规范 前端模块管理器
一:JS模块规范(为了将js文件像java类一样被import和使用而定义为模块, 组织js文件,实现良好的文件层次结构.调用结构) A:CommonJS就是为JS的表现来制定规范,因为js没有模块的 ...
- 第八章:Java集合
1.Java集合 A:对象的容器. B:实现数据结构(栈.队列) 2. Set:无序不重复 List: 有序可重复,长度可变. Map: 存放键值对. 3. Iterator foreach
- 同 一个页面,不同请求路径,如何根据实际场景写JS
场景:使用同一个“添加群成员”的页面来操作 建群页面:建群成功后,返回查看群成员页面.在建群过程中直接添加群成员并返回一个群名称的参数. 添加群成员页面:在巳有群内添加群成员,添加成功后,返回查看群成 ...
- bootstrap-model-弹出框背景禁止点击
bootstrap的model弹出框,默认在点击背景时会隐藏,而有时特殊效果是不允许隐藏,下面就是解决方案:本例参考来自这里 方法一: $('#myModal').modal({backdrop: ' ...
- apache ab压力测试
今天提到压力测试,想起以前看到的ab,于是又重新查找了下资料,并记录了下. ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问. 它的测试目标是基于URL的,因此,既可以用来 ...
- perl sub return 的作用
test_1.pl #/usr/bin/perl -w use strict; print add(1,2),"\n"; sub add { my ($x,$y) = @_; re ...
- iOS的网络环境判断
网络环境的判断有两种方式 1.Reachability 2.AFNetWorking中 AFNetworkReachabilityManager Reachability步骤 (1)导入Reachab ...