본문으로 바로가기

NFS(Network File System)
NFS 는 TCP/IP 네트워크를 통하여 원격 시스템에 있는 파일을 자신의 시스템에 있는 것처럼 검색, 저장, 삭제,수정이 가능한 서버/클라이언트 응용 서비스이다. (Ex : 윈도우 폴더 공유) 이때, 로컬 시스템에는 NFS
클라이언트가 있어야하며, 원격 시스템에는 NFS 서버가 준비되어 있어야 한다.

RPC(Remote Procedure Call)
RPC 는 원격 시스템에 있는 프로그램을 로컬 시스템 프로그램으로 호출하여 사용하는 서비스를 의미한다.

 

NFS 서버 데몬
NFS 서버는 Standalone 방식이며, 클라이언트가 마운트 할 수 있도록 항상 준비 상태로 있어야 한다. 그리고
다음과 같이 'rpc.mountd', 'rpc.nfsd'라는 2 개의 데몬을 갖고 있어야 한다. 이 2 개의 데몬은 RPC 기반
서비스이기 때문에 'rpcbind' 서비스(portmapper)가 활성화되어 있어야 한다.

main 에서 rpcbind 서비스 및 portmap 기능 활성화 확인

[root@main /root]# pgrep -lf rpcbind
1804 rpcbind
- rpc.mountd 는 동적 포트를 사용하기 때문에, portmap 기능이 활성화 되어 있어야 한다.
[root@main /root]# rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper

~ 중간 생략 ~
[root@main /root]# chkconfig --list rpcbind
rpcbind 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제

clone1 에서 rcpbind 서비스 활성화 확인

[root@clone1 /root]# chkconfig --list rpcbind
rpcbind 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제

NFS 서비스 구성
main 에서 NFS 서비스를 구성하도록 한다.

[예제 35-3] main 에서 NFS 서비스 구성
- main 에서 공유할 디렉토리를 생성한다.
[root@main /root]# cd /var
[root@main /var]# mkdir share1 share2 share3
- share1, share2, share3 디렉토리에 각각 testfile1, testfile2, testfile3 을 생성한다.
[root@main /var]# touch share1/testfile1
[root@main /var]# touch share2/testfile2
[root@main /var]# touch share3/testfile3
[root@main /var]# ls -l share1
합계 0
-rw-r--r-- 1 root root 0 2016-03-21 11:06 testfile1
[root@main /var]# ls -l share2
합계 0
-rw-r--r-- 1 root root 0 2016-03-21 11:06 testfile2
[root@main /var]# ls -l share3
합계 0
-rw-r--r-- 1 root root 0 2016-03-21 11:12 testfile3

- '/etc' 디렉토리에 있는 'exports' 파일를 이용하여 공유 설정을 실시한다.
[root@main /var]# cd /etc
[root@main /etc]# ls exports
exports
[root@main /etc]# vi exports
1 /var/share1 172.20.1.101(rw)

2 /var/share2 172.20.1.101(ro)
3 /var/share3 172.20.1.101(rw)
: wq!

- NFS 공유 내용을 확인한다.
[root@main /etc]# exportfs
/var/share1 172.20.1.101
/var/share2 172.20.1.101
/var/share3 172.20.1.101
[root@main /etc]# exportfs -v
/var/share1 172.20.1.101(rw,wdelay,root_squash,no_subtree_check)
/var/share2 172.20.1.101(ro,wdelay,root_squash,no_subtree_check)
/var/share3 172.20.1.101(rw,wdelay,root_squash,no_subtree_check)
[root@main /root]# showmount -e
Export list for main:
/var/share3 172.20.1.101
/var/share2 172.20.1.101
/var/share1 172.20.1.101

- clone1 에서 NFS 서비스에서 사용한 NFS, SUNRPC 포트를 확인한다.
[root@main /etc]# cat /etc/services | grep -w nfs
nfs 2049/tcp nfsd shilp # Network File System
nfs 2049/udp nfsd shilp # Network File System
nfs 2049/sctp nfsd shilp # Network File System
[root@main /etc]# cat /etc/services | grep -w sunrpc
sunrpc 111/tcp portmapper rpcbind # RPC 4.0 portmapper TCP
sunrpc 111/udp portmapper rpcbind # RPC 4.0 portmapper UDP
[root@main /etc]# cd
[root@main /root]#
- clone1 에서 NFS 서버로부터 공유 받을 수 있는 내용을 확인하도록 한다.
[root@clone1 /root]# showmount -e 172.20.1.1
Export list for 172.20.1.1:
/var/share3 172.20.1.101
/var/share2 172.20.1.101
/var/share1 172.20.1.101

