0부터 시작하는 Linux 공부 - 서버의 종류 & DNS

Jaehong Lee·2022년 7월 24일
0
post-thumbnail

1. 서비스를 제공하는 서버

  • WEB 서버는 Apache의 Httpd 가 점유율이 높으며, nginx 가 다음이다. 다음으로는 IIS 등이 있다
  • FTP ( File Transfer Protocol ) 서버 : 파일 전송
  • Email 서버 : Email 을 전송하기 위한 서버가 있다. 이는, Email 전송시, 해당 Email을 중간의 서버에서 보관하며, 수신자가 로그인시 전달해준다. 이 Email Protocol 에는 POP3 와 SMTP 가 있다
  • NFS : 공유 저장소로서 역활하는 서버로, 스토리지 안의 특정 디렉터리를 여러 사람이 동시에 사용할 수 있다. 이는 Mount를 통해 원격지와 연결한다
  • ISCSI : SCSI 는 서버에 바로 연결하는 DISK ( LOCAL DISK ) 이다. 허나, ISCSI 는 외부에 스토리지가 존재할 때, 스토리지 안의 볼륨을 원격지에서 Mount 하는 것 이다. 디렉터리를 제공해주는 NFS 와 달리 스토리지는 볼륨 ( DISK ) 를 제공해준다. AWS 에서는 EBS 로 부른다
    • Persistent Volume ( 영구 Volume ) : 외부 스토리지의 Volume 을 인스턴스와 Mount 하여, Volume 에서 마치 로컬 Disk 처럼 사용할 수 있게 한다. 이는 실제로 Data 가 외부 스토리지의 Volume 에 저장되는 것으로 인스턴스가 삭제하더라도, Volume 에 영구적으로 Data 를 저장 가능 하다. 이를 통해, 새 인스턴스를 생성해서, 해당 Volume 과 연결하여 사용할 수 있다
  • Samba : Linux 는 포맷할때 파일 시스템으로 xfs / ext4 를 사용했다. Window 는 NTFS / Fat32 를 사용한다. 서로 다른 파일 시스템을 사용하므로, 서로 즉시 연결이 안된다. 이를 해결하기 위해, 중간에 Samba 서버를 구축하여, 서로 다른 파일 시스템에서 Samba 를 통해 파일 / 디렉터리 공유가 가능하다

2. DNS

  • Domain Name System 으로 Domain 에 대한 Ip 정보 전달
  • /etc/hosts 파일에 모든 Domain 정보를 저장하는 것은 어렵다. 따라서 DNS 서버를 통해, 이 DNS 서버에 모든 정보를 저장하여, 간편하게 정보 조회가 가능하다
  • 사용자가 등록한 DNS 서버는 로컬 네임 서버라고 한다. ( ex. 8.8.8.8 )

DNS 서버와 기능

    1. 캐시 네임 서버 : 직접적으로 도메인을 관리하지 않고, 다른 네임 서버들과 통신하여 정보를 캐시에 저장하여, 전달해주는 서버. 캐시에 저장하여, 해당 캐시 네임 서버를 사용하는 네트워크 에서 다른 사용자들이 같은 주소에 대해 요청한다면, 캐시에 저장된 Data 를 전달하여 빠른 요청 처리가 가능하다
    1. 마스터 네임 서버 : 직접적으로 도메인을 관리하며, Zone File 에 Domain 과 Ip 를 저장하여, 외부에서 해당 서버에 정보를 조회할 때, 자신의 Zone File 을 검색해서 전달해준다
  • 마스터 네임 서버는 루트 네임 서버나 최상위 네임 서버 와는 다르다. 마스터 네임 서버는 www.test.com 이 있다고 할 때, test.com 을 관리하는 서버다
    • Slave 네임 서버 : 마스터 네임 서버와 함께 사용하며, 평상시에는 마스터 네임 서버가 응답을 준다. Slave 네임 서버는 마스터 네임 서버와 Zone File 을 동일한 내용으로 유지하기 위해, 꾸준히 통신을 통해 마스터 네임 서버 Zone File 의 Serial Number 와 자신의 Serial Number 를 비교하여 업데이트 된 사항을 가져와서 마스터 네임 서버와 Sync 시킨다
    • 만약, 마스터 네임 서버에 문제가 생기면, Slave 네임 서버가 서비스를 제공해준다

Public & Private Domain

  • Domain 은 퍼블릭 구간에 두고 사용할 수 있다. 허나, 내부적으로 사용하기 위한 Private Domain 으로 사용할 수 있다

  • Private 구간에서 .com 이나 .co.kr 처럼, Public 구간에서 사용하는 주소를 사용하면, 우연히 인터넷 상의 주소와 겹쳐서 연결이 불가능 할 수 있다. 따라서, Private 구간에서는 인터넷에서 사용하지 않는 .Pri 와 같은 자체적인 주소를 사용한다

3. 네임 서버 서비스 구성 파일 을 살펴보자

