2016-10-15 1 views
3

Ich bin Windows 10 ausgeführt. Ich hatte vor Kurzem ein Problem mit meinem Computer diagnostiziert, bei dem jedes an ein Multicast-Ziel gesendete Paket über die Loopback-Schnittstelle und nicht über die 'Standard'-Schnittstelle gesendet wird (siehe meine Abenteuer here).UDP-Paket an ein Multicast-Ziel gesendet wird über die Loopback-Schnittstelle gesendet

Beispielcode:

import socket 
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
s.sendto(b"herpyderp", ('224.0.0.251', 5353)) 

Das Paket wird nur auf die lokale Schleife gesehen (verwendet Microsoft Message Analyzer sniff).

Ich habe versucht, die Routing-Tabelle über route print Inspektion und bekam die folgende Ausgabe:

IPv4 Route Table 
=========================================================================== 
Active Routes: 
Network Destination  Netmask   Gateway  Interface Metric 
      0.0.0.0   0.0.0.0  10.0.10.138  10.0.10.30  35 
     10.0.10.0 255.255.255.0   On-link  10.0.10.30 291 
     10.0.10.30 255.255.255.255   On-link  10.0.10.30 291 
     10.0.10.255 255.255.255.255   On-link  10.0.10.30 291 
     127.0.0.0  255.0.0.0   On-link   127.0.0.1 331 
     127.0.0.1 255.255.255.255   On-link   127.0.0.1 331 
    127.255.255.255 255.255.255.255   On-link   127.0.0.1 331 
     224.0.0.0  240.0.0.0   On-link   127.0.0.1 331 
     224.0.0.0  240.0.0.0   On-link  10.0.10.30 291 
    255.255.255.255 255.255.255.255   On-link   127.0.0.1 331 
    255.255.255.255 255.255.255.255   On-link  10.0.10.30 291 
=========================================================================== 

Sie werden die Metrik beachten gibt sollte das Paket durch meine ‚default‘ Schnittstelle gesendet werden.

Ich habe dann versucht, über die PowershellGet-NetIPInterface Cmdlets die Schnittstellenmetrik Inspektion (als here impliziert), und bekam die folgende Ausgabe:

ifIndex InterfaceAlias     AddressFamily NlMtu(Bytes) InterfaceMetric Dhcp  ConnectionState PolicyStore 
------- --------------     ------------- ------------ --------------- ----  --------------- ----------- 
2  Ethernet 3      IPv6     1500    35 Enabled Connected  ActiveStore 
7  Ethernet      IPv6     1500    5 Enabled Disconnected ActiveStore 
1  Loopback Pseudo-Interface 1  IPv6   4294967295    75 Disabled Connected  ActiveStore 
3  isatap.home      IPv6     1280    75 Disabled Disconnected ActiveStore 
17  Teredo Tunneling Pseudo-Inte... IPv6     1280    75 Enabled Connected  ActiveStore 
2  Ethernet 3      IPv4     1500    35 Enabled Connected  ActiveStore 
7  Ethernet      IPv4     1500    5 Enabled Disconnected ActiveStore 
1  Loopback Pseudo-Interface 1  IPv4   4294967295    75 Disabled Connected  ActiveStore 

Sie werden das InterfaceMetric Feld scheint beachten Sie auch mein Paket, um anzuzeigen, sollte über die "Standard" -Schnittstelle und nicht über die Loopback-Schnittstelle gesendet werden.

Erzwingen, dass der Socket das Paket über eine andere Schnittstelle über s.setsockopt(socket.IP_MULTICAST_IF, ...) sendet, funktioniert, aber das sollte ich nicht tun müssen.

Sie werden feststellen, dass zwei Ethernet-Schnittstellen zu zwei Netzwerkkarten auf meinem Motherboard entsprechen. Als ich das Kabel an Ethernet anstelle von Ethernet 3 angeschlossen habe, begann der Code oben, wie erwartet zu reagieren, und das Paket wurde über diese Schnittstelle und nicht über die Loopback-Schnittstelle gesendet.

Was ist los?

Antwort

0

Auf meinem Win10-PC gibt es eine Regel in der Firewall: UDP-Port 5353 (mDNS) darf nur von svchost.exe verwendet werden. Dies bedeutet im Grunde, dass nur einige Windows-Dienste mDNS verwenden können. Vielleicht möchten Sie Ihre eigene Firewall überprüfen und diese Regel ändern, wenn Sie sie haben.

+0

Deaktivieren der Firewall hat nicht geholfen. Es ist kein Firewall-Problem, da das Paket tatsächlich gesendet wird - es wird nur über die Loopback-Schnittstelle gesendet. – DoomMuffins

Verwandte Themen