0.계기
- '로컬서버'를 이용하는 것들은 모두 사용할 수 있다.
- 하지만 '외부에서, 혹은 모바일 데이터를 이용하여' 접속은 안된다.
이걸 해결하기 위해서 진짜 이것저것 찾아봤다.
VMware에서 우분투에서 apache2를 재설치 하고,
방화벽으로 원하는 포트를 열고, 방화벽 ufw를 아예 꺼보기도 하고,
iptables를 이용하여 포트포워딩도 설정해보고,
집 내부의 공유기 및 네트워크 환경을 파악해서 공유기 설정도 다 만져보고,
그리고 나서 공유기의 포트포워딩 기능도 다 세팅해봤다.
정말 포트포워딩과 외부접속 관련한 글만 100개 가까이 읽어본 것 같다.
하지만 외부접속 시도는 다 실패하고 단 한 번도 되지 않았다.
-VMware Ubuntu 개인서버 외부접속에 참고한 사이트들
https://halfmoonbearlog.tistory.com/83
https://jihyeong-ji99hy99.tistory.com/161
https://junklab.net/2018/02/sk-%EB%B8%8C%EB%A1%9C%EB%93%9C%EB%B0%B4%EB%93%9C-%ED%8F%AC%ED%8A%B8-%ED%8F%AC%EC%9B%8C%EB%94%A9/
https://developer-joe.tistory.com/112
내가 컴퓨터를 사용하는 운영체제에서 apache를 설치하여 실행해보기까지 했다.
-윈도우 apache 참고 사이트
https://mainia.tistory.com/5572
https://mainia.tistory.com/5490
그런데 웬걸,
- 컴퓨터를 사용하는 운영체제인 윈도우에서 apache서버를 가동
- 포트포워딩에서 윈도우 운영체제의 내부ip를 포트포워딩
'(내 공인 ip):(포트포워딩한 포트)'로 바로 외부접속이 가능해졌다.
- 여기서 포트포워딩과 외부접속을 위한 세팅 자체가 틀리지 않았다는 것을 확실히 알았다.
- 아래 사이트에서 VMware 우분투 개인서버 접속의 실마리를 얻을 수 있었다.
https://askubuntu.com/questions/1321075/cant-connect-to-apache-server-on-ubunu-virtual-machine-outside-the-host-machine
# 그렇다면 왜?
Q1.그렇다면 왜 항상 vmware를 이용한 서버를 외부접속까지 돌리려하면 항상 실패했던 걸까.
A1. 우선 네트워크의 구조에 대해 이해가 반드시 필요하다.
Q2. 모뎀 - 컴퓨터로 직통 연결된 상태다.
모뎀이 NAT라서 내가 외부 접속을 하려면, 모뎀을 Bridge모드로 변경한 뒤, VMware도 하나의 서버니까 VMware NAT로만 설정하면 될 줄 알았다.
시도해 보니, 여전히 개인서버 접속은 안될 뿐더러 공유기 설정 페이지 조차 접근이 안되서 모뎀을 초기화해버렸다.
((ㅡ.ㅡ))
A2.모뎀 == (다리같은 건축물로 생각)하여서
(외부) - (모뎀(Bridge)) - (VMware(NAT))형태로, Vmware가 독자적인 NAT, 네트워크 대역을 가지면 된다고 생각했었다.
(이는 틀린 이해다.)
https://developerin.tistory.com/18
이와 관련하여 이해하고 싶다면 이 블로그에서 제일 잘 설명하고 있는 것 같다.
1. 해결방법
1. '외부접속'을 하기 위해서는 가정 내 주어진 '공인ip'로만 접근이 가능하다.
2. 모뎀과 VMware에서 각각의 네트워크가 총 2개 존재한다.
3. 모뎀의 네트워크 설정은 NAT이며, VMware의 설정은 NAT다. (NAT를 이해하고 오자)
https://developerin.tistory.com/18
4. NAT는 자체 DHCP서버를 갖는다.
4-1. Windows 컴퓨터에는 자연스레 모뎀과 동일한 네트워크 대역의 ip를 갖게 된다.
4-2. VMware은 기본적으로 프로그램 내에 자체적인 독립적인 NAT로 설정되어 있다.
구조는 아래 그림과 같다.

5. 192.168.33.xxx면, 모뎀과 같은 네트워크 대역을 공유하면서 포트포워딩이 가능해진다.
6. 하지만 VMware는 192.168.99.xxx로 동일한 네트워크 대역이 아니기 때문에!! 외부접속이 절대 불가능해진다.
7. 이 문제를 해결하기 위한 구조는 다음과 같다.

8. VMware의 네트워크 대역을 모뎀과 동일하게 만들어서 모뎀이 존재하는 네트워크 대역의 일부로 만들어 버리면 된다.
(VMnet0, VMnet1, VMnet8이 존재하여 헷갈릴 수 있는데, cmd - ipconfig으로 확인하고 해당하는 VMnet8을 Bridge모드로 변경하였다.)
(아래 이미지는 기존 VMware 설정)

(아래 이미지는 외부접속을 위한 세팅 변경 설정)

9. 이후 VMware를 켜서 ubuntu apache 서버를 실행시키고, 공유기 설정페이지에서 포트포워딩 등록을 해주면 외부접속이 가능해진다.