- clone1 에서 마운트 디렉토리 생성 및 마운트를 실시한다.
[root@clone1 /root]# mkdir /mnt/nfs1 /mnt/nfs2 /mnt/nfs3
[root@clone1 /root]# ls /mnt
hgfs nfs1 nfs2 nfs3
[root@clone1 /root]# mount -t nfs 172.20.1.1:/var/share1 /mnt/nfs1
[root@clone1 /root]# mount -t nfs 172.20.1.1:/var/share2 /mnt/nfs2
[root@clone1 /root]# mount -t nfs 172.20.1.1:/var/share3 /mnt/nfs3
[root@clone1 /root]# df -h -t nfs
Filesystem Size Used Avail Use% Mounted on
172.20.1.1:/var/share1
4.7G 549M 4.0G 13% /mnt/nfs1
172.20.1.1:/var/share2
4.7G 549M 4.0G 13% /mnt/nfs2
172.20.1.1:/var/share3
4.7G 549M 4.0G 13% /mnt/nfs3
[root@clone1 /root]# ls /mnt/nfs1
testfile1
[root@clone1 /root]# ls /mnt/nfs2
testfile2
[root@clone1 /root]# ls /mnt/nfs3
testfile3
- clone1 에서 마운트 디렉토리 생성 및 마운트를 실시한다.
[root@clone1 /root]# mkdir /mnt/nfs1 /mnt/nfs2 /mnt/nfs3
[root@clone1 /root]# ls /mnt
hgfs nfs1 nfs2 nfs3
[root@clone1 /root]# mount -t nfs 172.20.1.1:/var/share1 /mnt/nfs1
[root@clone1 /root]# mount -t nfs 172.20.1.1:/var/share2 /mnt/nfs2
[root@clone1 /root]# mount -t nfs 172.20.1.1:/var/share3 /mnt/nfs3
[root@clone1 /root]# df -h -t nfs
Filesystem Size Used Avail Use% Mounted on
172.20.1.1:/var/share1
4.7G 549M 4.0G 13% /mnt/nfs1
172.20.1.1:/var/share2
4.7G 549M 4.0G 13% /mnt/nfs2
172.20.1.1:/var/share3
4.7G 549M 4.0G 13% /mnt/nfs3
[root@clone1 /root]# ls /mnt/nfs1
testfile1
[root@clone1 /root]# ls /mnt/nfs2
testfile2
[root@clone1 /root]# ls /mnt/nfs3
testfile3
- clone1 에서 main 서버에 있는 'testfile1'를 복사되는지 확인하도록 한다.
[root@clone1 /root]# cd /mnt/nfs1
[root@clone1 /mnt/nfs1]# ls
testfile1
[root@clone1 /mnt/nfs1]# cp testfile1 /tmp
[root@clone1 /mnt/nfs1]# ls /tmp | grep testfile1
testfile1
[root@clone1 /mnt/nfs1]# cd
[root@clone1 /root]#
- clone1 에서 main 서버에 있는 'testfile1'를 복사되는지 확인하도록 한다.
[root@clone1 /root]# cd /mnt/nfs1
[root@clone1 /mnt/nfs1]# ls
testfile1
[root@clone1 /mnt/nfs1]# cp testfile1 /tmp
[root@clone1 /mnt/nfs1]# ls /tmp | grep testfile1
testfile1
[root@clone1 /mnt/nfs1]# cd
[root@clone1 /root]#

