본문 바로가기

게임/아크 서바이벌 이볼브드

[아크 서바이벌 이볼브드 / Ark Survival Evolved] 아크 서바이벌 서버 매니저 서버 여행 오류

문제 상황

 

서버 1과 서버 2를 연동하고(Cluster) 싶으나 연동이 되지 않음.

아크 서바이벌 서버 매니저로 서버를 열면 '유효성 - Available No loopback'이 나옴.

서버에 들어온 사람은 서버 1에서 서버 2를 갈 수 있으나 서버를 연 사람은 갈 수 없음 (서버 목록에 안 뜸).

 

+ 서버가 유효성 - LAN only이거나 유효한데 오벨리스크에서 뜨지 않음

 


 

급하면 맨 아래 결론만 봐도 좋으나 여러 개념을 잡고 가는 것이 이해에는 도움이 될 것이다.

 


 

 

필자는 랜서버로 서버에 접속을 한다. 일단 문제 상황을 알기 위해 포트포워딩과 DMZ의 개념을 잡았다.

 

 

 

 

포트포워딩

 

포트포워딩은 외부에서 내 PC로 접속을 할 때 원하는 포트로 접속할 수 있도록 열어주는 것이다.

즉, 원하는 차선의 길을 열어준 셈.

 

 

 

DMZ

 

DMZ는 모든 포트를 다 개방한다. 외부에서 내 PC로 접속을 할 때 모든 포트로 접속이 가능하게 만들어 준다는 것이다.

즉, 모든 차선의 길을 열어준 셈.

참고로 DMZ는 IP 기준으로 해당 IP로 가는 모든 포트를 다 여는 것이고,

Super DMZ는 맥 주소를 기준으로 해당 맥 주소로 가는 모든 포트를 다 여는 것이다.

DMZ의 경우 포트포워딩으로 연 포트는 제외하고 모든 포트를 연다. 1순위는 포트포워딩이고 후순위가 DMZ이다.

즉, DMZ를 개방을 하면 포트포워딩이 의미없게 된다. (어차피 포트포워딩을 하지 않아도 모든 포트가 열리므로)

 

아크는 7777, 27015, 32330 포트만 사용하므로 포트포워딩으로 여는 것이 더 효율적이다.

그러나, 포트포워딩으로 열었을 때 문제가 있다. 바로 지금 문제의 핵심인 loopback이다.

 

 

 

Loopback

 

루프백에 대해서 먼저 알아보자. 루프백이란 쉽게 말하면 내 차고(PC)에서 자동차가 나간 뒤(IP를 찾는 행위) 다시 내 차고(PC)로 돌아오는 것을 가능하게 하는 것을 말한다.

현재 직면한 문제는 서버를 연 사람은 서버 1에서 서버 2가 뜨지 않는다는 점이다.

이 문제는 루프백과 관련이 있다.

 

서버를 연 사람을 A, 서버에 들어온 사람을 B라고 하자.

B에서 나온 자동차는 A의 차고로 갈 수 있다. 왜냐하면 A의 주소를 알고 있기 때문이다. (같은 랜이므로)

그러나 A에서 나온 자동차가 A의 차고로 갈 수 있을까? 정답은 아니다.

왜냐하면 해당 문제를 가지고 있는 경우는 루프백이 안되는 경우이기 때문이다.

A에서 나온 자동차는 A의 주소를 모른다. (루프백이 안되므로 자신의 차고로 돌아올 수 없음)

즉, A는 자신의 차고의 주소를 모르기 때문에 도로를 맴돌 것이다. -> 즉, 서버 2를 찾을 수 없다.

 

여기서 중요한 점은 루프백을 제공을 안하는 모뎀이 있다는 것이다. 필자는 필자의 모뎀이 루프백을 제공 안 한다고 생각 중이다. (아직 확인은 하지 못했다. 확인 방법을 모르겠다. 고객센터에 전화를 하던지 해야 할 것 같다.)

그렇다면 이 문제를 어떻게 해결해야 할까?

 

 

 


 

 

해결방안 

 

사실 필자도 해당 문제에 대해 고민 중이다. 그러나 문제를 파악하였으므로 어떻게든 문제를 해결할 수 있지 않을까?

