Ping antarmuka berbasis Macvlan dari host tetapi tidak dari namespace

10

[EDIT]

Sistem produksi saat ini merupakan sistem berbasis campuran fisik dan ESXi. Kami jelas tidak akan pernah menggunakan virtualbox bahkan untuk lingkungan pra-produksi! Itu digunakan di sini hanya untuk dengan cepat mempersempit masalah langsung di desktop saya.

Terima kasih atas penjelasan untuk "menunggu" pada meta!

[/ EDIT]

Pengaturan saya:

  1. Jaringan pribadi vboxnet110.0.7.0/24
  2. 1 Host, desktop ubuntu
  3. 1 VM, server ubuntu (VirtualBox)

Tata letak adressing:

  1. PEMBAWA ACARA: 10.0.7.1
  2. VM: 10.0.7.101
  3. VM MAC NAMESPACE : 10.0.7.102

Pada VM, saya menjalankan perintah berikut:

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

Di macnamespace, di dalam VM:

ip link set lo up
ip link set mac up
ip addr add 10.0.7.102/24 dev mac0

Sehingga pada dasarnya kita berakhir dengan: (Suka Inception?)

+------------------------+
| Host: 10.0.7.1         |
|                        |
| +--------------------+ |
| | VM: 10.0.7.101     | |
| |                    | |
| | +----------------+ | |
| | | NS: 10.0.7.102 | | |
| | |                | | |
| | +----------------+ | |
| +--------------------+ |
+------------------------+

Pekerjaan apa:

  • Ping antara HostdanVM
  • Ping antara NSdanNS
  • dhclient dari NS

Apa yang tidak berhasil:

  • ping antara NSdanVM
  • ping antara NSdanHost

Di mana saya mulai menjadi gila:

  • tcpdump pada host(mesin nyata) sebenarnya menunjukkan permintaan ARP DAN balasan
  • tcpdump pada NSmenunjukkan permintaan ARP dikirim ke tuan rumah
  • tcpdump aktif VMmembuat seluruh kekacauan bekerja (!) -> ping mulai mendapatkan jawaban ketika tcpdump dimulai pada VM?!?

Jadi, saya yakin Anda sangat menginginkannya, pertanyaan saya adalah: bagaimana saya membuatnya bekerja? Saya menduga ada sesuatu yang salah dengan ARP di macvlan di dalam NS tetapi tidak tahu apa sebenarnya ...

Btw, saya melakukan expérimentations yang sama dengan mac0antarmuka langsung pada VM (tanpa namespace) dan itu bekerja dengan sempurna.

yadutaf
sumber
4
Saya tidak mengerti mengapa pertanyaan ini ditandai sebagai di luar topik. Ini jelas merupakan pertanyaan sysadmin / netadmin, relevan dengan beberapa lingkungan virtualisasi, dan ini bukan yang sepele (atau, jika memang benar, 90% pertanyaan di StackOverflow juga di luar topik). Saya akan senang jika orang-orang yang menandainya sebagai "di luar topik" peduli untuk menjelaskan mengapa, alih-alih menyalin aturan yang jelas tidak berlaku di sini. Terima kasih!
jpetazzo
@ jpetazzo Ini bukan di luar topik, dan saya hanya bisa berasumsi orang yang menutup melakukannya berdasarkan organisasi / presentasi pertanyaan yang buruk (kemungkinan karena OP tidak menjadi admin sys / net). Selain itu, cakupan Server Fault (bukan hanya topik) berbeda dari Stack Overflow - argumen Anda membuat saya berpikir Anda belum mengunjungi pusat bantuan kami karena tidak masuk akal.
Chris S

Jawaban:

13

OK, jadi, untuk anak cucu, fakta bahwa tcpdump membuat semua tiba-tiba berfungsi seharusnya menempatkan saya di jalur. Apa yang dilakukannya secara internal adalah beralih eth0ke mode promiscuous. Artinya, eth0akan menghasilkan semua lalu lintas jaringan, tidak hanya yang dengan server utamaMAC

Namun, beginilah cara macvlankerjanya: ia menambahkan alamat MAC virtual sekunder baru yang tidak diketahui oleh adaptor jaringan "fisik" (itu VM).

Jadi solusi mudahnya adalah secara manual: ifconfig eth0 promisc

Saya harap ini membantu!

yadutaf
sumber
Jadi Anda harus hapus centang "tidak ada mode promisc" pada VM itu juga, saya kira?
Nils
Memang, itu tidak terkendali.
yadutaf