24.09.09 10:01 작성
·
37
·
수정됨
0
루키스님 안녕하세요?
이 강의 활용해서 파트7의 서버를 AWS에 올리는 연습을 해보려고 하는데 잘 안돼서 문의 드립니다.
일단 환경은 아래와 같이 만들었습니다
로컬 컴퓨터에서 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);
그러면 드리고 싶은 질문이
제가 성공했던 IPAddress.Any 방식으로 리스닝 해도 괜찮을까요?
(AWS로 뭔가 서비스하는 수준으로 하고 싶다고 하면)
IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, port);
강의에서 쓰셨던 아래 코드 방식을 유지할 할 수 있는 방식이 있을까요?
제가 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
2024. 09. 09. 10:53
aws에서 할땐 서버를 private ip로 구동하고 외부에서 public ip로 접속하면 잘됩니다. 얼마전 m2때도 했어요. 안된다면 서버 windows방화벽을 다 꺼버리시고, ec2 설정에서 in out 네트워크 트래픽 규칙을 허용하게 열어줘야합니다