- clone1 에서 마운트 디렉토리 생성 및 마운트를 실시한다.
[root@clone1 /root]# mkdir /mnt/nfs1 /mnt/nfs2 /mnt/nfs3
[root@clone1 /root]# ls /mnt
hgfs nfs1 nfs2 nfs3
[root@clone1 /root]# mount -t nfs 172.20.1.1:/var/share1 /mnt/nfs1
[root@clone1 /root]# mount -t nfs 172.20.1.1:/var/share2 /mnt/nfs2
[root@clone1 /root]# mount -t nfs 172.20.1.1:/var/share3 /mnt/nfs3
[root@clone1 /root]# df -h -t nfs
Filesystem Size Used Avail Use% Mounted on
172.20.1.1:/var/share1
4.7G 549M 4.0G 13% /mnt/nfs1
172.20.1.1:/var/share2
4.7G 549M 4.0G 13% /mnt/nfs2
172.20.1.1:/var/share3
4.7G 549M 4.0G 13% /mnt/nfs3
[root@clone1 /root]# ls /mnt/nfs1
testfile1
[root@clone1 /root]# ls /mnt/nfs2
testfile2
[root@clone1 /root]# ls /mnt/nfs3
testfile3

- clone1 에서 main 서버에 있는 'testfile1'를 복사되는지 확인하도록 한다.
[root@clone1 /root]# cd /mnt/nfs1
[root@clone1 /mnt/nfs1]# ls
testfile1
[root@clone1 /mnt/nfs1]# cp testfile1 /tmp
[root@clone1 /mnt/nfs1]# ls /tmp | grep testfile1
testfile1
[root@clone1 /mnt/nfs1]# cd
[root@clone1 /root]#

 

DNS 서버
main 를 DNS 서버로 구성하도록 한다.

Bind 9.8.2 패키지 설치 및 활성화
DNS 서버를 구축하기 위해서는 Bind 패키지가 설치되어 있어야 한다.
[예제 37-1] Bind 9.8.2 패키지 설치 및 활성화
- DNS 서버 구축에 필요한 Bind 패키지(bind-9.8.2-0.37.rc1.el6_7.7.x86_64) 설치 유무를 확인한다.
[root@main /root]# rpm -qa | grep bind
samba-winbind-3.6.23-12.el6.x86_64
bind-libs-9.8.2-0.30.rc1.el6.x86_64
PackageKit-device-rebind-0.5.8-23.el6.x86_64
bind-utils-9.8.2-0.30.rc1.el6.x86_64
samba-winbind-clients-3.6.23-12.el6.x86_64
ypbind-1.20.4-30.el6.x86_64
rpcbind-0.2.0-11.el6.x86_64

- Bind 패키지가 없다면, 다음과 같은 방법을 통하여 설치하도록 한다.

[root@main /root]# yum -y install bind
~중간 생략~
Installed:
bind.x86_64 32:9.8.2-0.37.rc1.el6_7.7
Dependency Updated:
bind-libs.x86_64 32:9.8.2-0.37.rc1.el6_7.7
bind-utils.x86_64 32:9.8.2-0.37.rc1.el6_7.7

- Bind 패키지 설치가 완료되었다면, 설치 확인 및 서비스 상태를 확인한다.
[root@main /root]# rpm -qa | grep bind
bind-9.8.2-0.37.rc1.el6_7.7.x86_64
samba-winbind-3.6.23-12.el6.x86_64
PackageKit-device-rebind-0.5.8-23.el6.x86_64
bind-libs-9.8.2-0.37.rc1.el6_7.7.x86_64

bind-utils-9.8.2-0.37.rc1.el6_7.7.x86_64
samba-winbind-clients-3.6.23-12.el6.x86_64
ypbind-1.20.4-30.el6.x86_64
[root@main /root]# service named status // /etc/rc.d/init.d/named status
rndc: neither /etc/rndc.conf nor /etc/rndc.key was found
named 가 정지되었습니다
- Named 서비스를 활성화 한다.
[root@main /root]# service named start // /etc/rc.d/init.d/named start
Generating /etc/rndc.key: [ OK ]
named 시작 중: [ OK ]
[root@main /root]#
[root@main /root]# service named status
version: 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.7
CPUs found: 4
worker threads: 4
number of zones: 19
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
named (pid 3026)를 실행하고 있습니다..

- 만약, 부팅시에도 Named 서비스를 활성화하려면, 다음과 같은 방법을 통하여 활성화한다.
[root@main /root]# chkconfig --list named
named 0:해제 1:해제 2:해제 3:해제 4:해제 5:해제 6:해제
[root@main /root]# chkconfig named on
[root@main /root]# chkconfig --list named

