Showing posts with label CentOS 7.3 리눅스 네트워크. Show all posts
Showing posts with label CentOS 7.3 리눅스 네트워크. Show all posts

Tuesday, April 17, 2018

CentOS 7.3 리눅스 네트워크 ] 14.1 iSCSI - iSCSI 간단 구성


안녕하세요. 썬구루입니다. 이 게시물에서는 CentOS 7.3 리눅스를 iSCSI Target으로 구성 방법에 대해 간단하게 알아보도록 하겠습니다.

디스크 스토리지 연결 방식은 DAS, NAS, SAN으로 나누어지는데 여기서 요즘 NAS 디스크 스토리지는 NFS, CIFS, iSCSI를 지원합니다. NFS나 CIFS는 이미 앞에서 언급하고 구성해보았기 때문에 기억하고 있을 것이라 생각됩니다. 이는 스토리지에서 지원하는 파일시스템을 사용하는 것이죠.

저희가 CentOS 7.3을 사용했었고 그 기반에 NFS 서버와 Samba 서버를 구성한 것이기 때문에 CentOS 7.3의 EXT과 XFS 파일시스템을 사용한 것입니다. iSCSI는 Internet SCSI(Smail Computer System Interface)를 나타내며 SCSI 프로토콜을 IP 패킷에 실어 전달할 수 있는 다시 말해 IP 기반 스토리지 네트워킹 기술을 사용할 수 있도록 해주는 기술입니다.

이는 이미 파일시스템이 만들어진 파일시스템 공유가 아닌 Raw Device를 네트워크를 통해 공유할 수 있도록 만들어주는 기술입니다.


서버의 하드 디스크, 테이프 드라이브, 로봇 디바이스 등을 iSCSI를 통해 다른 서버로 공유해줄 수 있는 것입니다. 만약 iSCSI를 통해 공유 받은 하드디스크를 리눅스(Linux)가 사용한다면 EXT, XFS 파일시스템을 만들어 사용할 수 있고 윈도우(Windows)가 사용한다면 NTFS, 솔라리스(Solaris)가 사용한다면 UFS 또는 ZFS 파일시스템을 만들어 사용할 수 있습니다. 왜? Raw Device를 공유하는 것이기 때문입니다.

그래서 여러분들은 VMware Workstation 환경에서 아래와 같은 공유 디바이스(또는 파일시스템)를 만들어 사용할 수 있습니다

▶ NFS
▶ CIFS
▶ Shared SCSI
▶ iSCSI
▶ Tape drive
▶ Changer (Tape Library Robot)

이러한 공유 디바이스(또는 파일시스템)을 가지고 아래와 같은 서비스를 테스트할 수 있습니다.

▶ WEB/WAS 이중화
▶ 클러스터 파일시스템 (Cluster Filesystem)
▶ 클러스터 서버 (Cluster Server)
▶ 서버 가상화 (Server Virtualization)
▶ 데스크톱 가상화 (Desktop Virtualization)
▶ 클라우드 서비스 (Cloud Service)
▶ Oracle RAC
▶ 백업 솔루션 (Veritas NetBackup, Dell NetVault, Legato Networker)

어잇~!!! iSCSI 설명하다가 배가 산으로 갔군요. CentOS 7.3 리눅스에서 CentOS 6.x 버전과 달리 iSCSi 구성하는 것이 많이 달라졌습니다. 일단 이 게시물에선 간단하게 iSCSI Targer과 Initiator를 구성해보도록 하겠습니다. 테스트를 위한 가상머신 환경은 아래와 같습니다.

사양
iSCSI Target
iSCSI Initiator
CPU
 1 CPU / 2 Cores
 1 CPU / 2 Cores
MEM
 2GB
 2GB
HDD
 20GB /dev/sda OS
 10GB /dev/sdb iSCSI Device
 10GB /dev/sdc iSCSI Device
 20GB /dev/sda OS
NIC
 1 Gbps
 1Gbps
OS
 CentOS 7.3
 CentOS 7.3
Hostname / IP
 target01 / 192.168.80.13
 initiator01 / 192.168.80.14

■ CentOS 7.3 리눅스에 iSCSI Target 패키지 설치

아래와 같이 명령을 실행하여 iSCSI Target 관련 패키지를 설치한다.

[root@target01 ~]# vi /etc/yum.repos.d/CentOS-Media.repo

You have mail in /var/spool/mail/root

[root@target01 ~]#
[root@target01 ~]# more /etc/yum.repos.d/CentOS-Media.repo

# CentOS-Media.repo
#
#  This repo can be used with mounted DVD media, verify the mount point for
#  CentOS-7.  You can use this repo and yum to install items directly off the
#  DVD ISO that we release.
#
# To use this repo, put in your DVD and use it with the other repos too:
#  yum --enablerepo=c7-media [command]
#
# or for ONLY the media repo, do this:
#
#  yum --disablerepo=\* --enablerepo=c7-media [command]

