Skip to content

Instantly share code, notes, and snippets.

@fastjack
Created January 29, 2024 18:53
Show Gist options
  • Save fastjack/ac5ab6955c98925529a4fe8373b59b56 to your computer and use it in GitHub Desktop.
Save fastjack/ac5ab6955c98925529a4fe8373b59b56 to your computer and use it in GitHub Desktop.
Install Tailscale on Unify Dream Router (not really working)

I tried setting up Tailscale on my UDR. I found https://gist.github.com/lg/6f80593bd55ca9c9cf886da169a972c3 was a good starting point with some adjustments. Unlike the EdgeRouter the UDR is apparently an arm64 device so I downloaded static binaries for arm64 and extracted them to a temporary directory. I copied the files to their proper locations like this:

cp tailscale /usr/bin/tailscale
cp tailscaled /usr/sbin/tailscaled
cp systemd/tailscaled.defaults /etc/default/tailscaled
cp systemd/tailscaled.service /lib/systemd/system/tailscaled.service
mkdir -p /var/lib/tailscale
touch /var/lib/tailscale/tailscaled.state
chmod 0400 /var/lib/tailscale/tailscaled.state
mkdir /run/tailscale

Then I started the tailscale service

systemctl daemon-reload
systemctl enable --now tailscaled

Everything looks good so far. The service is running.

