Как Minecraft находит серверы локальной сети?

826
Fixee

Клиент Minecraft (при входе в «многопользовательский» режим) говорит «Сканирование локальной сети на локальные серверы ...»

Что это делает?

Вот моя проблема: если компьютер A и компьютер B соединены вместе через Switch1, то компьютер A может запустить клиент minecraft и найти сервер minecraft на компьютере B. Но если компьютер C подключен через Switch2, C не может видеть сервер, работающий на B Однако C может пропинговать B, а C может подключиться к серверу в 10.1.10.143:64134, если этот IP / порт введен напрямую.

Таким образом, механизм, с помощью которого клиенты находят серверы, каким-то образом блокируется Switch2. Это UPnP? Или что-то подобное?

Это огромная боль, чтобы следить за меняющимися IP - адреса и номера портов меняющимися каждый раз при запуске сервера Minecraft.

0
Если switch1 и switch2 находятся в одной сети уровня 2 (т. Е. Не маршрутизируются), то это будет работать, поэтому я предполагаю, что вы маршрутизируете между этими двумя сетями. Вам нужно, чтобы эти двое были отдельными? Paul 7 лет назад 0
@Paul Оба находятся в одной локальной сети (да, уровень 2), но Switch2 каким-то образом фильтрует критически важный сервис. Я пытаюсь выяснить что. Возможно, HTTPMU не работает (что является основой для UPnP). Но я надеюсь, что кто-то здесь может рассказать мне, как Minecraft ищет свои серверы. Fixee 7 лет назад 0
Интересно - если коммутатор один и коммутатор два подключены на уровне 2, тогда не должно быть никакой фильтрации - этот тип проверки обычно происходит при маршрутизации. На уровне коммутации нас интересуют только MAC-адреса, тогда как upnp / ssdp работает на уровень многоадресной рассылки для многоадресной передачи Mac. Так что-нибудь в вашем коммутаторе блокирует многоадресный трафик? Paul 7 лет назад 0
@Paul Коммутатор является маршрутизатором Wi-Fi (где все компьютеры находятся в одной локальной сети в домене DHCP маршрутизатора). Это может быть какая-то фильтрация, но я не могу понять это. Нет явных настроек, которые я могу найти для широковещательной фильтрации UDP. Fixee 7 лет назад 0

1 ответ на вопрос

3
Ian M

Я сделал небольшую перехват пакетов на Wireshark, и, насколько я могу судить, он использует пакет IGMPv2, отправленный на менее используемый многоадресный адрес (224.0.2.60), и просит любого, кто запускает сервер Minecraft, отчитаться. Для этого используется «Отчет о членстве».

Для ботаников, вот полная информация о дампе пакетов:

Frame 10: 46 bytes on wire (368 bits), 46 bytes captured (368 bits) on interface 0 Interface id: 0 (\Device\NPF_) Encapsulation type: Ethernet (1) Arrival Time: Aug 25, 2016 22:25:55.171363000 US Mountain Standard Time [Time shift for this packet: 0.000000000 seconds] Epoch Time: 1472189155.171363000 seconds [Time delta from previous captured frame: 0.235431000 seconds] [Time delta from previous displayed frame: 0.235431000 seconds] [Time since reference or first frame: 1.234950000 seconds] Frame Number: 10 Frame Length: 46 bytes (368 bits) Capture Length: 46 bytes (368 bits) [Frame is marked: False] [Frame is ignored: False] [Protocols in frame: eth:ethertype:ip:igmp:igmp] [Coloring Rule Name: Routing] [Coloring Rule String: hsrp || eigrp || ospf || bgp || cdp || vrrp || carp || gvrp || igmp || ismp] Ethernet II, Src: Giga-Byt_91:9c:dc (fc:aa:14:91:9c:dc), Dst: IPv4mcast_02:3c (01:00:5e:00:02:3c) Destination: IPv4mcast_02:3c (01:00:5e:00:02:3c) Address: IPv4mcast_02:3c (01:00:5e:00:02:3c) .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default) .... ...1 .... .... .... .... = IG bit: Group address (multicast/broadcast) Source: Giga-Byt_91:9c:dc (fc:aa:14:91:9c:dc) Address: Giga-Byt_91:9c:dc (fc:aa:14:91:9c:dc) .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default) .... ...0 .... .... .... .... = IG bit: Individual address (unicast) Type: IPv4 (0x0800) Internet Protocol Version 4, Src: 192.168.1.46, Dst: 224.0.2.60 0100 .... = Version: 4 .... 0110 = Header Length: 24 bytes Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT) Total Length: 32 Identification: 0x4347 (17223) Flags: 0x00 0... .... = Reserved bit: Not set .0.. .... = Don't fragment: Not set ..0. .... = More fragments: Not set Fragment offset: 0 Time to live: 1 Protocol: IGMP (2) Header checksum: 0x0000 [validation disabled] [Good: False] [Bad: False] Source: 192.168.1.46 Destination: 224.0.2.60 [Source GeoIP: Unknown] [Destination GeoIP: Unknown] Options: (4 bytes), Router Alert Router Alert (4 bytes): Router shall examine packet (0) Type: 148 1... .... = Copy on fragmentation: Yes .00. .... = Class: Control (0) ...1 0100 = Number: Router Alert (20) Length: 4 Router Alert: Router shall examine packet (0) Internet Group Management Protocol [IGMP Version: 2] Type: Membership Report (0x16) Max Resp Time: 0.0 sec (0x00) Header checksum: 0x07c3 [correct] Multicast Address: 224.0.2.60 

Вот дамп необработанного пакета:

0000 01 00 5e 00 02 3c fc aa 14 91 9c dc 08 00 46 00 ..^..<........F. 0010 00 20 43 47 00 00 01 02 00 00 c0 a8 01 2e e0 00 . CG............ 0020 02 3c 94 04 00 00 16 00 07 c3 e0 00 02 3c .<...........< 

Поэтому, чтобы ответить на вашу проблему, возможно, на вашем маршрутизаторе отключено многоадресное вещание или IGMP отключен. Я не совсем знаком с флагами, но похоже, что в поле Options / Router Alert может быть что-то ... Возможно, указание маршрутизатору не пересылать многоадресную рассылку за пределы подсети, но это только предположение.

Похожие вопросы