다음 글 예고... 🫠 3Tier를 알아보고 Nginx서버(WEB서버)와 Tomcat(WAS)서버를 설치해보고 연동하려고 합니다.
Ⅰ. 개요
가상머신 프로그램에서 Host-only, NAT, Bridge를 알아본다. VMware에서 각각 어떻게 설정할 수 있고 변경해서 접속할 수 있는지 알아본다. Host-only는 게스트 OS끼리만 통신하고 NAT는 일반적으로 호스트 OS와 호스트 OS를 통해 외부와 통신 가능하다. Bridge는 호스트 OS와 별도로 외부와 통신이 가능하다. Tetris를 설치해보고 외부 네트워크 대역의 다른 사람과 게임을 해본다.
Ⅱ. Host-only, NAT와 Bridge
Host-only와 Bridge를 설명하기에 앞서 지난 게시글 NAT에 대해 보고 오면 좋다.
[SK쉴더스 SeSAC 성동1기] 2. 네트워크 유형, OSI 7계층, 프로토콜(데이터 링크, 네트워크, 전송 계층)
먼저, VMware 가상머신 프로그램에서 네트워크를 변경하는 방법을 소개하고자 한다. 크게, Host-only, NAT, Bridge로 변경할 수 있다.

위 사진에서 보이는 것처럼 Virtual Network Editor에 들어가게 되면,

이런 화면이 나오게 된다. 여기서 Subnet IP를 변경해서 예전에 이야기 한 A, B, C클래스의 주소값으로 설정할 수도 있고, Host-only, NAT의 설정 값들도 바꿀 수도 있다. 바꾸려면 사진에서 보이는 것처럼 Change Settings를 눌러 관리자 모드로 들어가야 한다. 들어가게 되면

이렇게 설정을 변경할 수 있는데, IP를 할당해주는 NAT DHCP서버 설정을 바꾸거나 Host-only의 DHCP서버 설정도 바꿀 수 있다. Host-only는 외부와 통신을 막는 VMware의 가상머신 게스트 OS끼리만 통신이 가능한 형태이고 일반적으로 설정되어 있는 NAT는 호스트 OS를 통해 IP 주소를 할당받아 외부와 통신이 가능한 형태이다. 물론, 호스트 OS와 연결도 가능하다. Host-only를 먼저 체험해보자면,

이렇게 Host-only에 대한 IP주소 설정을 바꿔주고 OK로 나온 다음에(딱히 건드리지 않아도 된다.),

이제 가상머신 게스트 OS에서 마우스 오른쪽으로 Settings에 들어가,

중간에 Network Adapter를 Host-only로 바꾸고 OK를 누른 뒤 가상머신을 시작해주면 된다.

가상머신에 접속해서 'ifconfig'로 IP주소를 조회해보면 아까 위에서 봤던 Host-only에 설정된 IP 주소를 할당받은 모습을 볼 수 있다.

자신의 운영체제의 IP주소를 조회해보면 위와 같이 나오는데,

이렇게 Host-only 게스트 OS에서 호스트 OS IP 주소랑 연결 상태를 확인해보려고 ping을 보내보면 접근이 불가능하다고 나온다.

Host-only에선 게스트 OS와 호스트 OS 통신이 안되는 것을 알았는데, 만약, 두 게스트 OS가 이렇게 있을 때 ping을 보내면 어떻게 될까?

이렇게 ping이 잘 가는 모습을 볼 수 있다! 즉, Host-only에선 게스트 OS끼리 연결은 되도 호스트 OS와는 연결이 안된다!

반면, NAT 게스트 OS로 바꾼 뒤 아래와 같이 동일한 호스트 OS IP 주소에 ping을 보내보면

이렇게 패킷이 잘 가는 모습을 볼 수 있다!
위에서 VMware의 Virtual Network Editor에 들어가 DHCP서버 설정이나 IP 주소 수동 할당 등 설정을 변경할 수 있었는데, 가상머신 게스트 OS의 리눅스에서 'nmtui'로 설정을 변경할 수 있다. 명령어를 입력하면 이런 창이 나오는데,



이렇게 순서대로 들어가면, MAC 주소나 IP 주소를 바꿀 뿐만 아니라 DNS서버 주소도 바꿀 수 있다.

Bridge를 설명하기 전에 위 사진을 보면 Host-only와 NAT가 한번에 이해될 수 있다. Bridge는 호스트 OS의 하드웨어를 사용하긴 하지만, 별도의 LAN카드를 가지고서 공유기에서 IP 주소를 할당 받아 호스트 OS를 거치지 않고 외부와 직접 통신할 수 있다는 것을 의미한다.
※ 이해를 위해 가상머신 게스트 OS가 별도의 LAN카드를 가지고 있다고 생각하면 된다.

이번엔 동일하게 Settings에 들어가 Bridge로 바꿔주고 가상머신을 부팅시켜보면,