[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
        file:///media/cdrom/
        file:///run/media/root/CentOS\ 7\ x86_64/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[root@target01 ~]#
[root@target01 ~]# df -h | grep sr0

/dev/sr0             7.8G  7.8G     0 100% /run/media/root/CentOS 7 x86_64

[root@target01 ~]#
[root@target01 ~]# yum --disablerepo=\* --enablerepo=c7-media -y install targetcli

Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * c7-media:
Resolving Dependencies
--> Running transaction check
---> Package targetcli.noarch 0:2.1.fb41-3.el7 will be installed
--> Processing Dependency: python-rtslib >= 2.1.fb41 for package: targetcli-2.1.fb41-3.el7.noarch
--> Processing Dependency: python-configshell for package: targetcli-2.1.fb41-3.el7.noarch
--> Running transaction check
---> Package python-configshell.noarch 1:1.1.fb18-1.el7 will be installed
--> Processing Dependency: python-urwid for package: 1:python-configshell-1.1.fb18-1.el7.noarch
--> Processing Dependency: pyparsing for package: 1:python-configshell-1.1.fb18-1.el7.noarch
---> Package python-rtslib.noarch 0:2.1.fb57-5.el7 will be installed
--> Processing Dependency: python-kmod for package: python-rtslib-2.1.fb57-5.el7.noarch
--> Running transaction check
---> Package pyparsing.noarch 0:1.5.6-9.el7 will be installed
---> Package python-kmod.x86_64 0:0.9-4.el7 will be installed
---> Package python-urwid.x86_64 0:1.1.1-3.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================
 Package                       Arch              Version                      Repository           Size
========================================================================================================
Installing:
 targetcli                     noarch            2.1.fb41-3.el7               c7-media             61 k
Installing for dependencies:
 pyparsing                     noarch            1.5.6-9.el7                  c7-media             94 k
 python-configshell            noarch            1:1.1.fb18-1.el7             c7-media             67 k
 python-kmod                   x86_64            0.9-4.el7                    c7-media             57 k
 python-rtslib                 noarch            2.1.fb57-5.el7               c7-media             88 k
 python-urwid                  x86_64            1.1.1-3.el7                  c7-media            654 k

Transaction Summary
========================================================================================================
Install  1 Package (+5 Dependent packages)

Total download size: 1.0 M
Installed size: 4.5 M
Downloading packages:
warning: /run/media/root/CentOS 7 x86_64/Packages/pyparsing-1.5.6-9.el7.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for pyparsing-1.5.6-9.el7.noarch.rpm is not installed
--------------------------------------------------------------------------------------------------------
Total                                                                    26 MB/s | 1.0 MB  00:00:00
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-3.1611.el7.centos.x86_64 (@anaconda)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : python-kmod-0.9-4.el7.x86_64                                                         1/6
  Installing : python-rtslib-2.1.fb57-5.el7.noarch                                                  2/6
  Installing : pyparsing-1.5.6-9.el7.noarch                                                         3/6
  Installing : python-urwid-1.1.1-3.el7.x86_64                                                      4/6
  Installing : 1:python-configshell-1.1.fb18-1.el7.noarch                                           5/6
  Installing : targetcli-2.1.fb41-3.el7.noarch                                                      6/6
  Verifying  : python-urwid-1.1.1-3.el7.x86_64                                                      1/6
  Verifying  : python-rtslib-2.1.fb57-5.el7.noarch                                                  2/6
  Verifying  : 1:python-configshell-1.1.fb18-1.el7.noarch                                           3/6
  Verifying  : targetcli-2.1.fb41-3.el7.noarch                                                      4/6
  Verifying  : pyparsing-1.5.6-9.el7.noarch                                                         5/6
  Verifying  : python-kmod-0.9-4.el7.x86_64                                                         6/6

Installed:
  targetcli.noarch 0:2.1.fb41-3.el7                                                               

Dependency Installed:
  pyparsing.noarch 0:1.5.6-9.el7                 python-configshell.noarch 1:1.1.fb18-1.el7       
  python-kmod.x86_64 0:0.9-4.el7                 python-rtslib.noarch 0:2.1.fb57-5.el7             
  python-urwid.x86_64 0:1.1.1-3.el7       

Complete!
[root@target01 ~]# 

iSCSI 디바이스로 사용할 10GB 디스크 두 개를 추가한 후 디스크를 인식시킨다.

[root@target01 ~]# find /sys/devices/ -name scan

/sys/devices/pci0000:00/0000:00:07.1/ata1/host0/scsi_host/host0/scan
/sys/devices/pci0000:00/0000:00:07.1/ata2/host1/scsi_host/host1/scan
/sys/devices/pci0000:00/0000:00:10.0/host2/scsi_host/host2/scan

[root@target01 ~]#
[root@target01 ~]# echo "- - -" > /sys/devices/pci0000:00/0000:00:10.0/host2/scsi_host/host2/scan
[root@target01 ~]#
[root@target01 ~]# lsblk | grep disk

fd0           2:0    1    4K  0 disk
sda           8:0    0   20G  0 disk
sdb           8:16   0   10G  0 disk
sdc           8:32   0   10G  0 disk

[root@target01 ~]# 




■ iSCSI Target 디바이스 구성

targetcli 명령을 사용하여 iSCSI Target 디바이스를 구성한다.

[root@target01 ~]# targetcli

Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.fb41
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.

/> ls
o- / ............................................................................................. [...]
  o- backstores .................................................................................. [...]
  | o- block ...................................................................... [Storage Objects: 0]
  | o- fileio ..................................................................... [Storage Objects: 0]
  | o- pscsi ...................................................................... [Storage Objects: 0]
  | o- ramdisk .................................................................... [Storage Objects: 0]
  o- iscsi ................................................................................ [Targets: 0]
  o- loopback ............................................................................. [Targets: 0]
/>
/> cd /backstores/
/backstores> ls
o- backstores .................................................................................... [...]
  o- block ........................................................................ [Storage Objects: 0]
  o- fileio ....................................................................... [Storage Objects: 0]
  o- pscsi ........................................................................ [Storage Objects: 0]
  o- ramdisk ...................................................................... [Storage Objects: 0]
/backstores>
/backstores> block/ create name=iscsi_disk1 dev=/dev/sdb
Created block storage object iscsi_disk1 using /dev/sdb.
/backstores> block/ create name=iscsi_disk2 dev=/dev/sdc
Created block storage object iscsi_disk2 using /dev/sdc.
/backstores>
/backstores> ls
o- backstores .................................................................................... [...]
  o- block ........................................................................ [Storage Objects: 2]
  | o- iscsi_disk1 ......................................... [/dev/sdb (10.0GiB) write-thru deactivated]
  | o- iscsi_disk2 ......................................... [/dev/sdc (10.0GiB) write-thru deactivated]
  o- fileio ....................................................................... [Storage Objects: 0]
  o- pscsi ........................................................................ [Storage Objects: 0]
  o- ramdisk ...................................................................... [Storage Objects: 0]
/backstores>
/backstores> cd /iscsi
/iscsi> ls
o- iscsi .................................................................................. [Targets: 0]
/iscsi> create iqn.2017-02.com.localdcv.iscsi1:server
Created target iqn.2017-02.com.localdcv.iscsi1:server.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> ls
o- iscsi .................................................................................. [Targets: 1]
  o- iqn.2017-02.com.localdcv.iscsi1:server .................................................. [TPGs: 1]
    o- tpg1 ..................................................................... [no-gen-acls, no-auth]
      o- acls ................................................................................ [ACLs: 0]
      o- luns ................................................................................ [LUNs: 0]
      o- portals .......................................................................... [Portals: 1]
        o- 0.0.0.0:3260 ........................................................................... [OK]
/iscsi> cd iqn.2017-02.com.localdcv.iscsi1:server/tpg1/luns
/iscsi/iqn.20...ver/tpg1/luns> create /backstores/block/iscsi_disk1
Created LUN 0.
/iscsi/iqn.20...ver/tpg1/luns> create /backstores/block/iscsi_disk2
Created LUN 1.
/iscsi/iqn.20...ver/tpg1/luns> ls
o- luns ...................................................................................... [LUNs: 2]
  o- lun0 ............................................................... [block/iscsi_disk1 (/dev/sdb)]
  o- lun1 ............................................................... [block/iscsi_disk2 (/dev/sdc)]
/iscsi/iqn.20...ver/tpg1/luns> cd ..
/iscsi/iqn.20...1:server/tpg1> cd acls
/iscsi/iqn.20...ver/tpg1/acls> create iqn.2017-02.com.localdcv.iscsi1:initiator01  <== iSCSI Initiator
Created Node ACL for iqn.2017-02.com.localdcv.iscsi1:initiator01
Created mapped LUN 1.
Created mapped LUN 0.
/iscsi/iqn.20...ver/tpg1/acls> cd /
/> ls
o- / ............................................................................................. [...]
  o- backstores .................................................................................. [...]
  | o- block ...................................................................... [Storage Objects: 2]
  | | o- iscsi_disk1 ......................................... [/dev/sdb (10.0GiB) write-thru activated]
  | | o- iscsi_disk2 ......................................... [/dev/sdc (10.0GiB) write-thru activated]
  | o- fileio ..................................................................... [Storage Objects: 0]
  | o- pscsi ...................................................................... [Storage Objects: 0]
  | o- ramdisk .................................................................... [Storage Objects: 0]
  o- iscsi ................................................................................ [Targets: 1]
  | o- iqn.2017-02.com.localdcv.iscsi1:server ................................................ [TPGs: 1]
  |   o- tpg1 ................................................................... [no-gen-acls, no-auth]
  |     o- acls .............................................................................. [ACLs: 1]
  |     | o- iqn.2017-02.com.localdcv.iscsi1:initiator01 .............................. [Mapped LUNs: 2]
  |     |   o- mapped_lun0 ............................................... [lun0 block/iscsi_disk1 (rw)]
  |     |   o- mapped_lun1 ............................................... [lun1 block/iscsi_disk2 (rw)]
  |     o- luns .............................................................................. [LUNs: 2]
  |     | o- lun0 ....................................................... [block/iscsi_disk1 (/dev/sdb)]
  |     | o- lun1 ....................................................... [block/iscsi_disk2 (/dev/sdc)]
  |     o- portals ........................................................................ [Portals: 1]
  |       o- 0.0.0.0:3260 ......................................................................... [OK]
  o- loopback ............................................................................. [Targets: 0]
/>
/> exit

Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json

[root@target01 ~]#
[root@target01 ~]# firewall-cmd --permanent --add-service=iscsi-target
success
[root@target01 ~]# firewall-cmd --reload
success
[root@target01 ~]# 

■ iSCSI Target 서비스 시작

아래와 같이 systemctl 명령을 사용하여 iSCSI Target 서비스를 실행한다.

[root@target01 ~]# systemctl enable target

Created symlink from /etc/systemd/system/multi-user.target.wants/target.service to /usr/lib/systemd/system/target.service.

[root@target01 ~]# systemctl start target
[root@target01 ~]# systemctl status target

● target.service - Restore LIO kernel target configuration
   Loaded: loaded (/usr/lib/systemd/system/target.service; enabled; vendor preset: disabled)
   Active: active (exited) since Sun 2017-02-05 05:31:41 EST; 12min ago
  Process: 3978 ExecStart=/usr/bin/targetctl restore (code=exited, status=0/SUCCESS)
 Main PID: 3978 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/target.service

Feb 05 05:31:40 target01 systemd[1]: Starting Restore LIO kernel target configuration...
Feb 05 05:31:41 target01 systemd[1]: Started Restore LIO kernel target configuration.

[root@target01 ~]# 

■ iSCSI Initiator 구성 및 디스크 구성

CentOS 7.3 리눅스를 Server with GUI로 설치하면 기본적으로 iSCSI Initiator 패키지가 같이 설치된다. 이를 이용하여 iSCSI Target 디바이스를 연결 후 연결된 디바이스를 확인한다. 또한 파티션 분할 후 파일시스템을 생성해본다.

[root@initiator01 iscsi]# lsblk | grep disk

fd0           2:0    1    4K  0 disk
sda           8:0    0   20G  0 disk

[root@initiator01 iscsi]#
[root@localhost ~]# rpm -qa | grep scsi-ini

iscsi-initiator-utils-6.2.0.873-35.el7.x86_64
iscsi-initiator-utils-iscsiuio-6.2.0.873-35.el7.x86_64

[root@localhost ~]#
[root@initiator01 iscsi]# more initiatorname.iscsi

InitiatorName=iqn.1994-05.com.redhat:278879972a52

[root@initiator01 iscsi]# vi initiatorname.iscsi

InitiatorName=iqn.2017-02.com.localdcv.iscsi1:initiator01    <== 매우 중요. iSCSI Target 디바이스 구성시 ACLs 허용 정보

[root@initiator01 iscsi]#
[root@initiator01 iscsi]# systemctl restart iscsi
[root@initiator01 iscsi]# systemctl restart iscsid
[root@initiator01 iscsi]# cd
[root@initiator01 ~]# iscsiadm -m discovery -t st -p 192.168.80.13:3260

192.168.80.13:3260,1 iqn.2017-02.com.localdcv.iscsi1:server

[root@initiator01 iscsi]# iscsiadm -m node -T iqn.2017-02.com.localdcv.iscsi1:server --login

Logging in to [iface: default, target: iqn.2017-02.com.localdcv.iscsi1:server, portal: 192.168.80.13,3260] (multiple)
Login to [iface: default, target: iqn.2017-02.com.localdcv.iscsi1:server, portal: 192.168.80.13,3260] successful.

[root@initiator01 iscsi]# lsblk | grep disk

fd0           2:0    1    4K  0 disk
sda           8:0    0   20G  0 disk
sdb           8:16   0   10G  0 disk 
sdc           8:32   0   10G  0 disk 

[root@initiator01 iscsi]#

[root@initiator01 iscsi]# parted /dev/sdb mklabel gpt

Information: You may need to update /etc/fstab.

[root@initiator01 iscsi]# parted /dev/sdb unit GB mkpart 1st xfs 0 100%

Information: You may need to update /etc/fstab.

[root@initiator01 iscsi]# lsblk /dev/sdb
                           
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  10G  0 disk
└─sdb1   8:17   0  10G  0 part

[root@initiator01 iscsi]#
[root@initiator01 iscsi]# mkfs -t xfs /dev/sdb1

meta-data=/dev/sdb1              isize=512    agcount=4, agsize=654848 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2619392, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

[root@initiator01 iscsi]#
[root@initiator01 iscsi]# mkdir /data01
[root@initiator01 iscsi]#
[root@initiator01 iscsi]# mount /dev/sdb1 /data01
[root@initiator01 iscsi]#
[root@initiator01 iscsi]# df -h /data01

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1        10G   33M   10G   1% /data01

[root@initiator01 iscsi]#
[root@initiator01 iscsi]# blkid | grep sdb1

/dev/sdb1: UUID="4fa16cc7-a082-49ce-b36c-8cda48b195f9" TYPE="xfs" PARTLABEL="1st" PARTUUID="115de10d-52c2-43dc-bb85-05afb8fbbf3c"

[root@initiator01 iscsi]#

잘 구성되죠. 여기까지 iSCSI 간단 구성에 대해 알아보았습니다. 설명이 엄청 많이 부족한 감이 있네요. 시간을 지배하지 못해서.. 흠흠.. 좀 더 상세한 내용은 다음에 올리도록 하겠습니다. 그럼..



CentOS 7.3 리눅스 네트워크 ] 13.1 DNS - 서버 간단 구성


