본문 바로가기
Infra & Security Eng/Project Implementation

다중 도메인 서버 구현하기

by 엔지니어 E 2026. 1. 27.
반응형

다중 도메인 서버 구현

사용하는 이유: 한 대의 물리적 서버 자원을 효율적으로 분할 활용하여, 서로 다른 도메인 주소를 가진 여러 독립된 서비스를 경제적이고 통합적으로 운영하기 위해
실습하기 전에

앞에 만들었던 캐쉬서버, authoritative DNS 서버 기존 파일 그대로 있는 상태에서 te.itc 라는 도메인을 하나 더 딴것임. 그래서 같은 회사라면 해당 도메인(te.itc.)에 해당하는 zone 파일만 만들면 됨

# vi /etc/named.conf
options { directory "/var/named";
};

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

zone "te.sec." { type master; file "te.sec.zone";

};

zone "te.itc." {
           type master;
          file "te.itc.zone";                      ---> 이 zone만 만들면 됨 
}; 
실습하기


1. 파일 만들고, 권한 부여하기 
touch /var/named/te.itc.zone
* cd /var/named - ls 입력 - 파일이 /var/named 안에 잘 있는지 확인

2. 그룹 소유자 named로 변경하기
#chgrp -R named /var/named/te.itc.zone ---> 파일은 원래 root 소유자로 만들어져있어서 나는 파일을 읽을 수 있지만 named 프로그램 자체에서는 파일을 못읽는다. 그래서 named 프로그램이 그 파일을 읽을 수 있게 소유자를 named로 변경한다
* ls -al로 그룹이 named로 잘 적용되었는지 확인

3. # vi /etc/named.conf 에서 te.itc zone 파일 넣기     ---> /etc/named.conf에 이제 te.itc라는 도메인도 관리한다고 하는 명령임
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
zone "te.itc."{
           type master;     ---> 내가 이 도메인 정보를 직접 관리하는 원본 서버(Master) 라는 뜻 
          file "te.itc.zone";     ---> 이 도메인의 상세 정보(IP 주소 등)는 te.itc.zone이라는 파일에 기록해 뒀으니 그걸 읽어라
}; 
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

4. # vi /var/named/te.itc.zone     ---> 도메인 이름과 그에 대응하는 숫자(IP 주소)를 짝지어 목록으로 만들어 둔 것

5. # systemctl enable named.service 
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
$TTL 1D
@   IN  SOA     ns.te.itc.  root.ns.te.itc. (
                                 1        ; Serial
                                 1D       ; Refresh
                                 1H       ; Retry
                                 1W       ; Expire
                                 3H )     ; Minimum

; Name Server
    IN  NS      ns.te.itc.

; Host address
                IN  A      192.168.10.191 ---> 빈공백 
ns            IN  A      192.168.10.191
mail         IN  A      192.168.10.193
;
www      IN  CNAME  mail
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
$TTL 1D
@   IN  SOA     ns.te.itc.  root.ns.te.itc. (
                                 1        ; Serial
                                 1D       ; Refresh
                                 1H       ; Retry
                                 1W       ; Expire
                                 3H )     ; Minimum

; Name Server
    IN  NS      ns.te.itc.

; Host address
                IN  A      192.168.10.191 ---> 빈공백 
ns            IN  A      192.168.10.191
www        IN  A      192.168.10.193


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

여기에서 우리는 mail 서버가 아닌 웹서버만 사용할 것이므로 mail IN A 192.168.10.193 을 없애고 WWW 꺼를 위로 올린다

www IN A 192.168.10.193 으로 -> 그럼 www.ast19.sec 와 ast19.sec 둘 다 접속이 가능하게 된다


* 내 실제 컴퓨터 ip 192.168.10.190
* 리눅스에서 ip 192.168.10.191, 193(웹서버로 사용)




6. # vi /var/named/te.sec.zone 들어가서 
빈공백이랑 www 부분 ip 똑같이 맞춰야 www 로 들어갈 수 있음
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
$TTL 1D
@   IN SOA  ns.ast19.sec. root.ns.ast19.sec. (
            2          ; Serial
            1D         ; Refresh
            1H         ; Retry
            1W         ; Expire
            3H )       ; Minimum

; Name Server
    IN NS      ns.ast19.sec.

; Host address
          IN A       192.168.10.193
ns        IN A       192.168.10.191
www       IN A       192.168.10.193
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ




7. nslooksup ns.te.itc 192.168.10.193 입력
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

Server:         192.168.10.191
Address:       192.168.10.191#53

Name:   ns.te.itc
Address: 192.168.10.191
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

* nslookup [도메인 주소] 만 명령어에 치면 해당 서버주소를 마지막에 입력하지 않았기 때문에 local DNS 서버에서 도메인 주소를 찾게 된다

 

💡참고사항 

# cat /var/named/named.localhost
localhost(루프백) 파일을 별도로 만들지 않는 이유 
1. 이미 존재함: 리눅스 설치 시 기본 제공되므로 ping localhost가 된다면 이미 준비된 상태임

2. 내부 통신 전용: 패킷이 외부망으로 나가지 않고 메모리 내에서만 도는 자기 참조용 주소임

3. 가상 네트워크: 과거 랜카드가 없던 시절 네트워크 소프트웨어 테스트를 위해 만들어졌으며, 현재는 기본값으로 자동 작동함

결론: 서버가 자기 자신을 부르는 존파일 이미 있으니, 우리는 외부 서비스용 도메인(te.itc) 설정에만 집중하면 됨