● tailscaled.service - Tailscale node agent
     Loaded: loaded (/lib/systemd/system/tailscaled.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2024-01-29 19:00:49 CET; 32s ago
       Docs: https://tailscale.com/kb/
    Process: 1507559 ExecStartPre=/usr/sbin/tailscaled --cleanup (code=exited, status=0/SUCCESS)
   Main PID: 1507595 (tailscaled)
     Status: "Stopped; run 'tailscale up' to log in"
     Memory: 9.7M
        CPU: 831ms
     CGroup: /system.slice/tailscaled.service
             └─1507595 /usr/sbin/tailscaled --state=/var/lib/tailscale/tailscaled.state --socket=/run/tailscale/tailscaled.sock --port=41641

Jan 29 19:00:49 UDR tailscaled[1507595]: Backend: logs: be:cfcb070852973059df4599ee5e437f212874943188c58244e4a4840f524c6ff2 fe:
Jan 29 19:00:49 UDR tailscaled[1507595]: health("overall"): error: state=NeedsLogin, wantRunning=false
Jan 29 19:00:49 UDR tailscaled[1507595]: Switching ipn state NoState -> NeedsLogin (WantRunning=false, nm=false)
Jan 29 19:00:49 UDR tailscaled[1507595]: blockEngineUpdates(true)
Jan 29 19:00:49 UDR tailscaled[1507595]: wgengine: Reconfig: configuring userspace WireGuard config (with 0/0 peers)
Jan 29 19:00:49 UDR tailscaled[1507595]: wgengine: Reconfig: configuring router
Jan 29 19:00:49 UDR tailscaled[1507595]: wgengine: Reconfig: configuring DNS
Jan 29 19:00:49 UDR tailscaled[1507595]: dns: Set: {DefaultResolvers:[] Routes:{} SearchDomains:[] Hosts:0}
Jan 29 19:00:49 UDR tailscaled[1507595]: dns: Resolvercfg: {Routes:{} Hosts:0 LocalDomains:[]}
Jan 29 19:00:50 UDR tailscaled[1507595]: dns: OScfg: {}

In the system log I noticed some errors in relation to iptables, but these seem to be some cleanup of tailscale-specific rules.

A little further down in the log I saw this:

Jan 29 19:00:49 UDR tailscaled[1507595]: Start
Jan 29 19:00:49 UDR tailscaled[1507595]: logtail: dial "log.tailscale.io:443" failed: dial tcp 54.161.152.147:443: connect: network is unreachable (in 135ms), trying bootstrap...
Jan 29 19:00:49 UDR tailscaled[1507595]: trying bootstrapDNS("derp12b.tailscale.com", "45.63.71.144") for "log.tailscale.io" ...
Jan 29 19:00:49 UDR tailscaled[1507595]: bootstrapDNS("derp12b.tailscale.com", "45.63.71.144") for "log.tailscale.io" error: Get "https://derp12b.tailscale.com/bootstrap-dns?q=log.tailscale.io": dial tcp 45.63.71.144:443: connect: network is unreachable
Jan 29 19:00:49 UDR tailscaled[1507595]: trying bootstrapDNS("derp2d.tailscale.com", "2607:f740:0:3f::287") for "log.tailscale.io" ...
Jan 29 19:00:49 UDR tailscaled[1507595]: bootstrapDNS("derp2d.tailscale.com", "2607:f740:0:3f::287") for "log.tailscale.io" error: Get "https://derp2d.tailscale.com/bootstrap-dns?q=log.tailscale.io": dial tcp [2607:f740:0:3f::287]:443: connect: network is unreachable
Jan 29 19:00:49 UDR tailscaled[1507595]: trying bootstrapDNS("derp12c.tailscale.com", "149.28.119.105") for "log.tailscale.io" ...
Jan 29 19:00:49 UDR tailscaled[1507595]: bootstrapDNS("derp12c.tailscale.com", "149.28.119.105") for "log.tailscale.io" error: Get "https://derp12c.tailscale.com/bootstrap-dns?q=log.tailscale.io": dial tcp 149.28.119.105:443: connect: network is unreachable
Jan 29 19:00:49 UDR tailscaled[1507595]: trying bootstrapDNS("derp4d.tailscale.com", "2a03:b0c0:3:d0::1501:b001") for "log.tailscale.io" ...
Jan 29 19:00:49 UDR tailscaled[1507595]: bootstrapDNS("derp4d.tailscale.com", "2a03:b0c0:3:d0::1501:b001") for "log.tailscale.io" error: Get "https://derp4d.tailscale.com/bootstrap-dns?q=log.tailscale.io": dial tcp [2a03:b0c0:3:d0::1501:b001]:443: connect: network is unreachable
Jan 29 19:00:49 UDR tailscaled[1507595]: trying bootstrapDNS("derp9b.tailscale.com", "144.202.67.195") for "log.tailscale.io" ...
Jan 29 19:00:49 UDR tailscaled[1507595]: trying bootstrapDNS("derp12b.tailscale.com", "2001:19f0:5c01:48a:5400:3ff:fe8d:cb5f") for "log.tailscale.io" ...
Jan 29 19:00:49 UDR tailscaled[1507595]: bootstrapDNS("derp12b.tailscale.com", "2001:19f0:5c01:48a:5400:3ff:fe8d:cb5f") for "log.tailscale.io" error: Get "https://derp12b.tailscale.com/bootstrap-dns?q=log.tailscale.io": dial tcp [2001:19f0:5c01:48a:5400:3ff:fe8d:cb5f]:443: connect: network is unreachable
Jan 29 19:00:49 UDR tailscaled[1507595]: logtail: upload: log upload of 32516 bytes compressed failed: Post "https://log.tailscale.io/c/tailnode.log.tailscale.io/b810e62a78016f88b0b1d445bc1a580eaa88b6c8cd482b2484cab0e684a2f146": dial tcp [2600:1f18:429f:9305:823d:72c0:16da:fb33]:443: connect: network is unreachable
Jan 29 19:00:49 UDR tailscaled[1507595]: Backend: logs: be:cfcb070852973059df4599ee5e437f212874943188c58244e4a4840f524c6ff2 fe:
Jan 29 19:00:49 UDR tailscaled[1507595]: health("overall"): error: state=NeedsLogin, wantRunning=false

I tried pinging some of the ipv4 addresses mentioned in the error messages and had no problem reaching them so I decided to log in anyway. I typed tailscale up and then nothing happed. The command just hung there and nothing else happened.

In the log I saw more error messages appear

Jan 29 19:25:18 UDR tailscaled[1513087]: StartLoginInteractive: url=false
Jan 29 19:25:18 UDR tailscaled[1513087]: control: client.Login(false, 2)
Jan 29 19:25:18 UDR tailscaled[1513087]: control: LoginInteractive -> regen=true
Jan 29 19:25:18 UDR tailscaled[1513087]: control: doLogin(regen=true, hasUrl=false)
Jan 29 19:25:18 UDR tailscaled[1513087]: control: trying bootstrapDNS("derp10.tailscale.com", "137.220.36.168") for "controlplane.tailscale.com" ...
Jan 29 19:25:18 UDR tailscaled[1513087]: control: bootstrapDNS("derp10.tailscale.com", "137.220.36.168") for "controlplane.tailscale.com" error: Get "https://derp10.tailscale.com/bootstrap-dns?q=controlplane.tailscale.com": dial tcp 137.220.36.168:443: connect: network is unreachable
Jan 29 19:25:18 UDR tailscaled[1513087]: control: trying bootstrapDNS("derp2e.tailscale.com", "2607:f740:0:3f::44c") for "controlplane.tailscale.com" ...
Jan 29 19:25:18 UDR tailscaled[1513087]: control: bootstrapDNS("derp2e.tailscale.com", "2607:f740:0:3f::44c") for "controlplane.tailscale.com" error: Get "https://derp2e.tailscale.com/bootstrap-dns?q=controlplane.tailscale.com": dial tcp [2607:f740:0:3f::44c]:443: connect: network is unreachable
Jan 29 19:25:18 UDR tailscaled[1513087]: control: trying bootstrapDNS("derp11.tailscale.com", "18.230.97.74") for "controlplane.tailscale.com" ...
Jan 29 19:25:18 UDR tailscaled[1513087]: control: bootstrapDNS("derp11.tailscale.com", "18.230.97.74") for "controlplane.tailscale.com" error: Get "https://derp11.tailscale.com/bootstrap-dns?q=controlplane.tailscale.com": dial tcp 18.230.97.74:443: connect: network is unreachable
Jan 29 19:25:18 UDR tailscaled[1513087]: control: trying bootstrapDNS("derp9.tailscale.com", "2001:19f0:6401:1d9c:5400:2ff:feef:bb82") for "controlplane.tailscale.com" ...
Jan 29 19:25:18 UDR tailscaled[1513087]: control: bootstrapDNS("derp9.tailscale.com", "2001:19f0:6401:1d9c:5400:2ff:feef:bb82") for "controlplane.tailscale.com" error: Get "https://derp9.tailscale.com/bootstrap-dns?q=controlplane.tailscale.com": dial tcp [2001:19f0:6401:1d9c:5400:2ff:feef:bb82]:443: connect: network is unreachable
Jan 29 19:25:18 UDR tailscaled[1513087]: control: trying bootstrapDNS("derp12c.tailscale.com", "149.28.119.105") for "controlplane.tailscale.com" ...
Jan 29 19:25:18 UDR tailscaled[1513087]: [RATELIMIT] format("control: trying bootstrapDNS(%q, %q) for %q ...")
Jan 29 19:25:18 UDR tailscaled[1513087]: control: bootstrapDNS("derp12c.tailscale.com", "149.28.119.105")for "controlplane.tailscale.com" error: Get "https://derp12c.tailscale.com/bootstrap-dns?q=controlplane.tailscale.com": dial tcp 149.28.119.105:443: connect: network is unreachable
Jan 29 19:25:18 UDR tailscaled[1513087]: [RATELIMIT] format("control: bootstrapDNS(%q, %q) for %q error: %v")
Jan 29 19:25:18 UDR tailscaled[1513087]: Received error: fetch control key: Get "https://controlplane.tailscale.com/key?v=86": dial tcp [2a05:d014:386:202:9a01:a6fe:4251:8db8]:443: connect: network is unreachable
Jan 29 19:25:18 UDR tailscaled[1513087]: control: LoginInteractive -> regen=true
Jan 29 19:25:18 UDR tailscaled[1513087]: control: doLogin(regen=true, hasUrl=false)
Jan 29 19:25:18 UDR tailscaled[1513087]: Received error: fetch control key: Get "https://controlplane.tailscale.com/key?v=86": dial tcp [2a05:d014:386:202:9a01:a6fe:4251:8db8]:443: connect: network is unreachable
Jan 29 19:25:18 UDR tailscaled[1513087]: control: LoginInteractive -> regen=true
Jan 29 19:25:18 UDR tailscaled[1513087]: control: doLogin(regen=true, hasUrl=false)
Jan 29 19:25:18 UDR tailscaled[1513087]: Received error: fetch control key: Get "https://controlplane.tailscale.com/key?v=86": dial tcp [2a05:d014:386:202:9a01:a6fe:4251:8db8]:443: connect: network is unreachable
Jan 29 19:25:18 UDR tailscaled[1513087]: control: LoginInteractive -> regen=true
Jan 29 19:25:18 UDR tailscaled[1513087]: control: doLogin(regen=true, hasUrl=false)
Jan 29 19:25:18 UDR tailscaled[1513087]: Received error: fetch control key: Get "https://controlplane.tailscale.com/key?v=86": dial tcp [2a05:d014:386:202:9a01:a6fe:4251:8db8]:443: connect: network is unreachable
Jan 29 19:25:18 UDR tailscaled[1513087]: control: LoginInteractive -> regen=true
Jan 29 19:25:18 UDR tailscaled[1513087]: [RATELIMIT] format("control: LoginInteractive -> regen=true")
Jan 29 19:25:18 UDR tailscaled[1513087]: control: doLogin(regen=true, hasUrl=false)
Jan 29 19:25:18 UDR tailscaled[1513087]: [RATELIMIT] format("control: doLogin(regen=%v, hasUrl=%v)")
Jan 29 19:25:18 UDR tailscaled[1513087]: Received error: fetch control key: Get "https://controlplane.tailscale.com/key?v=86": dial tcp [2a05:d014:386:202:9a01:a6fe:4251:8db8]:443: connect: network is unreachable
Jan 29 19:25:18 UDR tailscaled[1513087]: [RATELIMIT] format("Received error: %v")
Jan 29 19:25:29 UDR tailscaled[1513087]: [RATELIMIT] format("control: LoginInteractive -> regen=true") (10 dropped)

I tried the latest stable version (1.58.2) as well as the latest (unstable version)[https://pkgs.tailscale.com/unstable/#static] (1.59.13). Same result.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment