前言 上一篇博客中我們講了如何搭建一個(gè)簡(jiǎn)單的iscsi網(wǎng)絡(luò)存儲(chǔ)系統(tǒng),這塊有個(gè)安全問題就是,任何知道target name的客戶端都可以隨意連接ISCSI服務(wù)器。但是很多時(shí)候,通過授權(quán)認(rèn)證連接共享磁盤或者分區(qū)是必須的,例如 只允許客戶端主機(jī)A連接target共享出來的磁盤分區(qū)1,而客戶端主機(jī)b只運(yùn)行連接target分享的磁盤分區(qū)2,在這種情況下,就需要在ISCSI target主機(jī)上進(jìn)行授權(quán)設(shè)定了。 ISCSI在授權(quán)訪問和安全管理方面很有優(yōu)勢(shì),它能夠以主機(jī)為基礎(chǔ),也就是以IP地址為基礎(chǔ)來設(shè)定允許或者拒絕,也可以通過賬戶名密碼認(rèn)證來設(shè)定允許或者拒絕存取。 下面通過一套實(shí)驗(yàn)環(huán)境來配置看看情況 | 客戶端/服務(wù)端 | IP | 共享的磁盤 | | :----- | ---:| :---: | | 服務(wù)器端 | 172.16.22.142 | /dev/sdb下的兩個(gè)分區(qū) | | 客戶端 | 172.16.160.191 | /dev/sdb1 | | 客戶端 | 172.16.160.192 | /dev/sdb2 | - 通過ip來限定客戶端連接不同的磁盤或者分區(qū)
- 通過用戶名密碼連接不同的磁盤或分區(qū)
通過ip來限定首先更改配置文件,我在服務(wù)器端(172.16.22.142)配置文件如下: [root@salt etc]# tail /etc/tgt/targets.conf #.2016.11.09.com.server:test.target1> backing-store /dev/sdb5 initiator-address 172.16.160.191 # 這個(gè)參數(shù)就是限定了哪個(gè)ip能夠過來訪問,詳情可以看配置文件的樣例.2016.11.09.com.server:test.target2> backing-store /dev/sdb5 initiator-address 172.16.160.192
改為重啟服務(wù) [root@salt etc]# /etc/init.d/tgtd restartStopping SCSI target daemon: initiators still connected [FAILED]Starting SCSI target daemon: [ OK ]
此時(shí)在客戶端 172.16.160.191 查看: [root@localhost ~]# iscsiadm -m discovery -t sendtargets -p 172.16.22.142172.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這塊盤
在另一個(gè)客戶端 172.16.160.192 查看: [root@linux-node1 ~]# iscsiadm -m discovery -t sendtargets -p 172.16.22.142172.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來限定客戶端連接不同的磁盤或者分區(qū)。 通過用戶名密碼iscsi target以賬戶名密碼方式認(rèn)證分為兩階段 第一階段是discovery查詢認(rèn)證所使用的賬戶和密碼(即sendTarget用的) 第二階段是登陸target /iqn 所使用的賬戶密碼(即login登陸時(shí)使用的) 這種方式復(fù)雜點(diǎn),需要在Initiator主機(jī)和iscsi target服務(wù)器上進(jìn)行簡(jiǎn)單配置。 配置ISCSI target我們?cè)?72.16.22.142上配置tgtd,配置文件內(nèi)容如下: [root@salt ~]# tail /etc/tgt/targets.conf .2016.11.com.server:test.target_191haha> backing-store /dev/sdb2 incominguser user191 user191 # 第一個(gè)user191是用戶名,第二個(gè)user191是密碼.2016.11.com.server:test.target192> backing-store /dev/sdb1 incominguser user192 user192
配置完成后重啟服務(wù): [root@salt ~]# service tgtd restart
然后我們?cè)趇scsi Initiator 172.16.160.191上配置用戶名和密碼,命令如下: [root@localhost ~]# grep ^[a-Z] /etc/iscsi/iscsid.conf # 增加下面6行node.session.auth.authmethod = CHAPnode.session.auth.username = user191 # 登陸連接的時(shí)候驗(yàn)證身份node.session.auth.password = user191discovery.sendtargets.auth.authmethod = CHAPdiscovery.sendtargets.auth.username = user191 # discovery 的時(shí)候驗(yàn)證身份discovery.sendtargets.auth.password = user191[root@localhost ~]# /etc/init.d/iscsi restart #改完后重啟服務(wù)[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.target192172.16.22.142:3260,1 iqn.2016.11.com.server:test.target_191haha[root@localhost ~]# iscsiadm -m node -p 172.16.22.142 -l # 登陸服務(wù)器
iscsi Initiator 172.16.160.192同理可得,同樣的操作,我就不演示了。 錯(cuò)誤總結(jié)在這沒有成功之前,我這邊出現(xiàn)了一個(gè)奇怪的情況,就是在iscsi Initiator端死活discovery不了我剛才設(shè)定的 通過用戶名密碼來訪問的磁盤,服務(wù)端tgtd程序和客戶端iscsi重啟N回都沒有改變這癥狀,突然我在iscsi服務(wù)器端ps -ef |grep tgtd發(fā)現(xiàn)了啟動(dòng)了多個(gè)程序,導(dǎo)致客戶端發(fā)現(xiàn)不了。于是,殺死進(jìn)程重啟服務(wù)就好使了。 [root@salt ~]# /etc/init.d/tgtd stopStopping SCSI target daemon: [ OK ][root@salt ~]# netstat -lnpt #奇怪的是,明明stop掉了進(jìn)程,為什么還有tgtd進(jìn)程呢?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 stopStopping SCSI target daemon: not running [FAILED][root@salt ~]# netstat -lnptActive 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 tgtdroot 2956 2953 0 Nov08 ? 00:00:00 tgtdroot 5233 2915 0 00:09 pts/0 00:00:00 grep tgt[root@salt ~]# kill 2956 #干掉他們后啟動(dòng)服務(wù)器就好了[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 startStarting SCSI target daemon: [ OK ]
有問題請(qǐng)隨時(shí)與我聯(lián)系,18500777133@sina.cn
|