네트워크 및 클라우드

[WAS 기초]3 Tier 구현 실습 (포트 포워딩, NAT Network, etc..)

후리붜너 2022. 11. 2. 20:13

Ubuntu 설치

우분투 설치는 Oracle VM virtualbox를 이용하면 가상머신에 쉽게 설치가 되기 때문에 간단하게 순서만 짚고 넘어간다.

  1. 옆의 우분투 공식 홈페이지에 접속하고 22.04 LTS 버전을 먼저 다운받는다. https://ubuntu.com/#download
  2. Oracle VM VirtualBox 프로그램을 사용해서 새로운 운영체제를 VM에 올려 생성한다.
  3. Virtual box의 환경설정에서 다운받은 ubuntu iso 파일을 적용하면 우분투 설치를 진행할 수 있다.

설치

sudo apt update
sudo apt install vim

우분투가 설치되었다면 terminal을 열고 위의 명령어들을 입력한다. 'apt update'는 자주 update를 하여 어떤 패키지나 프로그램을 다운받을 때 문제가 생기지 않도록 권장한다.

 

vim은 vi 편집기의 최신버전으로 텍스트나 간단한 파일 작성 및 수정에 필요한 편집기이다.

 

Ubuntu 사용자 생성

이전 글에서도 언급했듯이 Linux 기반 운영체제는 multi-user와 multi-tasking이 가능하기 때문에 root 이외의 다른 사용자를 만들어줄 수 있다. 이후에 또 다시 나오겠지만 외부에서 접속할 때는 보안의 이유로 root 계정으로는 접속이 불가하다. 즉, 다른 사용자 계정이 필요하다.

 

sudo adduser juhan

위와 같이 관리자 권한으로 'juhan'이라는 사용자를 만들어주면 비밀번호를 생성하라는 실행창이 뜬다. 비밀번호까지 두번 입력해주면 사용자 생성 완료!


sudo useradd rainbow
sudo passwd rainbow

여기서 조금 다르게 사용자를 생성하는 방법이 있는데 위와 같이 'useradd'를 사용하는 방법이다. 'useradd'는 좀 더 세세하게 사용자설정을 직접 설정해주고 싶을 때 사용하는 방법으로 위와 같이 사용자와 비밀번호만 추가하게 되면 홈 디렉토리 및 다른 여러 설정들이 설정되지 않는다. 그렇기 때문에 자동으로 설정되기를 원한다면 'useradd'가 아닌 'adduser'로 사용자를 생성하는 것을 권장한다!

 

아래는 참조.

https://kit2013.tistory.com/187

 

useradd와 adduser의 차이

Ubuntu에 테스트 환경 구성하다가 뭔가 이상함을 느끼고 정리한 것이다 결론적은 다음과 같다. useradd는 사용자 홈디렉토리를 자동으로 생성안함 + 기타 등등 adduser는 홈디렉토리를 자동으로 생성

kit2013.tistory.com

 

파일 및 디렉토리 권한

우분투에서 'ls -l' 또는 'ls -al' 명령어를 실행하면 실행창에 현재 디렉토리에서의 파일과 하위 디렉토리들의 정보가 나온다.

파일 및 디렉토리 정보

파일 및 디렉토리들은 각각 권한에 대한 정보를 가지고 있는데, 그 해석은 위와 같이 할 수 있다.

파일은 맨 앞이 항상 '-'로 시작하고 디렉토리는 'd'로 시작하는 것 외에는 동일하게 나열된다.

 

위의 권한들을 숫자로 간편하게 표기할 수도 있다.

 

  • r (read) : 4
  • w (write) : 2
  • x (executable) : 1

위의 권한들을 더하면서 사용자구분마다 넣어주면 그 파일 및 디렉토리의 권한을 숫자로 확인할 수 있다.

 

예를 들어보자.

  • -rw-r--r--   →    권한 644
  • -rwxrwxrwx  →    권한 777

권한 변경

파일이나 디렉토리의 권한을 변경할 때는 'chmod' 명령어를 사용해서 할 수 있다.

sudo chmod 777 test.txt

위의 명령어를 거치면 test.txt는 모든 사용자에 대해서 읽기, 쓰기, 실행 모두 가능한 파일이 된다.

 

원격에서 접속

우리가 만든 VM 속 ubuntu에 원격으로 접속할 수 있도록 하기 위해서 SSH (Secure Shell)이 필요하다.

sudo apt install ssh   // ssh 설치
sudo service sshd start  // sshd 데몬 시작
sudo apt install net-tools   // 네트워크 관리도구 시작
ifconfig   // IP 주소 확인

ubuntu에서 ssh를 설치해주고 실행해준뒤 

VM virtualbox의 환경설정에서 새로운 NAT Network를 생성해주고 포트포워딩 설정을 해준다.

포트포워딩

이 때 NAT Network는 포트 포워딩을 위한 네트워크 구성인데, NAT Network를 구성하면 가상의 공유기 같은 역할을 한다. 이 NAT Network는 VM Virtual Box안에 여러 개의 VM이 있을 텐데 이것들을 모두 외부와 통신할 수 있게 한다. 

 

NAT Network은 실제 자신의 IP를 외부에 공개하지만 외부에서 그 IP로 VM들에 바로 접속하지는 못하게 한다. 왜냐하면 NAT Network는 사설 IP를 가지고 VM들에게 사설 IP를 부여하기 때문이다. 이 사설 IP는 Virtual Box 내에서만 사용가능한 IP로 외부에서는 이 사설 IP에 바로 접근할 수 없다. NAT Network를 거쳐서 사설 IP로 변환된 이후에 각각의 VM들에게 접속할 수 있다.

 