- 재부팅을 실시하여, Named 서비스 활성화 상태를 확인한다.
[root@main /root]# reboot
login as: root
root@192.168.1.100's password: centos
Last login: Thu Mar 31 11:00:42 2016 from 192.168.1.1
[root@main /root]# chkconfig --list named
named 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
[root@main /root]# service named status
version: 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.7
CPUs found: 4
worker threads: 4
number of zones: 19
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
named (pid 1802)를 실행하고 있습니다..

Bind 관련 파일 및 DNS 서버 구성
- Bind 패키지를 설치하면 다음과 같은 DNS 관련 파일을 이용하여 DNS 서비스를 운영한다.
- CentOS 5.x 버전에서는 'caching-nameserver' 패키지도 설치해야 한다.
- CentOS 6.x 버전에서는 Bind 9.8.2 패키지에 'caching-nameserver'가 포함되어 있다.
1) 'named.conf' 파일 및 설정 실시
- DNS 서버에 대한 설정 내용을 관리하는 파일이다.
[root@main /root]# ls /etc/named.conf
/etc/named.conf
[root@main /root]# vi /etc/named.conf
1 //
2 // named.conf
3 //
4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
5 // server as a caching only nameserver (as a localhost DNS resolver only).
6 //
7 // See /usr/share/doc/bind*/sample/ for example named configuration files.
8 //
9
10 options {
11 listen-on port 53 { 127.0.0.1; };
// 외부에서 53 번 포트 접속에 대한 IP 주소 설정, any 로 변경 실시
12 listen-on-v6 port 53 { ::1; };
13 directory "/var/named";
// 각 도메인의 zone 파일 위치 지정
14 dump-file "/var/named/data/cache_dump.db"; // 정보가 갱신될때 저장하는 파일
15 statistics-file "/var/named/data/named_stats.txt";
// 통계파일이 생성되는 절대 경로와 파일이름 지정
16 memstatistics-file "/var/named/data/named_mem_stats.txt";
// 메모리 관련 통계파일이 생성되는 절대 경로와 파일 이름 지정
17 allow-query { locahost; };
// 외부에서 DNS 요청 허용에 대한 IP 주소 설정, any 로 변경 실시
named 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제

18 recursion yes;
19 dnssec-enable yes;
20 dnssec-validation yes;
21 dnssec-lookaside auto;
22
23 /* Path to ISC DLV key */
24 bindkeys-file "/etc/named.iscdlv.key";
25
26 managed-keys-directory "/var/named/dynamic";
27 };
28
29 logging { // 네임 서버 실행시 디버깅에 참고할 로그 파일 생성 및 위치 지정
30 channel default_debug {
31 file "data/named.run";
32 severity dynamic;
33 };
34 };
35
36 zone "." IN { // 루트 도메인에 대한 설정을 'named.ca'라는 파일에서 참조하는 설정
37 type hint; // Type 설정(hint : 루트 도메인 지정, master : 1 차 네임서버, slave : 2 차 네임서버)
38 file "named.ca";
39 };
40
41 include "/etc/named.rfc1912.zones";
42 include "/etc/named.root.key";
: wq!

