Ein Host, zwei virtuelle Maschinen, die sich nicht gegenseitig anpingen können. Wie löst man

10

Wir haben virtuelle Maschinen in der KVMUmgebung. Wir richten einen als Entwicklungsserver ein, der Apacheusw. ausgeführt wird, und den anderen als WindowsEntwicklungsumgebung.

Die beiden Umgebungen sind eingerichtet und funktionieren einwandfrei. Sie können sich jedoch nicht gegenseitig anpingen. Ich frage mich, ob es dafür eine klare Lösung gibt.

Das ist was passiert.

Vom Host:

  Cannot ping either of 2 VM's (one `Linux`, one `Windows`)

Von einer der VMs:

  Cannot ping host
  Cannot ping each other

Von anderen Netzwerkmaschinen (zum Beispiel meinem Laptop aus meinem Firmennetzwerk)

  Successfully ping host at 192.168.0.64
  Successfully ping VM1 (Linux) 192.168.0.43
  Successfully ping VM2 (Windows) 192.168.0.84
Jay Lepore
quelle
4
Haben Sie weitere Informationen zur Netzwerkkonfiguration Ihrer virtuellen Maschinen? Sind Sie sich ganz sicher, dass Ihre anderen Netzwerkcomputer, wenn sie Ihre VMs anpingen, keine anderen zufälligen Computer im Netzwerk anpingen? (zB können Sie den Apache-Server tatsächlich mit einem Browser erreichen?).
GregHNZ
Ich denke, es könnte deine Brücke sein. Die iptables des Kernels verhindern, dass Ihr Computer mit sich selbst spricht, es sei denn, Sie: echo "1"> / proc / sys / net / ipv4 / ip_forward; Möglicherweise sowieso.
Mikeserv
Mit welchem ​​Befehl starten Sie die VMs?
Jobin
Haben Sie andere Computer im selben Netzwerk (die sich nicht auf demselben Host befinden)? Können diese Maschinen diese Maschinen anpingen?
Sree
1
Verwenden Sie eine macvtap- Schnittstelle ( wiki.libvirt.org/page/… ) für den Gast?
nkms

Antworten:

1

Es ist ziemlich offensichtlich, dass die Computer im Bridge-Modus kommunizieren, da Sie den Host und beide VMs von außerhalb der KVM-Umgebung anpingen können.

Ihr Problem ist der Anti-Spoofing-Schutz im Kernel, der Pakete mit einem anderen Ziel als der IP-Adresse des Hosts verwirft.

Führen Sie dies zur Laufzeit in der Befehlszeile des Hostservers aus:

 sudo sysctl -w net.ipv4.conf.default.rp_filter=0
 sudo sysctl -w net.ipv4.conf.all.rp_filter=0

Fügen Sie die folgenden Zeilen hinzu, damit das Booten überlebt /etc/sysctl.conf:

 net.ipv4.conf.default.rp_filter=0
 net.ipv4.conf.all.rp_filter=0

Aus den Kommentaren zu /etc/sysctl.conf(leicht verändert):

rp_filter: Aktiviert den Spoof-Schutz (Reverse-Path-Filter).

Überprüfung der Quelladresse in allen Schnittstellen, um Spoofing-Angriffe zu verhindern

Rui F Ribeiro
quelle
Ich weiß, die Frage ist alt ...
Rui F Ribeiro
0

Generell sollte der Verbindungstyp meines Wissens NAT sein. In den Einstellungen per Mausklick auf die jeweilige VM können Sie also den Netzwerktyp ändern.

PS: Ich halte es nicht für möglich, einen Computer vor Ping im lokalen Netzwerk zu verstecken. Aber es ist einen Blick wert.

rɑːdʒɑ
quelle
Es ist möglich, Computer vor ICMP-Pings zu verstecken. Sie deaktivieren entweder die Funktionalität im Kernel oder erstellen Firewall-Regeln, um sie zu blockieren. Ich habe Xen- und Bhyve-Hosts im Bridge-Modus und sie funktionieren gut.
Rui F Ribeiro