#20230306(NAT Gateway VMware, 서브넷이해)

eeapbh·2023년 3월 6일
0

MZC

목록 보기
8/61
ssh-copy-id 로 key 전송했음


DNS_DB에 키 전송함


NAT_GW_DHCP_HAproxy에 키 전송함

  1. NFS(Network File System; file storage -> 네트워크 파일 공유 -> 리눅스용 파일 시스템) - AWS EFS
  • 완전 관리형 서비스
    네트워크 파일 시스템(Network File System, NFS)은 1984년에 썬 마이크로시스템즈가 개발한 프로토콜입니다.
    클라이언트 컴퓨터의 사용자가 네트워크 상의 파일을 직접 연결된 스토리지에 접근하는 방식과
    비슷한 방식으로 접근하도록 도와 줍니다. 다른 수많은 프로토콜과 마찬가지로 ONC RPC 시스템을 기반으로 합니다.
    네트워크 파일 시스템은 RFC에 정의된 오픈 표준이므로 누구나 구현할 수 있습니다.(윈도우10 접속 가능)

  • 서버

      # yum install -y nfs-utils
      # mkdir /share && cd $_
      # echo "Hello" > test.txt
      # vi /etc/exports
      마운트 설정을 위해
      /share 192.168.56.0/24(rw,sync) 
      /share: 공유할 디렉토리
      192.168.56.0/24: 허가할 호스트 대역
      rw : 읽기, 쓰기 가능
      sync : 파일 시스템이 변경되면 즉시 동기화
      # chmod 707 /share
      # systemctl status nfs-server //서비스가 동작중인지 확인
      # systemctl enable --now nfs-server
      # exportfs -v //NFS 설정이 정상적으로 되었는지 확인

      # firewall-cmd --list-all
      사용 가능한 모든 서비스/포트 목록을 출력

      # firewall-cmd --permanent --add-service=nfs
      # firewall-cmd --permanent --add-service=rpc-bind
      # firewall-cmd --permanent --add-service=mountd
      # firewall-cmd --reload
      

  • 클라이언트

    # rpm -qa | grep nfs-utils
    # yum install -y nfs-utils
    # showmount -e 10.0.0.130  //nfs의 IP, 마운트를 할수 잇는지확인
    # mkdir share
    # mount -t nfs 10.0.0.130:/share share //nfs에 설정되어있는 폴더와 내 ns에 있는 폴더
    # df -h


    이 둘이 연결됨

    # vi /etc/fstab
     마운트 정보를 가지고 있으며, 리눅스 부팅할 때 자동으로 마운트가 적용되는 역할.
    10.0.0.130:/share /root/share nfs defaults 0 0   //껏다켜도 실행되도록 mount 정보 입력
  1. DB서버(Database Management System; MariaDB) - AWS RDS - 완전 관리형 서비스
    MariaDB는 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)입니다. MySQL과 동일한 소스 코드를 기반으로 하며,
    GPL v2 라이선스를 따릅니다. 오라클 소유의 현재 불확실한 MySQL의 라이선스 상태에 반발하여 만들어졌습니다.
  • 서버
    repo = repository

    # vi /etc/yum.repos.d/MariaDB.repo  //예전에 크롬설치할때도 repo정의하고 해줫음 특정한 버전의 MariaDB 설치하려면 yum 말고 이런식으로 repo정의하고 ㄱㄱ
    [mariadb]
    name = MariaDB
    baseurl = http://yum.mariadb.org/10.4/centos7-amd64
    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck=1     //이게 정상적인 사이트라는것을 검증함

    # yum install -y MariaDB  //위에서 정의한 name을 잘써줘야함
    # rpm -qa | grep MariaDB  //설치됐는지 확인
    # mariadb --version   //설치됐는지 확인
    # systemctl enable --now mariadb
    # mysql_secure_installation    //root passwd 정하는거 enter, y, y, y, y, y...
    # 중간에 remote(원격설정)잇는데 n 잇음!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    # systemctl restart mariadb   //서비스 재시작
    # mysql -u root -p  //비번쳐서 접속
    CREATE USER 'kosa'@'%' IDENTIFIED BY 'kosa0401'; // '%' : 모든 호스트의미 , localhost 뿐만아니라 다른 remote에서도 kosa, 'kosa0401': 비밀번호 
    CREATE DATABASE IF NOT EXISTS wordpress;
    GRANT ALL PRIVILEGES ON wordpress.* TO 'kosa'@'%';  // 
    quit
    
    # firewall-cmd --permanent --add-service=mysql
    # firewall-cmd --reload

