Password server on redundant VRs binds only the VRRP VIP, so guests never receive their password #13732
problemSUMMARY This is not to be confused with #12161, which changes the DNS list for redundant VPC VRs only and does not affect this path. CAUSE In the environment below, the guest network is 192.168.0.0/24, the VRRP VIP (gateway) is 192.168.0.1, and the primary router's own guest IP is 192.168.0.48. EXPECTED RESULTS The guest retrieves its password from the address it was given as the DHCP server-identifier, and the entry is removed from the password cache. ACTUAL RESULTS The password server listens on the VIP only: root@r-3050-VM:~# ss -lntp | grep 8080 Passwords are delivered by the management server and never collected: root@r-3050-VM:~# cat /var/cache/cloud/passwords-192.168.0.1 Metadata on port 80 works for every guest, because cloudstack binds all addresses. Both agents complete a full metadata crawl and only the password request fails. Note the 61 second stall in the cloudbase-init crawl, which is the password request timing out: The guest requests port 8080 at the router's own guest IP (192.168.0.48), not at the VIP, and is reset because nothing is bound there: This is not a firewall problem. The rules are present and counting the SYNs above as accepted: root@r-3050-VM:~# iptables-save | grep -E 'dport (80|8080)' 17 204 10640 ACCEPT 6 -- eth0 * 192.168.0.0/24 0.0.0.0/0 tcp dpt:8080 state NEW Confirmed with a DNAT rule on the primary router, after which every pending password was collected immediately: iptables -t nat -I PREROUTING -i eth0 -d 192.168.0.48/32 -p tcp --dport 8080 versionsACS: 4.22.1.0 CONFIGURATION The steps to reproduce the bug
What to do about it?passwd_server_ip.py: start a listener for every address supplied rather than only addresses[0]. allowAddresses already contains both, and savepassword.sh already POSTs to every local IP, so no other change is needed. Keeping addresses[0] as listeningAddress preserves the existing /var/cache/cloud/passwords- path. This is what I am running locally using custom userdata, verified across save, fetch and acknowledge. Something like this?? TO: |
Replies: 2 comments
|
@MitchDrage |
|
Ahhh ok. Didn't find that one when I was looking for an existing issue. Could have saved myself two hours of typing! |
@MitchDrage
can you test #13194 which reverts #10183 ?