#20230303

eeapbh·2023년 3월 3일
0

MZC

목록 보기
7/61

지난시간

NAT GW 구축할떄 리눅스의 firewall cmd이용
NAT GW 이용해서 private subnet이 외부와 통신할수 잇도록
dhcp로 내부에 ip 부여
db만들고 사용자랑 비번만들고 권환주기

  1. DNS - AWS Route53
    도메인 네임 시스템(Domain Name System, DNS)은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었습니다. 특정 컴퓨터(또는 네트워크로 연결된 임의의 장치)의 주소를 찾기 위해, 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 식별 번호(IP 주소)로 변환해 줍니다. 도메인 네임 시스템은 흔히 "전화번호부"에 비유됩니다. 인터넷 도메인 주소 체계로서 TCP/IP의 응용에서, www.example.com과 같은 주 컴퓨터의 도메인 이름을 192.168.1.0과 같은 IP 주소로 변환하고 라우팅 정보를 제공하는 분산형 데이터베이스 시스템입니다.

ISP(Internet Service Provider: KT, SKB, LGU+, Dreamline ...)
DNS

# yum -y install bind bind-chroot bind-utils
ggdG
# cp /etc/named.conf /etc/named.conf.bak  # 백업하고 작업
# vi /etc/named.conf
options {
        listen-on port 53 { 127.0.0.1; 192.168.0/24; 172.31.0/24; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { localhost; 192.168.0/24; 172.31.0/24; };
        forwarders { 8.8.8.8; 8.8.4.4; };  # 구글이 제공하는 DNS server

        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
view "internal" {
        zone "." IN {
                type hint;
                file "named.ca";
        };

        include "/etc/named.rfc1912.zones";
        include "/var/named/bonghyeon.shop.zones"; # 호스팅 영역 생성
};


vi /var/named/bonghyeon.shop.zones
zone "bonghyeon.shop" IN {
        type master; # DNS server가 죽으면 slave가 하게 할수잇다.우리는 하나만함
        file "bonghyeon.shop.db";
        allow-update { none; };  # 도메인 IP를 주기적으로 확인, DDNS 기능
};

zone "0.31.172.in-addr.arpa" IN { # IP를 반대로 도메인으로 바꿔주는 기능(리버스)
        type master;
        file "0.31.172.in-addr.arpa.db";
        allow-update { none; };
};

vi /var/named/bonghyeon.shop.db
$TTL    86400  # time to live 캐시정보가 이 시간만큼 정보를 가지고 잇다가 리프레시하는시간
@       IN      SOA     bonghyeon.shop.   root.bonghyeon.shop.(
                        2022041401 ; Serial
                        3h         ; Refresh
                        1h         ; Retry
                        1w         ; Expire
                        1h )       ; Minimum

        IN      NS      ns.bonghyeon.shop. 
        IN      MX 10   ns.bonghyeon.shop. # 메일서버
ns      IN      A       172.31.0.102 # 102 보통 dns    
web01   IN      A       172.31.0.100
web02   IN      A       172.31.0.101

* IP LIST
WEB01_SAMBA   172.31.0.101
WEB02_NFS     172.31.0.100
DNS_DATABASE  172.31.0.102

# vi /var/named/0.31.172.in-addr.arpa.db
$TTL	86400
@	IN	SOA	bonghyeon.shop.	root.bonghyeon.shop.(
            2022041401 ; Serial
            3h         ; Refresh
            1h         ; Retry
            1w         ; Expire
                        1h )       ; Minimum

    IN	NS	ns.bonghyeon.shop.
102	IN	PTR	ns.bonghyeon.shop.

# systemctl start named && systemctl enable named
# systemctl enable --now named  

# firewall-cmd --permanent --add-service=dns
# firewall-cmd --reload

# systemctl restart NetworkManager
# NAT-GW 가서
# vi /etc/dhcp/dhcpd.conf

# multil-execution 눌러서 무언가를 동시에 하게 할수잇음

# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

# cat /etc/resolv.conf
  • 대표적인 레코드
    SOA : 다루는 도메인 버전과 업데이트 시간 간격 등의 정보를 저장하는 레코드
    A : 호스트 이름으로 IPv4 주소를 조회할 때 사용하는 레코드
    예: 호스트 ns.bonghyeon.shop의 IPv4 주소는 172.31.0.130
    AAAA : 호스트 이름으로 IPv6 주소를 조회할 때 사용하는 레코드
    예: jprs.jp의 IPv6 주소는 2001:218:3001:7::80
    PTR : IP 주소로 호스트 이름을 조회할 때 사용하는 레코드
    예: 172.31.0.130의 호스트 이름은 ns.bonghyeon.shop
    NS : DNS 서버의 호스트 이름 혹은 IP 주소를 저장하는 레코드
    예: bonghyeon.shop의 DNS 서버는 ns.bonghyeon.shop
    MX : 메일 서버 호스트 이름 혹은 IP 주소를 저장하는 레코드
    예: bonghyeon.shop의 메일 서버는 mail.bonghyeon.shop
    CNAME: 호스트 이름의 별칭을 저장하는 레코드
    예: www.bonghyeon.shop은 ns.bonghyeon.shop의 별칭(alias)
       

web01가서
yum install -y bind-utils
dig A web01.bonghyeon.shop # 도메인 확인
dig -x 172.31.0.102 # 역으로 도메인 확인

  1. HAproxy - AWS ELB - 로드밸런서 - 부하분산 - L4 S/W, L7 S/W (HA : High Availabilty, 고가용성)
    HAProxy는 여러 서버에 요청을 분산시키는 TCP 및 HTTP 기반 애플리케이션을 위한 고가용성 로드 밸런서 및 역방향 프록시를 제공하는 무료 오픈 소스 소프트웨어 입니다. C로 작성되었으며 빠르고 효율적(프로세서 및 메모리 사용 측면에서)으로 유명합니다.
  • roundrobin
    • 순차적 연결 방식
    • 현업에서 잘 안씀, 언젠가는 불균형이 일어남, 어느 한서버가 cpu 부하가 더가거나 덜가게 될수 잇음
  • least connection
    • 최소 연결 방식
    • 실시간으로 웹서버 적게 세션이 연결 돼있는 쪽으로 방향 설정
    • 근데 직관적으로 테스트하기는 힘들다

NAT GW 가서

# yum install -y haproxy
# cp /etc/haproxy/haproxy.cfg  /etc/haproxy/haproxy.cfg.bak
# vi /etc/haproxy/haproxy.cfg
# ggdg 로 다지우고 

global
daemon

defaults
mode http

frontend http-in
bind *:80
acl firefox hdr_sub(User-Agent) Firefox
acl chrome hdr_sub(User-Agent) Chrome
default_backend backend_servers # 위에 두줄의 조건이 아니면 default로
use_backend bk_firefox if firefox # firefox 조건이 맞으면 firefox백엔드로
use_backend bk_trident if chrome

backend backend_servers
balance roundrobin # 로드벨런서 알고리즘 roundrobin은 순차적으로.. web01, web02, web01, web02.. 이런식

# cookie  SVID insert indirect nocache maxlife 10s
server             web01 172.31.0.100:80 cookie w1 check
server             web02 172.31.0.101:80 cookie w2 check
# server             web03 172.31.0.103:80 cookie w3 check

backend bk_firefox
server web01 172.31.0.100:80
backend bk_chrome
server web02 172.31.0.101:80

# firewall-cmd --list-all
# firewall-cmd --list-all --zone=external 

# systemctl start haproxy
# systemctl enable haproxy
# systemctl enable --now haproxy
# firewall-cmd --permanent --add-port=80/tcp --zone=external

VMware

VMware가 NAT기능이 훨씬 편리하다

edit -> 오른쪽아래 changesettings

  • create a new virtual machine 클릭

    • typical
    • I will install the operating system later
    • next
    • linux, centos7
    • 128Gib, singlefile선택
    • customize Hardware클릭
    • new cd/cd 에서
    • use iso image file 찾기에서 CentOS-7-x86_64-Minimal-2009.iso찾아서 열기
    • usb controller, sound card, printer -> remove
    • finish 하면 설치완료
  • poweron 하고 centos7 설치

    교재 81

  • I will configure you~
  • done

  • SELINUX disabled 시키기
    • vi /etc/sysconfig/selinux
  • yum update -y
  • file -> export to ovf
    • d 드라이브에 vmware_ova 폴더만들고 확장자명 ova로 바꾸고저장

공인IP = Public IP
사설IP = Private IP
10.0.0.0 ~ 10.255.255.255
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255

  • 다되면 manage -clone

  • create a full clone 선택

  • 이제 이걸로 다음꺼 clone함

  • 똑같이 하고 이름 이렇게 만듬

  • 똑같이 DNS_DB로 클론해서 NAT-GW_DHCP_HAproxy 라고 이름 설정해서 만듬

mobxterm 켜서

home에서 키 복사

10.0.0.129 들가서 vi /etc/ssh/sshd_config 들가서

# vi /etc/ssh/sshd_config
PasswordAuthentication no
systemctl restart sshd
systemctl status sshd
sestatus
yum install -y httpd
hostnamectl set-hostname web01
systemctl enable --now httpd
yum install -y bash-completion # 자동완성깔기
exit 
다시들가고
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
firewall-cmd --list-all
![](https://velog.velcdn.com/images/eeapbh/post/461d8c97-1204-429d-a99d-8709fe28835e/image.png)
- 서비스에 http 들어간거 확인
 
- yum install -y wget
- cd /var/www/html
- mkdir images && cd $_
- wget http://192.168.0.3/files/two-rabbit.jpg
- cd ~ 해서 root로감
- yum install -y samba
- mkdir -p /var/samba/share # 중간에 samba라는 폴더 만들면서 share 까지 만듬 유용함 (-p)
- chmod 777 /var/samba/share
- adduser kosa
- passwd kosa
- 비밀번호 등록함
- smbpasswd -a kosa # samba에서 사용할 kosa사용자에 passwd 설정하기
- vi /etc/samba/smb.conf
- o키 누르고 엔터 한칸치고 아래꺼 복사함
        workgroup = hali
  [share]
        comment = Share Directory
        path = /var/samba/share
        browserable = yes
        writable = yes
        valid users = kosa
        create mask = 0777
        directory mask = 0777

# systemctl enable --now smb
# systemctl enable --now nmb
# systemctl restart smb
# systemctl restart nmb
# systemctl status smb nmb
![](https://velog.velcdn.com/images/eeapbh/post/65d7e775-bf4b-429d-a285-e382c0c6b975/image.png)
둘다 active 된거 확인
# firewall-cmd --permanent --add-service=samba
# firewall-cmd --reload
# firewall-cmd --list-all // 꼭다하고 확인하는 습관
\\10.0.0.129 들어가서 aws.tar 복사해줌 그럼 samba는 끝
![](https://velog.velcdn.com/images/eeapbh/post/85e8cabf-59c2-4e58-8803-7d320dd336e1/image.png)

WEB02_NFS

  • poweron


    10.0.0.130으로 돼잇음

    session 에서 키 입력
    # hostnamectl set-hostname web02
    # yum install -y bash-completion
    # yum install -y httpd (웹서버 설치)
    # cd /var/www/html 
    # ls 해보면 암것도없음
    # mkdir images && cd $_ (mkdir로 imager 폴더 만들고 $_뜻은 방금 직전에 만드는 폴더)
    # yum install -y wget
    # vi index.html
    # wget http://192.168.0.3/files/two-rabbit.jpg
    <!DOCTYPE html>
    Sample Deployment

    web02

    This application was deployed using AWS ECS, EKS.

    For next steps, read the AWS Management Console.

    # systemctl enable --now httpd # firewall-cmd --permanent --add-service=http # firewall-cmd

0개의 댓글