UDP 소켓을 VPN 인터페이스에 바인딩하지 않는 게임 프로세스


1

최근에 친구와 LAN 게임을하기위한 VPN을 설정했습니다. Linux 서버가 실행 중이고 pptpd운영 체제에 내장 된 VPN 클라이언트를 사용하여 Windows에서 성공적으로 연결할 수있었습니다. VPN이 클라이언트 (브로드 캐스트 메시지 포함)간에 정보를 올바르게 라우팅하는지 테스트했습니다. 시스템에서 가장 높은 우선 순위가 부여 된 각 클라이언트에 가상 네트워크 어댑터를 작성합니다. 즉, 모든 네트워크 연결은 기본적으로 (예 : 웹 브라우저)이를 사용하며 이름 쿼리를 수행 할 때 먼저 반환됩니다 (예 : getaddrinfo()gethostbyname()). 내가 겪고있는 문제는 우리가 놀고 싶은 특정 게임이 UDP 소켓을 올바른 네트워크 인터페이스에 바인딩하지 않는다는 것입니다. 대신 게임 프로세스는 원래 네트워크 연결의 인터페이스 (Windows의 eth0또는에 해당)에 명시 적으로 바인딩됩니다 wlan0. VPN 어댑터 (Windows에 해당 ppp0) 에 바인딩하고 싶습니다 .

이 특정 게임을 EA Games에서 Battle For Middle-Earth라고합니다. LAN 멀티 플레이어 로비에서 게임은 소켓을 UDP 포트 8086에 바인딩합니다.이 포트를 사용하여 브로드 캐스트 데이터 그램을 보내 다른 피어에게 경고하고 다른 피어로부터 경고를받습니다. 8086을 사용할 수 없으면 다음 순차 포트에 바인드됩니다. 이러한 이유로 동일한 브로드 캐스트 메시지의 사본을 포트 범위 (예 : 8086..8095)로 보냅니다. 게임이 시작되면 피어는 브로드 캐스트와 달리 지시 된 데이터 그램을 서로에게 보내기 시작합니다. 현재로서는 게임 트래픽이 VPN에 도달하지 않습니다. 다음은 네트워크 (VPN 서버에 의해 할당 된 )와 반대로 네트워크에 netstat연결된 게임 10.0.1.0/24(홈 라우터에 의해 할당 된)을 보여주는 출력입니다 192.168.0.0/24.

UDP    10.0.1.18:137          *:*
UDP    10.0.1.18:138          *:*
UDP    10.0.1.18:1900         *:*
UDP    10.0.1.18:8086         *:*   this is BFME
UDP    10.0.1.18:51955        *:*
UDP    127.0.0.1:1900         *:*
UDP    127.0.0.1:51956        *:*
UDP    192.168.0.100:137      *:*
UDP    192.168.0.100:138      *:*
UDP    192.168.0.100:1900     *:*
UDP    192.168.0.100:51954    *:*

게임이 어떤 인터페이스를 사용하는지 선택하는 것은 분명합니다. 다른 피어의 주소를 결정하기 위해 사용자 LAN을 검색 메시지로 넘겨야한다는 점을 고려하십시오. 그러나 VPN이 인터넷 연결을 통해 LAN을 제공하도록되어 있지 않습니까? 게임이 우선 순위가 높은 VPN 인터페이스가 아닌 이전 인터페이스를 선택하는 이유는 무엇입니까? Windows가 VPN 네트워크를 LAN으로 구성 할 수있게하는 모호한 설정이 있어야한다고 생각합니다. 그러나 나는 그것을 찾는 데 가장 힘든 시간을 보내고 있습니다.

올바른 방향으로 도움을 주시면 감사하겠습니다!

나중에 생각할 때 : 게임이 NetBIOS 기능을 사용하고 있음을 알고 있습니다 (함수 가져 오기 목록을 덤프했습니다). 또한 (역사적으로) 동료 중 하나가 동일한 작업 그룹의 구성원 이 아닌 경우 무시됩니다. 내가 직면 한 문제가 네트워크의 NetBIOS 구성과 관련이있을 수 있습니까?

답변:


0

문제의 게임에 특정한 구성 옵션을 사용 하여이 문제를 해결할 수있었습니다 (작은 운이없는 우연히 우연히 발견되었습니다). 이를 통해 게임에서 사용할 인터페이스를 직접 지정할 수있었습니다. Options.ini파일에 다음 항목을 추가하면 됩니다 (위치 %USERPROFILE%\AppData\Roaming\My Battle For Middle-Earth Files\).

IPAddress = x.x.x.x

x.x.x.x게임 프로세스에서 사용하려는 인터페이스의 IPv4 주소의 점으로 구분 된 십진수 표현은 어디에 있습니까 ?

게임이 우선 순위가 높은 가상 인터페이스를 무시하는 이유를 정확히 알지 못했기 때문에 게임 엔지니어링의 디자인 결함이 아니라 Windows에서 구성 할 수있는 것이 아니라는 결론을 내 렸습니다.

또한 pptpd더 나은 링크 계층 지원을 제공했기 때문에 OpenVPN을 사용하도록 전환 했습니다 (즉, 브로드 캐스트 프레임을보다 잘 처리하기 위해 서버의 가상 어댑터를 연결할 수 있음).


0

일부 컴퓨터에서도 도움 될 수 있습니다. 작동 여부는 완전히 무작위로 보이지만 네트워크를 전환 할 때마다 구성 파일을 편집하는 것보다 서비스 설치가 여전히 쉽습니다.)

BFME가 네트워킹을 처리하는 방식에 문제가 생겨서 슬프게도 개발자가 더 이상 존재하지 않으며 오픈 소스가 아니므로 알 수 없습니다.


슈퍼 유저에 오신 것을 환영합니다. 외부 링크가 끊어 지거나 사용할 수없는 경우 답변이 유용하지 않습니다. 답변에 필수 정보를 포함시키고 귀속 및 추가 자료를 보려면 링크를 사용하십시오. 감사.
fixer1234
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.