풀이)


1. 나에게 주어진 172.16.101.0 /24 사설 대역을 VLSM 하여 VMnet을 구성하시오.
(Vmware Workstation은 가상 네트워크 구성후 재부팅을 해야 GNS3와 연동이 된다.) 현실대역은 vmnet8로 가정한다.
- VMnet4
30+2=32 < 32=2^5, SM: 32-5=27 (255.255.255.224)
172.16.101.0 ~ 172.16.101.31 /27 → .1 사용불가 - VMnet6 → VMnet3으로 일단,,,
16+2=18 < 32=2^5, SM: 32-5=27 (255.255.255.224)
172.16.101.32 ~ 172.16.101.63 /27 → .33 사용불가 - VMnet5
10+2=12 < 16=2^4, SM: 32-4=28 (255.255.255.240)
172.16.101.64 ~ 172.16.101.79 /28 → .65 사용불가 - R1-R2
4=2^2, SM: 32-2=30 (255.255.255.252)
172.16.101.80 ~ 172.16.101.83 → .81 사용불가 - R2-R3
4=2^2, SM: 32-2=30 (255.255.255.252)
172.16.101.84 ~ 172.16.101.87 → .85 사용불가 - 전체 네트워크 대역대
172.16.101.0/25 (255.255.255.128)
# R1 설정
R1(config-if)#int f0/0
ip add 172.16.101.28 255.255.255.224
no sh
R1(config-if)#int f0/1
ip add 172.16.101.81 255.255.255.252
no sh
# R2 설정
R2(config-if)#int f0/1
ip add 172.16.101.82 255.255.255.252
no sh
R2(config-if)#int f0/0
ip add 172.16.101.76 255.255.255.240
no sh
R2(config-if)#int f1/0
ip add 172.16.101.85 255.255.255.252
no sh
# R3 설정
R3(config-if)#int f1/0
ip add 172.16.101.86 255.255.255.252
no sh
R3(config-if)#int f0/0
ip add 172.16.101.60 255.255.255.224
no sh
R3(config-if)#int f0/1
ip add 211.183.3.100 255.255.255.0
no sh
# NAT 내부 외부 설정
R3(config-if)#access-list 1 permit 172.16.101.0 0.0.0.255
R3(config-if)#int f1/0
R3(config-if)#ip nat inside
R3(config-if)#int f0/0
R3(config-if)#ip nat inside
R3(config-if)#int f0/1
R3(config-if)#ip nat outside
R3(config-if)#ip nat inside source list 1 int f0/0 overload



2. exam 서버들은 서로의 호스트네임을 서브도메인으로 사용한다. 또한 각 서버에 접근할때 영문주소로 접근해야 한다.
- <exam1 서버>
pxe - client
무인설치후 영문주소로 모든 서버에 접근 가능해야 한다.
- <exam2 서버>
WEB 서버 www.sulnal.com
NFS-server의 공유디렉토리(/lshared)에 저장된 index.html 파일을 /lremote라는 마운트포인트를 통해 접근하여 웹서비스를 제공한다.
FTP, TFTP 서버 ftp.sulnal.com, tftp.sulnal.com
- <exam3 서버>
NFS server, 도메인 - nfs.sulnal.com
RAID16으로 /rshared 폴더를 구성하여 exam1에게 3GB의 용량을 제공해야 한다. 마운트포인트는 /rremote
LVM으로 /lshared 폴더를 구성하여 exam2에게 2~5GB의 용량을 제공할 수 있어야 한다. 마운트포인트는 /lremote
- <exam5 서버>
DNS 서버 dns.sulnal.com
테스트하기 위해 아무 서버를 vmnet 5, 6, 7번에 두고 IP 설정




- R1 default routing
R1(config-if)#ip route 0.0.0.0 0.0.0.0 172.16.101.82
# 사실은 빨간색의 대역을 전부 해줘야 하지만 같은 방향(172.16.101.82)에 전부 속해있다.
따라서 디폴트루트만 해주면 된다.
- R2 default routing
R2(config-if)#ip route 0.0.0.0 0.0.0.0 172.16.101.86
# 오른쪽(1721.6.101.86)으로 vmnet6번이 속해있으니까 안해줘도 된다.
R2(config)#ip route 172.16.101.0 255.255.255.224 172.16.101.81
# 왼쪽(172.16.101.81)으로는 vmnet4만 해주면 된다.
- R3 default routing
R3(config)#ip route 172.16.101.80 255.255.255.252 172.16.101.85
R3(config)#ip route 172.16.101.0 255.255.255.224 172.16.101.85
# R3에서는 왼쪽으로 두개를 해준다.
R3(config)#ip route 0.0.0.0 0.0.0.0 211.183.3.2
# 오른쪽으로 디폴트 루트를 해준다.
WORDPRESS (동적인 웹서버, 블로그)
동적인 웹서버, php, java, python 같은 프로그래밍 언어로 구성
DB와 통신을 통해 DB의 있는 값을 입출력하여, 말그대로 요청에 대한 결과물이 변동되는 서버
ex. 네이버에 접속하여 아이디와 패스워드를 입력


