리눅스 기본 정리6

양승현·2022년 7월 25일
0

linux

목록 보기
8/20

DNS

  • Web (apache(httpd) > nginx(http) > lls)
  • FTP (File Trnasfor Protocol)
  • Email (POP3 SMTP)
  • NFS iscsi -> scsi

DNS(Domain Name System)

  • 도메인에 대한 IP 정보 전달
  • 이전 -> /etc/hosts
  • IP, subnet , DNS(8.8.8.8 로컬 네임 서버)

DNS 기능

    1. 캐시 네임 서버
    1. 마스터 네임 서버는 도메인을 관리한다.
    • Master와 Slave는 주-보조 관계이며 DNS 서버를 이중화 시킨다. (Slave는 여러대 사용 가능)
    • Master-Slave는 동기화 과정을 통해 zone 파일을 관리하는데 zone 파일의 SOA 필드에 있는 serial을 확인하여 이 파일이 업데이트가 되었는지 판단하고 serial이 증가 했을 경우 파일이 업데이트된것으로 판단하고 동기화 과정을 통해 Slave 서버로 zone 파일이 전송 됩니다.

/etc/named.conf

  • 2(serial 번호) -> 내가 만약 slave라면 master의 sirial 번호와 비교하여 더 높은 번호를 가지고 있다면 master에게 업데이트 된 정보를 요청해야 한다. 시리얼 번호는 일반적으로 날짜시간등을 이용하여 작성하는 경우가 많다. 2022072510
  • 1D - > 2차 네임서버(slave)가 1차 네임서버에 접속하는 시간. 하루에 한번 slave가 master에게 접속하여 시리얼 번호를 비교한다.
  • 1H : 접속 실패시 재접속시간. 1D 로 한번 접속했는데 연결이 안될 경우 1시간 이후 재 접속해 보겠다
  • 1W : 1차 네임서버에서 데이터가 없다면 1주일 후에 삭제. 1주일 이내에는 master 가 서비스를 하지 않더라도 slave 에서 지속적으로 서비스를 제공한다.
  • 1H : TTL -> 만약 master 로부터 정보를 query 한뒤 받았다면 1H동안 보관해라.
    단, 위에 TTL 3H 가 있다면 3H가 우선한다. (캐시에 저장하는 시간은 3H가 된다)
  • "NS" -> name server
  • "A" -> 도메인에 대한 IP 정보
  • "CNAME" -> 도메인에 대한 병칭. 주로 하나의 도메인에 여러 IP 정보를 연결하여 사용하고자 할 때 사용한다.
  • IN NS @ -> 내가 gildong.com 의 네임서버이다!!
  • IN A 192.168.1.199 -> gildong.com 의 네임서버 주소는 1.199 이다!!
  • www IN A 192.168.1.199 -> www.gildong.com 의 IP 주소는 1.199
  • blog IN A 192.168.1.200 -> blog.gildong.com 의 IP 주소는 1.200

cname?

www IN CNAME websrv.gildong.com
websrv 100  IN  A  1.1.1.1
       200  IN  A  1.1.1.3
       300  IN  A  1.1.1.4
  • 특히 anycast 라는 통신 방법을 사용하면 동일 주소에 대하여 물리서버를 다르게 구성하고 가까운 거리에 있는 사람들은 자신과 가까운 서버로 접속하게 된다.
    (IPv6에서는 broadcast 라는 개념이 사라졌다. 이를 해결하기 위한 용도로 anycast를 활용하기도 한다.)