안녕하세요. 썬구루입니다. 이 게시물에서는 CentOS 7.3 리눅스 기반 DNS 서버(BIND) 설치 및 구성 방법에 대해 알아보도록 하겠습니다.

인류는 문자를 발명하고 그 이후에 숫자를 발명하였습니다. 그래서 우리는 오랜 세월 동안 숫자보다 문자에 더 익숙하게 진화한 것이죠. 네트워크 상에 있는 호스트들을 구분 짓기 위해 IP 주소를 사용한다고 언급했었습니다. 그리고 우리가 알아보기 좋은 숫자로 총 32bits를 8bist씩 4등분 하여 10진수 숫자로 표기하여 사용합니다.

몇 개의 IP 주소를 외우긴 하지만 수많은 IP 숫자를 외우는 것은 어렵습니다. 하지만 문자로 된 호스트 이름이나 도메인 이름을 외우는 것은 숫자보다 상대적으로 쉽게 외울 것입니다. 여러분들이 네이버, 다음, 구글 홈페이지 서버의 IP 주소를 입력하여 웹 포탈에 접속하지는 않을 것입니다. www.naver.com, www.daum.net, www.google.com 이런 도메인 이름을 사용하여 웹에 접속할 것입니다.

이전 컴퓨터가 적었을 때 다시 말해 일반인들이 쉽게 컴퓨터를 접할 수 없었을 때 'IP 주소 호스트 이름'을 나열한 hosts 파일을 FTP 서비스를 통해 주기적으로 배포하였습니다. NetBIOS, WINS, NIS, NIS+ 등의 서비스를 사용하여 정보 서비스(호스트 이름 풀이도 포함)를 제공했었는데 확장성이 떨어졌다고 해야 하나.. 어쨌든 지금은 이름 풀이를 하기 위해 계층적 도메인 개념을 사용하는 DNS를 사용합니다.

