[solved] Interface Tailscale0 stuck at 10mbps full duplex

Tailscale version: 1.18.1
Your operating system & version: Ubuntu 18.04.6 LTS (running on Ionos VPS)

Tailscale works as expected, but the link is only 10mbps full duplex. The output of ethtool is as follows:

username@localhost:~$ sudo ethtool tailscale0
Settings for tailscale0:
        Supported ports: [ ]
        Supported link modes:   Not reported
        Supported pause frame use: No
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  Not reported
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: 10Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: off
        MDI-X: Unknown
        Current message level: 0xffffffa1 (-95)
                               drv ifup tx_err tx_queued intr tx_done rx_status pktdata hw wol 0xffff8000
        Link detected: yes

When attempting to manually configure the interface, it succeeds on the client end but fails on the VPS with the following output:

username@localhost:~$ sudo ethtool -s tailscale0 speed 1000 duplex full autoneg on
Cannot set new settings: Operation not supported
  not setting speed
  not setting duplex
  not setting autoneg

Ethtool output for the internet connection:

username@localhost:~$ sudo ethtool ens192
Settings for ens192:
        Supported ports: [ TP ]
        Supported link modes:   1000baseT/Full
                                10000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  Not reported
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: 10000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: off
        MDI-X: Unknown
        Supports Wake-on: uag
        Wake-on: d
        Link detected: yes

I thought Tailscale should determine the highest supported configuration automatically? Both sides support near gigabit speeds for both upload and download so it’s not a network adapter issue.

Has anyone encountered this before?

ethtool adjusts the physical layer transceiver on an Ethernet interface, the thing which hooks to the wires. So many of the fields shown above are Unknown or Not reported because the tailscale0 interface is a software tunnel. There are no wires and there is no physical layer transceiver.

tailscale0 doesn’t implement the software interfaces for ethtool to work, but ethtool falls back to its most basic functionality trying to work anyway. I would recommend ignoring ethtool for tailscale0 interfaces, and for other VPNs as well. It just isn’t applicable.

1 Like

Thank you! I just tested the speed between the two and it is indeed much higher than 10mbps. My speeds for both upload and download were suspiciously below 1000kbps earlier today so I assumed that ethtool was telling the truth. The local machine was likely under load limiting the speed.

If the speed seems unusually low, check tailscale status. If you see a relay then it wasn’t able to find a direct connection and is going through a DERP relay, which limits the throughput.

$ tailscale status
100.101.99.98 server1 user@ linux active; relay "fra", tx 24716 rx 0

The output of tailscale status is actually really interesting. I have a VPS with a static IP and two local devices on my network behind a double NAT. One was able to find a direct connection but the other is indeed using a relay.

Output for the two local devices from the VPS:

100.123.165.1  homeassistant        username@ linux   active; direct <shared IP from top NAT>:47655, tx 1170712 rx 869960
100.94.20.2   nextcloud             username@ linux   active; relay "mycity", tx 32372 rx 35756

Any idea why homeassistant was able to find a direct link but the nextcloud server was not? I’d much prefer homeassistant to use the relay since speed isn’t important for its connection.

EDIT: My problem was fixed following the FAQ page What firewall ports should I open to use Tailscale? · Tailscale

sudo ufw allow 41641/udp

I also found that it would revert to the relay if the connection went idle. Adding a single ping every minute to crontab prevented it from going idle and kept the direct connection alive.