개발모음집

vmware 가상서버 포트포워딩 본문

Benchmark

vmware 가상서버 포트포워딩

void 2017. 10. 15. 09:00

상황

집에서 노트북 두 대를 가지고 웹서버 벤치마크를 뜨려했다.

서버 컴퓨터에 vmware를 이용해 가상os 설치후 웹서버를 설치했다.

서버 컴퓨터에서 가상 os의 웹서버에 접속을 하면 접속이 된다.

하지만 (방화벽이 꺼져있음에도) 클라이언트 컴퓨터에서 서버 컴퓨터에 접속할 수 없었다.


알고보니 포트포워딩이라는 것을 해줘야한다.

포트포워딩

포트포워딩의 필요

보통의 사람들은 포트포워딩을 모르고 살아도 전혀 문제가 없다. 하지만 프로그래밍에 관심을 가지게 되면서 언젠가 집에 있는 컴퓨터로 서버를 운영해보고 싶을 것이고, 그 때 포트포워딩이 필요하다. 만약 집에 공유기가 없고 외부 ip가 그대로 서버로 사용하는 컴퓨터의 ip 주소가 된다면, 포트포워딩이 굳이 필요없을지도 모른다. 하지만 보안적인 문제나 현재 공유기를 사용하지 않는 집이 거의 없다는 것을 생각해보면 포트포워딩은 거의 필수이다.


포트포워딩이란


외부에서 서버쪽으로 데이터를 받고 싶다는 신호를 보내기 위해서는 ip 주소말고도 고려해야 하는 것이 바로 포트이다. 포트는 ip 주소라는 벽에 있는 문과 같은 것인데, 이러한 문이 ip 주소마다 수만개가 있다. 일부 특정 포트는 각 포트를 활용하는 역할이 부여되어있고, 나머지의 포트는 특별한 역할이 없다.

만약 외부에서 1.231.XXX.XXX라는 서버 쪽 ip에 접속하려고 한다. 보통의 경우 80번 포트로 자동으로 접근한다. 그런데 1.231.XXX.XXX가 서버로 사용되는 컴퓨터로 바로 연결되는 것이 아니라, 공유기를 거쳐서 연결되는 경우를 생각해보자. 공유기에는 컴퓨터, tv, 핸드폰 등 유무선으로 여러 기기들이 연결되어 있다. 공유기로 부터 할당받은 서버컴퓨터의 ip를 192.168.0.2라고 하자.

외부에서 1.231.XXX.XXX의 특정 포트로 접속했을 때, 192.168.0.2로 연결시켜주는 것을 포트포워딩이라고 한다. 만약 포트포워딩 설정이 되어있지 않다면? 외부로부터의 접근은 공유기에서 막혀버릴 것이다.

VMware의 Bridged vs Host-only vs NAT 차이점



Host-Only VMware 에서 Virtual Adapter로 vmnet1 을 사용한다.
VMware 안에서 구성된 VM들 끼리만 통신한다. 즉 VM은 실제PC (호스트 컴퓨터)를 넘어서 통신할 수 없다.
인터넷 연결이 필요하지 않고, 소프트웨어 테스트를 위해 사용하는 경우 좋다.








NAT VMware 에서 Virtual Adapter로 vmnet8 을 사용한다.
공유기가 실제 PC에게 IP를 준다. 그리고 실제 PC가 VM에게 IP를 주면서,
VMware 가 자체적으로 내부 네트워크 대역 할당 및 자체 DHCP 서버를 띄워 통신한다.
즉 vmnet8 어댑터를 사용하는 모든 VM은 호스트와 함께 개인 네트워크를 형성한다.

VMware Network Utility 에 의해 제공되는 NAT 설정을 통해 포트 포워딩 함으로써 특정 PC에서 VM들에 액세스 할 수 있다.








Bridge VMware 에서 Virtual Adapter로 vmnet0 을 사용한다.
공유기가 실제 PC에게 IP를 줄 뿐만 아니라, 공유기가 VM에게도 IP를 준다. 공유기는 VM도 별개의 실제 PC로 보기 때문에
개별적으로 IP를 할당 한다.

즉 VM은 실제 PC가 물리적 네트워크에서 동작하는 것 처럼 동작한다. 






출처: http://klero.tistory.com/entry/VMware의-Bridged-vs-Host-only-vs-NAT-차이점 [Klero]


우선 NAT방식으로는 되지도 않았고,

위의 개념을 알고는 브릿지 방법으로 vmware를 설정해야한다고 생각했다.

찾아보진 않았지만, NAT같은 경우 한 번 거쳐가는 것이기때문에 테스트하는데 영향이 끼칠 것이라고 생각했기 때문이다.


브릿지 설정을 어떻게 하는지 알아보았다.


VMWare는 가상머신(Virtual Machine)을 생성하고 구동할 수 있게 해줍니다.

VMWare에서는 몇 가지 네트워크 설정을 제공합니다.

VMWare가 제공하는 몇 가지 네트워크 모드와 함께 브릿지(Bridge) 네트워크 설정을 알아보겠습니다.


1. VMWare 네트워크 모드

가장 많이 사용되는 방법은 일반적으로 NAT(Network Address Translation)입니다.

NAT는 하나의 공인 IP를 여러 장비가 활용할 수 있도록 해줍니다.