이렇게 위에서 봤던 호스트 OS와 같은 네트워크 IP 주소를 할당받았다는 것을 볼 수 있다. 이제 Bridge로 바꾼 게스트 OS로 아래의 Tetris를 따라서 해보자!!
※ 만약 위 사진과 다르게 바로 IP 주소 할당을 못받았을 경우 'sudo dhclient -v' 명령어를 실행시켜보자
Ⅲ. Tetris
리눅스(Linux, Ubuntu)에서 재밌게 즐길 수 있는 테트리스를 소개하고자 한다. 리눅스, 네트워크를 공부하다 보면 굉장히 어려운 부분도 많고 명령어가 잘 외워지지 않을 때 잠시 휴식을 위해 해보면 재밌을 것이다.
vitetris: Text-mode Tetris for Linux

위의 사이트에 접속하여 중간에 내리다 보면 'Latest release' 최신 버전의 테트리스 소스를 다운받을 수 있다.
Release 0.59.1 · vicgeralds/vitetris
들어가면 Git과 연결되어 0.59.1 버전의 Tetris 소스를 받을 수 있는데, zip버전과 tar.gz버전이 보일 것이다. 두 가지 방법이 있을텐데 윈도우를 이용 중이라면 파일을 직접 다운 받아 'WinScp'와 같은 프로그램을 통해 가상머신의 리눅스 운영체제로 파일을 보내주거나 'wget' 명령어로 주소 링크를 복사해서 리눅스에서 바로 다운 받는 방법이 있다.
wget https://github.com/vicgeralds/vitetris/archive/refs/tags/v0.59.1.tar.gz일반적으로 리눅스는 tar.gz 확장자로 파일을 압축하거나 풀기 때문에 'Source code(tar.gz)' 위에서 마우슨 오른쪽 버튼으로 '링크 주소 복사'를 하게 되면 이렇게 다운받을 수 있는 주소를 가져올 수 있다. 위의 명령어를 파일을 다운받고 싶은 디렉토리 안에서 실행하면 바로 다운로드된다.

이렇게 링크 주소 복사해서 위의 명령어대로 입력하면 다운로드가 될 것이다. 그리고 바로 'tar' 명령어로 압축을 풀어주면 된다.

※ 여기서 좋은 패키지하나를 소개하자면 리눅스는 윈도우처럼 디렉토리가 명확히 보이지 않아 'ls'명령어를 사용해도 보기 좋지 않다. 근데 'tree'패키지를 'apt install tree'하고 이렇게 사용해보면 트리(Tree)형태로 디렉토리를 보여주기 때문에, 굉장히 보기 좋다.
이제 마지막으로 필요한 패키지를 하나 더 설치해줄텐데 우리가 다운로드 받은 파일은 단순히 소스 코드이기 때문에, 컴파일하고 실행시켜줄 수 있는 라이브러리가 필요하다. 예를 들어, 한글 파일을 실행하려면 한글 프로그램이 깔려있어야 하는 것과 유사하다.

그래서 이렇게 'apt install build-essential'을 설치해주면 이제 정말 준비는 끝났다. 설치해주고 압축 푼 디렉토리로 들어가보면

이렇게 많은 파일이 있는데, configure 파일이 보일 것이다. 이 configure 파일을 실행해서 테트리스 게임의 소스 코드를 현재 내 시스템에 맞게 조정하기 위해서 configure 스크립트 파일을 실행해준다.

실행하게 되면 make를 해달라는 요청이 들어오고 make를 입력해주면 아래와 같이 나오면서 알아서 설정을 맞춰준다.

그러면 이제 정말 테트리스 게임을 시작하는 일만 남았는데,

위 사진을 보면 테트리스 게임을 시작하려면 './tetris'를 입력하면 실행이 된다고 한다. 입력해보면 이렇게 나온다!!

이제 게임을 즐기기만 하면 되는데 같은 네트워크를 공유하는 옆에 친구와 같이 하고 싶다면??
'./tetris listen 포트번호'를 입력해서 실행해주면,

이렇게 9999 포트로 서버가 열리면서 대전할 사람을 기다리게 된다.

이렇게 'LISTEN'상태로 서비스가 열린 모습을 볼 수 있다! 그러면 상대방은 어떻게 접속하면 될 것인가?

이렇게 './tetris connect IP주소:포트번호'를 입력해주면 접속이 되면서 아래에 PLAYER2라고 나오는 모습을 볼 수 있다! 이제 게임을 즐기면 된다.
※ Bridge로 외부와 통신할 수 있게 네트워크를 바꾼 다음, 즐겨볼 수도 있다.😃
후기
이번엔 지난 수업에서 했던 VMware 네트워크 변경과 관련한 부분과 재밌었던 Tetris를 포스팅했습니다. 거의 2일 동안 지금까지 배운 걸 토대로 포스팅하다보니 헷갈리는 부분도 많이 생겨 찾아보는 것 같습니다...🥲 역시 그날 그날 바로 정리해서 올려야 되나 라고 생각도 들긴 하지만, 앞으로 3Tier부분까지는 잘 정리해서 업로드하려고 합니다. 여건이 된다면... Docker도 해볼 예정입니다.
Log in