일단 이 게시물에서는 리눅스와 유닉스에서 DNS 서버 구성을 위해 사용되는 BIND 설치 및 구성에 대해 알아보도록 하겠습니다. DNS 개념에 관련된 글은 올해 초에 올리도록 하겠습니다. 왜냐하면 그림 그리기가 너무 힘들어서요.  DNS 개념에 관련된 그림 그리려면 3~4일 정도는 그림만 그려야 할 것 같은 느낌이 들어서... 하하하...

일단 DNS 개념은 일반 서적이나 인터넷 자료를 참고해주시길 바랍니다. ^^;;;

■ CentOS 7.3에 BIND 설치

BIND는 리눅스/유닉스에서 가장 많이 사용되는 DNS 서비스를 수행하는 프로그램입니다. CentOS 7.3 설치 DVD ISO에는 아래와 같은 BIND RPM 패키지가 있습니다. 만약 가장 최신의 BIND 버전을 얻어 설치하려 한다면 http://www.isc.org/products/bind 웹사이트를 방문하여 다운로드 후 설치 및 설정을 하면 됩니다. 일단 우리는 DVD에 있는 패키지를 rpm 명령을 사용하여 아래와 같이 설치합니다.

[root@dns01 ~]# df -h | grep sr0

/dev/sr0             7.8G  7.8G     0 100% /run/media/root/CentOS 7 x86_64

[root@dns01 ~]# cd /run/media/root/CentOS\ 7\ x86_64/Packages/
[root@dns01 Packages]#
[root@dns01 Packages]# ls bind*

bind-9.9.4-37.el7.x86_64.rpm            bind-lite-devel-9.9.4-37.el7.x86_64.rpm
bind-chroot-9.9.4-37.el7.x86_64.rpm     bind-pkcs11-9.9.4-37.el7.x86_64.rpm
bind-devel-9.9.4-37.el7.i686.rpm        bind-pkcs11-devel-9.9.4-37.el7.i686.rpm
bind-devel-9.9.4-37.el7.x86_64.rpm      bind-pkcs11-devel-9.9.4-37.el7.x86_64.rpm
bind-dyndb-ldap-10.0-5.el7.x86_64.rpm   bind-pkcs11-libs-9.9.4-37.el7.i686.rpm
bind-libs-9.9.4-37.el7.i686.rpm         bind-pkcs11-libs-9.9.4-37.el7.x86_64.rpm
bind-libs-9.9.4-37.el7.x86_64.rpm       bind-pkcs11-utils-9.9.4-37.el7.x86_64.rpm
bind-libs-lite-9.9.4-37.el7.i686.rpm    bind-sdb-9.9.4-37.el7.x86_64.rpm
bind-libs-lite-9.9.4-37.el7.x86_64.rpm  bind-sdb-chroot-9.9.4-37.el7.x86_64.rpm
bind-license-9.9.4-37.el7.noarch.rpm    bind-utils-9.9.4-37.el7.x86_64.rpm
bind-lite-devel-9.9.4-37.el7.i686.rpm

[root@dns01 Packages]#
[root@dns01 Packages]# rpm -ivh bind-9.9.4-37.el7.x86_64.rpm

warning: bind-9.9.4-37.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:bind-32:9.9.4-37.el7             ################################# [100%]

[root@dns01 Packages]# 

■ 테스트를 위한 도메인 이름 및 각 가상머신에 대한 호스트 이름/IP 주소

오호!! 리눅스 네트워크 테스트를 위해 8개 가상머신을 만들었었군요. 사용할 도메인 이름과 각 가상머신에 관련된 호스트 이름 및 IP 주소 정보는 아래와 같습니다.

도메인 또는 호스트 이름
도메인 이름 또는 IP 주소
도메인 이름
localdcv.com
dns01
192.168.80.5
web01
192.168.80.10
was01
192.168.80.11
db01
192.168.80.12
dhcpntp
192.168.80.6
nfs01
192.168.80.7
samba01
192.168.80.8
win81
192.168.80.20

Nameless Root 도메인(.)과 Top Level 도메인(com, co.kr, go.kr, net, org, gov)는 인터넷 관련 비영리 기관에서 관리하고 있습니다. 그리고 Secondary Level 도메인을 기업, 기관, 개인이 구매하여 도메인에 대한 관리 권한을 위임받는 것이죠. 그리고  그 도메인에 대한 DNS 서버는 도메인의 출발점이 되는 것입니다. Sub Level 또는 Child 도메인은 구매한 도메인을 쪼개어 계층적인 도메인으로 관리하기 위해 사용하는 것이고 조직 또는 지역별로 도메인 이름을 분류할 수 있습니다. 이런 것은 DNS 개념에서 다루도록 하겠습니다.




■ BIND 구성 파일 [ 다운로드 ]

▶ /etc/named.conf

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