DB 서버 구축
mariaDB 서버(데몬) - mysql
(원래 오픈소스였으나 오라클에 인수되면서 오픈소스가 아니게 돼서 mysql의 특정 시점 이후 mariaDB를 만들었다)
- 관계형 데이터베이스: 관계형 = 테이블 = 표
- 리눅스 사용자: root = 일반사용자(ex. user1)
- 데이터베이스 서버: 데몬, 리눅스의 프로그램
- root라는 데이터베이스 사용자

IP 211.183.3.33

mariadb 설치
- mariadb 데몬 설치
[root@db ~]# yum install -y mariadb-server
[root@db ~]# systemctl restart mariadb
[root@db ~]# systemctl enable mariadb


- 최초 구성시 root 암호 설정 및 기타 보안 설정
[root@db ~]# mysql_secure_installation



- mysql -u root -p1234


- SHOW DATABASES;

- CREATE DATABASE wp_DB;

- GRANT 권한 ON 테이블 TO 대상 IDENTIFIED BY 암호
MariaDB [(none)]> grant all privileges on wp_DB.* to wpuser@'%' identified by '1234';


# DB서버에 접근하기 위해서는 4가지 정보 필요함 (+포트)
- DB이름: wp_DB
- DB주소: 211.183.3.33
- DB사용자: wpuser
- DB암호: wpuser라는 사용자에 대한 암호, 1234
WORDPRESS 설치
- centos의 대용량 업데이트
[root@db ~]# yum install -y epel-release
- 레포지토리 목록
[root@db ~]# yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
- 다운로드한 레포지토리 목록에 대한 정보를 반영시키기 위해 설치하는 yum 추가 명령어 패키지
yum-config-manager 라는 명령을 쓸 수 있음
[root@db ~]# yum install -y yum-utils
- 아까 활성화한 레미 레포의 php7.3버전 정보를 등록
[root@db ~]# yum-config-manager --enable remi-php73
- php 다운로드, 워드프레스의 개발환경
워드프레스는 반드시 7 버전이상의 php가 필요함, 설치 시 httpd까지 자동 설치됨
[root@db ~]# yum install -y php
- php 버전 확인

- 모든 백엔드 언어(php, java, python 등등..)들은 db에 접근하기 위한 커넥터가 필요함
[root@db ~]# yum install -y php-mysql
- wordpress 다운받고 압축풀 패키지 설치
[root@db ~]# yum install -y wget unzip
- 최선버전의 wordpress 설치
[root@db ~]# wget https://wordpress.org/latest.zip

- 웹루트디렉토리에 압축 해제
[root@db ~]# unzip latest.zip -d /var/www/html

[root@db html]# cd /var/www/html
[root@db html]# cd wordpress/

- wp-config.php가 설정에 관련된 파일. 우리는 주로 db와 연동시키는 부분만 수정
[root@db wordpress]# mv wp-config-sample.php wp-config.php
[root@db wordpress]# vi wp-config.php


[root@db wordpress]# systemctl restart httpd
- 웹브라우저에서 http://211.183.3.33/wordpress 접속




- aws8이라는 내용의 코멘트를 남김


[root@db wordpress]# mysql -u wpuser -p1234

- 다양한 테이블을 wordpress라는 블로그 프로그램이 php로 생성

- wp_comments 라는 테이블의 모든(*) 정보를 조회(select)
MariaDB [wp_DB]> select * from wp_comments;

MariaDB [wp_DB]> select comment_content from wp_comments;
- php를 통해 db에 정보가 저장된 것을 확인

