인프런 커뮤니티 질문&답변

mhyim님의 프로필 이미지
mhyim

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] 번외편: AWS로 시작하는 서버 운영

Windows 실습

파트7의 게임서버를 AWS에 올리는 법 문의 드립니다.

작성

·

44

·

수정됨

0

루키스님 안녕하세요?

이 강의 활용해서 파트7의 서버를 AWS에 올리는 연습을 해보려고 하는데 잘 안돼서 문의 드립니다.

 

일단 환경은 아래와 같이 만들었습니다

image.png

로컬 컴퓨터에서 52.1.1.1로 핑까지는 잘 뚫리는데,

게임 서버의 아래 코드가 private IP를 들고 있는 상태로 서버가 구동이 되는 것을 확인하였습니다.

// 서버 Program.cs
string host = Dns.GetHostName();
IPHostEntry ipHost = Dns.GetHostEntry(host);

// ipHost.AddressList는 총 두개의 IP를 가지고 있음
// 1번은 Ipv6 16진수 Ip
// 2번은 Ipv4 172.1.1.1
IPAddress ipAddr = ipHost.AddressList[0];
IPEndPoint endPoint = new IPEndPoint(ipAddr, 7777);

 

첫 번째 시도는 ipHost.AddressList[1];로 바꿔보았는데 클라이언트 접속이 안됐습니다.

// private IPv4인 172.1.1.1로 리스닝.. => 클라이언트가 못 찾음
IPAddress ipAddr = ipHost.AddressList[1];

 

두 번째 시도는 ipAddr를 public IP로 하드코딩 하는거였는데 없는 Ip라면서 크래쉬 나는 것을 확인했습니다.

// 서버가 52.1.1.1 못 찾겠다고 크래쉬
string ipAddressString = "52.1.1.1";
IPAddress ipAddress = IPAddress.Parse(ipAddressString);
IPEndPoint endPoint = new IPEndPoint(ipAddress, 7777);

 

그래서 좀 찾아보니까 아래처럼 하니까 이건 또 접속이 되는 것을 확인했습니다.

// 서버<--> 클라이언트 접속 성공
// 0.0.0.0으로 리스닝 되고 크래쉬도 안남
IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, port);

 

그러면 드리고 싶은 질문이

  1. 제가 성공했던 IPAddress.Any 방식으로 리스닝 해도 괜찮을까요?

(AWS로 뭔가 서비스하는 수준으로 하고 싶다고 하면)

IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, port);

 

  1. 강의에서 쓰셨던 아래 코드 방식을 유지할 할 수 있는 방식이 있을까요?

    제가 public IP/private IP 사용 간에 놓친 부분이 있는지 궁금합니다.

     

     

    IPAddress ipAddr = ipHost.AddressList[0];
    // 또는 IPAddress ipAddr = ipHost.AddressList[1];
    // 또는 string ipAddressString = "52.1.1.1";
    IPEndPoint endPoint = new IPEndPoint(ipAddr, 7777);

 

 

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

aws에서 할땐 서버를 private ip로 구동하고 외부에서 public ip로 접속하면 잘됩니다. 얼마전 m2때도 했어요. 안된다면 서버 windows방화벽을 다 꺼버리시고, ec2 설정에서 in out 네트워크 트래픽 규칙을 허용하게 열어줘야합니다

mhyim님의 프로필 이미지
mhyim

작성한 질문수

질문하기