options {
 listen-on port 53 { any; };
 directory  "/var/named";
 dump-file  "/var/named/data/cache_dump.db";
 statistics-file "/var/named/data/named_stats.txt";
 memstatistics-file "/var/named/data/named_mem_stats.txt";
 allow-query     { any; };
 query-source port 53;

 /*
  - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
  - If you are building a RECURSIVE (caching) DNS server, you need to enable
    recursion.
  - If your recursive DNS server has a public IP address, you MUST enable access
    control to limit queries to your legitimate users. Failing to do so will
    cause your server to become part of large scale DNS amplification
    attacks. Implementing BCP38 within your network would greatly
    reduce such attack surface
 */
 recursion yes;

 /* Path to ISC DLV key */
 bindkeys-file "/etc/named.iscdlv.key";
 managed-keys-directory "/var/named/dynamic";

 pid-file "/run/named/named.pid";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
 type hint;
 file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

▶ /etc/named.rfc1912.zones

// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

zone "localdcv.com" IN {
 type master;
 file "localdcv.zone";
 allow-update { none; };
};
zone "80.168.192.in-addr.arpa" IN {
 type master;
 file "192.168.80.rzone";
 allow-update { none; };
};

▶ /var/named/localdcv.zone

$TTL 86400
@       IN SOA dns01.localdcv.com.   root (
                                        42      ; serial
                                        4H      ; refresh
                                        15M     ; retry
                                        1W      ; expire
                                        8H )    ; minimum
        IN NS   dns01.localdcv.com.
dns01       IN   A           192.168.80.5
dhcpntp IN   A           192.168.80.6
nfs01       IN   A           192.168.80.7
samba01   IN   A           192.168.80.8
web01      IN   A           192.168.80.10
was01      IN   A           192.168.80.11
db01        IN   A           192.168.80.12
win81       IN   A           192.168.80.20
www       IN   CNAME       web01

▶ /var/named/192.168.80.rzone

$TTL 86400
@       IN SOA dns01.localdcv.com.   root (
                                        42      ; serial
                                        4H      ; refresh
                                        15M     ; retry
                                        1W      ; expire
                                        8H )    ; minimum
        IN NS   dns01.localdcv.com.
5 IN PTR dns01.localdcv.com.
6 IN PTR dhcpntp.localdcv.com.
7 IN PTR nfs01.localdcv.com.
8 IN PTR samba01.localdcv.com.
10 IN PTR web01.localdcv.com.
11 IN PTR was01.localdcv.com.
12 IN PTR db01.localdcv.com.
20 IN PTR win81.localdcv.com.

▶ BIND 구성 파일의 Resource Record 의 종류

Record
설 명
$TTL
 이름 풀이 질의의 응답에 대한 정보를 임시 저장하는(Caching) 시간 정보이다.
SOA
 Start of Authority. 권한의 시작점
NS
 Name Server. 도메인(Domain)의 이름 서버(Name Server)를 나타낸다.
A
 정방향 검색(도메인 이름에 대한 IP 주소 풀이)을 위해 사용되는 레코드를 나타낸다. IPv4
AAAA
 정방향 검색을 위해 사용되는 레코드를 나타낸다. IPv6
CNAME
 Canonical Name. 별칭 이름을 나타낸다.
PTR
 Pointer. 역방향 검색(IP 주소에 대한 도메인 이름 풀이)을 하기 위해 사용되는 레코드를 나타낸다.

■ BIND 서비스 테스트

1). BIND 서비스 시작 종료

systemctl [ start | stop ] named

2). 시스템 부팅 시 BIND 서비스 자동 시작

systemstl [ enable | disable ] named

3). DNS01 가상머신 NIC 설정 변경

아래와 같은 명령을 실행하여 Search Domain을 설정한다. 이는 호스트 이름만으로 검색 시 자동으로 호스트 이름과 도메인 이름을 결합하여 풀 도메인 이름(FQDN)으로 검색을 할 수 있도록 해준다.

[root@dns01 Packages]# nmtui

아래와 같은 화면이 나타나면 Edit a connection을 선택하기 위해 엔터키를 누른다.


아래와 같이 네트워크 인터페이스 이름 정보가 나타나면 eth0 또는 ens32를 선택한 후 엔터키를 누른다.


아래와 같은 화면으로 전환되면 Search domains 우측에 Add를 선택하여 엔터를 누른 후 localdcv.com이라 입력한다.


Search domains를 설정하였다면 마우스 휠 버튼으로 화면을 내려 OK를 선택한 후 엔터키를 누른다.


다음과 같은 화면이 나타나면 Back을 선택한 후 엔터키를 누른다.


아래와 같은 화면이 나타나면 Quit 를 선택한 후 엔터키를 누른다.


설정을 완료하였다면 적용을 위해 아래와 같은 명령을 실행합니다.

[root@dns01 Packages]# systemctl restart network




4). BIND 서비스 시작 및 이름 풀이 테스트

▶ DNS 서버에서 테스트

[root@dns01 Packages]# systemctl enable named

Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.

[root@dns01 Packages]#
[root@dns01 Packages]# systemctl start named
[root@dns01 Packages]#
[root@dns01 Packages]# firewall-cmd --permanent --add-service=dns

success

[root@dns01 Packages]# firewall-cmd --reload

success

[root@dns01 Packages]#
[root@dns01 Packages]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2017-02-04 23:07:43 EST; 1h 39min ago
  Process: 4614 ExecStart=/usr/sbin/named -u named $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 4611 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z /etc/named.conf; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
 Main PID: 4617 (named)
   CGroup: /system.slice/named.service
           └─4617 /usr/sbin/named -u named

Hint: Some lines were ellipsized, use -l to show in full.
[root@dns01 Packages]#

[root@dns01 Packages]# ps -ef | grep named

named     4617     1  0 Feb04 ?        00:00:00 /usr/sbin/named -u named

[root@dns01 Packages]#
[root@dns01 Packages]# nslookup www.localdcv.com
Server:  192.168.80.5
Address: 192.168.80.5#53

www.localdcv.com canonical name = web01.localdcv.com.
Name: web01.localdcv.com
Address: 192.168.80.10

[root@dns01 Packages]# nslookup 192.168.80.10
Server:  192.168.80.5
Address: 192.168.80.5#53

10.80.168.192.in-addr.arpa name = web01.localdcv.com.

[root@dns01 Packages]#
[root@dns01 Packages]# nslookup www.naver.com
Server:  192.168.80.5
Address: 192.168.80.5#53

Non-authoritative answer:
www.naver.com canonical name = www.naver.com.nheos.com.
Name: www.naver.com.nheos.com
Address: 202.179.177.21
Name: www.naver.com.nheos.com
Address: 125.209.222.142

[root@dns01 Packages]#
[root@dns01 Packages]# nslookup www.google.com
Server:  192.168.80.5
Address: 192.168.80.5#53

Non-authoritative answer:
Name: www.google.com
Address: 216.58.197.196

[root@dns01 Packages]# 

▶ Windows 8.1 가상머신에서 테스트

NIC 네트워크 설정

 윈도우키 + r => control.exe ncpa.cpl 명령 실행

Ethernet0 NIC에 대한 속성 정보를 선택합니다. (아이콘 클릭 후 마우스 오른쪽 버튼)


Internet Protocol Version 4 (TCP/IPv4)를 선택한 후 속성을 선택합니다. 그리고 기본 설정 DNS 서버 IP 주소를 변경한 후 고급을 선택합니다.





DNS 탭(Tab)을 선택한 후 다음 DNS 접미사 추가를 선택한 후 추가 버튼을 눌러 localdcv.com 을 입력합니다. 이는 호스트 이름만으로  통신하려 할 때 선택한 접미사와 결합하여 전체 도메인 이름(FQDN)을 만들어 줍니다.