이제 web02와서

# yum install -y bash-completion
# yum install mysql -y
# mysql -h 10.0.0.131 -u kosa -p  //비번 위에서 정의한 kosa0401
# show databases;

4개 다 poweroff

NAT-GW

NAT GW 랜카드가 두개엿다 private, public용 (diagrams 참고)

Bridged로 바꿔준다 (public)


add 누르고 네트워크 어댑터

LAN segment (잘안쓰는 거라 사람들이 관심가질듯;)


LAN segment -> vSwitch 설정후 OK

WEB01_SAMBA


여기도 LAN segment -> vSwitch

WEB02_NFS

위와 똑같이 LAN segment -> vSwitch

DNS_DB

위와 동일

NAT-GW

가장먼저 키고
가장 늦게 꺼야함
NAT-GW power on

IP가 안뜬다면 systemctl restart network 를 해보자

안된다.. IP를 늘려야 할것같다..

상단탭 edit => virtual network editor
아래 change settings -> 예

브리지로 공유기로부터 내 컴퓨터에 IP를 받아올때
수동으로 지정 Realtek

공유기 설정

supernetting

내가 사용하는 네트워크가 부족해서
우리가 원래 /24 였는데 -> /21로 바꿈,
호스트가 IP 8비트 쓸수 있었는데 11비트만큼 표현할수 있게 늘어남
호스트가 이용할수 있는 자리가 늘어남

subnetting

/24 -> /25


IP 생긴거 확인가능 192.168.0.45

Mobaxterm 에서 session -> ssh -> 192.168.0.45으로 접속

외부 랜카드

# vi /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
BOOTPROTO=none
// 이거 처음에는 DHCP로 되어있어서 none으로 바꾸고 IPADDR로 IP를 고정시켜준다 
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.0.45
NETMASK=255.255.248.0
GATEWAY=192.168.0.1
DNS1=8.8.8.8
DNS2=8.8.4.4

내부 랜카드

# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=none
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=10.31.0.1
NETMASK=255.255.255.0



# systemctl status firewalld
# firewall-cmd --get-active-zone


현재 public에 두개 다들어가잇음
이를 나누어줘야함
firewalld라는 곳에는 public은 잇지만 private은 없다.
외부와 내부로 나누어야 하는데

# nmcli c mod ens32 connection.zone external
# nmcli c mod ens33 connection.zone internal
# firewall-cmd --get-active-zone
다시해보면


나눠져있다.

# vi /etc/sysctl.conf

net.ipv4.ip_forward=1
맨밑에 넣어줌
시스템 재부팅 시 변경 사항을 적용합니다.

reboot 하고 
# cat /proc/sys/net/ipv4/ip_forward
하면 1이 나옴 껏다 켜도 안풀림
     
  1. DHCP
    동적 호스트 구성 프로토콜(Dynamic Host Configuration Protocol, DHCP)은 호스트 IP 구성 관리를 단순화하는 IP 표준입니다. 동적 호스트 구성 프로토콜 표준에서는 DHCP 서버를 사용하여 IP 주소 및 관련된 기타 구성 세부 정보를 네트워크의 DHCP 사용 클라이언트에게 동적으로 할당하는 방법을 제공합니다.
    # yum install dhcp -y
    # vi /etc/dhcp/dhcpd.conf
    ddns-update-style interim;
    subnet 10.31.0.0 netmask 255.255.255.0 {
    # = 10.31.0.0/24
    option routers 10.31.0.1;
    option subnet-mask 255.255.255.0;
    range dynamic-bootp 10.31.0.100 10.31.0.110;
    option domain-name-servers 8.8.8.8, 8.8.4.4;
    default-lease-time 7200;
    max-lease-time 86400;
    }
    # systemctl enable --now dhcpd
    # systemctl status dhcpd // 확인해보기

WEB01_SAMBA 10.31.0.100
IP 부여받고 다음거 키기
WEB02_NFS 10.31.0.101
DNS_DATABASE 10.31.0.102

탭 3개만들고

키가 없어서 안된다

상단위에 업로드 버튼
업로드를함

이제 id_rsa잇음 근데 너무 권한이 열려잇다고 경고함 644


이걸 바꿔주자

다음탭에서 web02 열어줌


다음탭에서 ns열어줌

  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/21 10.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/21; 10.31.0/24; };
        forwarders { 8.8.8.8; 8.8.4.4; }; 

        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/bonghyeon2.shop.zones"; # 호스팅 영역 생성
};