- 구성이 완료되었으면, 'named.conf' 파일 내용을 체크하도록 한다.
[root@main /root]# named-checkconf /etc/named.conf
2) 'named.rfc1912.zones' 파일 및 설정
- DNS 서버에 대한 정방향 및 역방향 선언 내용을 관리하는 파일이다.
정방향 : IP 주소를 문자로 표현하는 방법 (자주 사용하는 방법)
역방향 : 문자를 IP 주소로 표현하는 방법
리눅스 서버 구축 및 운영 III - 145 - 저자 김정우
[root@main /root]# ls /etc/named.rfc1912.zones
/etc/named.rfc1912.zones
[root@main /root]# vi /etc/named.rfc1912.zones
1 // named.rfc1912.zones:
2 //
3 // Provided by Red Hat caching-nameserver package
4 //
5 // ISC BIND named zone configuration for zones recommended by
6 // RFC 1912 section 4.1 : localhost TLDs and address zones
7 // and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
8 // (c)2007 R W Franks
9 //
10 // See /usr/share/doc/bind*/sample/ for example named configuration files.
11 //
12
13 zone "localhost.localdomain" IN { // 로컬 호스트 도메인에 대한 설정(기본 설정 유지 권장)
14 type master;
15 file "named.localhost";
16 allow-update { none; };
17 };
18
19 zone "localhost" IN { // 로컬 호스트 도메인에 대한 설정(기본 설정 유지 권장)
20 type master;
21 file "named.localhost";
22 allow-update { none; };
23 };
24
25 zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
// IPv6 로컬 호스트 루프백
26 type master // 기본 설정 유지 권장
27 file "named.loopback";
28 allow-update { none; };
29 };
30
31 zone "1.0.0.127.in-addr.arpa" IN {
// 로컬 호스트에 대한 루프백 역방향 도메인 설정(기본 설정 유지 권장)
32 type master;
33 file "named.loopback";
34 allow-update { none; };
35 };
36
37 zone "0.in-addr.arpa" IN { // 제로 호스트에 대한 루프백 설정(기본 설정 유지 권장)
38 type master;
39 file "named.empty";
40 allow-update { none; };
41 };
42 // 정방향 설정 //
43 zone "test.com" IN { // 도메인 이름 설정
44 type master; // 서버 타입 지정 (master, slave)
45 file "test.com.zone"; // zone 파일 이름 설정
46 allow-update { none; }; // 동기화할 slave 서버 IP 주소 지정 (없으면, none 으로 설정)
47 };
48 // 역방향 설정 //
49 zone "1.20.172.in-addr.arpa" IN {
50 type master;
51 file "172.20.1.rev";
52 allow-update { none; };
53 };
: wq!

- 구성이 완료되었으면, 'named.rfc1912.zones' 파일 내용을 체크하도록 한다.
[root@main /root]# named-checkconf /etc/named.rfc1912.zones
3) Bind Zone 파일
[root@main /root]# ls -l /var/named (샘플 파일 # ls -l /usr/share/doc/bind-9.8.2/sample/var/named/)
합계 28
drwxrwx--- 2 named named 4096 2016-03-31 11:09 data
drwxrwx--- 2 named named 4096 2016-03-31 14:10 dynamic
-rw-r----- 1 root named 2075 2014-04-23 21:57 named.ca
-rw-r----- 1 root named 152 2009-12-15 21:27 named.empty
-rw-r----- 1 root named 152 2007-06-21 19:09 named.localhost
-rw-r----- 1 root named 168 2009-12-15 21:27 named.loopback
drwxrwx--- 2 named named 4096 2016-03-16 22:25 slaves
리눅스 서버 구축 및 운영 III - 147 - 저자 김정우

4) Bind Zone 파일 복사 및 퍼미션 그룹 변경
[root@main /root]# cd /var/named
[root@main /var/named]# cp named.localhost test.com.zone
[root@main /var/named]# cp named.localhost 172.20.1.rev
[root@main /var/named]# ls -l
합계 36
-rw-r----- 1 root root 152 2016-04-04 11:33 172.20.1.rev
drwxrwx--- 2 named named 4096 2016-03-31 11:09 data
drwxrwx--- 2 named named 4096 2016-04-04 11:31 dynamic
-rw-r----- 1 root named 2075 2014-04-23 21:57 named.ca
-rw-r----- 1 root named 152 2009-12-15 21:27 named.empty
-rw-r----- 1 root named 152 2007-06-21 19:09 named.localhost
-rw-r----- 1 root named 168 2009-12-15 21:27 named.loopback
drwxrwx--- 2 named named 4096 2016-03-16 22:25 slaves
-rw-r----- 1 root root 152 2016-04-04 11:33 test.com.zone
[root@main /var/named]# ps -ef | grep named | grep -v grep
named 16639 1 0 15:19 ? 00:00:00 /usr/sbin/named -u named
[root@main /var/named]# groups named
named : named
[root@main /var/named]# chown root.named test.com.zone
[root@main /var/named]# chown root.named 172.20.1.rev
[root@main /var/named]# ls -l
합계 36
-rw-r----- 1 root named 152 2016-04-04 11:33 172.20.1.rev
drwxrwx--- 2 named named 4096 2016-03-31 11:09 data
drwxrwx--- 2 named named 4096 2016-04-04 11:31 dynamic
-rw-r----- 1 root named 2075 2014-04-23 21:57 named.ca
-rw-r----- 1 root named 152 2009-12-15 21:27 named.empty
-rw-r----- 1 root named 152 2007-06-21 19:09 named.localhost
-rw-r----- 1 root named 168 2009-12-15 21:27 named.loopback
drwxrwx--- 2 named named 4096 2016-03-16 22:25 slaves
-rw-r----- 1 root named 152 2016-04-04 11:33 test.com.zone


