[EDYTOWAĆ]
System produkcyjny jest obecnie mieszanym systemem fizycznym i opartym na ESXi. Oczywiście nigdy nie używalibyśmy virtualboksa nawet w środowisku przedprodukcyjnym! Został użyty tutaj tylko do szybkiego zawężenia problemu bezpośrednio na moim pulpicie.
Dziękujemy za wyjaśnienie „wstrzymania” na meta!
[/EDYTOWAĆ]
Moja konfiguracja:
- Sieć prywatna
vboxnet1
10.0.7.0/24 - 1 Host, pulpit Ubuntu
- 1 VM, serwer Ubuntu (VirtualBox)
Układ adresowania:
- HOST: 10.0.7.1
- VM: 10.0.7.101
- VM NAMESPACE : 10.0.7.102
Na VM
pobiegłem następujące polecenia:
ip netns add mac # create a new nmespace
ip link add link eth0 mac0 type macvlan # create a new macvlan interface
ip link set mac0 netns mac
W mac
przestrzeni nazw wewnątrz maszyny wirtualnej:
ip link set lo up
ip link set mac up
ip addr add 10.0.7.102/24 dev mac0
Więc w zasadzie kończymy na: (jak Inception?)
+------------------------+
| Host: 10.0.7.1 |
| |
| +--------------------+ |
| | VM: 10.0.7.101 | |
| | | |
| | +----------------+ | |
| | | NS: 10.0.7.102 | | |
| | | | | |
| | +----------------+ | |
| +--------------------+ |
+------------------------+
Co działa:
- Ping pomiędzy
Host
iVM
- Ping pomiędzy
NS
iNS
- dhclient z
NS
Co nie działa:
- ping pomiędzy
NS
iVM
- ping pomiędzy
NS
iHost
Gdzie zacząłem wariować:
- tcpdump on
host
(prawdziwa maszyna) faktycznie pokazuje żądanie ARP ORAZ odpowiedzi - tcpdump on
NS
pokazuje żądania ARP wysłane do hosta - tcpdump on
VM
sprawia, że cały bałagan działa (!) -> ping zaczyna otrzymywać odpowiedzi, gdy tcpdump jest uruchamiany na maszynie wirtualnej?!?
Więc założę się, że byłeś chętny, moje pytanie brzmi: jak sprawić, by działało? Podejrzewam, że coś jest nie tak z ARP na macvlan w NS, ale nie mogę zrozumieć, co dokładnie ...
Przy okazji zrobiłem te same eksperymenty z mac0
interfejsem bezpośrednio na maszynie wirtualnej (bez przestrzeni nazw) i działało bezbłędnie.