I'm preparing for a Server upgrade, but before doing so I want to have a dry-run within a VM first.
I'm running Linux Mint on a laptop. Currently I have FreeNAS v9.10.2-U6 installed within QEMU and RancherOS v1.5.6 installed into a VM via iohyve.
[laptop]
|_ [QEMU]
|_ [FreeNAS]
|_ [iohyve]
|_ [RancherOS]
I'm able to SSH into FreeNAS with no problem, but I can't SSH into Rancher. When trying to connect to Rancher it eventually times out. When I run the ssh command with -vvv it seems to hang on debug1: Connecting to <RANCHER_IP> [<RANCHER_IP>] port 22. before eventually timing out.
This is what I've tried so far:
- Verified the Rancher VM is reachable from the Host via
ping <RANCHER_IP> - Verified sshd is running in the Rancher VM
ps -ef | grep sshd - Verified the SSH port is being listened to in the Rancher VM
netstat -nl | grep :22 - Checked my
iptablesrules on the Host and Guest and there doesn't appear to be a rule that would be blocking communication.
This is my first time dealing with networking within nested VM's so I'm not certain if there's something simple I'm missing. I look forward to any insight the community may have.
TL;DR, I had to disable Hardware Offloading within the FreeNAS VM. For a persistent fix, within FreeNas' GUI I went to
Init/Shutdown Scriptsand created aPost-InitCommandscript that ranFull Troubleshooting Steps:
ifconfig | grep mtuifconfig | grep mtuifconfig | grep MTUping google.comping <FREENAS_IP>ping <RANCHER_IP>ping <HOST_IP>ping <RANCHER_IP>ping <HOST_IP>ping <FREENAS_IP>sshdis running in the Rancher VM:ps -ef | grep sshdsshd:sudo system-docker restart consolein case there was some sort of race condition.netstat -nl | grep :22.routenetstat -rroutenetstatthat just that IP and Port were being listened to. This was to rule out any possible port conflicts.iptablesrules on the Host and Rancher (FreeNAS doesn't have a firewall) and there weren't any rules that blocking communication.ipfw table all list.sudo tcpdump -nnvvS '(src <HOST_IP> and dst <RANCHER_IP>) or (src <RANCHER_IP> and dst <HOST_IP>)'.sudo tcpdump -nnvvS '(src <HOST_IP> and dst <RANCHER_IP>) or (src <RANCHER_IP> and dst <HOST_IP>)'cksumhadincorrecta lot, so I ran this on the Hostethtool --show-offload <ETHERNET_INTERFACE_NAME> | grep tx-checksummingand it told me it was on. Ransudo ethtool -K <ETHERNET_INTERFACE_NAME> tx offto disable it, re-rantcpdumpand ssh command, still gotincorrectforcksum, so I renabled checksummingsudo ethtool -K <ETHERNET_INTERFACE_NAME> tx on. At least I thought the last command reset things, after a reboot of FreeNAS the network was no longer reachable. I ended up runningsudo ethtool --reset <ETHERNET_INTERFACE_NAME> all, and eventually recreating the VM from scratch and rebooting my system to get things reset.iohyve tap0 or epairof all things. Quoting the relevant info in case the post disappears at some point.igb0withvtnet0), started the Rancher VM back up, and finally tried to SSH into Rancher... and succeeded. Basically my previous attempt to disable offloading was correct, but I needed to do it within FreeNAS, not the Host... which is a bit counter intuitive to me considering it's a bridged network and I'm passing my exact hardware resources through to the VMs.