5) 정방향 'test.com.zone' 파일 설정
[root@main /var/named]# cat test.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
[root@main /var/named]# vi test.com.zone
1 $TTL 1D
2 @ IN SOA ns.test.com. root.test.com. (
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 IN NS ns.test.com.
9 IN MX 10 mail.test.com.
10 IN A 172.20.1.1
11 ns IN A 172.20.1.1
12 www IN A 172.20.1.1
13 ftp IN A 172.20.1.2
14 mail IN A 172.20.1.1
15 centos IN A 172.20.1.4
16 blog IN CNAME centos
: wq!

 

6) 역방향 '172.20.1.rev' 파일 설정
[root@main /var/named]# cat 172.20.1.rev
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
[root@main /var/named]# vi 172.20.1.rev
1 $TTL 1D
2 @ IN SOA ns.test.com. root.test.com. (
3
4 0 ; serial
5 1D ; refresh
6 1H ; retry
7 1W ; expire
8 3H ) ; minimum
9 IN MX 10 mail.test.com.
10 IN NS ns.test.com.
11 1 IN PTR ns.test.com. // 설정시 '1' 앞에 공백 있으면 안됨
12 1 IN PTR www.test.com.
13 2 IN PTR ftp.test.com.
14 1 IN PTR mail.test.com.
: wq!
7) DNS 서버 지정 설정 변경
[root@main /var/named]# vi /etc/resolv.conf
1 # Generated by NetworkManager
2
3
4 # No nameservers found; try putting DNS servers into your
5 # ifcfg files in /etc/sysconfig/network-scripts like so:
6 #
7 # DNS1=xxx.xxx.xxx.xxx
8 # DNS2=xxx.xxx.xxx.xxx
9 # DOMAIN=lab.foo.com bar.foo.com
10 nameserver 172.20.1.1
11 nameserver 168.126.63.1
: wq!

8) Named 서비스 재시작
[root@main /var/named]# service named restart
named 정지 중: . [ OK ]
named 시작 중: [ OK ]

9) Clone1 에서 DNS 서버 지정 설정 변경
login as: root
root@192.168.1.101's password: centos
Last login: Thu Mar 31 11:00:49 2016 from 192.168.1.1
[root@clone1 /root]#
[root@clone1 /root]# vi /etc/resolv.conf
1 # Generated by NetworkManager
2
3
4 # No nameservers found; try putting DNS servers into your
5 # ifcfg files in /etc/sysconfig/network-scripts like so:
6 #
7 # DNS1=xxx.xxx.xxx.xxx
8 # DNS2=xxx.xxx.xxx.xxx
9 # DOMAIN=lab.foo.com bar.foo.com
10 nameserver 172.20.1.1
11 nameserver 168.126.63.1
: wq!

 

10) Clone1 에서 정방향 DNS 테스트 실시
[root@clone1 /root]# nslookup ns.test.com
Server: 172.20.1.1
Address: 172.20.1.1#53
Name: ns.test.com
Address: 172.20.1.1
[root@clone1 /root]# nslookup www.test.com
Server: 172.20.1.1
Address: 172.20.1.1#53
Name: www.test.com
Address: 172.20.1.1
[root@clone1 /root]# nslookup ftp.test.com
Server: 172.20.1.1
Address: 172.20.1.1#53
Name: ftp.test.com
Address: 172.20.1.2
[root@clone1 /root]# nslookup mail.test.com
Server: 172.20.1.1
Address: 172.20.1.1#53
Name: mail.test.com
Address: 172.20.1.1
[root@clone1 /root]# nslookup blog.test.com
Server: 172.20.1.1
Address: 172.20.1.1#53
blog.test.com canonical name = centos.test.com.
Name: centos.test.com
Address: 172.20.1.4