네트워크 패킷에는 목적지의 IP와 포트는 물론이고 송신 측의 IP와 포트 역시 포함이 됩니다.

NAT는 192.168.x.y와 같이 LAN 내부에서 사용하는 사설 IP가 공인 IP를 통해 통신할 수 있게 합니다.

사설 IP와 포트의 요청을 공인 IP와 포트로 매핑해서 처리되게 해주는 것입니다.

예를 들면 송신 측 192.168.1.35:5000이 전송하면 공인 IP와 포트(ex. ww.xx.yy.zz:43210)로 변환하는 것입니다.

역으로 요청에 대한 응답이 ww.xx.yy.zz:43210로 오면 이것을 192.168.1.35:5000으로 보내줍니다.

그리고 Bridge 모드는 Host OS의 네트워크 어댑터와 직접 연결된 것처럼 통신하는 방식입니다.

Host OS가 공유기와 연결되어 있다면 Bridge 모드로 설정된 VM 역시 공유기의 IP를 제공받게 됩니다.

Host OS와 동등한 단계의 네트워크 위치를 가질 수 있게 됩니다.

마지막으로 Host Only 방식은 내부 네트워크만 가능한 방식으로 외부와의 연결은 불가능합니다.


2. VMWare 브릿지(Bridge) 네트워크 설정

브릿지 모드를 설정하고 VM에 적용하는 방법은 다음과 같습니다.

메뉴에 있는 Edit -> Virtual Network Editor를 실행합니다.

아래와 같은 네트워크 설정 페이지를 볼 수 있습니다.

화면에서 Host-only 방식과 NAT는 확인할 수 있지만 Bridge는 보이지 않습니다.

우측 하단의 Help 버튼 위에 보이는 Change Settings를 누릅니다.

이제 Bridged라는 타입이 새롭게 표시되는 것을 확인할 수 있습니다.

외부 네트워크가 직접적으로 연결하기 위해서 네트워크 어댑터를 선택합니다.

공유기와 연결된 네트워크 카드를 선택하면 됩니다.



내 노트북같은 경우 "Realtek PCIe GBE Family Controller Driver"였다.


** 3번 보기전에 참고

만약 vm웨어에 리눅스가 켜져있다면 완전히 종료후 설정을 바꿔야 bridge로 바꿀 수 있다.

리눅스에서 ifconfig를 누르면 inet이 나온다. 그 주소를 입력해주면 됨

이해 안가면 아래보고 다시 봐야함



3. Bridge 네트워크 적용해서 VM 생성

가상머신을 생성할 때 아래와 같이 하드웨어 설정이 가능합니다.


Network Adapter 부분의 네트워크 연결을 Bridged로 선택하면 됩니다.

아래의 Replicate physical network connection state는 선택하지 않아도 됩니다.



출처: http://psychoria.tistory.com/484 [냉정과 열정사이]


포트포워딩 설정하기

밑의 사진들에서 192.168.1.x로 시작하는데 192.168.0.x라고 생각하고 보시면 됩니다.

  1. 먼저 공유기의 설정창으로 이동한다. 일반적으로 192.168.0.1로 접근하면 된다. 


    enter image description here



  2. 고급설정 -> NAT/라우터 관리 -> 포트포워드 설정



  3. 서버로 설정할 컴퓨터의 ip 주소(192.168.0.x)를 입력, 규칙이름은 아무렇게나 입력, 프로토콜 TCP, 외부 포트 80~80 내부 포트 80~80으로 설정한다. 즉, 외부에서 1.231.xxx.xxx의 80번 포트로 접속하면 192.168.0.x로 연결시켜준다는 의미이다. 


    enter image description here



  4. 주소창에 1.231.xxx.xxx를 입력하면 웹 서버로 접속할 수 있는 것을 확인할 수 있다. 만약 포트를 80이 아닌 8080으로 포트포워딩 했다면 명시적으로 1.231.xxx.xxx:8080을 적어주어야 한다. 1.231.xxx.xxx는 :80이 생략된 것 뿐이다.



출처: http://programmerchoo.tistory.com/2 [programmerchoo]




이렇게 해서 vmware를 브릿지 방식으로 변경하였다.


그리고 가상서버에 ifconfig를 입력하여 inet을 알 수 있다.


그럼 IP주소가 변경된 것을 알 수 있다.


클라이언트 컴퓨터에서 바뀐 IP로 들어가면 접속이 되는 것을 확인할 수 있다. 




에러**

스냅샷을 찍고 이리 저리 움직이다가 갑자기 브릿지방식이 안되면서

ip주소가 할당이 되지 않는 !! 에러가 났다.

그래서 다시 처음부터 vmware의 네트워크설정을 해줬더니

cannot change network to bridged there are no un-bridged host network adapters 에러가 발생했고,

출처: 블로그를 따라하고, 재부팅했더니 다시 원래대로 브릿지방식을 설정할 수 있었다.



네트워크 설정 들어가서, 나는 랜선으로 연결했으니 이더넷에 들어간다.



속성 누르고


(지금 나는 설치된 상태라 보이는데

원래는 VMWARE BRIDGE PROTOCOL 이 없어야 한다)


설치 누른다



서비스누르고 추가누른다음 VMWARE 브릿지 프로토콜 설치하기 하고

확인누르고

재부팅 ㄱㄱ 하고 VMWARE에서 네트워크 브릿지로 해주면

된다.