일단 내가 생각하는 문제에 대한 해결 방법은 이것이다.

 

1. 루프백을 제공하는 모뎀으로 교체한다.

-> 가장 근본적인 루프백 문제를 고치는 것이므로 가능성이 있다. 그러나 번거롭고 비용이 들 수 있다는 단점이 있다.

 

2. 서버를 다른 컴퓨터에서 연다 (예) 노트북)

-> 플레이 하는 컴퓨터 2대를 제외한 다른 컴퓨터나 노트북에서 서버를 연다. 그렇게 되면 A와 B 모두 차고의 주소를 알 수 있으므로 자동차를 주차시킬 수 있다. 그러나, 여분 노트북이 없는 경우 배보다 배꼽이 더 큰 상황이 된다.

 

필자는 여분 노트북이 있어 2번으로 진행하기로 했다. 

 

 

 

시도

 

1) SuperDMZ로 노트북의 IP를 공인 IP로 바꿔서 실행한다.

이 경우 유효성이 사용가능으로 뜬다. 그러나 아크 자체에서 서버 찾기 -> LAN으로 했을 때 아일랜드가 뜨지 않는다.

즉, 아일랜드, 라그나로크 서버 둘 다 서버 찾기 창에서 뜨지 않으므로 접속이 불가하다.

 

2) DMZ 비활성화 -> 즉, 노트북의 IP는 사설IP가 된다.

이 경우 유효성은 LAN only로 뜬다. 아크 자체에서 서버 찾기 -> LAN으로 했을 때 아일랜드, 라그나로크 두 서버가 모두 뜨지만 아일랜드 오벨리스크에서 '다른 서버로 여행'을 눌렀을 때 아무런 서버도 뜨지 않는다.

 

나는 이 문제에서 공인ip와 사설ip의 차이점을 알아야 해결 방안을 모색할 수 있다고 생각했다.

 

 


 

 

IP

 

우선 공인 ip, 사설ip를 알기 전에 ip에 대해서 가볍게 알아볼 필요가 있다. 

보통의 가정집에서는 하나에 공유기에 컴퓨터, 노트북, 휴대폰 등을 연결하여 사용한다.

이때 가지게 되는 ip의 종류가 공인ip, 사설ip로 나뉘게 된다.

 

 

 

공인 IP(외부 IP)

 

쉽게 말해 공인IP는 집 주소이다. 엄마가 되었건 아빠가 되었건 우리집에 살고 있는 나의 가족 구성원들은 모두 집 주소가 같을 것이다. 즉, 공인 IP는 공유기나 공유기에 연결된 장치(컴퓨터, 노트북, 휴대폰 등)나 같은 공인 IP를 가진다. 하지만, 여기서 문제가 발생한다.

 

만약, 사람 얼굴을 보지 못하는 상황에서 A라는 집 주소에 사는 철수를 만나고 싶다. 그러나 집 주소만 알 수 있으므로 나는 철수를 만나기 힘들다. 왜냐하면 사람의 얼굴을 볼 수 없기 때문이다.

공유기에 컴퓨터, 노트북, 휴대폰이 연결되어 있다고 하자. 나는 외부에서 우리집 컴퓨터에 접속을 하고 싶어한다. 그러나, 공유기, 컴퓨터, 노트북, 휴대폰의 (공인)ip가 전부 같으므로 컴퓨터에 접속하기 어려워진다. 이러한 문제를 해결하기 위해 나온 것이 사설 IP이다. 

 

 

 

사설 IP(내부 IP)

 

사설IP는 각 장치마다 IP가 다르게 설정 되어있는 것이다. 흔히, 192로 시작하곤 한다. 이렇게 되면 컴퓨터, 노트북, 휴대폰의 IP가 전부 달라지므로 외부에서 컴퓨터로 접속할 수 있게 된다. (컴퓨터의 IP가 다른 장치와 같지 않기 때문)

 

 

 

접속 과정

 

https://m.blog.naver.com/seoulworkshop/221265052717

 

포트포워딩의 개념 및 공유기 설정 방법

지난번 포스팅에서 #OctoPrint 세팅 과정을 공유드렸습니다. 지난번 포스팅에서는 OctoPrint 가 설치된...

blog.naver.com

