We've had some issues with our shared storage, so I've migrated some VMs to another proxmox server using local storage. Since this migration I am having network issues, which I boiled down to yet another proxmox server doing ARP replies for a machine that was never even on this proxmox server.
I have:
proxmox1: Ran this specific VM I migrated
proxmox2: The server that ARP replies for a VM that was never on pm2
proxmox3: The new host for my VM.
The VM has MAC 76:9c:5b:72:61:fd, however when running "arp -n" on a machine in my network I get:
After looking in our core switches where this MAC was coming from I saw it came from proxmox2:
Running "brctl showmacs vmbr402 | grep f6:8f" showed that this machine has this MAC in its ARP table too, coming from a port not equal to 1:
The port beeing greater then 1 means it is not the physical interface. It is the virtual port from one of the VM's. brctl show output:
As shown here, this bridge only contains 3 virtual interface, for VM 102, 104 and 111. Which is rather strange, because qm list shows:
As you can see, VM's with ID 102, 104 and 111 dont even exist. Why are the virtual interfaces still connected?
Now, back to brctl. We saw that my conflicting MAC was on port 7. According to brctl showstp vmbr402 that is on tap111i0:
See, tap111i0 has (7) behind it, indicating that tap111i0 is identified as port 7. As shown from the qm list output, VM 111 does not exist.
Can anyone explain to me why:
- tap111i0 is still bridged to vlan402 (using vmbr402). Why isnt it removed?
- Why does tap111i0 respond to ARP requests for an IP that is not on this machine? (both because VM ID 111 does not exist and even it it would exist, it is not running).
The only way to resolve this issue is to manually remove tap111i0 from my bridge.
I have:
proxmox1: Ran this specific VM I migrated
proxmox2: The server that ARP replies for a VM that was never on pm2
proxmox3: The new host for my VM.
The VM has MAC 76:9c:5b:72:61:fd, however when running "arp -n" on a machine in my network I get:
Code:
# arp -n
Address HWtype HWaddress Flags Mask Iface
1.2.3.100 ether f6:8f:3b:9b:92:78 C eth0
After looking in our core switches where this MAC was coming from I saw it came from proxmox2:
Running "brctl showmacs vmbr402 | grep f6:8f" showed that this machine has this MAC in its ARP table too, coming from a port not equal to 1:
Code:
# brctl showmacs vmbr402 | grep f6:8f
7 f6:8f:3b:9b:92:78 no 2.06
The port beeing greater then 1 means it is not the physical interface. It is the virtual port from one of the VM's. brctl show output:
Code:
root@pm3:~# brctl show
bridge name bridge id STP enabled interfaces
vmbr402 8000.003048f81284 no tap102i0
tap104i0
tap111i0
vlan402
As shown here, this bridge only contains 3 virtual interface, for VM 102, 104 and 111. Which is rather strange, because qm list shows:
Code:
# qm list
VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID
108 vmX stopped 512 0.00 0
117 xmY running 512 0.00 1003551
As you can see, VM's with ID 102, 104 and 111 dont even exist. Why are the virtual interfaces still connected?
Now, back to brctl. We saw that my conflicting MAC was on port 7. According to brctl showstp vmbr402 that is on tap111i0:
Code:
# brctl showstp vmbr402
vmbr402
bridge id 8000.003048f81284
designated root 8000.003048f81284
root port 0 path cost 0
max age 19.99 bridge max age 19.99
hello time 1.99 bridge hello time 1.99
forward delay 0.00 bridge forward delay 0.00
ageing time 299.95
hello timer 0.31 tcn timer 0.00
topology change timer 0.00 gc timer 0.31
flags
tap102i0 (2)
port id 8002 state forwarding
designated root 8000.003048f81284 path cost 100
designated bridge 8000.003048f81284 message age timer 0.00
designated port 8002 forward delay timer 0.00
designated cost 0 hold timer 0.00
flags
tap104i0 (4)
port id 8004 state forwarding
designated root 8000.003048f81284 path cost 100
designated bridge 8000.003048f81284 message age timer 0.00
designated port 8004 forward delay timer 0.00
designated cost 0 hold timer 0.00
flags
tap111i0 (7)
port id 8007 state forwarding
designated root 8000.003048f81284 path cost 100
designated bridge 8000.003048f81284 message age timer 0.00
designated port 8007 forward delay timer 0.00
designated cost 0 hold timer 0.00
flags
vlan402 (1)
port id 8001 state forwarding
designated root 8000.003048f81284 path cost 19
designated bridge 8000.003048f81284 message age timer 0.00
designated port 8001 forward delay timer 0.00
designated cost 0 hold timer 0.00
flags
See, tap111i0 has (7) behind it, indicating that tap111i0 is identified as port 7. As shown from the qm list output, VM 111 does not exist.
Can anyone explain to me why:
- tap111i0 is still bridged to vlan402 (using vmbr402). Why isnt it removed?
- Why does tap111i0 respond to ARP requests for an IP that is not on this machine? (both because VM ID 111 does not exist and even it it would exist, it is not running).
The only way to resolve this issue is to manually remove tap111i0 from my bridge.