11) Clone1 에서 역방향 DNS 테스트 실시
[root@clone1 /root]# nslookup 172.20.1.1
Server: 172.20.1.1
Address: 172.20.1.1#53
1.1.20.172.in-addr.arpa name = www.test.com.
1.1.20.172.in-addr.arpa name = mail.test.com.
1.1.20.172.in-addr.arpa name = ns.test.com.
[root@clone1 /root]# nslookup 172.20.1.2
Server: 172.20.1.1
Address: 172.20.1.1#53
2.1.20.172.in-addr.arpa name = ftp.test.com.

12) DNS 레코드
- 도메인을 설정할 경우, 꼭 '.' 을 마지막에 설정해야 한다. 만약, 마지막에 '.'을 설정하지 않으면 호스트
이름으로 처리한다.

[root@main /var/named]# cat test.com.zone
$TTL 1D
@ IN SOA ns.test.com. root.test.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.test.com.
IN MX 10 mail.test.com.
IN A 172.20.1.1
ns IN A 172.20.1.1
www IN A 172.20.1.1
ftp IN A 172.20.1.2
mail IN A 172.20.1.1
centos IN A 172.20.1.4
blog IN CNAME centos

Tomcat
Apache 웹-서버는 html, htmls 에 대해서 클라이언트에게 서비스 응답을 실시한다. 그러나 클라이언트로부터 수신한 서비스 요청이 JSP 인 경우 처리할 수 없기 때문에 이를 Tomcat 에게 전달하여 처리한다. 이때,
Tomcat 은 WAS(Web Application Server)라고 하며, 포트 번호는 '8080'을 사용한다.


톰캣을 사용하기 위해서는 java가 필요하다.
'yum' 명령어를 이용하여 'java-1.7.0-openjdk.x86_64 를 설치하도로록 한다.
[root@main /root]# yum -y install java-1.7.0-openjdk.x86_64

Tomcat 설치

- Apache 와 Tomcat 연동에 필요한 'httpd-devel'를 설치한다.
[root@main /root]# yum -y install httpd-devel
[root@main /root]# rpm -qa httpd-devel
httpd-devel-2.2.15-47.el6.centos.4.x86_64

[root@main /root]# ls /usr/sbin/apxs // 아파치 모듈 컴파일 도구
/usr/sbin/apxs

 

- Tomcat 설치 유무를 확인한다.
[root@clone1 /root]# rpm -qa | grep tomcat
[root@clone1 /root]#

 

- 설치 가능한 Tomcat 패키지를 확인한다.
[root@main /root]# yum list | grep tomcat
apache-tomcat-apis.noarch 0.1-1.

 

- 'yum' 명령어를 이용하여 Tomcat 관련 패키지를 설치하도로록 한다.

Tomcat 서비스를 활성화 한다.
[root@main /root]# service tomcat6 status
tomcat6 is stopped [ OK ]
[root@main /root]# service tomcat6 start
Starting tomcat6: [ OK ]