DHCP(Dynamic Host Configuration[control] Protocol

  • UDP/67(s),68(c)

DHCP

    1. 전원켜기 -> 자신의 IP 구성방식 확인(만약 정적 구성이라면 해당 주소를 자신의 NIC에 할당하고 gratuitous ARP[동일 IP 확인]을 발생시킨다.)
    1. 자동으로 IP 주소 요청(DISCOVER : 목적지 -> 255.255.255.255)
    1. DHCP는 자신의 dhcp bind table( 어떤 MAC이 어떤 IP주소를 언제까지[expired time] 사용할 수 있는지가 기록된 테이블)에 할당되지 않는 주소를 dhcp pool에서 꺼내어 PC에게 전달한다.(offer)
    1. offer를 받은 PC는 해당 offer에 대하여 서버에게 REQUEST를 전달한다. -> 해당 주소를 다른 PC가 사용하고 있는지 여부를 확인한다.
    1. 서버는 최종적으로 해당 주소에 대한 binding table을 작성한다.
  • default-lease [1일] -> 해당 시간이 되면 PC가 동작중인지 여부를 확인한다. PC로부터 응답이 돌아오면 임대 기간을 갱신하여 계속 사용할 수 있도록 해 준다.
  • max-lease[1일 1시간]

[ DNS/웹/DHCP ]

centOS8 : DNS서버 이면서 웹서버 -> vmnet10(211.183.3.8)
contOS7 : 일반 PC -> vmnet10(DHCP를 이용하여211.183.3.201~239)
로 가정하고 실습해보기
DNS : 211.183.3.8

centOS8 -> DNS서버(캐시네임서버, 마스터네임서버)
관리하는 도메인 주소 : test.pri
웹서버 : www.test.pri
DHCP 서버로 동작
1. 211.183.3.201 ~ 211.183.3.239
2. DNS : 211.183.3.8

[root@pc ~]# hostnamectl set-hostname  server
[root@pc ~]# su
[root@server ~]# systemctl set-default multi-user.target 
[root@pc ~]# reboot
  • run level3으로 동작

[작업순서]

step1.

  • cli를 이용하여 server의 IP주소를 211.183.3.88로 입력한다.
    기본게이트웨이는 211.183.3.2가 되어야한다.
    DNS 정보는 향후 이 서버가 test.pri에 대한 master 네임 서버로 동작할 계획임을 감안하여 등록한다.

(인터페이스의 이름 변경하기)

  • 1. vi /etc/default/grub
6 GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/cs-swap rd.lvm.lv=cs/root rd.lvm.lv=cs/swap rhgb quiet net.ifnames=0 biosdevname=0"

-> 6행의 가장 뒤에 net.ifnames=0 biosdevname=0 를 추가한다.

  • 2. cd /etc/sysconfig/network-scripts 로 이동하여 mv ifcfg-ens..[기존이름] ifcfg-eth0 <-- 반드시 ifcfg-이름 형태로 변경해야 함
[root@server network-scripts]# cat ifcfg-eth0

TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=211.183.3.88
PREFIX=24
GATEWAY=211.183.3.2
DNS1=127.0.0.1   <--- 클라이언트가 도메인에 대한 IP 요청시 일단 로컬 네임서버의 zone 파일 검색하여 알려줌
DNS2=8.8.8.8   <-- google 과 같이 로컬에서 처리하지 못하는 도메인은 2차 네임서버를 통해 캐싱한다
  • 3. grub2-mkconfig -o /boot/grub2/grub.cfg
  • 4. reboot

step2.

  • 웹서버, DNS, DHCP 서비스를 위하여 방화벽과 SELinux는 편의상 비활성화 시켜둔다.
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

step3. - 웹 서비스를 활성화 시킨다.

dnf -y install httpd
echo "hello" > /var/www/html/index.html
systemctl enable httpd --now

step4.

  • 캐시네임서버와 마스터네임서버(test.pri)를 구성하되, 내부에 www정보를 zone파일에 등록한다. 단, 웹서버는 자기 자신이다.
dnf -y install bind bind-chroot
vi /etc/named.conf

    10 options {
    11         listen-on port 53 { any; };    # 127.0.0.1 -> any 로 수정
    12         listen-on-v6 port 53 { none; };  # none 으로 수정
                        .....
    19         allow-query     { any; };   # any 로 수정
                        .....
    34         dnssec-validation no;    # yes 를 no 로 수정
systemctl restart named   <--- 네임서버 재 시작, 현재는 캐시 네임서버로만 동작가능
vi /etc/named.conf  의 가장 아래에 다음의 내용 추가하기

     60 zone "test.pri" IN {
     61         type master;
     62         file "test.pri.db";
     63         allow-update { none; };
     64 };
  • 저장후 빠져나와서 구성 상태 체크하기
named-checkconf   <-- 아무런 반응 없이 프롬프트가 반환되어야 함
vi /var/named/test.pri.db

$TTL            3H
@       SOA     @       root. ( 2 1D 1H 1W 1H )
        IN      NS      @
        IN      A       211.183.3.88
www     IN      A       211.183.3.88

[root@server named]# systemctl restart named
[root@server named]# named-checkzone test.pri test.pri.db    <--- 구성파일 점검
zone test.pri/IN: loaded serial 2
OK    <--- 문제없음 확인!!!
[root@server named]#
  • [접속확인@서버]
[root@server named]# echo "HELLO" > /var/www/html/index.html
[root@server named]# systemctl restart httpd
[root@server named]# curl www.test.pri
HELLO
[root@server named]#

step5.

  • PC들을 위한 DHCP 서비스를 구성하고 활성화 시킨다.
[root@server ~]# yum clean all
44 files removed
[root@server ~]# dnf -y install dhcp-server
  • 위에서 dnf 로 패키지를 설치하려고 할 때 미러사이트 정보를 읽지 못하고 패키지설치에 오류가 발생하는 경우가 있습니다. 이 경우 오류 메시지에 있는 어떤저장소로의 연결에 문제가 있는지를 먼저 확인한다.
    예를 들어 appstream 에 문제가 있다면
    vi /etc/yum.respos.d/CentOS-Stream-AppStream.repo 파일을 열고 # 처리되어 있는 부분이 있거나 #irror 과 같이 되어 있다면 해시를 제거 또는 #irror 을 mirror 과 같이 변경한 뒤 다시 설치를 진행해 보자
[root@server ~]# cat /etc/dhcp/dhcpd.conf
ddns-update-style interim;
subnet 211.183.3.0 netmask 255.255.255.0 {
  range dynamic-bootp 211.183.3.201 211.183.3.239;
  option domain-name-servers 211.183.3.88;
  option domain-name "test.pri";
  option routers 211.183.3.2;
  option broadcast-address 211.183.3.255;
  default-lease-time 600;
  max-lease-time 7200;
}
[root@server ~]#
[root@server ~]# systemctl restart dhcpd
[root@server ~]#
[root@server ~]# systemctl status dhcpd | grep Active
   Active: active (running) since Mon 2022-07-25 14:28:51 KST; 10s ago
[root@server ~]#

step6.

  • PC는 IP 주소 입력에 대하여 DHCP로 전환하고 211.183.3.201~239 사이의 주소를 할당받아야 한다. 또한 firefox를 실행한 뒤, 주소창에 www.test.pri를 입력했을 경우 server의 웹페이지 내용이 보여야 한다. 또한 www.google.com을 입력했을 경우에도 정상적으로 페이지가 보여야한다.

[PC 에서의 확인]

네트워크 로고에서 IP주소를 DHCP 로 변경, DNS 주소 삭제 한 뒤 확인

'[root@mainserver named]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 211.183.3.201  netmask 255.255.255.0  broadcast 211.183.3.255
        inet6 fe80::20c:29ff:fe8f:e8e  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:8f:0e:8e  txqueuelen 1000  (Ethernet)
        RX packets 248725  bytes 132886178 (126.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 86252  bytes 8899369 (8.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@mainserver named]# 
[root@mainserver named]# ip route
default via 211.183.3.2 dev eth0 proto dhcp metric 100 
211.183.3.0/24 dev eth0 proto kernel scope link src 211.183.3.201 metric 100 
[root@mainserver named]# 
[root@mainserver named]# curl http://www.test.pri
HELLO
[root@mainserver named]# curl -L http://www.naver.com | head -5
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   138    0   138    0     0   1475      0 --:--:-- --:--:-- --:--:--  1483
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
<!doctype html>                          <html lang="ko" data-dark="false"> <head> <meta charset="utf-8"> <title>NAVER</title> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=1190"> <meta name="apple-mobile-web-app-title" content="NAVER"/> <meta name="robots" content="index,nofollow"/> <meta name="description" content="네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요"/> <meta property="og:title" content="네이버"> ...... 

[서버에서 임대한 IP 의 정보 확인]

[root@server ~]# cat /var/lib/dhcpd/dhcpd.leases
-- 생략 ---
lease 211.183.3.201 {
  starts 1 2022/07/25 05:29:41;
  ends 1 2022/07/25 05:39:41;
  cltt 1 2022/07/25 05:29:41;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 00:0c:29:8f:0e:8e;
  client-hostname "mainserver";
}
  • 과거의 방화벽은 인터페이스별로 정책을 설정하였다.
    주로 사용하는 방화벽 설정
firewall-cmd --zone=work --add-service=ssh,http
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload  

0개의 댓글