p. 514

  • vi /etc/named.conf 로 name 서버 서비스 구성 파일을 편집기로 열어주자
    • listen-on : listen 은 서비스 대기 상태를 뜻한다. listen 상태에서 Data 송수신이 가능한 상태는 세션이 형성된 Established 상태가 되야 한다. any 를 통해 모든 Ip 에서 접근시 53 번 Port 로 서비스를 제공해주는 설정이다
    • allow-query : 서비스 요청이 가능한 Ip 를 정의하는 설정으로, any 를 통해 모든 Ip 에서 서비스 요청이 가능하게 한다. 해당 설정에 Ip 를 작성하면, 해당 Ip 에게만 서비스를 제공한다
  • listen-on 은 포트에 접근할 수 있는 주소를 설정하는 것 이고, allow-query 는 포트에 접근할 수 있는 주소 중에 Query 할 수 있는 주소를 설정하는 것 이다
  • 여기까지만 설정하면, 캐시 네임 서버가 된다
    • 서버 자체적으로 gildong.com 를 관리하기 위한 설정이다. 실무에서는 이를 위해서 DNS 에 서버의 Ip를 등록하여, 다른 사용자가 해당 주소에 대해 물어볼시 접근할 수 있게 해줘야 한다
    • IN 은 인터넷을 의미한다
    • 타입은 MASTER 로 하여, 마스터 네임 서버 이다. gildong.com.db 를 통해 설정하며, allow-update 에 slave 서버 Ip를 등록하여 slave 서버와 Zone-File 을 sync 시킬 수 있지만, 현재 slave 서버가 없으므로 none 으로 설정한다

  • Zone File 이 있는 디렉터리
  • 해당 디렉터리에 Zone File이 있어야 한다

4. Zone File 을 살펴보자

p.515

  • Zone File을 살펴보자

    • TTL : 호스트 이름을 질의해 갔을 때, 질의해 간 다른 네임 서버가 해당 Ip 주소를 캐시에 저장하는 시간이다
      • 이는 캐시 네임 서버가 자신의 캐시에 해당 Ip 주소를 저장할 수 있는 시간이다
    • @ : 도메인 이름으로 여기서는 gildong.com 을 의미한다
    • SOA : Start Of Authority 로 권한 시작을 의미한다
    • root. : gildong.com. 과 같은 의미로, gildong.com 을 관리하는 최상위 서버를 의미한다
    • IN : CLASS 이름으로 인터넷을 의미
    • NS : 네임 서버를 의미
    • CNAME : 도메인에 대한 별칭으로, 주로, 하나의 도메인에 여러 Ip 정보를 연결하여 사용하고자 할 때 사용한다
    • A : 도메인에 대한 Ip 정보
    • 2 1D 1H 1W 1H
      • Serial Number : Slave 서버는 자신의 Zone File의 Serial Number와 Master 서버의 Zone File의 Serial Number 와 비교하여, Master 서버의 Zone File의 Serial Number 가 더 크다면, Master 서버에게 업데이트 된 정보를 요청한다. 이때 Serial Number는 일반적으로 날짜 / 시간 등을 이용하여 작성하는 경우가 많다 ( ex. 20220710 ). 위에서는 2가 Serial Number 다
      • Refresh : Slave 서버가 Master 서버에 업데이트된 정보를 요청하는 간격으로 위에서는 1D 이다. 이는 하루에 한 번을 의미한다. 즉, 2차 네임 서버 ( Slave 서버 ) 가 1차 네임 서버 ( Master 서버 ) 에 접속하는 시간으로, 하루에 한 번 접속하여, Serial Number 를 비교한다는 의미다
      • Retry : 접속 실패시 재접속 시간으로, 1D 로 한 번 접속했는데 연결이 안될 경우 1시간 이후에 재접속 하겠다는 의미다. 위에서 1H 이다
      • Expire : 1 차 네임 서버에서 Data 가 없다면 지정 기간 후에 삭제하는 것으로, 위에서는 1W 이다. 즉, 2 차 네임 서버가 1 차 네임 서버에 접속 하지 못 했을 때를 의미하며, 1 차 네임 서버가 Down 됬을 때나, 1 차 네임 서버를 더 이상 사용하지 않았을 때를 경우로 들 수 있다. 이는, 1주일 이내에는 Master 서버가 서비스를 하지 않더라도, Slave 서버에서 지속적으로 서비스를 제공한다는 의미다
      • Minimum : Master 서버로 부터 Data 를 Query 받았다면, 지정 기간 동안 보관하는 것 으로, 맨 위의 TTL 설정을 우선시 한다. 위에서는 1H 를 의미하며, 위에 TTL 이 3H이므로 캐시에 저장하는 시간은 3H가 된다
  • IN NS @ : 자신이 @ ( gildong.com ) 에 대한 네임 서버임을 의미한다

  • IN A 192.168.1.118 : gildong.com 의 네임 서버 주소를 의미한다

  • www IN A 192.168.1.119 : www.gildong.com 의 Ip 주소를 의미한다

    www IN CNAME websrv.gildong.com.
    websrv 100 IN A 192.168.1.123
    websrv 200 IN A 192.168.1.124

    • 이는 외부의 사용자가 접근 했을 때, 첫번째 사용자에게는 .123 을 알려주며, 두번째 사용자는 .124 를 알려주는 것 이다. 앞에 100, 200 은 단순히 차례를 나타낸다 ( p. 521 )
    • 실제로는 위의 Ip 는 로드 벨런서의 주소를 등록한다. DNS 에 등록된 로드 벨런서의 주소를 통해, 사용자를 로드 벨런서로 보낸다. 로드 벨런서에서는 자신에게 등록된 웹 서버들의 주소를 통해 접근한 사용자를 자신과 연결된 웹 서버들로 보내준다
  • Anycast 라는 통신 방법을 사용하면, 동일 주소에 대하여 물리 서버를 다르게 구성하고, 가까운 거리에 있는 사람들은 자신과 가까운 서버로 접속하게 된다

    • Anycast DNS : DNS 서버를 지역별 분산 구성하여 DNS Query 를 요청한 클라이언트와 가장 근접한 DNS 서버가 처리하도록 하여, 응답 속도와 안정성을 향상 시킨 DNS
    • Ipv6 에서는 브로드 캐스트 라는 개념이 사라졌다. 이를 해결하기 위한 용도로 Anycast 를 활용하기도 한다
profile
멋진 엔지니어가 될 때까지

0개의 댓글