<< DNS >>
(Domain Name Service, Server, System)
-DNS는 Host의 Domain을 IP 주소로 변환하거나 또는 IP 주소에 대한 Domain의 변환을 위해서 개발했다.
(URL -> IP Address)
-IP 주소 기반의 Internet망에서 Domain기반으로 통신하기위해서는 DNS가 기본적으로 동작해야한다.
DNS Server 종류
1. Caching name server
.자체적으로 관리하는 Domain없이 Resoving만하는 DNS Server이다.
.Domain에 대한 resolving 결과를 저장하고 저장된 Domain에 대한 요청이 있으면
직접 조회하지 않고 바로 응답하는 역할을 수행한다.
.일반적으로 Internet망으로의 통신 속도를 향상시키기위해 사용한다.
(정보의 갱신이 자동으로 되지 않기 때문에, 또 용량이 쌓이기 때문에 타임 아웃에 대한 설정을 해줘야함)
2. Primary Name Server
.사용하는 Domain을 관리하기위해 필수적으로 구성하는 Server
.Master DNS Server라고 부르며 해당 Server에 IP 주소를 등록한후 자체 Domain에 대한 정보를 관리한다.
.Master DNS Server구성은 '/etc/named.conf' , '/var/naemd/'파일에 DNS 설정을 통해서 구성한다.
3. Secondary Name Server
.Slave DNS Server라고 부르며 Master DNS Server zone파일을 backup하며
Master DNS Server에 네트워크 등 장애 발생시 동작하는 DNS server를 의미한다.
(주의할 점은, Primary Server에서 원하는 결과가 검색되지 않았다고 Secondary가 동작하진 않는다.)
(DNS 에 검색결과가 없다 -> Root DNS에 질의했으나 결과가 없다 -> I don't know (응답 들었으니까 끝) )
DNS Protocol
UDP 53을 사용한다.
TCP 53번을 사용하는 경우 :
1. 전송하는 Data가 512 byte가 넘을때
(때문에 전세계의 Root DNS 서버는 13대로 제한 되어있다. (A~M))
2. Zone Transfer (영역전송) 할때
-BIND
.일반적으로 가장 많이 사용되는 DNS Server Program으로 named라는 이름의 deamon을 사용한다.
.Redhat 계열의 Linux는 bind , bind-utils , bind-libs등으로 구성된 Package를 사용한다.
.CentOS 7 버전에서는 'yum install bind' 명령어로 모든 Package를 설치할 수 있다.
# /etc/hosts <---- Linux가 Domain을 검색시 가장 먼저 참조하는 경로
# /etc/resolv.conf <---- DNS Server의 IP 주소를 등록하는 파일 (여기 변경하면 엉뚱한 사이트로 보내기 가능)
(ifconfig 네트워크 세팅에 DNS Server ip 주소 등록하면 자동으로 여기 리졸브 컨피그에도 복사되어 들어간다.)
# /etc/named.conf <---- DNS Server 구성시 zone 파일을 구성시 사용하는 파일
# /var/naemd/ <---- Domain에 대한 IP 주소를 구성하는 파일
# /etc/named.rfc1912.zones <---- 정방향 / 역방향인지, 주/ 보조 DNS인지, ip와 zone 파일 위치 지정
<< Caching >>
# nslookup
DNS에 등록된 주소 확인하는 명령어.
DNS 가 잘 받아졌는지, 서버가 잘 만들어 졌는 지 확인할 시 쓰인다.
윈도우의 경우
# server 10.0.0.1
DNS 서버를 10.0.0.1로 지정하여 검색한다.
# set type=
ns (네임서버)
mx (메일서버)
all (전부)
등으로 설정하고 도메인을 물어보면 표시 하는 정보가 달라진다.
만약 vmware 등에서 써서 '권한 없는 응답'이라고 뜨는 문제가 생긴다면
ns 옵션으로 당사의 DNS 네임서버를 찾아 본인 컴퓨터의 DNS ip로 입력한 다음 직접 당사의 DNS에 물어보면 된다.
이러지 않으면 원래의 방식은 kns.kornet.net 을 거쳐서 물어보는 형식으로, 한다리 건너가는 것이다.
아래와 같이 네이버 한 회사도 4개의 주소를 알려주고 있다.
네이버는 대놓고 도메인을 ns1, ns2 라고 이름을 보여준다.
저 도메인 주소처럼 ns로 표시해 주는 것이 서로 구분에 좋다.
DNS에서 한번 페이지를 불러오면 해당 페이지를 다음번엔 DNS에 물어보지 않고
바로 캐시에 기억했던 정보로 불러오게 된다.
캐시를 미리 안 지워주면 아까 통신했던 DNS대로 통신이 되니까 페이지에 대한 로드밸런스를 확인하려면,
DNS 캐쉬를 초기화 해주고 다시 접속해줘야 한다.
# ipconfig /flushdns
# ipconfig /displaydns
리눅스의 경우
리눅스에선 DIG 명령어가 nslookup 보단 좋다.
나중에 문제가 생겼을 때 dig로 확인해 보면 트레픽을 추적해서 어느 부분에서 문제가 생겼는 지도 알 수 있다.
# dig naver.com +trace
# dig naver.com @8.8.8.8
이렇게 윈도우 처럼 DNS 서버를 지정 하는 명령어도 있다.
윈도우 쪽의 호스트 관리 파일을 확인하기 위해서 관리자로 로그인한다.
계정 사용 안함을 체크 해제한다.
리눅스의 경우는 여기서 관리한다.
# /etc/hosts
아래와 같이 danawa와 nsmail의 경로에 ip를 미리 지정해 놓으면 hosts를 먼저 참조하기 때문에 여기의 ip로 접속된다.
윈도우에선 아래 경로에서 확인 가능하다. 편집해보자.
이런식으로 아래에 긁어온 네이버 주소를 로컬 호스트로 추가해 줄 수 있다.
<< 주 DNS 구성 >>
설치 및 구성
# yum install -y bind bind-utils bind-libs
DNS 서버를 구성 할 때는
리눅스 설정 파일에 일치하는 DNS 서버주소를 쓰는게 좋다.
아래는 /etc/dhcp/dhcpd.conf 설정 할 때 적은 shr.com 주소가 있다.
/etc/named.conf
13번 : 기본설정은 127.0.0.1에 리스닝하기 때문에, 외부에서 접속이 불가능하다.
일단 서버에 설정된 모든 IP에 대해 리스닝하도록 any로 변경하자.
21번 : 네임서버에 설정된 도메인만 응답하도록 설정하는부분이다.
recursion no; : yes로 설정하면 네임서버에 설정되지 않은 도메인에 대한 질의가 있을시
캐싱 네임서버의 역할을 하여 DNS 질의과정을 거치게 된다.
주 네임서버는 캐싱 네임서버 역할이 필요하지 않으니 no로 설정한다.
13번, 21번을 any로 수정하자.
vi /etc/named.rfc1912.zones
다른 PC에 있는 도메인에 이름으로 접속하려면 여기에 그 도메인에 대한 설정을 넣어주도록 하자.
접속만 목적일 경우엔 역방향 설정은 필요 없다.
rfc 역방향 파일은 보안상 검증할 때 필요한 것이기 때문에 작동 자체에는 지장이 없기 때문이다.
일단 내 도메인 설정부터 넣어보자. 윗쪽 내용 두 구간을 서식으로서 복사해서 끝에 붙여넣어준다.
19,23co$
37,41co$
붙여넣어준 서식에서 아래와 같이 내 도메인을 넣어주자.
위에는 정방향 조회 영역 (shr.com)
아래는 역방향 조회 영역 설정이다. (com.shr)
이름은 구분하기쉽게 저렇게 지었으나 /var/named/ 의 존파일명과 같다면 상관 없다.
rfc 역방향 설정하는 법
IP 적는 부분은 보조 DNS건 주 DNS건 같은걸 입력해 줘야 한다.
한 목적지만 인식할 수 있기 때문이다. 보통 주 DNS의 공인 주소를 입력해 준다.
a.b.c.d 면 c.b.a.in-addr.arpa 라고 입력하면 된다.
그리고 나머지 d는 /var/named 아래의 존 파일에 입력해 주는 방식이다.
그러면 a.b.c.d 라는 IP 정보는 완성되고 거기로 접속이 되는게 역방향 작동 방식이다.
저장하고 나와서 아래와 같이 존파일의 서식을 복사해서 방금 설정한 내 도메인 파일로 만든다.
var/named/named.localhost 를 복사해서 정방향을,
var/named/named.loopback 을 복사해서 역방향 조회 영역 하나의 파일을 내 도메인 명으로 생성해준다.
# cp /var/named/{named.localhost,shr.com}
# cp /var/named/{named.loopback,com.shr}
존 파일 수정
# vi /var/named/shr.com
# vi /var/named/com.shr
이제부터 만든 존 파일을 수정해 볼 것이다.
문자로 끝나면 반드시 끝에 . 점을 찍어줘야 한다.
관리자의 메일 주소 입력 시 @는 . 점으로 대체해서 쓴다. hark@naver.com -> hark.naver.com
@, www,ftp 같은 경우는 사용자 편의로 어떻게 검색해서 들어 올 지 모르기 때문에 넣어주는건데,
ftp는 서비스가 있을지도 없을지도 모르는 항목이라 없어도 상관 없지만
14, 15줄의 빨간 박스는 꼭 넣어줘야 하는 항목이다.
NS와 MX 같은 경우는 스스로 ip를 지정하지 않기 때문에 아래 항목에 꼭 지정해줘야 하기 때문이다.
지정 안해주면 named를 실행할 때 오류가 뜬다.
- @ 은 오리진 도메인을 의미하고 named.conf에 설정된 도메인명을 써야 한다.
- NS : 도메인 네임 서버
- MX : 도메인 메일 연결
- PTR : 포인터. ip 주소에 대한 도메인 매칭 (순서 주의)
- TTL (Time-To-Live)
.zone 파일의 첫번째 line에 설정되어야하며 다른 서버에서 도메인 관련 정보를 조회시
조회한 서버의 cache에 얼마동안 저장할지에 관련된 설정이다.
.TTL값을 별도로 지정하지 않으면 기본값 86400초가 적용된다.
.W (주) , D (일) , H (시간) , M (분)을 붙여서도 사용이 가능하다. - SOA
.Start Of Authority의 약자로 zone 파일의 시작을 의미하며 도메인명 또는 도메인 기호인 @를 사용한다. - nameserver
.nameserver의 호스트명과 도메인명을 설저한다.
.도메인설정시 마지막 문자열에 '.'를 붙여야한다. (ns.git.com.) - serial
.일련번호를 의미하며 파일이 갱신되면 숫자를 키워서 설정한다.
.일반적으로 변경한 날짜를 설정한다. (EX = YYMMDD) - refresh
.보조 네임 서버가 자신의 정보를 업데이트하기위해서 주 네임 서버에 얼마나 자주 체크할것인가를 설정한다.
.EX) 1W , 1D - retry
.보조 네임 서버가 주 네임 서버로의 접근이 실패시 재시도할 주기를 설정한다.
.EX) 1D , 1H - expire
.보조 네임 서버가 주 네임 서버로의 접근이 실패시 retry에 설정된 주기로 서버에 접속을 시도하며
expire에 설정된 시간이 지나면 접속시도를 하지 않는다.
.EX) 1W , 1H - minimum
.TTL로 가져간 DNS 정보의 최소 보관시간을 설정한다. - A Record
.문자형식의 주소를 IPv4형식의 주소로 변환하는 기능을 A Record 또는 Address Record라고한다.
.EX) git.com IN A 100.10.1.1 - AAAA Record
.AAAA Record는 IPv4와 IPv6간 주소를 변환 및 문자형식을 IPv6로 변환하는 기능
.EX) git.com IN AAAA 2001:43A1:9900:D3::871C:671B
DNS서버에 IP를 호스트 이름으로 변경해 주는 것이 역방향
역방향도 설정해 준다.
zone 파일 구성 후 반드시 기타 사용자에 읽기 권한 부여하기
# chmod o+r /var/named/{shr.com,com.shr}
아래와 같이 권한을 바꿔준다.
# systemctl start named
53번을 DNS 서비스를 위해 열어준다.
# firewall-cmd --permanent --add-port=53/{tcp,udp}
# firewall-cmd --reload
# firewall-cmd --list-all
리눅스 자기 자신에게서 nslookup 확인되는걸 체크한다. 일단 이것 부터 돼야 성공이다.
분명 systemctl start named 에서 오류가 안났고 성공한듯 한데 여기서 아래와 같이 failed가 뜨면
어딘가에 오타가 있는 것이다.
아니면 chmod로 권한을 아더에게 안줬으면 그러기도 한다.
=-==========================================================================
다른pc의 도메인 주소 등록 후 그 도메인 접속
vi /etc/named.rfc1912.zones
아래에 정방향 하나만 추가해 준다.
위에 추가한 정방향 설정 대로 파일을 만들어주고
rkm.com
아래와 같이 접속할 도메인의 실제 위치를 입력해준다.
초기화 방법
systemctl stop named
yum remove -y bind bind-utils bind-libs
rm -f /etc.named.conf.rpmsave
rm -f /etc.named.rfc1912.zones.rpmsave
rm -rf /var/named
하고 방화벽 53번 열어줬던걸 도로 닫으면 된다.
vi etc/firewalld/zones/public.xml
여기 편집해서 수정해도 좋다.
트러블 슈팅
증상: 센토스1의 DNS 서버 설정 직전까진 ping google.com 이 잘 됐다.
그러나 DNS 설정만 하면 인터넷이 불가능 해진다. (HOST PC의같은 네트워크대의 다른 PC도 DNS를 못받는다)
단, Host PC는 vmware를 잘 벗어나서 DNS 설정을 잘 받는다.
아래와 같이 뭔가가 80번을 쓰고 있다.
방화벽을 확인해 보니 월드 와이드 웹 서비스라는 놈이 80번을 점유하고있다.
서비스 창에 가서 이놈을 찾아서 사용안함으로 해준다.
VMware는 우선순위가 낮아서 저놈한테 진것이다.
NAT카드가 80번을 쓸라 치면 월드 와이드 웹이 이미 점유중이라 사용 안함으로 내려갔던것.
'Linux' 카테고리의 다른 글
WEB (0) | 2022.11.14 |
---|---|
보조 DNS 설정 (Master, Slave) (0) | 2022.11.14 |
FTP (active, passive mode) (0) | 2022.11.09 |
Process 관리 (0) | 2022.11.09 |
netstat (0) | 2022.11.09 |