실습)
<워드프레스 서버>
hostname : hwwp
IP : 211.183.3.180
<DB 서버>
hostname : hwdb
IP : 211.183.3.6
DB : hwdb
DB사용자 : hwuser
hwuser암호 : 1234
yum install -y mysql
# 클라이언트(mysql 명령)가 설치됨.
- DB 서버
IP : 211.183.3.6
[root@db ~]# yum install -y mariadb-server
[root@db ~]# systemctl restart mariadb
[root@db ~]# systemctl enable mariadb
[root@db ~]# mysql_secure_installation
enter
Y
1234
1234
Y
n
Y
Y
[root@db ~]# mysql -u root -p1234
MariaDB [(none)]> SHOW DATABASES;
MariaDB [(none)]> CREATE DATABASE hwdb;
MariaDB [(none)]> SHOW DATABASES;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON hwdb.* TO hwuser@'%' IDENTIFIED BY '1234';
[root@db ~]# mysql -u hwuser -p1234
MariaDB [(none)]> SHOW DATABASES;
- 워드프레스 서버
IP : 211.183.3.180
[root@wp ~]# yum install -y epel-release
[root@wp ~]# yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
[root@wp ~]# yum install -y yum-utils
[root@wp ~]# yum-config-manager --enable remi-php73
[root@wp ~]# yum install -y php
[root@wp ~]# yum install -y php-mysql
[root@wp ~]# yum install -y wget unzip
[root@wp ~]# wget https://wordpress.org/latest.zip
[root@wp ~]# unzip latest.zip -d /var/www/html
[root@wp html]# cd /var/www/html
[root@wp html]# cd wordpress/
[root@wp wordpress]# mv wp-config-sample.php wp-config.php
[root@wp wordpress]# vi wp-config.php
# DB_NAME: hwdb
# DB_USER: hwuser
# DB_PASSWORD: 1234
# DB_HOST: 211.183.3.6
[root@db wordpress]# systemctl restart httpd

♨DB 연동 Trouble shooting♨

# DB연동 안됨 - php잘 깔려있고, 웹서버도 잘동작하고, 웹서버의 방화벽도 문제가 없다.
# 체크해봐야할것 - DB서버의 방화벽, 셀리눅스, wp서버의 셀리눅스
# DB서버 구성정보(주소, 이름, 사용자, 암호)가 문제 있는지 없는지. DB서버로의 통신
[root@wp wordpress]# mysql -u hwuser -p1234 -h 211.183.3.6

# 접속이 잘 된다면, 적어도 db구성정보(grant 및 데이터베이스 생성)에는 문제가 없고, DB서버의 방화벽-셀리눅스도 문제 없다.
= wp서버쪽의 문제일것. wp-config.php 파일의 문제일 확률이 큼
= 내가 생성한 DB정보와 wp-config.php 파일에서 기입한 정보가 다를 확률이 높음
≒ DB서버의 방화벽, 셀리눅스, wp서버의 셀리눅스 off가 안됐을수도 있음
팀실습_WIFI)
- GNS3 에서 f0/0을 내 와이파이에 연결하려면 다음과 같은 설정이 필요합니다.
conf t
int f0/0
speed auto
duplex auto
mac-address <와이파이어댑터 맥주소>
- 맥주소는 16진수 12자리로 구성이 되어있고, GNS3에서는 4자리씩 끊어서 . 으로 구분합니다.
ex) aaaa.bbbb.cccc
- 내 와이파이어댑터의 맥주소는 노트북에서 ipconfig /all 이라는 명령으로 볼 수 있습니다.
ip add dhcp
no sh
이렇게 하면 와이파이 어댑터로부터 외부 통신에 필요한 정보(디폴트루트,IP)를 받아옵니다.
(마치 여러분들의 노트북이나 스마트폰처럼)
3명이 짝을 이뤄 내부에 다음과 같은 서버를 만드셔서 서로의 정보를 공유해야합니다.
영수 - DNS
옥순 - DB
상철 - WP
결론적으로 영수나 옥순은 상철의 주소에 영문주소로 접속해야하고, 최종적으로 박찬민은 상철의 IP에 브라우저로 접속했을때 wordpress 화면이 떠야합니다.



R1#conf t
R1(config)#int f0/0
R1(config-if)#speed auto
R1(config-if)#duplex auto
- CMD에서 MAC 주소 확인


# 노트북의 무선 와이파이 어댑터의 맥주소를 GNS3에 표기
# a059.5065.d335
# WIFI클라우드와 연결된 R1의 인터페이스의 맥주소를 내 와이파이 무선랜 어댑터의 맥주소로 변경
# 꼭 소문자로 하기!!!
R1(config-if)#mac-address a059.5065.d335
R1(config-if)#ip add dhcp
R1(config-if)#no sh


# 와이파이로부터 통신에 필요한 IP, 디폴트 GW(디폴트 루트) 정보를 잘 받아왔다 그렇기 때문에 통신 가능!
자율과제)
1. 셋이서 한걸 혼자서 한번 해보세요! 브릿지를 vmnet8로만 바꿔서
2. 혼자서 브릿지 대역을 쓴다면 어떻게 구성하면 좋을지 생각해보고 한번 해보세요!