Networking problems on HassOS on KVM - Supervisor can't git clone - Bad MTU?

Hi folks,

I’ve been playing with HassOS through KVM (hosted on Ubuntu 20.04) and have been facing a plethora of issues. Hoping that someone here can take a peek and help out.

Note: I had to remove the github links as I’m a new user and limited to 2 URL’s per post. The actual commands used valid URLs

In summary: Supervisor consistently has problems accessing the web. Addon store won’t load, and logs show git fails to clone repositories. It seems to be an MTU issue. Default value of 1500 is busted, setting to 1200 fixes things.

Details:

  • I’m running HassOS on KVM, using the haos_ova-7.6 qcow2 image.
  • OS/Supervisor/Core is all up to date, Observer shows all green
  • homeassistant on port 8123 is reachable and works fine.
  • My home network uses unifi hardware, with my system MTU set to the defaut 1500 on all machines.

Symptoms:

  • When I restart the system, the observer shows the status as "unsupported’. I have to spam “ha su restart”, “ha core restart”, and “ha dns restart” to get the system back to a “normal” state.
  • When I try to add new repos to the addon store (github com - sabeechen/hassio-google-drive-backup or even github com - hassio-addons/repository) they show up as “unknown” with a red trash can icon, so they aren’t recognized.
  • If I try docker exec into the supervisor image, git clone fails. docker exec -it 74a236020d73 /bin/sh + cd /home && git clone github com - sabeechen/hassio-google-drive-backup will just permanently hang.
  • If I manually set the MTU to 1200 (inside supervisor container, ip link set dev eth0 mtu 1200 and ip link set dev eth1 mtu 1200, git clone works and the supervisor store loads.

My thoughts:

  • It seems the networking is busted somehow. I can use the Terminal addon to ping github.com, google.com, etc, so it’s clearly not a network level outage. I can also clone the exact same repos inside the terminal addon, but that’s in a separate docker image, so this seems scoped to the supervisor docker.
  • It seems to be a MTU issue. If I manually override the MTU inside the supervisor docker instance to 1200, everything works completely fine. However, this requires shelling into the supervisor and manually running the MTU set commands.
  • I can’t edit the /etc/docker/daemon.json on the HASSOS root partition as it’s marked ReadOnly, so that’s not much help either. I also don’t know of a way to auto run a custom script on boot to patch the MTU values, since again the system is extremely locked down.

Any and all advice is very much appreciated. I’m confused why the MTU is such a mess, and I also don’t see any viable patches or workarounds given the extremely limited and locked nature of HassOS.

Thank you in advance!

Hard to tell…maybe provide some more info on how you have your network setup within Ubuntu.

An often used setup for QEMU/KVM is to setup a Linux bridge on the host, and connect the host’s Ethernet interface on one side of the bridge, and the VM on the other side (and move the IP addressing from the host’s Ethernet interface to the Linux bridge). This exposes a single interface to the VM (HassOS in this case). Here is an example setup.

MTU 1500 is the standard payload for untagged/single-tagged Ethernet frames and would dictate the size of the IP packets that fit in that payload. There are of course cases where MTU needs to be reduced (say for tunneling Ethernet over something else that also uses Ethernet), but generally speaking for home LANs and broadband access from a service provider to the home, this typically is not the case. If changing MTU to 1200 makes it work…yeah hard to say why.