포트포워딩은 위 사진과 같이 입력하면 된다. 중요한 부분이 호스트 IP, 호스트 포트, 게스트 IP, 게스트 포트인데, 호스트는 NAT Network를 의미하고 외부에서 접근하는 IP가 된다. 즉, 위 사진의 경우에 외부에서 NAT Network로 192.168.56.1:80에 접속시도한다면 NAT Network에서 포트포워딩(이어주기)으로 VM인 10.0.2.5(사설 IP):8080에 연결하도록 변환해주는 것이다.

 

 

CIDR (Classless Inter-Domain Routing)

https://kim-dragon.tistory.com/9

 

[네트워크] CIDR이란?(사이더 란?)

오늘은 CIDR에 대해서 설명해보도록 하겠습니다. 네트워크 설계를 하면서 가장 많이 접하게 될 개념이 CIDR입니다. 사이더라고 부릅니다. CIDR의 full name은 Classless Inter-Domain Routing 으로 클래스 없는

kim-dragon.tistory.com

 

모든 네트워크 설정이 아직 끝나진 않았다. 각 VM 설정 - 네트워크 설정에서 자신의 어댑터를 지정하고 NAT Network와 연결해주면 완료된다.

 

이후 로컬 컴퓨터에서 아래의 명령을 실행해보자.

cmd> ssh [ubuntu IP주소] -ㅣ [계정명]

위의 명령어를 windows에서 실행해주면 원격 접속이 가능하다. (windows에는 ssh가 자동적으로 설치되어 있다.)

 

 

WAS 3 Tier 구현

위에서 만든 ubuntu VM 환경은 Web server를 구축할 server 컴퓨터이고 이제 연결할 DB 컴퓨터가 필요하다. 위에서 만든 ubuntu VM을 복사하여 DB를 설치할 ubuntu를 만들자.

 

 

Ubuntu WAS

vim 설치, apt 업데이트는 위에서 기본적으로 진행했기 때문에 하지 않아도 된다.

웹서버 구동에 필요한 apache2 설치를 진행해준다.

sudo apt install apache2 -y

-y 옵션은 패키지 설치 시에 Yes/no에 대해서 항상 yes로 진행하라는 뜻이다.

 

sudo apt install php php-mysql php-common php-gd php-fpm php-xml php-json php-curl git

cd /var/www/html
sudo git clone https://github.com/gnuboard/gnuboard5
cd gnuboard5
sudo mkdir data
sudo chmod 707 data

웹 서버 구동에 필요한 패키지들을 모두 다운받고 그누보드(gnuboard)를 웹 서버에서 실행시킬 것이기 때문에 github에서 clone을 해온다. 

 

Ubuntu DB

DB를 구축하기 위해 mysql-server를 다운받는다.

sudo apt update
sudo apt install vim
sudo apt install mysql-server

 

sudo mysql -u root -p
mysql> create database gnuboard;
mysql> show databases;
mysql> create user board@'%' idnetified by 'cyber12#$';
mysql> grant all privileges on gnuboard.* to board@'%';
  • 먼저 mysql에 root 사용자로 접속한다. (sudo mysql -u root -p)
  • gnuboard라는 database table을 만들고 database가 잘 생성되었는지 확인한다.
  • mysql 사용자를 생성한다. 어느 곳에서도 접속할 수 있는 계정인 board 사용자를 만들고 비밀번호는 'cyber12#$'으로 한다. (create user ~~ 부분)
  • gnuboard 테이블에 대한 모든 권한을 board 사용자에게 부여한다. (grant all ~~ )

 

이제 WAS에서 DB IP:3306을 사용해 어디서든 database에 접근할 수 있다.

 

References

https://mainia.tistory.com/2379

 

버추얼박스(VirtualBox) 이용해서 우분투(Ubuntu) 설치하기

버추얼박스(VirtualBox) 를 이용해서 다양한 OS 를 자신의 컴퓨터에 설치할 수 있습니다. 저는 직업 특성상 리눅스 OS 를 접할 일이 많습니다. 별도로 컴퓨터를 마련해서 리눅스 테스트 환경을 갖추

mainia.tistory.com

https://kit2013.tistory.com/187

 

useradd와 adduser의 차이

Ubuntu에 테스트 환경 구성하다가 뭔가 이상함을 느끼고 정리한 것이다 결론적은 다음과 같다. useradd는 사용자 홈디렉토리를 자동으로 생성안함 + 기타 등등 adduser는 홈디렉토리를 자동으로 생성

kit2013.tistory.com

https://lamanus.kr/59

→ 포트포워딩 정리 너무 잘되어있음

 

포트 포워딩이란?

과거에는 집에 보통 컴퓨터 한 대만 사용하고 스마트폰이 없었기 때문에 인터넷을 설치한다고 하더라도 모뎀만 있으면 컴퓨터에 인터넷을 연결할 수 있었습니다. 최근 들어서는 가족 구성원 한

lamanus.kr

https://jdh5202.tistory.com/285

 

VirtualBox NAT 포트포워딩

NAT 설정은 호스트 OS에서 게스트 OS로 접속할 수 있게 한다. 만약 윈도우에서 리눅스의 FTP , SSH를 사용하고 싶다면 포트포워딩을 해야한다. virtualbox에서 고급 -> 포트포워딩을 클릭한다. 필자는 호

jdh5202.tistory.com

https://kim-dragon.tistory.com/9

 

[네트워크] CIDR이란?(사이더 란?)

오늘은 CIDR에 대해서 설명해보도록 하겠습니다. 네트워크 설계를 하면서 가장 많이 접하게 될 개념이 CIDR입니다. 사이더라고 부릅니다. CIDR의 full name은 Classless Inter-Domain Routing 으로 클래스 없는

kim-dragon.tistory.com