접속 과정에 대하여 찾아보다 발견한 블로그이다. 설명이 잘 되어있으니 참고 바란다.

 

즉, 각각의 데이터는 포트라는 출입문을 통해서 들어오는데 포트포워딩을 하지 않을 경우 이 포트가 정리가 되지 않아 문제가 발생한다.

내가 사과를 전문으로 파는 가게에 가서 사과를 달라고 하면 주인은 당황할 것이다. 왜냐하면 사과를 전문으로 파는 가게이기 때문에 꿀사과, 아오리 사과 등 많은 종류가 있을 것이기 때문이다. 

그런데 만약에 가게에서 '사과 1개 주세요' 하면 무조건 꿀사과 1개를 주는 규칙이 있다고 하자. 그렇게 되면 주인은 당황하지 않고 사과를 팔 수 있을 것이다.

내가 '사과 1개 주세요' 하는 것이 바로 외부 포트이고 꿀사과 1개를 주는 게 내부 포트이다.

그리고 '사과 1개 주세요'하면 꿀사과 1개를 주도록 하는 규칙이 바로 포트포워딩이다.

 

이 대목에서 나는 문제를 발견할 수 있었다. 

 

 


 

포트포워딩에서 찾은 문제

 

원래 컴퓨터에서 서버를 열다가 루프백 때문에 노트북에서 서버를 여는 것을 시도했다. 그러나, 이상한 점이 있었다. A컴퓨터에서 서버를 열었을 때는 A컴퓨터에서 접속이 안되지만 (루프백이 안되기 때문) B컴퓨터에서는 접속이 됐었는데, 노트북에서 서버를 여니 컴퓨터 2대 모두 접속이 되지 않는 것이었다. 바로 이 문제가 포트와 관련된 문제였다.

 

A컴퓨터에서 열다가 노트북으로 넘어왔기 때문에 같은 포트(7777, 27015, 32331 등)에 대해서 다른 ip가 포트포워딩이 되어있었다.

마치, 내가 사과 전문점에 가서 '사과 1개 주세요' 했더니 꿀사과 1개랑 아오리사과 1개를 주는 거랑 다를 게 없는 것이었다. 포트포워딩이 하는 역할이 포트들이 겹치지 않게 정리를 해주는 역할이었는데 (동일 포트에 여러 ip가 있을 경우 어떤 것을 택해야 할 지 모르므로 오류가 발생 -> 이것을 막기 위해 포트포워딩) 포트포워딩을 같은 외부 포트, 내부 포트로 설정해서 포트포워딩의 의미를 없애버린 것이었다.

 

그래서 포트 하나당 ip 하나를 배치 하니 비로소 오벨리스크에서 라그나로크 서버를 볼 수 있었다. (DMZ 비활성화 상태이며 노트북(서버 여는 역할)의 ip에는 사설 ip가 할당되어있다.)

 

 


 

결론

 

1. '유효성 - Available No loopback'이 뜸

 

: 서버를 게임에 접속하지 않는 노트북(컴퓨터)로 열거나(서버여는 노트북과 접속하는 컴퓨터가 다른 네트워크에 접속해 있어야 함. 예를 들면 와이파이가 A, A_5G, A_Mesh 세 개가 있다면 서버 노트북은 A, 접속하는 컴퓨터는 A_5G, 이런 식으로.

 

 

2. 유효성이 LAN only이거나 유효한데도 오벨리스크에 뜨지 않음

 

:포트포워딩을 할 때 같은 포트에 IP가 2개 이상인 지 확인한다.

예) 외부 포트 7777 | 내부 포트 7777 | TCP/UDP | IP 192.XXX.XXX.XXX

      외부 포트 7777 | 내부 포트 7777 | TCP/UDP | IP 192.OOO.OOO.OOO

이렇게 포트에 IP가 2개 이상 있으면 안됨. 둘 중 하나를 삭제해야 함.(포트 하나에는 IP 하나만 있어야 함.)

 

 

 

일주일동안 열심히 찾아본 결과, 필자는 드디어 라그나로크로 갈 수 있게 되었다. 이 글을 읽는 사람도 부디 성공할 수 있기를. 혹여나 궁금한 점이 있다면 댓글을 달아주길 바란다. 답해줄 수 있다면 답해주겠다.