# vi /var/named/bonghyeon2.shop.zones
zone "bonghyeon2.shop" IN {
        type master;
        file "bonghyeon2.shop.db";
        allow-update { none; };
};

zone "0.31.10.in-addr.arpa" IN {
        type master;
        file "0.31.10.in-addr.arpa.db";
        allow-update { none; };
};




# vi /var/named/bonghyeon2.shop.db
Route 53 세팅하는거랑 비슷함
$TTL    86400
@       IN      SOA     bonghyeon2.shop.   root.bonghyeon2.shop.(
                        2022041401 ; Serial
                        3h         ; Refresh
                        1h         ; Retry
                        1w         ; Expire
                        1h )       ; Minimum

        IN      NS      ns.bonghyeon2.shop.
        IN      MX 10   ns.bonghyeon2.shop.
ns      IN      A       10.31.0.102
web01   IN      A       10.31.0.100
web02   IN      A       10.31.0.101

* IP LIST (이건 그냥 설명)
WEB01_SAMBA   10.31.0.100
WEB02_NFS     10.31.0.101
DNS_DATABASE  10.31.0.102

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

    IN	NS	ns.bonghyeon2.shop.
102	IN	PTR	ns.bonghyeon2.shop.
100	IN	PTR	web01.bonghyeon2.shop.
101	IN	PTR	web02.bonghyeon2.shop.



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

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

nat로 가서

vi /etc/dhcp/dhcpd.conf

option domain-name-servers 에 추가 앞에다가추가

# systemctl status dhcpd
쳐서 문제잇나 확인

web01로 가서

# cat /etc/resolv.conf
치면 현재 도메인네임 정보 보여줌
# systemctl restart NetworkManager

web02

# systemctl restart NetworkManager
# cat /etc/resolv.conf
이거 치면 102떠야함

ns

# systemctl restart NetworkManager
# cat /etc/resolv.conf
이거치면 102떠야함

nat

nat는 수동으로 해야함
# vi /etc/sysconfig/network-scripts/ifcfg-ens32


DNS1 에 추가해줌

# systemctl restart NetworkManager
# cat /etc/resolv.conf




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

# systemctl restart NetworkManager
  1. HAproxy - AWS ELB - 로드밸런서 - 부하분산
    HAProxy는 여러 서버에 요청을 분산시키는 TCP 및 HTTP 기반 애플리케이션을 위한 고가용성 로드 밸런서 및 역방향 프록시를 제공하는 무료 오픈 소스 소프트웨어 입니다. C로 작성되었으며 빠르고 효율적(프로세서 및 메모리 사용 측면에서)으로 유명합니다.

NAT

# yum install -y haproxy
# 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
    use_backend bk_firefox if firefox
    use_backend bk_chrome if chrome

backend backend_servers
    balance            roundrobin
#    cookie  SVID insert indirect nocache maxlife 10s
    server             web01 10.31.0.100:80 cookie w1 check
    server             web02 10.31.0.101:80 cookie w2 check
#   server             web03 10.31.0.103:80 cookie w3 check

backend bk_firefox
    server             web01 10.31.0.100:80
backend bk_chrome
    server             web02 10.31.0.101:80

# systemctl enable --now haproxy

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

service에 http가 없는것을 확인
# firewall-cmd --permanent --add-service=http --zone=external (zone을 external로 해줘야함)
# 
  1. 서브넷 이해
    192.168.0.0/24
    Address: 192.168.0.0 11000000.10101000.00000000 .00000000
    Netmask: 255.255.255.0 = 24 11111111.11111111.11111111 .00000000
    Wildcard: 0.0.0.255 00000000.00000000.00000000 .11111111
    =>
    Network: 192.168.0.0/24 11000000.10101000.00000000 .00000000 (Class C)
    Broadcast: 192.168.0.255 11000000.10101000.00000000 .11111111
    HostMin: 192.168.0.1 11000000.10101000.00000000 .00000001
    HostMax: 192.168.0.254 11000000.10101000.00000000 .11111110
    Hosts/Net: 254

  • 클래스 단위로 하니까 너무 범위가 큼 -> broadcast할 때 문제생김, 전체 네트워크 자원들에 부담을 주게 됨
  • A, B, C class들은 너무크다.

    그래서 이렇게 하자
    앞에 고정 -> net ID
    나머지 -> host ID

0개의 댓글