최근에 친구와 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 구성과 관련이있을 수 있습니까?