설정이 끝났다면 확인 버튼을 눌러 네트워크 설정을 완료합니다. 그리고 변경한 내용을 적용하기 위해 아래와 같이 NIC을 비활성화/활성화합니다.



그리고 명령창(cmd)을 열어 nslookup 명령을 사용하여 이름 풀이를 해봅니다. (윈도우 키 + r => cmd 명령)


웹브라우저(Internet Explorer)를 실행하여 주소창에 http://www.localdcv.com를 입력하여 웹서버로 접속되는지 확인합니다.



탐색기를 열어 도메인 이름으로 Samba(삼바) 서버에도 접근이 가능한지 확인합니다.


여기까지 DNS 서버 간단 구성 및 테스트에 대해 알아보았습니다.



CentOS 7.3 리눅스 네트워크 ] 12.1 삼바 (Samba) - 서버 간단 구성


안녕하세요. 썬구루입니다. 이 게시물에서는 CentOS 7.3 리눅스 기반 Samba 서버 설치 및 구성 방법에 대해 알아보도록 하겠습니다.

리눅스/유닉스 시스템 간 파일 공유를 하기 위해 NFS 서비스 즉 네트워크 파일시스템을 사용합니다. 만약 리눅스와 윈도우 시스템 간에 파일 공유를 하려 한다면 어떻게 하면 될까요?

Samba 서비스를 사용하면 윈도우 운영체제 자원을 즉 프린터나 파일을 리눅스/유닉스에게 공유할 수 있고 역으로도 가능합니다.

그런데 Samba가 많이 사용되느냐?

보통 리눅스 책을 보면 많이 사용한다고 되어 있는데 일단 사용하는 곳은 사용하고 사용하지 않는 곳은 사용하지 않습니다. 그리고 15년 동안 IT 바닥에서 일하면서 Samba를 구성해준 적은 단 한 번도 없었습니다. 왜냐하면 저가 방문하였던 고객사들은 네트워크 프린터를 사용했었고 지금도 그렇게 사용하고 있습니다. 그리고 방문한 고객사에서 사무용 컴퓨터 운영체제로 윈도우 운영체제를 거의 100% 사용하고 있습니다.

고객사에는 Samba를 사용하지 않더라도 업무파일 공유를 위한 시스템은 모두 갖춰져 있고 유닉스는 유닉스끼리 리눅스는 리눅스끼리 NFS 파일시스템을 사용하거나 공유 파일시스템을 사용합니다. 그리고 해킹 예방 차원에서 시스템 및 네트워크 보안을 위해 웬만하면 공유에 관련된 것은 최소화하려 하고 있습니다. 그렇다고 저가 국내 모든 고객사에 방문한 것은 아니니 속속들이 모든 환경은 알 수는 없습니다. 세상은 넓고 할 일은 많고 저라는 개인의 단편적인 시각으로 세상을 보는 것이니 Samba를 사용하여 운영하는 곳도 많이 있을 것이라 생각됩니다.

이 게시물에서 CentOS 7.3 리눅스에 Samba 서버를 설치하고 구성하여 윈도우 8.1과 파일 공유하는 방법에 대해 알아보도록 하겠습니다.

■ Samba(삼바)는?

Samba는 SMB(Server Message Block)과 CIFS(Common Internet File System) 프로토콜을 사용하여 네트워크에 연결된 윈도우, 리눅스 및 유닉스 시스템 간 파일과 프린터 공유를 할 수 있도록 해주는 서비스입니다. 이것은 Andrew Tridgell에 의해 처음 개발되었고 과거에는 SMB 프로토콜만 사용했으나 지금은 CIFS도 같이 지원하고 있습니다.

Samba에 대한 특징은 다음과 같다.

▶ 윈도우, 리눅스, 유닉스 클라이언트에 파일 및 프린터 공유 가능
▶ 네트워크 검색 지원 (NetBIOS도 가능)
▶ WINS(Windows Internet Name Service) 이름 풀이 지원
▶ Windows Server AD(Active Directory)와 연동 가능
▶ 오픈 소스(Open Source) 프로그램

이 게시물에서 CentOS 7.3 리눅스에 Samba 서버를 설치하고 구성하여 윈도우 8.1과 파일 공유하는 방법에 대해 알아볼 것입니다.


■ CentOS 7.3 리눅스 Samba

1). Samba 서버 패키지 설치

CentOS 7.3을 Samba 서버로 구성하기 위해서 관련된 samba-4.4.4-9.el7.x86_64.rpm 패키지가 설치되어 있어야 합니다. 템플릿으로 사용하는 가상머신을 복제하여 Samba 가상머신을 생성합니다. 그리고 eth0(또는 ens32) NIC에 위 그림과 같이 IP 주소를 설정한 후 CentOS 7.3 DVD ISO 파일을 가상머신에 연결하여  아래와 같이 samba-4.4.4-9.el7.x86_64.rpm 패키지를 설치합니다.

서버 IP 주소
관련 서비스
서비스 포트 (Port) 주소
192.168.80.13
Samba
137, 138, 139, 445, 901
192.168.80.13
Windows 8.x IE
-

[root@samba01 ~]# vi /etc/hosts
[root@samba01 ~]#
[root@samba01 ~]# more /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.80.13 samba01

[root@samba01 ~]#
[root@samba01 ~]# cd /etc/yum.repos.d/
[root@samba01 yum.repos.d]#
[root@samba01 yum.repos.d]# vi CentOS-Media.repo

# CentOS-Media.repo
#
#  This repo can be used with mounted DVD media, verify the mount point for
#  CentOS-7.  You can use this repo and yum to install items directly off the
#  DVD ISO that we release.
#
# To use this repo, put in your DVD and use it with the other repos too:
#  yum --enablerepo=c7-media [command]
#
# or for ONLY the media repo, do this:
#
#  yum --disablerepo=\* --enablerepo=c7-media [command]

