애플리케이션이 다른 게이트웨이 아래의 호스트를 수신하도록 허용

애플리케이션이 다른 게이트웨이 아래의 호스트를 수신하도록 허용

네트워크 구조

일반적인 대학 네트워크. 서로 다른 기숙사는 LAN을 통해 연결됩니다. 기숙사의 모든 호스트는 동일한 게이트웨이를 사용합니다. 다른 기숙사의 고유 IP를 이용하여 다른 기숙사의 호스트와 직접 통신할 수 있습니다.

내 쿼리

저는 Wine을 통해 Linux에서 Dota/Warcraft를 실행합니다. LAN 게임의 경우 Warcraft는 동일한 게이트웨이를 사용하는 호스트(제 경우에는 기숙사 방의 호스트)가 만든 서버만 자동으로 감지합니다. 다른 모든 사람들에게는 다음과 같은 도구가 있습니다.배틀 네트워크여기에서 호스팅 서버의 IP를 추가하고 워크래프트에 제대로 표시되도록 할 수 있습니다. 불행하게도 이 도구는 와인을 통해서는 작동하지 않습니다. 하지만 제 생각에는 개념이 단순해 보이고 쉽게 구현할 수 있다고 생각합니다. 포트 6112에서 특정 IP를 수신하려면 앱이 필요합니다(맞죠?). 도움/단서가 있나요?

답변1

첫째, 귀하는 다른 호텔 소유주와 직접 통신하지 않고 최소한 하나의 게이트웨이(2개일 가능성이 높음), 즉 귀하와 그들의 게이트웨이를 통해 간접적으로 통신합니다. 게이트웨이는 브로드캐스트 도메인의 끝을 표시합니다. 이는 브로드캐스트가 게이트웨이를 벗어나지 않음을 의미합니다. 그러나 게임, 특히 워크래프트에서는 서버를 알리기 위해 브로드캐스트를 사용합니다. 이것이 바로 다른 호스텔 소유자가 만든 서버를 볼 수 없는 이유입니다. 해당 서버의 방송을 수신할 수 없기 때문입니다.

이상하게도 이 문제를 직접 처리하지는 않았지만 추측할 수 있고 시도해 볼 수 있는 내용은 다음과 같습니다.

실제로 이 문제를 해결해주는 BattleLan 같은 것들이 있는데, 방송 메시지에는 "and에 오픈 게임이 있습니다"라는 형태의 정보가 포함되어 있는 것 같아요. 게임 클라이언트는 이 브로드캐스트를 수신한 후 서버에 접속하여 다른 문제를 처리합니다.

확인하려면 wireshark같은 도구를 사용하거나 tcpdump로컬 네트워크 인터페이스 카드의 브로드캐스트 트래픽을 수신하고 Warcraft 게임을 열도록 할 수 있습니다. 이 프로그램은 방송을 캡처하고 표시합니다. 이러한 패킷은 255.255.255.255 또는 서브넷의 가장 높은 IP로 전송될 가능성이 높으며 여전히 255로 끝날 수 있습니다. IP 패킷은 TCP가 아닌 UDP 세그먼트를 포함해야 하지만 여전히 포트 6112로 전송될 수 있습니다.

개념적으로 해야 할 일은 이러한 IP 브로드캐스트 패킷에서 UDP 세그먼트를 가져와 IP(유니캐스트)를 통해 서버의 브로드캐스트 도메인 외부에 있는 원격 클라이언트로 보내는 것입니다. 아시다시피 IP 유니캐스트는 게이트웨이를 넘어 원격 컴퓨터까지 전달됩니다.

Warcraft에 구현된 프로토콜의 복잡성에 따라 실제로 메시지를 캡처, 추출 및 전송해야 하거나 간단히 직접 만들 수도 있습니다.

이미 구현이 있는 것 같아요.여기. 그것을 적응/시도해보고 그것이 당신에게 어떤 영향을 미치는지 확인하십시오.

관련 정보