재부팅시에도 Tomcat 서비스가 활성화되도록 한다.
[root@main /root]# chkconfig --list tomcat6
tomcat6 0:해제 1:해제 2:해제 3:해제 4:해제 5:해제 6:해제
[root@main /root]# chkconfig tomcat6 on
[

clone1 에서 'www.test.com:8080'으로 접속을 실시한다.


Tomcat Connector 설치
- Tomcat Connector 는 Apache 가 수신한 JSP 요청을 Tomcat 에게 전달하는 역할을 하는 모듈이다.
- 'yum'으로는 설치가 불가능하기 때문에 'wget' 명령어와 URL 를 직접 입력하여 설치해야 한다.


tomcat Connector 설치
- Tomcat Connector 를 다운로드 받을 디렉토리를 생성하여 다운로드를 실시한다.
[root@main /root]# yum -y install libtool
[root@main /root]# mkdir tom
[root@main /root]# cd tom
[root@main /root/tom]# wget http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/tomcatconnectors-
1.2.32-src.tar.gz

- 'tar' 명령어를 이용하여 압축을 해지한다.
[root@main /root/tom]# ls
tomcat-connectors-1.2.32-src.tar.gz
[root@main /root/tom]# tar zxvf tomcat-connectors-1.2.32-src.tar.gz

- Tomcat Connector 'native' 디렉토리로 이동하여 모듈 설치 및 컴파일을 실시한다.
[root@main /root/tom]# ls
tomcat-connectors-1.2.32-src tomcat-connectors-1.2.32-src.tar.gz
[root@main /root/tom]#
[root@main /root/tom]# cd tomcat-connectors-1.2.32-src
[root@main /root/tom/tomcat-connectors-1.2.32-src]#
[root@main /root/tom/tomcat-connectors-1.2.32-src]# cd native
[root@main /root/tom/tomcat-connectors-1.2.32-src/native]# ls
BUILDING.txt Makefile.in STATUS.txt apache-1.3 common docs netscape
CHANGES NEWS TODO.txt apache-2.0 configure iis nt_service
Makefile.am README.txt aclocal.m4 buildconf.sh configure.in jni scripts
[root@main /root/tom/tomcat-connectors-1.2.32-src/native]# ./buildconf.sh
rm autom4te.cache
libtoolize --force --automake --copy
aclocal
autoheader
automake -a --foreign --copy
autoconf
rm autom4te.cache
[root@main /root/tom/tomcat-connectors-1.2.32-src/native]# ls /usr/sbin/apxs
/usr/sbin/apxs
[root@main /root/tom/tomcat-connectors-1.2.32-src/native]# ./configure --with-apxs=/usr/sbin/apxs
~ 중간 생략 ~
[root@main /root/tom/tomcat-connectors-1.2.32-src/native]# make
[root@main /root/tom/tomcat-connectors-1.2.32-src/native]# make install
~ 중간 생략~
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/lib64/httpd/modules/mod_jk.so
Please be sure to arrange /etc/httpd/conf/httpd.conf...
~ 중간 생략 ~
[root@main /root/tom/tomcat-connectors-1.2.32-src/native]# cd
[root@main /root]#

- 컴파일된 'mod_jk.so' 파일이 생성되었는지 확인한다.
[root@main /root]# ls /usr/lib64/httpd/modules/mod_jk.so
/usr/lib64/httpd/modules/mod_jk.so
[root@main /root]# ls /etc/httpd/modules/mod_jk.so
/etc/httpd/modules/mod_jk.so

- '/etc/httpd/conf/httpd.conf' 파일에서 'mod_jk.so' 관련 설정을 실시한다.
[root@main /root]# vi /etc/httpd/conf/httpd.conf
~ 중간 생략 ~
405 DirectoryIndex index.html index.html.var index.htm index.php index.jsp
~ 중간 생략 ~
1008 #<VirtualHost *:80>
1009 # ServerAdmin webmaster@dummy-host.example.com
1010 # DocumentRoot /www/docs/dummy-host.example.com
1011 # ServerName dummy-host.example.com
1012 # ErrorLog logs/dummy-host.example.com-error_log
1013 # CustomLog logs/dummy-host.example.com-access_log common
1014 #</VirtualHost>
1015
1016 LoadModule jk_module modules/mod_jk.so
1017
1018 <IfModule jk_module>
1019 JkWorkersFile /etc/httpd/conf/workers.properties
1020 JkLogFile /etc/httpd/logs/mod_jk.log
1021 JkShmFile /usr/share/tomcat6/logs/jk.shm
1022 JkLogLevel info
1023 JkMount /*.jsp worker2
: wq!

- '/etc/httpd/conf/' 디렉토리에 'workers.properties' 파일을 생성하여 Apache 로 수신한 요청을
톰켓으로 전달할수 있도록 다음과 같은 설정을 실시한다.

[root@main /root]# vi /etc/httpd/conf/workers.properties
1 worker.list=worker2
2 worker.worker2.type=ajp13
3 worker.worker2.host=localhost
4 worker.worker2.port=8009
5 worker.worker2.lbfactor=1
6 worker.worker2.connection_pool_timeout=600
7 worker.worker2.socket_keepalive=1
8 worker.worker2.socket_timeout=60
: wq!

 

- 'httpd', 'tomcat6' 서비스를 재시작한다.
[root@main /root]# service httpd restart
httpd 를 정지 중: [ OK ]
httpd (을)를 시작 중: [ OK ]
[root@main /root]# service tomcat6 restart
Stopping tomcat6: waiting for processes 38642 to exit
[ OK ]
Starting tomcat6: [ OK ]
[root@main /root]# yum -y install tomcat6*