[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
        file:///media/cdrom/
        file:///run/media/root/CentOS\ 7\ x86_64/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[root@samba01 yum.repos.d]#
[root@samba01 yum.repos.d]# df -h | grep sr0

/dev/sr0             7.8G  7.8G     0 100% /run/media/root/CentOS 7 x86_64

[root@samba01 yum.repos.d]#
[root@samba01 yum.repos.d]# yum --disablerepo=\* --enablerepo=c7-media -y install samba

Loaded plugins: fastestmirror, langpacks
file:///media/CentOS/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /media/CentOS/repodata/repomd.xml"
Trying other mirror.
file:///media/cdrom/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /media/cdrom/repodata/repomd.xml"
Trying other mirror.
c7-media                                                                         | 3.6 kB  00:00:00
c7-media/group_gz              FAILED                                 
file:///media/CentOS/repodata/c55e5b7bbe933fa8dac2cffca4596c265812b74ed12ef3968d487dd6eb22ad93-c7-x86_64-comps.xml.gz: [Errno 14] curl#37 - "Couldn't open file /media/CentOS/repodata/c55e5b7bbe933fa8dac2cffca4596c265812b74ed12ef3968d487dd6eb22ad93-c7-x86_64-comps.xml.gz"
Trying other mirror.
(1/2): c7-media/group_gz                                                         | 155 kB  00:00:00
c7-media/primary_db            FAILED                                 
file:///media/cdrom/repodata/bd50ff3d861cc21d254a390a963e9f0fd7b7b96ed9d31ece2f2b1997aa3a056f-primary.sqlite.bz2: [Errno 14] curl#37 - "Couldn't open file /media/cdrom/repodata/bd50ff3d861cc21d254a390a963e9f0fd7b7b96ed9d31ece2f2b1997aa3a056f-primary.sqlite.bz2"
Trying other mirror.
(2/2): c7-media/primary_db                                                       | 5.6 MB  00:00:00
Determining fastest mirrors
 * c7-media:
Resolving Dependencies
--> Running transaction check
---> Package samba.x86_64 0:4.4.4-9.el7 will be installed
--> Processing Dependency: samba-libs = 4.4.4-9.el7 for package: samba-4.4.4-9.el7.x86_64
--> Processing Dependency: samba-common-tools = 4.4.4-9.el7 for package: samba-4.4.4-9.el7.x86_64
--> Processing Dependency: samba-common-libs = 4.4.4-9.el7 for package: samba-4.4.4-9.el7.x86_64
--> Processing Dependency: libxattr-tdb-samba4.so(SAMBA_4.4.4)(64bit) for package: samba-4.4.4-9.el7.x86_64
--> Processing Dependency: libpopt-samba3-samba4.so(SAMBA_4.4.4)(64bit) for package: samba-4.4.4-9.el7.x86_64
--> Processing Dependency: libxattr-tdb-samba4.so()(64bit) for package: samba-4.4.4-9.el7.x86_64
--> Processing Dependency: libpopt-samba3-samba4.so()(64bit) for package: samba-4.4.4-9.el7.x86_64
--> Running transaction check
---> Package samba-common-libs.x86_64 0:4.4.4-9.el7 will be installed
---> Package samba-common-tools.x86_64 0:4.4.4-9.el7 will be installed
---> Package samba-libs.x86_64 0:4.4.4-9.el7 will be installed
--> Processing Dependency: libpytalloc-util.so.2(PYTALLOC_UTIL_2.1.6)(64bit) for package: samba-libs-4.4.4-9.el7.x86_64
--> Processing Dependency: libpytalloc-util.so.2(PYTALLOC_UTIL_2.0.6)(64bit) for package: samba-libs-4.4.4-9.el7.x86_64
--> Processing Dependency: libpytalloc-util.so.2()(64bit) for package: samba-libs-4.4.4-9.el7.x86_64
--> Running transaction check
---> Package pytalloc.x86_64 0:2.1.6-1.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================
 Package                        Arch               Version                   Repository            Size
========================================================================================================
Installing:
 samba                          x86_64             4.4.4-9.el7               c7-media             609 k
Installing for dependencies:
 pytalloc                       x86_64             2.1.6-1.el7               c7-media              15 k
 samba-common-libs              x86_64             4.4.4-9.el7               c7-media             160 k
 samba-common-tools             x86_64             4.4.4-9.el7               c7-media             450 k
 samba-libs                     x86_64             4.4.4-9.el7               c7-media             260 k

Transaction Summary
========================================================================================================
Install  1 Package (+4 Dependent packages)

Total download size: 1.5 M
Installed size: 3.9 M
Downloading packages:
warning: /run/media/root/CentOS 7 x86_64/Packages/pytalloc-2.1.6-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for pytalloc-2.1.6-1.el7.x86_64.rpm is not installed
--------------------------------------------------------------------------------------------------------
Total                                                                   2.3 MB/s | 1.5 MB  00:00:00
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-3.1611.el7.centos.x86_64 (@anaconda)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : samba-common-libs-4.4.4-9.el7.x86_64                                                 1/5
  Installing : pytalloc-2.1.6-1.el7.x86_64                                                          2/5
  Installing : samba-libs-4.4.4-9.el7.x86_64                                                        3/5
  Installing : samba-common-tools-4.4.4-9.el7.x86_64                                                4/5
  Installing : samba-4.4.4-9.el7.x86_64                                                             5/5
  Verifying  : samba-common-libs-4.4.4-9.el7.x86_64                                                 1/5
  Verifying  : pytalloc-2.1.6-1.el7.x86_64                                                          2/5
  Verifying  : samba-common-tools-4.4.4-9.el7.x86_64                                                3/5
  Verifying  : samba-libs-4.4.4-9.el7.x86_64                                                        4/5
  Verifying  : samba-4.4.4-9.el7.x86_64                                                             5/5

Installed:
  samba.x86_64 0:4.4.4-9.el7                                                                   

Dependency Installed:
  pytalloc.x86_64 0:2.1.6-1.el7                       samba-common-libs.x86_64 0:4.4.4-9.el7   
  samba-common-tools.x86_64 0:4.4.4-9.el7             samba-libs.x86_64 0:4.4.4-9.el7         

Complete!

[root@samba01 yum.repos.d]#
[root@samba01 yum.repos.d]# firewall-cmd --permanent --add-service=samba
success
[root@samba01 yum.repos.d]# firewall-cmd --reload
success
[root@samba01 yum.repos.d]#
[root@samba01 private]# systemctl enable smb

Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.

[root@samba01 private]#
[root@samba01 private]# systemctl start smb
[root@samba01 private]# systemctl stop smb

2). Samba 서비스 시작 종료

systemctl [ start | stop ] samba

3). 시스템 부팅시 HTTPD 서비스 자동 시작

systemctl [ enable | disable ] samba




■ CentOS 7.3 리눅스 Samba 구성 파일 

CentOS 7.3 리눅스에 samba 패키지를 설치하면 /etc/samba 디렉터리에 smb.conf Samba 구성 파일이 생성되어 있습니다. 여기에 설정되는 내용들을 간략하게 정리하면 아래와 같습니다.

구성 정보
내 용
workgroup
 윈도우 작업 그룹
hosts allow
 삼바 서버에 접속을 허용할 컴퓨터 IP 주소 또는 네트워크 주소
security
 보안 옵션 ( user : 사용자 단위 보안, share : 공유)
comment
 주석, 설명 
path
 공유 디렉터리 경로 
public
 다른 사용자도 사용 가능 ( 공용 가능. 값은 yes or no) 
writable
 읽기, 쓰기 가능 (값은 yes or no)
browseable
 공유 디렉터리를 보여줌 (값은 yes or no)
read only
 읽기만 가능 (값은 yes or no) 

■ CentOS 7.3 리눅스 Samba 서버 테스트

1). Windows 8.1 90일 평가판 다운로드

▶ Windows 8.1 다운로드 사이트

https://www.microsoft.com/ko-kr/evalcenter/evaluate-windows-8-1-enterprise

2). samba01 가상머신에 samba  구성

▶ /etc/samba/smb.conf 구성 파일 수정

[root@samba01 yum.repos.d]# cd /etc/samba/
[root@samba01 samba]# ls

lmhosts  smb.conf  smb.conf.example

[root@samba01 samba]# mv smb.conf smb.conf.old
[root@samba01 samba]#
[root@samba01 samba]# vi smb.conf

[global]
workgroup = WORKGROUP
server string = Samba Server Version %v
netbios name = SAMBA01
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam

[smb01]
comment = sambafolder
path = /smb01
browseable = yes
writable = yes
printable = no

[root@samba01 samba]# 

▶ 공유 디렉터리 생성, samba 서비스 시작 및 samba 사용자 계정 설정

[root@samba01 samba]# mkdir /smb01
[root@samba01 samba]# groupadd group1
[root@samba01 samba]# useradd -g group1 -s /sbin/nologin -M user1
[root@samba01 samba]#
[root@samba01 samba]# ls -l /var/lib/samba/private/passdb.tdb

-rw-------. 1 root root 421888 Feb  4 21:09 /var/lib/samba/private/passdb.tdb

[root@samba01 samba]#
[root@samba01 samba]# file /var/lib/samba/private/passdb.tdb

/var/lib/samba/private/passdb.tdb: TDB database version 6, little-endian hash size 131 bytes

[root@samba01 samba]# strings /var/lib/samba/private/passdb.tdb | grep user1
[root@samba01 samba]#
[root@samba01 samba]# smbpasswd -a user1

New SMB password:
Retype new SMB password:
Added user user1.

[root@samba01 samba]# strings /var/lib/samba/private/passdb.tdb | grep user1

user1
&USER_user1
user1
user1
&USER_user1
user1

[root@samba01 samba]# mkdir /smb01/user1
[root@samba01 samba]# chown user1:group1 /smb01/user1/
[root@samba01 samba]# ls -ld /smb01/user1/

drwxr-xr-x. 2 user1 group1 6 Feb  4 21:12 /smb01/user1/

[root@samba01 samba]# chmod 700 /smb01/user1/
[root@samba01 samba]#
[root@samba01 samba]# systemctl start smb
[root@samba01 samba]#
[root@samba01 samba]# chcon -Rt samba_share_t /smb01/
[root@samba01 samba]#
[root@samba01 samba]# systemctl status smb

● smb.service - Samba SMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2017-02-04 21:13:33 EST; 8s ago
 Main PID: 3792 (smbd)
   Status: "smbd: ready to serve connections..."
   CGroup: /system.slice/smb.service
           ├─3792 /usr/sbin/smbd
           ├─3793 /usr/sbin/smbd
           ├─3794 /usr/sbin/smbd
           └─3795 /usr/sbin/smbd

Feb 04 21:13:32 samba01 systemd[1]: Starting Samba SMB Daemon...
Feb 04 21:13:33 samba01 smbd[3792]: [2017/02/04 21:13:33.041815,  0] ../lib...y)
Feb 04 21:13:33 samba01 systemd[1]: Started Samba SMB Daemon.
Feb 04 21:13:33 samba01 smbd[3792]:   STATUS=daemon 'smbd' finished startin...ns
Hint: Some lines were ellipsized, use -l to show in full.

[root@samba01 samba]#




3). samba  접속 테스트

▶ Windows 8.1 에서 samba 접속 테스트

탐색기를 열어 주소창에 \\192.168.80.13를 입력합니다. 그러면 아래와 같이 계정/암호 입력 창이 나타납니다.


user1 계정명과 smbpasswd 명령을 사용하여 정의한 암호를 입력한 후 확인 버튼을 눌러 로그인합니다. 그러면 공유 디렉터리가 나타나고 그 디렉터리 안으로 들어가면 user1 디렉터리가 나타납니다.


user1 디렉터리에서 새 폴더를 생성 시도하여 파일이 생성되는지 확인합니다.



▶ Windows 8.1에서 user2 계정으로 samba 접속 시도

CentOS 7.3 리눅스에서 아래와 같이 /smb01/user1 디렉터리에 생성된 디렉터리(폴더)를 확인한 후 user2 계정을 생성합니다.

[root@samba01 samba]# useradd -g group1 -s /sbin/nologin -M user2
[root@samba01 samba]#
[root@samba01 samba]# smbpasswd -a user2

New SMB password:
Retype new SMB password:
Added user user2.

[root@samba01 samba]#

그리고 Windows 8.1 가상머신에서 탐색기를 닫고 명령창(cmd)을 열어 아래와 같은 명령을 실행하여 samba 연결을 끊습니다.

 C:\> net use \\192.168.80.41\smb01  /delete


만약 위 명령을 실행해도 연결정보가 남아있다면 Windows 8.1 로그아웃/로그인을 하길 바랍니다. 로그아웃/로그인이 가장 깔끔합니다.



로그인 후 다시 samba 공유 디렉터리에 접근하려 하면 아래와 같이 계정/암호를 넣는 창이 나타납니다. 이때 새로 만든 user2 계정으로 접속합니다.


접속 후 smb01/user1 디렉터리(폴더)로 들어가려 하면 경로 이동이 되지 않을 것입니다. 이는 user1 디렉터리 소유자는 user1 계정으로 설정되어 있으며 접속 권한은 700 즉 rwx------로 설정했기 때문에 user1 계정만이 이 디렉터리(폴더)로 경로 이동을 할 수 있습니다.


4). Samba 계정 삭제

Sabmba를 사용할 수 있도록 설정된 계정을 삭제하기 위해 아래와 같은 명령을 사용할 수 있습니다.

[root@samba01 samba]# pdbedit -x -u user1
[root@samba01 samba]#
[root@samba01 samba]# strings /var/lib/samba/private/passdb.tdb | grep usre1
[root@samba01 samba]# 

5). Samba 서비스 상태 확인


[root@samba01 samba]# smbstatus

Samba version 4.4.4
PID     Username     Group        Machine                                   Protocol Version  Encryption           Signing       
----------------------------------------------------------------------------------------------------------------------------------------
4817    user1        group1       192.168.80.101 (ipv4:192.168.80.101:49221) SMB3_00           -                    partial(HMAC-SHA256)

Service      pid     Machine       Connected at                     Encryption   Signing
---------------------------------------------------------------------------------------------
IPC$         4817    192.168.80.101 Sat Feb  4 10:09:11 PM 2017 EST  -            -   
smb01        4817    192.168.80.101 Sat Feb  4 10:09:13 PM 2017 EST  -            -   

Locked files:
Pid          Uid        DenyMode   Access      R/W        Oplock           SharePath   Name   Time
--------------------------------------------------------------------------------------------------
4817         1001       DENY_NONE  0x100081    RDONLY     NONE             /smb01   .   Sat Feb  4 22:09:12 2017
4817         1001       DENY_NONE  0x100081    RDONLY     NONE             /smb01   .   Sat Feb  4 22:09:12 2017

[root@samba01 samba]# 

여기까지 Samba(삼바) 서버 간단 구성에 대해 알아보았습니다.