Headscale - An open source, self-hosted implementation of the Tailscale control server

Headscale

Join the chat at https://gitter.im/headscale-dev/community ci

An open source, self-hosted implementation of the Tailscale coordination server.

Overview

Tailscale is a modern VPN built on top of Wireguard. It works like an overlay network between the computers of your networks - using all kinds of NAT traversal sorcery.

Everything in Tailscale is Open Source, except the GUI clients for proprietary OS (Windows and macOS/iOS), and the 'coordination/control server'.

The control server works as an exchange point of Wireguard public keys for the nodes in the Tailscale network. It also assigns the IP addresses of the clients, creates the boundaries between each user, enables sharing machines between users, and exposes the advertised routes of your nodes.

Headscale implements this coordination server.

Status

  • Base functionality (nodes can communicate with each other)
  • Node registration through the web flow
  • Network changes are relied to the nodes
  • Namespace support (~equivalent to multi-user in Tailscale.com)
  • Routing (advertise & accept, including exit nodes)
  • Node registration via pre-auth keys (including reusable keys, and ephemeral node support)
  • JSON-formatted output
  • ACLs
  • Support for alternative IP ranges in the tailnets (default Tailscale's 100.64.0.0/10)
  • DNS (passing DNS servers to nodes)
  • Share nodes between users namespaces
  • MagicDNS / Smart DNS

Roadmap 🤷

Suggestions/PRs welcomed!

Running it

  1. Download the Headscale binary https://github.com/juanfont/headscale/releases, and place it somewhere in your PATH or use the docker container
docker pull headscale/headscale:x.x.x
  1. (Optional, you can also use SQLite) Get yourself a PostgreSQL DB running
docker run --name headscale -e POSTGRES_DB=headscale -e \
  POSTGRES_USER=foo -e POSTGRES_PASSWORD=bar -p 5432:5432 -d postgres
  1. Set some stuff up (headscale Wireguard keys & the config.json file)
wg genkey > private.key
wg pubkey < private.key > public.key  # not needed

# Postgres
cp config.json.postgres.example config.json
# or
# SQLite
cp config.json.sqlite.example config.json
  1. Create a namespace (a namespace is a 'tailnet', a group of Tailscale nodes that can talk to each other)
headscale namespaces create myfirstnamespace

or docker:

docker run -v ./private.key:/private.key -v ./config.json:/config.json headscale/headscale:x.x.x headscale namespace create myfirstnamespace
  1. Run the server
headscale serve

or docker:

docker run -v $(pwd)/private.key:/private.key -v $(pwd)/config.json:/config.json -v $(pwd)/derb.yaml:/derb.yaml -p 127.0.0.1:8080:8080 headscale/headscale:x.x.x headscale serve
  1. If you used tailscale.com before in your nodes, make sure you clear the tailscaled data folder
systemctl stop tailscaled
rm -fr /var/lib/tailscale
systemctl start tailscaled 
  1. Add your first machine
tailscale up -login-server YOUR_HEADSCALE_URL
  1. Navigate to the URL you will get with tailscale up, where you'll find your machine key.

  2. In the server, register your machine to a namespace with the CLI

headscale -n myfirstnamespace node register YOURMACHINEKEY

or docker:

docker run -v ./private.key:/private.key -v ./config.json:/config.json headscale/headscale:x.x.x headscale -n myfirstnamespace node register YOURMACHINEKEY

Alternatively, you can use Auth Keys to register your machines:

  1. Create an authkey
    headscale -n myfirstnamespace preauthkeys create --reusable --expiration 24h

or docker:

docker run -v ./private.key:/private.key -v ./config.json:/config.json headscale/headscale:x.x.x headscale -n myfirstnamespace preauthkeys create --reusable --expiration 24h
  1. Use the authkey from your machine to register it
    tailscale up -login-server YOUR_HEADSCALE_URL --authkey YOURAUTHKEY

If you create an authkey with the --ephemeral flag, that key will create ephemeral nodes. This implies that --reusable is true.

Please bear in mind that all the commands from headscale support adding -o json or -o json-line to get a nicely JSON-formatted output.

Configuration reference

Headscale's configuration file is named config.json or config.yaml. Headscale will look for it in /etc/headscale, ~/.headscale and finally the directory from where the Headscale binary is executed.

    "server_url": "http://192.168.1.12:8080",
    "listen_addr": "0.0.0.0:8080",
    "ip_prefix": "100.64.0.0/10"

server_url is the external URL via which Headscale is reachable. listen_addr is the IP address and port the Headscale program should listen on. ip_prefix is the IP prefix (range) in which IP addresses for nodes will be allocated (default 100.64.0.0/10, e.g., 192.168.4.0/24, 10.0.0.0/8)

    "log_level": "debug"

log_level can be used to set the Log level for Headscale, it defaults to debug, and the available levels are: trace, debug, info, warn and error.

    "private_key_path": "private.key",

private_key_path is the path to the Wireguard private key. If the path is relative, it will be interpreted as relative to the directory the configuration file was read from.

    "derp_map_path": "derp.yaml",

derp_map_path is the path to the DERP map file. If the path is relative, it will be interpreted as relative to the directory the configuration file was read from.

    "ephemeral_node_inactivity_timeout": "30m",

ephemeral_node_inactivity_timeout is the timeout after which inactive ephemeral node records will be deleted from the database. The default is 30 minutes. This value must be higher than 65 seconds (the keepalive timeout for the HTTP long poll is 60 seconds, plus a few seconds to avoid race conditions).

    "db_host": "localhost",
    "db_port": 5432,
    "db_name": "headscale",
    "db_user": "foo",
    "db_pass": "bar",

The fields starting with db_ are used for the PostgreSQL connection information.

Running the service via TLS (optional)

    "tls_cert_path": ""
    "tls_key_path": ""

Headscale can be configured to expose its web service via TLS. To configure the certificate and key file manually, set the tls_cert_path and tls_cert_path configuration parameters. If the path is relative, it will be interpreted as relative to the directory the configuration file was read from.

    "tls_letsencrypt_hostname": "",
    "tls_letsencrypt_listen": ":http",
    "tls_letsencrypt_cache_dir": ".cache",
    "tls_letsencrypt_challenge_type": "HTTP-01",

To get a certificate automatically via Let's Encrypt, set tls_letsencrypt_hostname to the desired certificate hostname. This name must resolve to the IP address(es) Headscale is reachable on (i.e., it must correspond to the server_url configuration parameter). The certificate and Let's Encrypt account credentials will be stored in the directory configured in tls_letsencrypt_cache_dir. If the path is relative, it will be interpreted as relative to the directory the configuration file was read from. The certificate will automatically be renewed as needed.

Challenge type HTTP-01

The default challenge type HTTP-01 requires that Headscale is reachable on port 80 for the Let's Encrypt automated validation, in addition to whatever port is configured in listen_addr. By default, Headscale listens on port 80 on all local IPs for Let's Encrypt automated validation.

If you need to change the ip and/or port used by Headscale for the Let's Encrypt validation process, set tls_letsencrypt_listen to the appropriate value. This can be handy if you are running Headscale as a non-root user (or can't run setcap). Keep in mind, however, that Let's Encrypt will only connect to port 80 for the validation callback, so if you change tls_letsencrypt_listen you will also need to configure something else (e.g. a firewall rule) to forward the traffic from port 80 to the ip:port combination specified in tls_letsencrypt_listen.

Challenge type TLS-ALPN-01

Alternatively, tls_letsencrypt_challenge_type can be set to TLS-ALPN-01. In this configuration, Headscale listens on the ip:port combination defined in listen_addr. Let's Encrypt will only connect to port 443 for the validation callback, so if listen_addr is not set to port 443, something else (e.g. a firewall rule) will be required to forward the traffic from port 443 to the ip:port combination specified in listen_addr.

Policy ACLs

Headscale implements the same policy ACLs as Tailscale.com, adapted to the self-hosted environment.

For instance, instead of referring to users when defining groups you must use namespaces (which are the equivalent to user/logins in Tailscale.com).

Please check https://tailscale.com/kb/1018/acls/, and ./tests/acls/ in this repo for working examples.

Disclaimer

  1. We have nothing to do with Tailscale, or Tailscale Inc.
  2. The purpose of writing this was to learn how Tailscale works.

More on Tailscale

Comments
  • Using distroless base image for Docker

    Using distroless base image for Docker

    Thanks for making Headscale!

    I have a proposed improvement to the Docker image, switching the base image of the final container from Ubuntu to a "distroless" image, using images from https://github.com/GoogleContainerTools/distroless

    If you've never heard of "distroless" images, that page contains a bunch of details on the benefits, but the TL;DR is that these images do not contain a full OS but rather just enough to run the application (ca-certificates, glibc, tzdata, and just a couple more things). By using a "distroless" image, the container is much smaller (they claim they're 2% of the size of a Debian base image) and it's safer, as there's a significantly smaller attack surface. Plus, "distroless" images are updated much less frequently so keeping the base image up-to-date (and include security fixes) is much simpler.

    I've confirmed this builds and the headscale binary runs. I haven't performed full E2E tests however just yet.

    PS: I've also removed the stage bufbuild/buf:1.0.0-rc6 which seemed unused

  • Error while register node

    Error while register node

    I've setup headscale(v0.3.3) on my Ubuntu 18.04 VM. This is my config.json:

    {
        "server_url": "http://127.0.0.1:8000",
        "listen_addr": "0.0.0.0:8000",
        "private_key_path": "/etc/wireguard/privatekey",
        "derp_map_path": "derp.yaml",
        "ephemeral_node_inactivity_timeout": "30m",
        "db_type": "postgres",
        "db_host": "localhost",
        "db_port": 5432,
        "db_name": "headscale",
        "db_user": "headscale",
        "db_pass": "BZv1XGkrC7dlzjudJy0J",
        "tls_letsencrypt_hostname": "",
        "tls_letsencrypt_cache_dir": ".cache",
        "tls_letsencrypt_challenge_type": "HTTP-01",
        "tls_cert_path": "",
        "tls_key_path": "",
        "acl_policy_path": ""
    }
    

    And I've created a namespace.

    When I try to register a node from another vm, I got an output key and I manual registered on my headscale vm: image

    But nothing changed on my tailscale vm. screenshot below:

    image

    No success response

  • Nodes connected to headscale fail to see each other if headscale is fronted by nginx

    Nodes connected to headscale fail to see each other if headscale is fronted by nginx

    Descriptions

    Machines manage to authenticate to headscale, see each other's existence in tailscale status, but cannot ping each other. They are able to discover and ping each other fine when using tailscale infrastructure, or when talking to headscale directly, without nginx in the way.

    Situation

    Two machines running OpenBSD-current, tailscale 1.10.2, headscale 0.3.4

    • one named headscale is running headscale with postgres, tailscale, nginx in front of headscale for TLS termination; has public IP, tailscale told to listen on specific port and that port opened on firewall
    • one named innernet-test is behind NAT (aggressive). Runs only tailscaled

    Configuration

    headscale

    {
        "server_url": "https://headscale.viq.vc:443",
        "listen_addr": "0.0.0.0:8000",
        "private_key_path": "/etc/headscale/private.key",
        "derp_map_path": "/etc/headscale/derp.yaml",
        "ephemeral_node_inactivity_timeout": "30m",
        "db_type": "postgres",
        "db_host": "localhost",
        "db_port": 5432,
        "db_name": "headscale",
        "db_user": "headscale",
        "db_pass": "XXX",
        "tls_letsencrypt_hostname": "",
        "tls_letsencrypt_cache_dir": "/var/headscale/.cache",
        "tls_letsencrypt_challenge_type": "TLS-ALPN-01",
        "tls_cert_path": "",
        "tls_key_path": "",
        "acl_policy_path": ""
    }
    

    nginx

    # cat /etc/nginx/nginx.conf  | grep -v \# | grep -v ^$
    worker_processes  1;
    worker_rlimit_nofile 1024;
    events {
        worker_connections  800;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        index         index.html index.htm;
        keepalive_timeout  65;
        server_tokens off;
        server {
            listen       80;
            listen       [::]:80;
            server_name  headscale.viq.vc;
            root         /var/www/htdocs;
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root  /var/www/htdocs;
            }
            location ^~ /.well-known/acme-challenge/ {
                    alias /var/www/acme/;
                    default_type "text/plain";
                    allow all;
            }
            location = /.well-known/acme-challenge/ {
                    return 404;
            }
        }
        server {
            listen       443 ssl;
            server_name  headscale.viq.vc;
            ssl_certificate      /etc/ssl/headscale.viq.vc.fullchain.pem;
            ssl_certificate_key  /etc/ssl/private/headscale.viq.vc.key;
            ssl_session_timeout  5m;
            ssl_session_cache    shared:SSL:1m;
            ssl_ciphers  HIGH:!aNULL:!MD5:!RC4;
            ssl_prefer_server_ciphers   on;
            location / {
                    proxy_read_timeout 180;
                    proxy_http_version 1.1;
                    proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_pass http://127.0.0.1:8000;
            }
        }
    }
    

    Logs

    Part 1

    Attaching machines to headscale

    nginx

    51.75.32.29 - - [17/Jul/2021:17:03:35 +0200] "GET /key HTTP/1.1" 200 64 "-" "Go-http-client/1.1"
    51.75.32.29 - - [17/Jul/2021:17:03:35 +0200] "POST /machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839 HTTP/1.1" 200 326 "-" "Go-http-client/1.1"
    51.75.32.29 - - [17/Jul/2021:17:03:36 +0200] "POST /machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map HTTP/1.1" 200 1303 "-" "Go-http-client/1.1"
    51.75.32.29 - - [17/Jul/2021:17:03:36 +0200] "POST /machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map HTTP/1.1" 200 1293 "-" "Go-http-client/1.1"
    51.75.32.29 - - [17/Jul/2021:17:03:36 +0200] "POST /machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map HTTP/1.1" 200 1293 "-" "Go-http-client/1.1"
    51.75.32.29 - - [17/Jul/2021:17:03:36 +0200] "POST /machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map HTTP/1.1" 200 1293 "-" "Go-http-client/1.1"
    51.75.32.29 - - [17/Jul/2021:17:03:36 +0200] "POST /machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map HTTP/1.1" 200 1293 "-" "Go-http-client/1.1"
    51.75.32.28 - - [17/Jul/2021:17:04:17 +0200] "GET /key HTTP/1.1" 200 64 "-" "Go-http-client/1.1"
    51.75.32.28 - - [17/Jul/2021:17:04:17 +0200] "POST /machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317 HTTP/1.1" 200 326 "-" "Go-http-client/1.1"
    51.75.32.28 - - [17/Jul/2021:17:04:17 +0200] "POST /machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map HTTP/1.1" 200 1748 "-" "Go-http-client/1.1"
    51.75.32.28 - - [17/Jul/2021:17:04:18 +0200] "POST /machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map HTTP/1.1" 200 1737 "-" "Go-http-client/1.1"
    51.75.32.28 - - [17/Jul/2021:17:04:18 +0200] "POST /machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map HTTP/1.1" 200 1737 "-" "Go-http-client/1.1"
    51.75.32.28 - - [17/Jul/2021:17:04:18 +0200] "POST /machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map HTTP/1.1" 200 1737 "-" "Go-http-client/1.1"
    51.75.32.29 - - [17/Jul/2021:17:06:13 +0200] "POST /machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map HTTP/1.1" 499 0 "-" "Go-http-client/1.1"
    

    headscale & tailscaled

    headscale machine
    2021-07-17T15:01:27.335Z headscale newsyslog[86153]: logfile turned over
    2021-07-17T15:01:52.997Z headscale headscale[61967]: [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.
    2021-07-17T15:01:53.000Z headscale headscale[61967]: 
    2021-07-17T15:01:53.011Z headscale headscale[61967]: [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
    2021-07-17T15:01:53.012Z headscale headscale[61967]:  - using env:      export GIN_MODE=release
    2021-07-17T15:01:53.012Z headscale headscale[61967]:  - using code:     gin.SetMode(gin.ReleaseMode)
    2021-07-17T15:01:53.012Z headscale headscale[61967]: 
    2021-07-17T15:01:53.019Z headscale headscale[61967]: [GIN-debug] GET    /key                      --> github.com/juanfont/headscale.(*Headscale).KeyHandler-fm (3 handlers)
    2021-07-17T15:01:53.023Z headscale headscale[61967]: [GIN-debug] GET    /register                 --> github.com/juanfont/headscale.(*Headscale).RegisterWebAPI-fm (3 handlers)
    2021-07-17T15:01:53.026Z headscale headscale[61967]: [GIN-debug] POST   /machine/:id/map          --> github.com/juanfont/headscale.(*Headscale).PollNetMapHandler-fm (3 handlers)
    2021-07-17T15:01:53.029Z headscale headscale[61967]: [GIN-debug] POST   /machine/:id              --> github.com/juanfont/headscale.(*Headscale).RegistrationHandler-fm (3 handlers)
    2021-07-17T15:01:53.032Z headscale headscale[61967]: 2021/07/17 17:01:53 WARNING: listening without TLS but ServerURL does not start with http://
    2021-07-17T15:01:53.036Z headscale headscale[61967]: [GIN-debug] Listening and serving HTTP on 0.0.0.0:8000
    2021-07-17T15:02:43.035Z headscale tailscaled[14930]: 2021/07/17 17:02:43 logtail started
    2021-07-17T15:02:43.041Z headscale tailscaled[14930]: 2021/07/17 17:02:43 Program starting: vdate.20210603, Go 1.16.6: []string{"/usr/local/bin/tailscaled", "-port", "22502"}
    2021-07-17T15:02:43.050Z headscale tailscaled[14930]: 2021/07/17 17:02:43 LogID: 684e0fca0c5f487084b120b5dbe9bd2711ccffd8987b1fd88ed91205a4e2b573
    2021-07-17T15:02:43.057Z headscale tailscaled[14930]: 2021/07/17 17:02:43 logpolicy: using system state directory "/var/db/tailscale"
    2021-07-17T15:02:43.061Z headscale tailscaled[14930]: logpolicy.Read /var/db/tailscale/tailscaled.log.conf: open /var/db/tailscale/tailscaled.log.conf: no such file or directory
    2021-07-17T15:02:43.065Z headscale tailscaled[14930]: 2021/07/17 17:02:43 wgengine.NewUserspaceEngine(tun "tun") ...
    2021-07-17T15:02:43.069Z headscale tailscaled[14930]: 2021/07/17 17:02:43 dns: using dns.directManager
    2021-07-17T15:02:43.079Z headscale tailscaled[14930]: 2021/07/17 17:02:43 link state: interfaces.State{defaultRoute=TODO ifs={vio0:[51.75.32.29/32]} v4=true v6=false}
    2021-07-17T15:02:43.090Z headscale tailscaled[14930]: 2021/07/17 17:02:43 Creating wireguard device...
    2021-07-17T15:02:43.098Z headscale tailscaled[14930]: 2021/07/17 17:02:43 Bringing wireguard device up...
    2021-07-17T15:02:43.103Z headscale tailscaled[14930]: 2021/07/17 17:02:43 Bringing router up...
    2021-07-17T15:02:43.107Z headscale tailscaled[14930]: 2021/07/17 17:02:43 external route: up
    2021-07-17T15:02:43.111Z headscale tailscaled[14930]: 2021/07/17 17:02:43 Clearing router settings...
    2021-07-17T15:02:43.116Z headscale tailscaled[14930]: 2021/07/17 17:02:43 Starting link monitor...
    2021-07-17T15:02:43.120Z headscale tailscaled[14930]: 2021/07/17 17:02:43 Starting magicsock...
    2021-07-17T15:02:43.145Z headscale tailscaled[14930]: 2021/07/17 17:02:43 Engine created.
    2021-07-17T15:02:43.155Z headscale tailscaled[14930]: 2021/07/17 17:02:43 Listening on /var/run/tailscale/tailscaled.sock
    2021-07-17T15:02:43.161Z headscale tailscaled[14930]: 2021/07/17 17:02:43 netmap packet filter: (not ready yet)
    2021-07-17T15:02:43.170Z headscale tailscaled[14930]: 2021/07/17 17:02:43 Start
    2021-07-17T15:02:43.173Z headscale tailscaled[14930]: 2021/07/17 17:02:43 using backend prefs
    2021-07-17T15:02:43.176Z headscale tailscaled[14930]: 2021/07/17 17:02:43 created empty state for "_daemon": Prefs{ra=true dns=true want=false Persist=nil}
    2021-07-17T15:02:43.179Z headscale tailscaled[14930]: 2021/07/17 17:02:43 got initial portlist info in 0s
    2021-07-17T15:02:43.183Z headscale tailscaled[14930]: 2021/07/17 17:02:43 magicsock: disco key = d:110593ae14096bdd
    2021-07-17T15:02:43.186Z headscale tailscaled[14930]: 2021/07/17 17:02:43 control: HostInfo: {"IPNVersion":"date.20210603","BackendLogID":"684e0fca0c5f487084b120b5dbe9bd2711ccffd8987b1fd88ed91205a4e2b573","OS":"openbsd","Hostname":"headscale","GoArch":"amd64","Services":[{"Proto":"tcp","Port":22},{"Proto":"tcp","Port":25},{"Proto":"tcp","Port":80},{"Proto":"tcp","Port":443},{"Proto":"tcp","Port":8000}]}
    2021-07-17T15:02:43.190Z headscale tailscaled[14930]: 2021/07/17 17:02:43 control: authRoutine: state:new; goal=nil paused=false
    2021-07-17T15:02:43.194Z headscale tailscaled[14930]: 2021/07/17 17:02:43 control: mapRoutine: state:new
    2021-07-17T15:02:43.197Z headscale tailscaled[14930]: 2021/07/17 17:02:43 Backend: logs: be:684e0fca0c5f487084b120b5dbe9bd2711ccffd8987b1fd88ed91205a4e2b573 fe:
    2021-07-17T15:02:43.201Z headscale tailscaled[14930]: 2021/07/17 17:02:43 Switching ipn state NoState -> NeedsLogin (WantRunning=false, nm=false)
    2021-07-17T15:02:43.204Z headscale tailscaled[14930]: 2021/07/17 17:02:43 blockEngineUpdates(true)
    2021-07-17T15:02:43.207Z headscale tailscaled[14930]: 2021/07/17 17:02:43 wgengine: Reconfig: configuring userspace wireguard config (with 0/0 peers)
    2021-07-17T15:02:43.211Z headscale tailscaled[14930]: 2021/07/17 17:02:43 wgengine: Reconfig: configuring router
    2021-07-17T15:02:43.215Z headscale tailscaled[14930]: 2021/07/17 17:02:43 wgengine: Reconfig: configuring DNS
    2021-07-17T15:02:43.218Z headscale tailscaled[14930]: 2021/07/17 17:02:43 dns: Set: {DefaultResolvers:[] Routes:map[] SearchDomains:[] Hosts:map[]}
    2021-07-17T15:02:43.222Z headscale tailscaled[14930]: 2021/07/17 17:02:43 dns: Resolvercfg: {Routes:map[] Hosts:map[] LocalDomains:[]}
    2021-07-17T15:02:43.226Z headscale tailscaled[14930]: 2021/07/17 17:02:43 dns: OScfg: {Nameservers:[] SearchDomains:[] MatchDomains:[]}
    2021-07-17T15:02:43.232Z headscale tailscaled[14930]: 2021/07/17 17:02:43 health("overall"): error: state=NeedsLogin, wantRunning=false
    2021-07-17T15:02:43.282Z headscale tailscaled[14930]: 2021/07/17 17:02:43 logtail: dialed "log.tailscale.io:443" in 226ms
    2021-07-17T15:03:35.805Z headscale tailscaled[14930]: 2021/07/17 17:03:35 Start
    2021-07-17T15:03:35.810Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: client.Shutdown()
    2021-07-17T15:03:35.810Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: client.Shutdown: inSendStatus=0
    2021-07-17T15:03:35.810Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: authRoutine: state:new; goal=nil paused=false
    2021-07-17T15:03:35.810Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: mapRoutine: context done.
    2021-07-17T15:03:35.812Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: mapRoutine: state:new
    2021-07-17T15:03:35.812Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: mapRoutine: quit
    2021-07-17T15:03:35.812Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: Client.Shutdown done.
    2021-07-17T15:03:35.813Z headscale tailscaled[14930]: 2021/07/17 17:03:35 using backend prefs
    2021-07-17T15:03:35.814Z headscale tailscaled[14930]: 2021/07/17 17:03:35 created empty state for "_daemon": Prefs{ra=true dns=true want=false Persist=nil}
    2021-07-17T15:03:35.814Z headscale tailscaled[14930]: 2021/07/17 17:03:35 generating new machine key
    2021-07-17T15:03:35.822Z headscale tailscaled[14930]: 2021/07/17 17:03:35 machine key written to store
    2021-07-17T15:03:35.826Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: HostInfo: {"IPNVersion":"date.20210603","BackendLogID":"684e0fca0c5f487084b120b5dbe9bd2711ccffd8987b1fd88ed91205a4e2b573","OS":"openbsd","Hostname":"headscale","GoArch":"amd64","Services":[{"Proto":"tcp","Port":22},{"Proto":"tcp","Port":25},{"Proto":"tcp","Port":80},{"Proto":"tcp","Port":443},{"Proto":"tcp","Port":8000}]}
    2021-07-17T15:03:35.829Z headscale tailscaled[14930]: 2021/07/17 17:03:35 Backend: logs: be:684e0fca0c5f487084b120b5dbe9bd2711ccffd8987b1fd88ed91205a4e2b573 fe:
    2021-07-17T15:03:35.832Z headscale tailscaled[14930]: 2021/07/17 17:03:35 Switching ipn state NoState -> NeedsLogin (WantRunning=true, nm=false)
    2021-07-17T15:03:35.833Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: authRoutine: state:new; goal=nil paused=false
    2021-07-17T15:03:35.841Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: mapRoutine: state:new
    2021-07-17T15:03:35.842Z headscale tailscaled[14930]: 2021/07/17 17:03:35 blockEngineUpdates(true)
    2021-07-17T15:03:35.842Z headscale tailscaled[14930]: 2021/07/17 17:03:35 Reconfig(down): no changes made to Engine config
    2021-07-17T15:03:35.845Z headscale tailscaled[14930]: 2021/07/17 17:03:35 StartLoginInteractive: url=false
    2021-07-17T15:03:35.850Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: client.Login(false, 2)
    2021-07-17T15:03:35.852Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: authRoutine: state:new; wantLoggedIn=true
    2021-07-17T15:03:35.859Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: direct.TryLogin(token=false, flags=2)
    2021-07-17T15:03:35.872Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: LoginInteractive -> regen=true
    2021-07-17T15:03:35.878Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: doLogin(regen=true, hasUrl=false)
    2021-07-17T15:03:35.927Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:03:35 | 200 |     367.532\M-B\M-5s |     51.75.32.29 | GET      "/key"
    2021-07-17T15:03:35.934Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: Generating a new nodekey.
    2021-07-17T15:03:35.939Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: RegisterReq: onode=[AAAAA] node=[WwgZK] fup=false
    2021-07-17T15:03:35.952Z headscale headscale[61967]: 2021/07/17 17:03:35 New Machine!
    2021-07-17T15:03:35.971Z headscale headscale[61967]: 2021/07/17 17:03:35 [headscale] Successfully authenticated via AuthKey
    2021-07-17T15:03:35.972Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:03:35 | 200 |   25.342504ms |     51.75.32.29 | POST     "/machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839"
    2021-07-17T15:03:35.985Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: RegisterReq: got response; nodeKeyExpired=false, machineAuthorized=true; authURL=false
    2021-07-17T15:03:35.988Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: No AuthURL
    2021-07-17T15:03:35.988Z headscale tailscaled[14930]: 2021/07/17 17:03:35 blockEngineUpdates(false)
    2021-07-17T15:03:35.988Z headscale tailscaled[14930]: 2021/07/17 17:03:35 authReconfig: netmap not yet valid. Skipping.
    2021-07-17T15:03:35.995Z headscale tailscaled[14930]: 2021/07/17 17:03:35 authReconfig: netmap not yet valid. Skipping.
    2021-07-17T15:03:35.995Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: authRoutine: state:authenticated; goal=nil paused=false
    2021-07-17T15:03:35.999Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: mapRoutine: new map needed while idle.
    2021-07-17T15:03:35.999Z headscale tailscaled[14930]: 2021/07/17 17:03:35 control: mapRoutine: state:authenticated
    2021-07-17T15:03:36.033Z headscale headscale[61967]: 2021/07/17 17:03:36 [headscale] ReadOnly=true   OmitPeers=false    Stream=true
    2021-07-17T15:03:36.037Z headscale headscale[61967]: 2021/07/17 17:03:36 [headscale] Client is starting up. Asking for DERP map
    2021-07-17T15:03:36.041Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:03:36 | 200 |   28.951678ms |     51.75.32.29 | POST     "/machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map"
    2021-07-17T15:03:36.049Z headscale tailscaled[14930]: 2021/07/17 17:03:36 active login: viqWORKS
    2021-07-17T15:03:36.054Z headscale tailscaled[14930]: 2021/07/17 17:03:36 netmap packet filter: [[TCP UDP ICMPv4 ICMPv6][0.0.0.0/0,::/0]=>[0.0.0.0/0:*,::/0:*]]
    2021-07-17T15:03:36.064Z headscale tailscaled[14930]: 2021/07/17 17:03:36 Switching ipn state NeedsLogin -> Starting (WantRunning=true, nm=true)
    2021-07-17T15:03:36.069Z headscale tailscaled[14930]: 2021/07/17 17:03:36 magicsock: SetPrivateKey called (init)
    2021-07-17T15:03:36.073Z headscale tailscaled[14930]: 2021/07/17 17:03:36 wgengine: Reconfig: configuring userspace wireguard config (with 0/0 peers)
    2021-07-17T15:03:36.073Z headscale tailscaled[14930]: 2021/07/17 17:03:36 wgengine: Reconfig: configuring router
    2021-07-17T15:03:36.136Z headscale tailscaled[14930]: 2021/07/17 17:03:36 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:03:36.145Z headscale tailscaled[14930]: 2021/07/17 17:03:36 wgengine: Reconfig: configuring DNS
    2021-07-17T15:03:36.148Z headscale tailscaled[14930]: 2021/07/17 17:03:36 dns: Set: {DefaultResolvers:[] Routes:map[] SearchDomains:[] Hosts:map[headscale.:[100.99.59.105]]}
    2021-07-17T15:03:36.148Z headscale tailscaled[14930]: 2021/07/17 17:03:36 dns: Resolvercfg: {Routes:map[] Hosts:map[headscale.:[100.99.59.105]] LocalDomains:[]}
    2021-07-17T15:03:36.148Z headscale tailscaled[14930]: 2021/07/17 17:03:36 dns: OScfg: {Nameservers:[] SearchDomains:[] MatchDomains:[]}
    2021-07-17T15:03:36.150Z headscale tailscaled[14930]: 2021/07/17 17:03:36 peerapi: serving on http://100.99.59.105:39599
    2021-07-17T15:03:36.157Z headscale tailscaled[14930]: 2021/07/17 17:03:36 Received error: PollNetMap: EOF
    2021-07-17T15:03:36.159Z headscale tailscaled[14930]: 2021/07/17 17:03:36 control: mapRoutine: backoff: 5 msec
    2021-07-17T15:03:36.160Z headscale tailscaled[14930]: 2021/07/17 17:03:36 control: HostInfo: {"IPNVersion":"date.20210603","BackendLogID":"684e0fca0c5f487084b120b5dbe9bd2711ccffd8987b1fd88ed91205a4e2b573","OS":"openbsd","Hostname":"headscale","GoArch":"amd64","Services":[{"Proto":"peerapi4","Port":39599}]}
    2021-07-17T15:03:36.162Z headscale tailscaled[14930]: 2021/07/17 17:03:36 control: mapRoutine: state:authenticated
    2021-07-17T15:03:36.212Z headscale headscale[61967]: 2021/07/17 17:03:36 [headscale] ReadOnly=true   OmitPeers=false    Stream=true
    2021-07-17T15:03:36.215Z headscale headscale[61967]: 2021/07/17 17:03:36 [headscale] Client is starting up. Asking for DERP map
    2021-07-17T15:03:36.218Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:03:36 | 200 |   48.737118ms |     51.75.32.29 | POST     "/machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map"
    2021-07-17T15:03:36.224Z headscale tailscaled[14930]: 2021/07/17 17:03:36 control: mapRoutine: state:authenticated
    2021-07-17T15:03:36.227Z headscale tailscaled[14930]: 2021/07/17 17:03:36 [RATELIMIT] format("control: mapRoutine: %s")
    2021-07-17T15:03:36.260Z headscale headscale[61967]: 2021/07/17 17:03:36 [headscale] ReadOnly=true   OmitPeers=false    Stream=true
    2021-07-17T15:03:36.264Z headscale headscale[61967]: 2021/07/17 17:03:36 [headscale] Client is starting up. Asking for DERP map
    2021-07-17T15:03:36.268Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:03:36 | 200 |   25.277085ms |     51.75.32.29 | POST     "/machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map"
    2021-07-17T15:03:36.276Z headscale tailscaled[14930]: 2021/07/17 17:03:36 Received error: PollNetMap: EOF
    2021-07-17T15:03:36.276Z headscale tailscaled[14930]: 2021/07/17 17:03:36 control: mapRoutine: backoff: 36 msec
    2021-07-17T15:03:36.337Z headscale headscale[61967]: 2021/07/17 17:03:36 [headscale] ReadOnly=true   OmitPeers=false    Stream=true
    2021-07-17T15:03:36.340Z headscale headscale[61967]: 2021/07/17 17:03:36 [headscale] Client is starting up. Asking for DERP map
    2021-07-17T15:03:36.343Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:03:36 | 200 |   21.983377ms |     51.75.32.29 | POST     "/machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map"
    2021-07-17T15:03:36.355Z headscale tailscaled[14930]: 2021/07/17 17:03:36 Received error: PollNetMap: EOF
    2021-07-17T15:03:36.357Z headscale tailscaled[14930]: 2021/07/17 17:03:36 control: mapRoutine: backoff: 45 msec
    2021-07-17T15:03:36.423Z headscale headscale[61967]: 2021/07/17 17:03:36 [headscale] ReadOnly=true   OmitPeers=false    Stream=true
    2021-07-17T15:03:36.426Z headscale headscale[61967]: 2021/07/17 17:03:36 [headscale] Client is starting up. Asking for DERP map
    2021-07-17T15:03:36.426Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:03:36 | 200 |   12.453532ms |     51.75.32.29 | POST     "/machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map"
    2021-07-17T15:03:36.437Z headscale tailscaled[14930]: 2021/07/17 17:03:36 Received error: PollNetMap: EOF
    2021-07-17T15:03:36.442Z headscale tailscaled[14930]: 2021/07/17 17:03:36 control: mapRoutine: backoff: 88 msec
    2021-07-17T15:03:36.442Z headscale tailscaled[14930]: 2021/07/17 17:03:36 magicsock: home is now derp-4 (fra)
    2021-07-17T15:03:36.445Z headscale tailscaled[14930]: 2021/07/17 17:03:36 magicsock: endpoints changed: 51.75.32.29:22502 (stun)
    2021-07-17T15:03:36.451Z headscale tailscaled[14930]: 2021/07/17 17:03:36 control: client.newEndpoints(0, [51.75.32.29:22502])
    2021-07-17T15:03:36.455Z headscale tailscaled[14930]: 2021/07/17 17:03:36 magicsock: adding connection to derp-4 for home-keep-alive
    2021-07-17T15:03:36.458Z headscale tailscaled[14930]: 2021/07/17 17:03:36 magicsock: 1 active derp conns: derp-4=cr0s,wr0s
    2021-07-17T15:03:36.462Z headscale tailscaled[14930]: 2021/07/17 17:03:36 Switching ipn state Starting -> Running (WantRunning=true, nm=true)
    2021-07-17T15:03:36.462Z headscale tailscaled[14930]: 2021/07/17 17:03:36 control: NetInfo: NetInfo{varies=false hairpin=false ipv6=false udp=true derp=#4 portmap= link=""}
    2021-07-17T15:03:36.462Z headscale tailscaled[14930]: 2021/07/17 17:03:36 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:03:36.467Z headscale tailscaled[14930]: 2021/07/17 17:03:36 derphttp.Client.Connect: connecting to derp-4 (fra)
    2021-07-17T15:03:36.549Z headscale tailscaled[14930]: 2021/07/17 17:03:36 magicsock: derp-4 connected; connGen=1
    2021-07-17T15:03:36.553Z headscale tailscaled[14930]: 2021/07/17 17:03:36 health("overall"): ok
    2021-07-17T15:03:36.564Z headscale headscale[61967]: 2021/07/17 17:03:36 [headscale] ReadOnly=false   OmitPeers=false    Stream=true
    2021-07-17T15:03:36.567Z headscale headscale[61967]: 2021/07/17 17:03:36 [headscale] Client is ready to access the tailnet
    2021-07-17T15:03:36.567Z headscale headscale[61967]: 2021/07/17 17:03:36 [headscale] Sending initial map
    2021-07-17T15:03:36.567Z headscale headscale[61967]: 2021/07/17 17:03:36 [headscale] Notifying peers
    2021-07-17T15:03:36.570Z headscale headscale[61967]: 2021/07/17 17:03:36 [headscale] Sending data (1507 bytes)
    2021-07-17T15:03:36.579Z headscale headscale[61967]: 2021/07/17 17:03:36 [headscale] Sending keepalive
    2021-07-17T15:03:36.581Z headscale headscale[61967]: 2021/07/17 17:03:36 [headscale] Sending data (75 bytes)
    2021-07-17T15:03:43.185Z headscale tailscaled[14930]: 2021/07/17 17:03:43 LinkChange: major, rebinding. New state: interfaces.State{defaultRoute=TODO ifs={tun0:[100.99.59.105/32] vio0:[51.75.32.29/32]} v4=true v6=false}
    2021-07-17T15:03:43.214Z headscale tailscaled[14930]: 2021/07/17 17:03:43 magicsock: closing connection to derp-4 (rebind), age 7s
    2021-07-17T15:03:43.219Z headscale tailscaled[14930]: 2021/07/17 17:03:43 magicsock: 0 active derp conns
    2021-07-17T15:03:43.229Z headscale tailscaled[14930]: 2021/07/17 17:03:43 magicsock: adding connection to derp-4 for home-keep-alive
    2021-07-17T15:03:43.233Z headscale tailscaled[14930]: 2021/07/17 17:03:43 magicsock: 1 active derp conns: derp-4=cr0s,wr0s
    2021-07-17T15:03:43.233Z headscale tailscaled[14930]: 2021/07/17 17:03:43 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:03:43.233Z headscale tailscaled[14930]: 2021/07/17 17:03:43 health("overall"): error: not connected to home DERP region 4
    2021-07-17T15:03:43.233Z headscale tailscaled[14930]: 2021/07/17 17:03:43 derphttp.Client.Recv: connecting to derp-4 (fra)
    2021-07-17T15:03:43.307Z headscale tailscaled[14930]: 2021/07/17 17:03:43 magicsock: derp-4 connected; connGen=1
    2021-07-17T15:03:43.310Z headscale tailscaled[14930]: 2021/07/17 17:03:43 health("overall"): ok
    2021-07-17T15:03:43.445Z headscale tailscaled[14930]: 2021/07/17 17:03:43 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:04:17.862Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:04:17 | 200 |     465.137\M-B\M-5s |     51.75.32.28 | GET      "/key"
    2021-07-17T15:04:17.876Z headscale headscale[61967]: 2021/07/17 17:04:17 New Machine!
    2021-07-17T15:04:17.889Z headscale headscale[61967]: 2021/07/17 17:04:17 [innernet-test] Successfully authenticated via AuthKey
    2021-07-17T15:04:17.892Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:04:17 | 200 |   17.280435ms |     51.75.32.28 | POST     "/machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317"
    2021-07-17T15:04:17.921Z headscale headscale[61967]: 2021/07/17 17:04:17 [innernet-test] ReadOnly=true   OmitPeers=false    Stream=true
    2021-07-17T15:04:17.925Z headscale headscale[61967]: 2021/07/17 17:04:17 [innernet-test] Client is starting up. Asking for DERP map
    2021-07-17T15:04:17.925Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:04:17 | 200 |   20.194041ms |     51.75.32.28 | POST     "/machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map"
    2021-07-17T15:04:18.095Z headscale headscale[61967]: 2021/07/17 17:04:18 [innernet-test] ReadOnly=true   OmitPeers=false    Stream=true
    2021-07-17T15:04:18.101Z headscale headscale[61967]: 2021/07/17 17:04:18 [innernet-test] Client is starting up. Asking for DERP map
    2021-07-17T15:04:18.101Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:04:18 | 200 |   16.963453ms |     51.75.32.28 | POST     "/machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map"
    2021-07-17T15:04:18.138Z headscale headscale[61967]: 2021/07/17 17:04:18 [innernet-test] ReadOnly=true   OmitPeers=false    Stream=true
    2021-07-17T15:04:18.145Z headscale headscale[61967]: 2021/07/17 17:04:18 [innernet-test] Client is starting up. Asking for DERP map
    2021-07-17T15:04:18.151Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:04:18 | 200 |   33.569286ms |     51.75.32.28 | POST     "/machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map"
    2021-07-17T15:04:18.234Z headscale headscale[61967]: 2021/07/17 17:04:18 [innernet-test] ReadOnly=true   OmitPeers=false    Stream=true
    2021-07-17T15:04:18.241Z headscale headscale[61967]: 2021/07/17 17:04:18 [innernet-test] Client is starting up. Asking for DERP map
    2021-07-17T15:04:18.241Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:04:18 | 200 |   18.543764ms |     51.75.32.28 | POST     "/machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map"
    2021-07-17T15:04:18.366Z headscale headscale[61967]: 2021/07/17 17:04:18 [innernet-test] ReadOnly=false   OmitPeers=false    Stream=true
    2021-07-17T15:04:18.371Z headscale headscale[61967]: 2021/07/17 17:04:18 [innernet-test] Client is ready to access the tailnet
    2021-07-17T15:04:18.373Z headscale headscale[61967]: 2021/07/17 17:04:18 [innernet-test] Sending initial map
    2021-07-17T15:04:18.373Z headscale headscale[61967]: 2021/07/17 17:04:18 [innernet-test] Notifying peers
    2021-07-17T15:04:18.373Z headscale headscale[61967]: 2021/07/17 17:04:18 [innernet-test] Notifying peer headscale (100.99.59.105/32)
    2021-07-17T15:04:18.374Z headscale headscale[61967]: 2021/07/17 17:04:18 [innernet-test] Sending data (1825 bytes)
    2021-07-17T15:04:18.390Z headscale headscale[61967]: 2021/07/17 17:04:18 [headscale] Received a request for update
    2021-07-17T15:04:18.397Z headscale headscale[61967]: 2021/07/17 17:04:18 [innernet-test] Sending keepalive
    2021-07-17T15:04:18.438Z headscale headscale[61967]: 2021/07/17 17:04:18 [innernet-test] Sending data (75 bytes)
    2021-07-17T15:04:36.593Z headscale headscale[61967]: 2021/07/17 17:04:36 [headscale] Sending keepalive
    2021-07-17T15:04:36.597Z headscale headscale[61967]: 2021/07/17 17:04:36 [headscale] Sending data (75 bytes)
    2021-07-17T15:04:43.193Z headscale tailscaled[14930]: 2021/07/17 17:04:43 health("overall"): error: not in map poll
    2021-07-17T15:05:18.416Z headscale headscale[61967]: 2021/07/17 17:05:18 [innernet-test] Sending keepalive
    2021-07-17T15:05:18.423Z headscale headscale[61967]: 2021/07/17 17:05:18 [innernet-test] Sending data (75 bytes)
    2021-07-17T15:05:36.612Z headscale headscale[61967]: 2021/07/17 17:05:36 [headscale] Sending keepalive
    2021-07-17T15:05:36.617Z headscale headscale[61967]: 2021/07/17 17:05:36 [headscale] Sending data (75 bytes)
    2021-07-17T15:06:13.804Z headscale tailscaled[14930]: 2021/07/17 17:06:13 tailscaled got signal terminated; shutting down
    2021-07-17T15:06:13.808Z headscale tailscaled[14930]: 2021/07/17 17:06:13 control: client.Shutdown()
    2021-07-17T15:06:13.812Z headscale tailscaled[14930]: 2021/07/17 17:06:13 control: client.Shutdown: inSendStatus=0
    2021-07-17T15:06:13.813Z headscale tailscaled[14930]: 2021/07/17 17:06:13 control: authRoutine: state:authenticated; goal=nil paused=false
    2021-07-17T15:06:13.822Z headscale headscale[61967]: 2021/07/17 17:06:13 [headscale] The client has closed the connection
    2021-07-17T15:06:13.825Z headscale tailscaled[14930]: 2021/07/17 17:06:13 [RATELIMIT] format("control: mapRoutine: %s") (3 dropped)
    2021-07-17T15:06:13.832Z headscale tailscaled[14930]: 2021/07/17 17:06:13 control: mapRoutine: state:authenticated
    2021-07-17T15:06:13.845Z headscale tailscaled[14930]: 2021/07/17 17:06:13 control: mapRoutine: quit
    2021-07-17T15:06:13.849Z headscale tailscaled[14930]: 2021/07/17 17:06:13 control: Client.Shutdown done.
    2021-07-17T15:06:13.849Z headscale tailscaled[14930]: 2021/07/17 17:06:13 magicsock: closing connection to derp-4 (conn-close), age 2m31s
    2021-07-17T15:06:13.849Z headscale tailscaled[14930]: 2021/07/17 17:06:13 magicsock: 0 active derp conns
    2021-07-17T15:06:13.855Z headscale tailscaled[14930]: 2021/07/17 17:06:13 external route: down
    2021-07-17T15:06:13.859Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:06:13 | 200 |         2m37s |     51.75.32.29 | POST     "/machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map"
    2021-07-17T15:06:13.862Z headscale tailscaled[14930]: 2021/07/17 17:06:13 wgengine status error: engine closing; no status
    2021-07-17T15:06:13.972Z headscale tailscaled[14930]: 2021/07/17 17:06:13 flushing log.
    2021-07-17T15:06:13.976Z headscale tailscaled[14930]: 2021/07/17 17:06:13 logger closing down
    2021-07-17T15:06:14.037Z headscale tailscaled[14930]: 2021/07/17 17:06:14 logtail: dialed "log.tailscale.io:443" in 216ms
    2021-07-17T15:06:15.215Z headscale headscale[61967]: 2021/07/17 17:06:15 [innernet-test] The client has closed the connection
    2021-07-17T15:06:15.236Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:06:15 | 200 |         1m56s |     51.75.32.28 | POST     "/machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map"
    
    innernet-test machine
    2021-07-17T09:00:01.585Z innernet-test newsyslog[60243]: logfile turned over
    2021-07-17T15:04:06.770Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 logtail started
    2021-07-17T15:04:06.770Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 Program starting: vdate.20210603, Go 1.16.6: []string{"/usr/local/bin/tailscaled"}
    2021-07-17T15:04:06.770Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 LogID: ee6414f1b608db52193ac3e35f185522bc0ce6528ee16a49bab8c6a8c2060618
    2021-07-17T15:04:06.770Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 logpolicy: using system state directory "/var/db/tailscale"
    2021-07-17T15:04:06.772Z innernet-test tailscaled[74184]: logpolicy.Read /var/db/tailscale/tailscaled.log.conf: open /var/db/tailscale/tailscaled.log.conf: no such file or directory
    2021-07-17T15:04:06.772Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 wgengine.NewUserspaceEngine(tun "tun") ...
    2021-07-17T15:04:06.782Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 dns: using dns.directManager
    2021-07-17T15:04:06.784Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 link state: interfaces.State{defaultRoute=TODO ifs={vio0:[192.168.135.48/24]} v4=true v6=false}
    2021-07-17T15:04:06.787Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 Creating wireguard device...
    2021-07-17T15:04:06.788Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 Bringing wireguard device up...
    2021-07-17T15:04:06.790Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 Bringing router up...
    2021-07-17T15:04:06.809Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 external route: up
    2021-07-17T15:04:06.886Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 Clearing router settings...
    2021-07-17T15:04:06.888Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 Starting link monitor...
    2021-07-17T15:04:06.890Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 Starting magicsock...
    2021-07-17T15:04:06.892Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 Engine created.
    2021-07-17T15:04:06.899Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 Listening on /var/run/tailscale/tailscaled.sock
    2021-07-17T15:04:06.952Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 netmap packet filter: (not ready yet)
    2021-07-17T15:04:06.952Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 Start
    2021-07-17T15:04:06.953Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 using backend prefs
    2021-07-17T15:04:06.956Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 created empty state for "_daemon": Prefs{ra=true dns=true want=false Persist=nil}
    2021-07-17T15:04:06.956Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 got initial portlist info in 0s
    2021-07-17T15:04:06.956Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 magicsock: disco key = d:95f0a6e02bfcbb80
    2021-07-17T15:04:06.960Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 control: HostInfo: {"IPNVersion":"date.20210603","BackendLogID":"ee6414f1b608db52193ac3e35f185522bc0ce6528ee16a49bab8c6a8c2060618","OS":"openbsd","Hostname":"innernet-test","GoArch":"amd64","Services":[{"Proto":"tcp","Port":22},{"Proto":"tcp","Port":25},{"Proto":"tcp","Port":8000}]}
    2021-07-17T15:04:06.961Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 Backend: logs: be:ee6414f1b608db52193ac3e35f185522bc0ce6528ee16a49bab8c6a8c2060618 fe:
    2021-07-17T15:04:06.961Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 Switching ipn state NoState -> NeedsLogin (WantRunning=false, nm=false)
    2021-07-17T15:04:06.965Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 blockEngineUpdates(true)
    2021-07-17T15:04:06.966Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 wgengine: Reconfig: configuring userspace wireguard config (with 0/0 peers)
    2021-07-17T15:04:06.966Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 wgengine: Reconfig: configuring router
    2021-07-17T15:04:06.966Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 wgengine: Reconfig: configuring DNS
    2021-07-17T15:04:06.966Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 dns: Set: {DefaultResolvers:[] Routes:map[] SearchDomains:[] Hosts:map[]}
    2021-07-17T15:04:06.967Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 dns: Resolvercfg: {Routes:map[] Hosts:map[] LocalDomains:[]}
    2021-07-17T15:04:06.967Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 dns: OScfg: {Nameservers:[] SearchDomains:[] MatchDomains:[]}
    2021-07-17T15:04:06.968Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 control: authRoutine: state:new; goal=nil paused=false
    2021-07-17T15:04:06.968Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 control: mapRoutine: state:new
    2021-07-17T15:04:06.968Z innernet-test tailscaled[74184]: 2021/07/17 17:04:06 health("overall"): error: state=NeedsLogin, wantRunning=false
    2021-07-17T15:04:07.267Z innernet-test tailscaled[74184]: 2021/07/17 17:04:07 logtail: dialed "log.tailscale.io:443" in 380ms
    2021-07-17T15:04:17.572Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 Start
    2021-07-17T15:04:17.573Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: client.Shutdown()
    2021-07-17T15:04:17.573Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: client.Shutdown: inSendStatus=0
    2021-07-17T15:04:17.574Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: authRoutine: state:new; goal=nil paused=false
    2021-07-17T15:04:17.575Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: mapRoutine: context done.
    2021-07-17T15:04:17.575Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: mapRoutine: state:new
    2021-07-17T15:04:17.575Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: mapRoutine: quit
    2021-07-17T15:04:17.575Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: Client.Shutdown done.
    2021-07-17T15:04:17.575Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 using backend prefs
    2021-07-17T15:04:17.575Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 created empty state for "_daemon": Prefs{ra=true dns=true want=false Persist=nil}
    2021-07-17T15:04:17.583Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 generating new machine key
    2021-07-17T15:04:17.586Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 machine key written to store
    2021-07-17T15:04:17.587Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: HostInfo: {"IPNVersion":"date.20210603","BackendLogID":"ee6414f1b608db52193ac3e35f185522bc0ce6528ee16a49bab8c6a8c2060618","OS":"openbsd","Hostname":"innernet-test","GoArch":"amd64","Services":[{"Proto":"tcp","Port":22},{"Proto":"tcp","Port":25},{"Proto":"tcp","Port":8000}]}
    2021-07-17T15:04:17.588Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 Backend: logs: be:ee6414f1b608db52193ac3e35f185522bc0ce6528ee16a49bab8c6a8c2060618 fe:
    2021-07-17T15:04:17.588Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 Switching ipn state NoState -> NeedsLogin (WantRunning=true, nm=false)
    2021-07-17T15:04:17.590Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 blockEngineUpdates(true)
    2021-07-17T15:04:17.591Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 StartLoginInteractive: url=false
    2021-07-17T15:04:17.591Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: client.Login(false, 2)
    2021-07-17T15:04:17.591Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: authRoutine: state:new; wantLoggedIn=true
    2021-07-17T15:04:17.592Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: direct.TryLogin(token=false, flags=2)
    2021-07-17T15:04:17.592Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: LoginInteractive -> regen=true
    2021-07-17T15:04:17.592Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: doLogin(regen=true, hasUrl=false)
    2021-07-17T15:04:17.595Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: mapRoutine: state:authenticating
    2021-07-17T15:04:17.866Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: Generating a new nodekey.
    2021-07-17T15:04:17.867Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: RegisterReq: onode=[AAAAA] node=[QzY2R] fup=false
    2021-07-17T15:04:17.894Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: RegisterReq: got response; nodeKeyExpired=false, machineAuthorized=true; authURL=false
    2021-07-17T15:04:17.895Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: No AuthURL
    2021-07-17T15:04:17.895Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 blockEngineUpdates(false)
    2021-07-17T15:04:17.896Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 authReconfig: netmap not yet valid. Skipping.
    2021-07-17T15:04:17.896Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 authReconfig: netmap not yet valid. Skipping.
    2021-07-17T15:04:17.897Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: authRoutine: state:authenticated; goal=nil paused=false
    2021-07-17T15:04:17.897Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: mapRoutine: new map needed while idle.
    2021-07-17T15:04:17.897Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 control: mapRoutine: state:authenticated
    2021-07-17T15:04:17.936Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 active login: viqWORKS
    2021-07-17T15:04:17.941Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 netmap packet filter: [[TCP UDP ICMPv4 ICMPv6][0.0.0.0/0,::/0]=>[0.0.0.0/0:*,::/0:*]]
    2021-07-17T15:04:17.948Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:04:17.961Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 Switching ipn state NeedsLogin -> Starting (WantRunning=true, nm=true)
    2021-07-17T15:04:17.961Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 magicsock: SetPrivateKey called (init)
    2021-07-17T15:04:17.961Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 wgengine: Reconfig: configuring userspace wireguard config (with 0/1 peers)
    2021-07-17T15:04:17.961Z innernet-test tailscaled[74184]: 2021/07/17 17:04:17 wgengine: Reconfig: configuring router
    2021-07-17T15:04:18.040Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 wgengine: Reconfig: configuring DNS
    2021-07-17T15:04:18.040Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 dns: Set: {DefaultResolvers:[] Routes:map[] SearchDomains:[] Hosts:map[headscale.:[100.99.59.105] innernet-test.:[100.87.15.215]]}
    2021-07-17T15:04:18.041Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 dns: Resolvercfg: {Routes:map[] Hosts:map[headscale.:[100.99.59.105] innernet-test.:[100.87.15.215]] LocalDomains:[]}
    2021-07-17T15:04:18.041Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 dns: OScfg: {Nameservers:[] SearchDomains:[] MatchDomains:[]}
    2021-07-17T15:04:18.045Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 peerapi: serving on http://100.87.15.215:47775
    2021-07-17T15:04:18.054Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 Received error: PollNetMap: EOF
    2021-07-17T15:04:18.058Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 control: HostInfo: {"IPNVersion":"date.20210603","BackendLogID":"ee6414f1b608db52193ac3e35f185522bc0ce6528ee16a49bab8c6a8c2060618","OS":"openbsd","Hostname":"innernet-test","GoArch":"amd64","Services":[{"Proto":"peerapi4","Port":47775}]}
    2021-07-17T15:04:18.062Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 control: mapRoutine: backoff: 8 msec
    2021-07-17T15:04:18.075Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 control: mapRoutine: state:authenticated
    2021-07-17T15:04:18.112Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 control: mapRoutine: state:authenticated
    2021-07-17T15:04:18.112Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 [RATELIMIT] format("control: mapRoutine: %s")
    2021-07-17T15:04:18.163Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 Received error: PollNetMap: EOF
    2021-07-17T15:04:18.163Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 control: mapRoutine: backoff: 43 msec
    2021-07-17T15:04:18.244Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 Received error: PollNetMap: EOF
    2021-07-17T15:04:18.245Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 control: mapRoutine: backoff: 102 msec
    2021-07-17T15:04:18.246Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 magicsock: home is now derp-4 (fra)
    2021-07-17T15:04:18.247Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 magicsock: endpoints changed: 51.75.32.28:53006 (stun), 192.168.135.48:23368 (local)
    2021-07-17T15:04:18.247Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 control: client.newEndpoints(0, [51.75.32.28:53006 192.168.135.48:23368])
    2021-07-17T15:04:18.249Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 magicsock: adding connection to derp-4 for home-keep-alive
    2021-07-17T15:04:18.249Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 magicsock: 1 active derp conns: derp-4=cr0s,wr0s
    2021-07-17T15:04:18.250Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 Switching ipn state Starting -> Running (WantRunning=true, nm=true)
    2021-07-17T15:04:18.250Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 control: NetInfo: NetInfo{varies=true hairpin=false ipv6=false udp=true derp=#4 portmap= link=""}
    2021-07-17T15:04:18.251Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:04:18.251Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 derphttp.Client.Connect: connecting to derp-4 (fra)
    2021-07-17T15:04:18.330Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 magicsock: derp-4 connected; connGen=1
    2021-07-17T15:04:18.331Z innernet-test tailscaled[74184]: 2021/07/17 17:04:18 health("overall"): ok
    2021-07-17T15:04:26.910Z innernet-test tailscaled[74184]: 2021/07/17 17:04:26 LinkChange: major, rebinding. New state: interfaces.State{defaultRoute=TODO ifs={tun0:[100.87.15.215/32] vio0:[192.168.135.48/24]} v4=true v6=false}
    2021-07-17T15:04:26.910Z innernet-test tailscaled[74184]: 2021/07/17 17:04:26 magicsock: closing connection to derp-4 (rebind), age 9s
    2021-07-17T15:04:26.913Z innernet-test tailscaled[74184]: 2021/07/17 17:04:26 magicsock: 0 active derp conns
    2021-07-17T15:04:26.918Z innernet-test tailscaled[74184]: 2021/07/17 17:04:26 magicsock: adding connection to derp-4 for home-keep-alive
    2021-07-17T15:04:26.921Z innernet-test tailscaled[74184]: 2021/07/17 17:04:26 magicsock: 1 active derp conns: derp-4=cr0s,wr0s
    2021-07-17T15:04:26.924Z innernet-test tailscaled[74184]: 2021/07/17 17:04:26 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:04:26.925Z innernet-test tailscaled[74184]: 2021/07/17 17:04:26 health("overall"): error: not connected to home DERP region 4
    2021-07-17T15:04:26.925Z innernet-test tailscaled[74184]: 2021/07/17 17:04:26 derphttp.Client.Recv: connecting to derp-4 (fra)
    2021-07-17T15:04:27.000Z innernet-test tailscaled[74184]: 2021/07/17 17:04:27 magicsock: derp-4 connected; connGen=1
    2021-07-17T15:04:27.000Z innernet-test tailscaled[74184]: 2021/07/17 17:04:27 health("overall"): ok
    2021-07-17T15:04:27.178Z innernet-test tailscaled[74184]: 2021/07/17 17:04:27 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:05:06.970Z innernet-test tailscaled[74184]: 2021/07/17 17:05:06 health("overall"): error: not in map poll
    2021-07-17T15:06:15.215Z innernet-test tailscaled[74184]: 2021/07/17 17:06:15 Received error: PollNetMap: Post "https://headscale.viq.vc/machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map": EOF
    2021-07-17T15:06:15.215Z innernet-test tailscaled[74184]: 2021/07/17 17:06:15 control: mapRoutine: backoff: 87 msec
    2021-07-17T15:06:15.306Z innernet-test tailscaled[74184]: 2021/07/17 17:06:15 [RATELIMIT] format("control: mapRoutine: %s") (2 dropped)
    2021-07-17T15:06:15.306Z innernet-test tailscaled[74184]: 2021/07/17 17:06:15 control: mapRoutine: state:authenticated
    2021-07-17T15:06:15.312Z innernet-test tailscaled[74184]: 2021/07/17 17:06:15 trying bootstrapDNS("derp9.tailscale.com", "207.148.3.137") for "headscale.viq.vc" ...
    2021-07-17T15:06:15.748Z innernet-test tailscaled[74184]: 2021/07/17 17:06:15 trying bootstrapDNS("derp1.tailscale.com", "2604:a880:400:d1::828:b001") for "headscale.viq.vc" ...
    2021-07-17T15:06:15.749Z innernet-test tailscaled[74184]: 2021/07/17 17:06:15 bootstrapDNS("derp1.tailscale.com", "2604:a880:400:d1::828:b001") for "headscale.viq.vc" error: Get "https://derp1.tailscale.com/bootstrap-dns?q=headscale.viq.vc": dial tcp [2604:a880:400:d1::828:b001]:443: connect: no route to host
    2021-07-17T15:06:15.749Z innernet-test tailscaled[74184]: 2021/07/17 17:06:15 trying bootstrapDNS("derp8.tailscale.com", "167.71.139.179") for "headscale.viq.vc" ...
    2021-07-17T15:06:15.847Z innernet-test tailscaled[74184]: 2021/07/17 17:06:15 trying bootstrapDNS("derp4.tailscale.com", "2a03:b0c0:3:e0::36e:9001") for "headscale.viq.vc" ...
    2021-07-17T15:06:15.848Z innernet-test tailscaled[74184]: 2021/07/17 17:06:15 bootstrapDNS("derp4.tailscale.com", "2a03:b0c0:3:e0::36e:9001") for "headscale.viq.vc" error: Get "https://derp4.tailscale.com/bootstrap-dns?q=headscale.viq.vc": dial tcp [2a03:b0c0:3:e0::36e:9001]:443: connect: no route to host
    2021-07-17T15:06:15.848Z innernet-test tailscaled[74184]: 2021/07/17 17:06:15 trying bootstrapDNS("derp7.tailscale.com", "167.179.89.145") for "headscale.viq.vc" ...
    2021-07-17T15:06:16.672Z innernet-test tailscaled[74184]: 2021/07/17 17:06:16 trying bootstrapDNS("derp3.tailscale.com", "2400:6180:0:d1::67d:8001") for "headscale.viq.vc" ...
    2021-07-17T15:06:16.673Z innernet-test tailscaled[74184]: 2021/07/17 17:06:16 bootstrapDNS("derp3.tailscale.com", "2400:6180:0:d1::67d:8001") for "headscale.viq.vc" error: Get "https://derp3.tailscale.com/bootstrap-dns?q=headscale.viq.vc": dial tcp [2400:6180:0:d1::67d:8001]:443: connect: no route to host
    2021-07-17T15:06:16.674Z innernet-test tailscaled[74184]: 2021/07/17 17:06:16 Received error: PollNetMap: Post "https://headscale.viq.vc/machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map": dial tcp 51.75.32.29:443: connect: connection refused
    2021-07-17T15:06:16.674Z innernet-test tailscaled[74184]: 2021/07/17 17:06:16 control: mapRoutine: backoff: 366 msec
    2021-07-17T15:06:17.056Z innernet-test tailscaled[74184]: 2021/07/17 17:06:17 control: mapRoutine: state:authenticated
    2021-07-17T15:06:17.064Z innernet-test tailscaled[74184]: 2021/07/17 17:06:17 trying bootstrapDNS("derp10.tailscale.com", "137.220.36.168") for "headscale.viq.vc" ...
    2021-07-17T15:06:17.611Z innernet-test tailscaled[74184]: 2021/07/17 17:06:17 trying bootstrapDNS("derp9.tailscale.com", "2001:19f0:6401:1d9c:5400:2ff:feef:bb82") for "headscale.viq.vc" ...
    2021-07-17T15:06:17.612Z innernet-test tailscaled[74184]: 2021/07/17 17:06:17 bootstrapDNS("derp9.tailscale.com", "2001:19f0:6401:1d9c:5400:2ff:feef:bb82") for "headscale.viq.vc" error: Get "https://derp9.tailscale.com/bootstrap-dns?q=headscale.viq.vc": dial tcp [2001:19f0:6401:1d9c:5400:2ff:feef:bb82]:443: connect: no route to host
    2021-07-17T15:06:17.613Z innernet-test tailscaled[74184]: 2021/07/17 17:06:17 trying bootstrapDNS("derp6.tailscale.com", "68.183.90.120") for "headscale.viq.vc" ...
    2021-07-17T15:06:18.133Z innernet-test tailscaled[74184]: 2021/07/17 17:06:18 trying bootstrapDNS("derp1.tailscale.com", "2604:a880:400:d1::828:b001") for "headscale.viq.vc" ...
    2021-07-17T15:06:18.134Z innernet-test tailscaled[74184]: 2021/07/17 17:06:18 bootstrapDNS("derp1.tailscale.com", "2604:a880:400:d1::828:b001") for "headscale.viq.vc" error: Get "https://derp1.tailscale.com/bootstrap-dns?q=headscale.viq.vc": dial tcp [2604:a880:400:d1::828:b001]:443: connect: no route to host
    2021-07-17T15:06:18.134Z innernet-test tailscaled[74184]: 2021/07/17 17:06:18 trying bootstrapDNS("derp5.tailscale.com", "103.43.75.49") for "headscale.viq.vc" ...
    2021-07-17T15:06:19.020Z innernet-test tailscaled[74184]: 2021/07/17 17:06:19 trying bootstrapDNS("derp10.tailscale.com", "2001:19f0:8001:2d9:5400:2ff:feef:bbb1") for "headscale.viq.vc" ...
    2021-07-17T15:06:19.021Z innernet-test tailscaled[74184]: 2021/07/17 17:06:19 bootstrapDNS("derp10.tailscale.com", "2001:19f0:8001:2d9:5400:2ff:feef:bbb1") for "headscale.viq.vc" error: Get "https://derp10.tailscale.com/bootstrap-dns?q=headscale.viq.vc": dial tcp [2001:19f0:8001:2d9:5400:2ff:feef:bbb1]:443: connect: no route to host
    2021-07-17T15:06:19.021Z innernet-test tailscaled[74184]: 2021/07/17 17:06:19 Received error: PollNetMap: Post "https://headscale.viq.vc/machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map": dial tcp 51.75.32.29:443: connect: connection refused
    2021-07-17T15:06:19.022Z innernet-test tailscaled[74184]: 2021/07/17 17:06:19 control: mapRoutine: backoff: 230 msec
    2021-07-17T15:06:19.266Z innernet-test tailscaled[74184]: 2021/07/17 17:06:19 control: mapRoutine: state:authenticated
    2021-07-17T15:06:19.269Z innernet-test tailscaled[74184]: 2021/07/17 17:06:19 trying bootstrapDNS("derp6.tailscale.com", "68.183.90.120") for "headscale.viq.vc" ...
    2021-07-17T15:06:19.817Z innernet-test tailscaled[74184]: 2021/07/17 17:06:19 trying bootstrapDNS("derp7.tailscale.com", "2401:c080:1000:467f:5400:2ff:feee:22aa") for "headscale.viq.vc" ...
    2021-07-17T15:06:19.818Z innernet-test tailscaled[74184]: 2021/07/17 17:06:19 bootstrapDNS("derp7.tailscale.com", "2401:c080:1000:467f:5400:2ff:feee:22aa") for "headscale.viq.vc" error: Get "https://derp7.tailscale.com/bootstrap-dns?q=headscale.viq.vc": dial tcp [2401:c080:1000:467f:5400:2ff:feee:22aa]:443: connect: no route to host
    2021-07-17T15:06:19.818Z innernet-test tailscaled[74184]: 2021/07/17 17:06:19 trying bootstrapDNS("derp9.tailscale.com", "207.148.3.137") for "headscale.viq.vc" ...
    2021-07-17T15:06:20.310Z innernet-test tailscaled[74184]: 2021/07/17 17:06:20 trying bootstrapDNS("derp10.tailscale.com", "2001:19f0:8001:2d9:5400:2ff:feef:bbb1") for "headscale.viq.vc" ...
    2021-07-17T15:06:20.311Z innernet-test tailscaled[74184]: 2021/07/17 17:06:20 bootstrapDNS("derp10.tailscale.com", "2001:19f0:8001:2d9:5400:2ff:feef:bbb1") for "headscale.viq.vc" error: Get "https://derp10.tailscale.com/bootstrap-dns?q=headscale.viq.vc": dial tcp [2001:19f0:8001:2d9:5400:2ff:feef:bbb1]:443: connect: no route to host
    2021-07-17T15:06:20.312Z innernet-test tailscaled[74184]: 2021/07/17 17:06:20 trying bootstrapDNS("derp11.tailscale.com", "18.230.97.74") for "headscale.viq.vc" ...
    2021-07-17T15:06:21.051Z innernet-test tailscaled[74184]: 2021/07/17 17:06:21 trying bootstrapDNS("derp6.tailscale.com", "2400:6180:100:d0::982:d001") for "headscale.viq.vc" ...
    2021-07-17T15:06:21.052Z innernet-test tailscaled[74184]: 2021/07/17 17:06:21 bootstrapDNS("derp6.tailscale.com", "2400:6180:100:d0::982:d001") for "headscale.viq.vc" error: Get "https://derp6.tailscale.com/bootstrap-dns?q=headscale.viq.vc": dial tcp [2400:6180:100:d0::982:d001]:443: connect: no route to host
    2021-07-17T15:06:21.060Z innernet-test tailscaled[74184]: 2021/07/17 17:06:21 Received error: PollNetMap: Post "https://headscale.viq.vc/machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map": dial tcp 51.75.32.29:443: connect: connection refused
    2021-07-17T15:06:21.062Z innernet-test tailscaled[74184]: 2021/07/17 17:06:21 control: mapRoutine: backoff: 344 msec
    2021-07-17T15:06:21.412Z innernet-test tailscaled[74184]: 2021/07/17 17:06:21 control: mapRoutine: state:authenticated
    2021-07-17T15:06:21.417Z innernet-test tailscaled[74184]: 2021/07/17 17:06:21 trying bootstrapDNS("derp5.tailscale.com", "103.43.75.49") for "headscale.viq.vc" ...
    2021-07-17T15:06:22.316Z innernet-test tailscaled[74184]: 2021/07/17 17:06:22 trying bootstrapDNS("derp7.tailscale.com", "2401:c080:1000:467f:5400:2ff:feee:22aa") for "headscale.viq.vc" ...
    2021-07-17T15:06:22.316Z innernet-test tailscaled[74184]: 2021/07/17 17:06:22 bootstrapDNS("derp7.tailscale.com", "2401:c080:1000:467f:5400:2ff:feee:22aa") for "headscale.viq.vc" error: Get "https://derp7.tailscale.com/bootstrap-dns?q=headscale.viq.vc": dial tcp [2401:c080:1000:467f:5400:2ff:feee:22aa]:443: connect: no route to host
    2021-07-17T15:06:22.317Z innernet-test tailscaled[74184]: 2021/07/17 17:06:22 trying bootstrapDNS("derp7.tailscale.com", "167.179.89.145") for "headscale.viq.vc" ...
    2021-07-17T15:06:23.144Z innernet-test tailscaled[74184]: 2021/07/17 17:06:23 trying bootstrapDNS("derp1.tailscale.com", "2604:a880:400:d1::828:b001") for "headscale.viq.vc" ...
    2021-07-17T15:06:23.145Z innernet-test tailscaled[74184]: 2021/07/17 17:06:23 bootstrapDNS("derp1.tailscale.com", "2604:a880:400:d1::828:b001") for "headscale.viq.vc" error: Get "https://derp1.tailscale.com/bootstrap-dns?q=headscale.viq.vc": dial tcp [2604:a880:400:d1::828:b001]:443: connect: no route to host
    2021-07-17T15:06:23.146Z innernet-test tailscaled[74184]: 2021/07/17 17:06:23 trying bootstrapDNS("derp11.tailscale.com", "18.230.97.74") for "headscale.viq.vc" ...
    2021-07-17T15:06:23.913Z innernet-test tailscaled[74184]: 2021/07/17 17:06:23 trying bootstrapDNS("derp6.tailscale.com", "2400:6180:100:d0::982:d001") for "headscale.viq.vc" ...
    2021-07-17T15:06:23.914Z innernet-test tailscaled[74184]: 2021/07/17 17:06:23 bootstrapDNS("derp6.tailscale.com", "2400:6180:100:d0::982:d001") for "headscale.viq.vc" error: Get "https://derp6.tailscale.com/bootstrap-dns?q=headscale.viq.vc": dial tcp [2400:6180:100:d0::982:d001]:443: connect: no route to host
    2021-07-17T15:06:23.915Z innernet-test tailscaled[74184]: 2021/07/17 17:06:23 Received error: PollNetMap: Post "https://headscale.viq.vc/machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map": dial tcp 51.75.32.29:443: connect: connection refused
    2021-07-17T15:06:23.916Z innernet-test tailscaled[74184]: 2021/07/17 17:06:23 control: mapRoutine: backoff: 901 msec
    2021-07-17T15:06:24.836Z innernet-test tailscaled[74184]: 2021/07/17 17:06:24 control: mapRoutine: state:authenticated
    2021-07-17T15:06:24.840Z innernet-test tailscaled[74184]: 2021/07/17 17:06:24 trying bootstrapDNS("derp7.tailscale.com", "167.179.89.145") for "headscale.viq.vc" ...
    2021-07-17T15:06:25.666Z innernet-test tailscaled[74184]: 2021/07/17 17:06:25 trying bootstrapDNS("derp1.tailscale.com", "2604:a880:400:d1::828:b001") for "headscale.viq.vc" ...
    2021-07-17T15:06:25.674Z innernet-test tailscaled[74184]: 2021/07/17 17:06:25 bootstrapDNS("derp1.tailscale.com", "2604:a880:400:d1::828:b001") for "headscale.viq.vc" error: Get "https://derp1.tailscale.com/bootstrap-dns?q=headscale.viq.vc": dial tcp [2604:a880:400:d1::828:b001]:443: connect: no route to host
    2021-07-17T15:06:25.674Z innernet-test tailscaled[74184]: 2021/07/17 17:06:25 trying bootstrapDNS("derp10.tailscale.com", "137.220.36.168") for "headscale.viq.vc" ...
    2021-07-17T15:06:25.787Z innernet-test tailscaled[74184]: 2021/07/17 17:06:25 tailscaled got signal terminated; shutting down
    2021-07-17T15:06:25.795Z innernet-test tailscaled[74184]: 2021/07/17 17:06:25 control: client.Shutdown()
    2021-07-17T15:06:25.799Z innernet-test tailscaled[74184]: 2021/07/17 17:06:25 control: client.Shutdown: inSendStatus=0
    2021-07-17T15:06:25.807Z innernet-test tailscaled[74184]: 2021/07/17 17:06:25 control: authRoutine: state:authenticated; goal=nil paused=false
    2021-07-17T15:06:25.807Z innernet-test tailscaled[74184]: 2021/07/17 17:06:25 bootstrapDNS("derp10.tailscale.com", "137.220.36.168") for "headscale.viq.vc" error: Get "https://derp10.tailscale.com/bootstrap-dns?q=headscale.viq.vc": context canceled
    2021-07-17T15:06:25.807Z innernet-test tailscaled[74184]: 2021/07/17 17:06:25 control: mapRoutine: state:authenticated
    2021-07-17T15:06:25.807Z innernet-test tailscaled[74184]: 2021/07/17 17:06:25 control: mapRoutine: quit
    2021-07-17T15:06:25.807Z innernet-test tailscaled[74184]: 2021/07/17 17:06:25 control: Client.Shutdown done.
    2021-07-17T15:06:25.808Z innernet-test tailscaled[74184]: 2021/07/17 17:06:25 magicsock: closing connection to derp-4 (conn-close), age 1m59s
    2021-07-17T15:06:25.809Z innernet-test tailscaled[74184]: 2021/07/17 17:06:25 magicsock: 0 active derp conns
    2021-07-17T15:06:25.834Z innernet-test tailscaled[74184]: 2021/07/17 17:06:25 external route: down
    2021-07-17T15:06:25.835Z innernet-test tailscaled[74184]: 2021/07/17 17:06:25 wgengine status error: engine closing; no status
    2021-07-17T15:06:25.937Z innernet-test tailscaled[74184]: 2021/07/17 17:06:25 flushing log.
    2021-07-17T15:06:25.937Z innernet-test tailscaled[74184]: 2021/07/17 17:06:25 logger closing down
    2021-07-17T15:12:27.865Z innernet-test ntpd[57974]: adjusting clock frequency by 0.607733 to 2.555048ppm
    

    At this point daemons were stopped. Situation at this point: tailscale status on innernet-test shows both machines, on headscale shows only itself. headscale -n viqWORKS nodes list shows both machines.

    Part 2

    At this point I'm rotating logs, starting daemons, and will run status and ping

    headscale# tailscale status
    100.99.59.105   headscale            viqWORKS     openbsd -
    100.87.15.215   innernet-test        viqWORKS     openbsd -
    headscale# tailscale ping 100.87.15.215
    timeout waiting for ping reply
    timeout waiting for ping reply
    timeout waiting for ping reply
    timeout waiting for ping reply
    timeout waiting for ping reply
    timeout waiting for ping reply
    timeout waiting for ping reply
    timeout waiting for ping reply
    timeout waiting for ping reply
    timeout waiting for ping reply
    no reply
    headscale# tailscale status             
    100.99.59.105   headscale            viqWORKS     openbsd -
    100.87.15.215   innernet-test        viqWORKS     openbsd active; relay "fra", tx 2960 rx 0
    
    innernet-test# tailscale status 
    100.87.15.215   innernet-test        viqWORKS     openbsd -
    100.99.59.105   headscale            viqWORKS     openbsd active; relay "lhr", tx 4256 rx 5328
    innernet-test# tailscale ping 100.99.59.105
    timeout waiting for ping reply
    timeout waiting for ping reply
    timeout waiting for ping reply
    timeout waiting for ping reply
    timeout waiting for ping reply
    timeout waiting for ping reply
    timeout waiting for ping reply
    timeout waiting for ping reply
    timeout waiting for ping reply
    timeout waiting for ping reply
    no reply
    innernet-test# tailscale status             
    100.87.15.215   innernet-test        viqWORKS     openbsd -
    100.99.59.105   headscale            viqWORKS     openbsd active; relay "lhr", tx 5140 rx 6512
    

    Logs

    headscale machine

    nginx
    51.75.32.29 - - [17/Jul/2021:17:23:56 +0200] "GET /key HTTP/1.1" 200 64 "-" "Go-http-client/1.1"
    51.75.32.29 - - [17/Jul/2021:17:23:56 +0200] "POST /machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839 HTTP/1.1" 200 326 "-" "Go-http-client/1.1"
    51.75.32.29 - - [17/Jul/2021:17:23:56 +0200] "POST /machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map HTTP/1.1" 200 1776 "-" "Go-http-client/1.1"
    51.75.32.29 - - [17/Jul/2021:17:23:56 +0200] "POST /machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map HTTP/1.1" 200 1758 "-" "Go-http-client/1.1"
    51.75.32.29 - - [17/Jul/2021:17:23:56 +0200] "POST /machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map HTTP/1.1" 200 1758 "-" "Go-http-client/1.1"
    51.75.32.29 - - [17/Jul/2021:17:23:56 +0200] "POST /machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map HTTP/1.1" 200 1758 "-" "Go-http-client/1.1"
    51.75.32.28 - - [17/Jul/2021:17:24:14 +0200] "GET /key HTTP/1.1" 200 64 "-" "Go-http-client/1.1"
    51.75.32.28 - - [17/Jul/2021:17:24:14 +0200] "POST /machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317 HTTP/1.1" 200 326 "-" "Go-http-client/1.1"
    51.75.32.28 - - [17/Jul/2021:17:24:14 +0200] "POST /machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map HTTP/1.1" 200 1769 "-" "Go-http-client/1.1"
    51.75.32.28 - - [17/Jul/2021:17:24:14 +0200] "POST /machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map HTTP/1.1" 200 1758 "-" "Go-http-client/1.1"
    51.75.32.28 - - [17/Jul/2021:17:24:14 +0200] "POST /machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map HTTP/1.1" 200 1758 "-" "Go-http-client/1.1"
    51.75.32.28 - - [17/Jul/2021:17:24:14 +0200] "POST /machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map HTTP/1.1" 200 1758 "-" "Go-http-client/1.1"
    51.75.32.28 - - [17/Jul/2021:17:24:15 +0200] "POST /machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map HTTP/1.1" 200 1758 "-" "Go-http-client/1.1"
    
    headscale & tailscaled
    2021-07-17T15:22:55.316Z headscale newsyslog[33456]: logfile turned over
    2021-07-17T15:23:56.173Z headscale tailscaled[2483]: 2021/07/17 17:23:56 logtail started
    2021-07-17T15:23:56.190Z headscale tailscaled[2483]: 2021/07/17 17:23:56 Program starting: vdate.20210603, Go 1.16.6: []string{"/usr/local/bin/tailscaled", "-port", "22502"}
    2021-07-17T15:23:56.195Z headscale tailscaled[2483]: 2021/07/17 17:23:56 LogID: 684e0fca0c5f487084b120b5dbe9bd2711ccffd8987b1fd88ed91205a4e2b573
    2021-07-17T15:23:56.199Z headscale tailscaled[2483]: 2021/07/17 17:23:56 logpolicy: using system state directory "/var/db/tailscale"
    2021-07-17T15:23:56.203Z headscale tailscaled[2483]: 2021/07/17 17:23:56 wgengine.NewUserspaceEngine(tun "tun") ...
    2021-07-17T15:23:56.214Z headscale tailscaled[2483]: 2021/07/17 17:23:56 dns: using dns.directManager
    2021-07-17T15:23:56.228Z headscale tailscaled[2483]: 2021/07/17 17:23:56 link state: interfaces.State{defaultRoute=TODO ifs={vio0:[51.75.32.29/32]} v4=true v6=false}
    2021-07-17T15:23:56.233Z headscale tailscaled[2483]: 2021/07/17 17:23:56 Creating wireguard device...
    2021-07-17T15:23:56.236Z headscale tailscaled[2483]: 2021/07/17 17:23:56 Bringing wireguard device up...
    2021-07-17T15:23:56.239Z headscale tailscaled[2483]: 2021/07/17 17:23:56 Bringing router up...
    2021-07-17T15:23:56.261Z headscale tailscaled[2483]: 2021/07/17 17:23:56 external route: up
    2021-07-17T15:23:56.266Z headscale tailscaled[2483]: 2021/07/17 17:23:56 Clearing router settings...
    2021-07-17T15:23:56.271Z headscale tailscaled[2483]: 2021/07/17 17:23:56 Starting link monitor...
    2021-07-17T15:23:56.274Z headscale tailscaled[2483]: 2021/07/17 17:23:56 Starting magicsock...
    2021-07-17T15:23:56.279Z headscale tailscaled[2483]: 2021/07/17 17:23:56 Engine created.
    2021-07-17T15:23:56.287Z headscale tailscaled[2483]: 2021/07/17 17:23:56 Listening on /var/run/tailscale/tailscaled.sock
    2021-07-17T15:23:56.320Z headscale tailscaled[2483]: 2021/07/17 17:23:56 netmap packet filter: (not ready yet)
    2021-07-17T15:23:56.324Z headscale tailscaled[2483]: 2021/07/17 17:23:56 Start
    2021-07-17T15:23:56.328Z headscale tailscaled[2483]: 2021/07/17 17:23:56 using backend prefs
    2021-07-17T15:23:56.331Z headscale tailscaled[2483]: 2021/07/17 17:23:56 backend prefs for "_daemon": Prefs{ra=false dns=true want=true url="https://headscale.viq.vc" Persist{lm=, o=, n=[WwgZK] u=""}}
    2021-07-17T15:23:56.401Z headscale tailscaled[2483]: 2021/07/17 17:23:56 got initial portlist info in 2ms
    2021-07-17T15:23:56.406Z headscale tailscaled[2483]: 2021/07/17 17:23:56 magicsock: disco key = d:d52bb11973f8889b
    2021-07-17T15:23:56.410Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: HostInfo: {"IPNVersion":"date.20210603","BackendLogID":"684e0fca0c5f487084b120b5dbe9bd2711ccffd8987b1fd88ed91205a4e2b573","OS":"openbsd","Hostname":"headscale","GoArch":"amd64","Services":[{"Proto":"tcp","Port":22},{"Proto":"tcp","Port":25},{"Proto":"tcp","Port":80},{"Proto":"tcp","Port":443},{"Proto":"tcp","Port":8000}]}
    2021-07-17T15:23:56.418Z headscale tailscaled[2483]: 2021/07/17 17:23:56 Backend: logs: be:684e0fca0c5f487084b120b5dbe9bd2711ccffd8987b1fd88ed91205a4e2b573 fe:
    2021-07-17T15:23:56.427Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: client.Login(false, 0)
    2021-07-17T15:23:56.434Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: authRoutine: state:new; wantLoggedIn=true
    2021-07-17T15:23:56.440Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: direct.TryLogin(token=false, flags=0)
    2021-07-17T15:23:56.446Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: doLogin(regen=false, hasUrl=false)
    2021-07-17T15:23:56.450Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: mapRoutine: state:authenticating
    2021-07-17T15:23:56.491Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:23:56 | 200 |       69.22\M-B\M-5s |     51.75.32.29 | GET      "/key"
    2021-07-17T15:23:56.499Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: RegisterReq: onode=[AAAAA] node=[WwgZK] fup=false
    2021-07-17T15:23:56.511Z headscale headscale[61967]: 2021/07/17 17:23:56 [headscale] Client is registered and we have the current NodeKey. All clear to /map
    2021-07-17T15:23:56.516Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:23:56 | 200 |    9.532241ms |     51.75.32.29 | POST     "/machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839"
    2021-07-17T15:23:56.525Z headscale tailscaled[2483]: 2021/07/17 17:23:56 logtail: dialed "log.tailscale.io:443" in 294ms
    2021-07-17T15:23:56.531Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: RegisterReq: got response; nodeKeyExpired=false, machineAuthorized=true; authURL=false
    2021-07-17T15:23:56.544Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: No AuthURL
    2021-07-17T15:23:56.555Z headscale headscale[61967]: 2021/07/17 17:23:56 [headscale] ReadOnly=true   OmitPeers=false    Stream=true
    2021-07-17T15:23:56.559Z headscale headscale[61967]: 2021/07/17 17:23:56 [headscale] Client is starting up. Asking for DERP map
    2021-07-17T15:23:56.559Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:23:56 | 200 |   19.689704ms |     51.75.32.29 | POST     "/machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map"
    2021-07-17T15:23:56.571Z headscale tailscaled[2483]: 2021/07/17 17:23:56 authReconfig: netmap not yet valid. Skipping.
    2021-07-17T15:23:56.579Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: authRoutine: state:authenticated; goal=nil paused=false
    2021-07-17T15:23:56.587Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: mapRoutine: new map needed while idle.
    2021-07-17T15:23:56.597Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: mapRoutine: state:authenticated
    2021-07-17T15:23:56.602Z headscale tailscaled[2483]: 2021/07/17 17:23:56 active login: viqWORKS
    2021-07-17T15:23:56.611Z headscale tailscaled[2483]: 2021/07/17 17:23:56 netmap packet filter: [[TCP UDP ICMPv4 ICMPv6][0.0.0.0/0,::/0]=>[0.0.0.0/0:*,::/0:*]]
    2021-07-17T15:23:56.624Z headscale tailscaled[2483]: 2021/07/17 17:23:56 Switching ipn state NoState -> Starting (WantRunning=true, nm=true)
    2021-07-17T15:23:56.630Z headscale tailscaled[2483]: 2021/07/17 17:23:56 magicsock: SetPrivateKey called (init)
    2021-07-17T15:23:56.635Z headscale tailscaled[2483]: 2021/07/17 17:23:56 wgengine: Reconfig: configuring userspace wireguard config (with 0/1 peers)
    2021-07-17T15:23:56.639Z headscale tailscaled[2483]: 2021/07/17 17:23:56 wgengine: Reconfig: configuring router
    2021-07-17T15:23:56.643Z headscale tailscaled[2483]: 2021/07/17 17:23:56 health("overall"): error: state=Starting, wantRunning=true
    2021-07-17T15:23:56.647Z headscale tailscaled[2483]: 2021/07/17 17:23:56 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:23:56.674Z headscale tailscaled[2483]: 2021/07/17 17:23:56 wgengine: Reconfig: configuring DNS
    2021-07-17T15:23:56.679Z headscale tailscaled[2483]: 2021/07/17 17:23:56 dns: Set: {DefaultResolvers:[] Routes:map[] SearchDomains:[] Hosts:map[headscale.:[100.99.59.105] innernet-test.:[100.87.15.215]]}
    2021-07-17T15:23:56.686Z headscale tailscaled[2483]: 2021/07/17 17:23:56 dns: Resolvercfg: {Routes:map[] Hosts:map[headscale.:[100.99.59.105] innernet-test.:[100.87.15.215]] LocalDomains:[]}
    2021-07-17T15:23:56.690Z headscale tailscaled[2483]: 2021/07/17 17:23:56 dns: OScfg: {Nameservers:[] SearchDomains:[] MatchDomains:[]}
    2021-07-17T15:23:56.695Z headscale tailscaled[2483]: 2021/07/17 17:23:56 peerapi: serving on http://100.99.59.105:39599
    2021-07-17T15:23:56.702Z headscale tailscaled[2483]: 2021/07/17 17:23:56 Received error: PollNetMap: EOF
    2021-07-17T15:23:56.708Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: mapRoutine: backoff: 10 msec
    2021-07-17T15:23:56.714Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: HostInfo: {"IPNVersion":"date.20210603","BackendLogID":"684e0fca0c5f487084b120b5dbe9bd2711ccffd8987b1fd88ed91205a4e2b573","OS":"openbsd","Hostname":"headscale","GoArch":"amd64","Services":[{"Proto":"peerapi4","Port":39599}]}
    2021-07-17T15:23:56.730Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: mapRoutine: state:authenticated
    2021-07-17T15:23:56.754Z headscale headscale[61967]: 2021/07/17 17:23:56 [headscale] ReadOnly=true   OmitPeers=false    Stream=true
    2021-07-17T15:23:56.759Z headscale headscale[61967]: 2021/07/17 17:23:56 [headscale] Client is starting up. Asking for DERP map
    2021-07-17T15:23:56.759Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:23:56 | 200 |   18.575769ms |     51.75.32.29 | POST     "/machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map"
    2021-07-17T15:23:56.813Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: mapRoutine: state:authenticated
    2021-07-17T15:23:56.829Z headscale headscale[61967]: 2021/07/17 17:23:56 [headscale] ReadOnly=true   OmitPeers=false    Stream=true
    2021-07-17T15:23:56.831Z headscale headscale[61967]: 2021/07/17 17:23:56 [headscale] Client is starting up. Asking for DERP map
    2021-07-17T15:23:56.831Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:23:56 | 200 |   10.318743ms |     51.75.32.29 | POST     "/machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map"
    2021-07-17T15:23:56.861Z headscale tailscaled[2483]: 2021/07/17 17:23:56 Received error: PollNetMap: EOF
    2021-07-17T15:23:56.866Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: mapRoutine: backoff: 27 msec
    2021-07-17T15:23:56.910Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: mapRoutine: state:authenticated
    2021-07-17T15:23:56.922Z headscale tailscaled[2483]: 2021/07/17 17:23:56 [RATELIMIT] format("control: mapRoutine: %s")
    2021-07-17T15:23:56.936Z headscale headscale[61967]: 2021/07/17 17:23:56 [headscale] ReadOnly=true   OmitPeers=false    Stream=true
    2021-07-17T15:23:56.939Z headscale headscale[61967]: 2021/07/17 17:23:56 [headscale] Client is starting up. Asking for DERP map
    2021-07-17T15:23:56.939Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:23:56 | 200 |   21.678717ms |     51.75.32.29 | POST     "/machine/8c9e29df0f628d41d480e8951331f1d5d621b47d3019214e3db0c1eac661f839/map"
    2021-07-17T15:23:56.958Z headscale tailscaled[2483]: 2021/07/17 17:23:56 Received error: PollNetMap: EOF
    2021-07-17T15:23:56.964Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: mapRoutine: backoff: 58 msec
    2021-07-17T15:23:56.968Z headscale tailscaled[2483]: 2021/07/17 17:23:56 magicsock: home is now derp-8 (lhr)
    2021-07-17T15:23:56.972Z headscale tailscaled[2483]: 2021/07/17 17:23:56 magicsock: endpoints changed: 51.75.32.29:22502 (stun)
    2021-07-17T15:23:56.976Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: client.newEndpoints(0, [51.75.32.29:22502])
    2021-07-17T15:23:56.981Z headscale tailscaled[2483]: 2021/07/17 17:23:56 magicsock: adding connection to derp-8 for home-keep-alive
    2021-07-17T15:23:56.984Z headscale tailscaled[2483]: 2021/07/17 17:23:56 magicsock: 1 active derp conns: derp-8=cr0s,wr0s
    2021-07-17T15:23:56.988Z headscale tailscaled[2483]: 2021/07/17 17:23:56 Switching ipn state Starting -> Running (WantRunning=true, nm=true)
    2021-07-17T15:23:56.990Z headscale tailscaled[2483]: 2021/07/17 17:23:56 control: NetInfo: NetInfo{varies=false hairpin=false ipv6=false udp=true derp=#8 portmap= link=""}
    2021-07-17T15:23:56.992Z headscale tailscaled[2483]: 2021/07/17 17:23:56 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:23:56.995Z headscale tailscaled[2483]: 2021/07/17 17:23:56 derphttp.Client.Connect: connecting to derp-8 (lhr)
    2021-07-17T15:23:57.037Z headscale headscale[61967]: 2021/07/17 17:23:57 [headscale] ReadOnly=false   OmitPeers=false    Stream=true
    2021-07-17T15:23:57.043Z headscale headscale[61967]: 2021/07/17 17:23:57 [headscale] Client is ready to access the tailnet
    2021-07-17T15:23:57.043Z headscale headscale[61967]: 2021/07/17 17:23:57 [headscale] Sending initial map
    2021-07-17T15:23:57.043Z headscale headscale[61967]: 2021/07/17 17:23:57 [headscale] Notifying peers
    2021-07-17T15:23:57.049Z headscale headscale[61967]: 2021/07/17 17:23:57 [headscale] Peer innernet-test does not appear to be polling
    2021-07-17T15:23:57.050Z headscale headscale[61967]: 2021/07/17 17:23:57 [headscale] Sending data (1833 bytes)
    2021-07-17T15:23:57.066Z headscale headscale[61967]: 2021/07/17 17:23:57 [headscale] Sending keepalive
    2021-07-17T15:23:57.080Z headscale headscale[61967]: 2021/07/17 17:23:57 [headscale] Sending data (75 bytes)
    2021-07-17T15:23:57.109Z headscale tailscaled[2483]: 2021/07/17 17:23:57 magicsock: home is now derp-4 (fra)
    2021-07-17T15:23:57.111Z headscale tailscaled[2483]: 2021/07/17 17:23:57 control: NetInfo: NetInfo{varies=false hairpin=false ipv6=false udp=true derp=#4 portmap= link=""}
    2021-07-17T15:23:57.115Z headscale tailscaled[2483]: 2021/07/17 17:23:57 magicsock: adding connection to derp-4 for home-keep-alive
    2021-07-17T15:23:57.120Z headscale tailscaled[2483]: 2021/07/17 17:23:57 magicsock: 2 active derp conns: derp-4=cr0s,wr0s derp-8=cr143ms,wr143ms
    2021-07-17T15:23:57.122Z headscale tailscaled[2483]: 2021/07/17 17:23:57 derphttp.Client.Recv: connecting to derp-4 (fra)
    2021-07-17T15:23:57.150Z headscale tailscaled[2483]: 2021/07/17 17:23:57 magicsock: derp-8 connected; connGen=1
    2021-07-17T15:23:57.206Z headscale tailscaled[2483]: 2021/07/17 17:23:57 magicsock: derp-4 connected; connGen=1
    2021-07-17T15:23:57.209Z headscale tailscaled[2483]: 2021/07/17 17:23:57 health("overall"): ok
    2021-07-17T15:24:06.314Z headscale tailscaled[2483]: 2021/07/17 17:24:06 LinkChange: major, rebinding. New state: interfaces.State{defaultRoute=TODO ifs={tun0:[100.99.59.105/32] vio0:[51.75.32.29/32]} v4=true v6=false}
    2021-07-17T15:24:06.331Z headscale tailscaled[2483]: 2021/07/17 17:24:06 magicsock: closing connection to derp-8 (rebind), age 9s
    2021-07-17T15:24:06.343Z headscale tailscaled[2483]: 2021/07/17 17:24:06 magicsock: closing connection to derp-4 (rebind), age 9s
    2021-07-17T15:24:06.343Z headscale tailscaled[2483]: 2021/07/17 17:24:06 magicsock: 0 active derp conns
    2021-07-17T15:24:06.354Z headscale tailscaled[2483]: 2021/07/17 17:24:06 magicsock: adding connection to derp-4 for home-keep-alive
    2021-07-17T15:24:06.355Z headscale tailscaled[2483]: 2021/07/17 17:24:06 magicsock: 1 active derp conns: derp-4=cr0s,wr0s
    2021-07-17T15:24:06.356Z headscale tailscaled[2483]: 2021/07/17 17:24:06 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:24:06.356Z headscale tailscaled[2483]: 2021/07/17 17:24:06 health("overall"): error: not connected to home DERP region 4
    2021-07-17T15:24:06.356Z headscale tailscaled[2483]: 2021/07/17 17:24:06 derphttp.Client.Recv: connecting to derp-4 (fra)
    2021-07-17T15:24:06.428Z headscale tailscaled[2483]: 2021/07/17 17:24:06 magicsock: derp-4 connected; connGen=1
    2021-07-17T15:24:06.430Z headscale tailscaled[2483]: 2021/07/17 17:24:06 health("overall"): ok
    2021-07-17T15:24:06.573Z headscale tailscaled[2483]: 2021/07/17 17:24:06 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:24:14.579Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:24:14 | 200 |        66.5\M-B\M-5s |     51.75.32.28 | GET      "/key"
    2021-07-17T15:24:14.596Z headscale headscale[61967]: 2021/07/17 17:24:14 [innernet-test] Client is registered and we have the current NodeKey. All clear to /map
    2021-07-17T15:24:14.601Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:24:14 | 200 |   10.785271ms |     51.75.32.28 | POST     "/machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317"
    2021-07-17T15:24:14.629Z headscale headscale[61967]: 2021/07/17 17:24:14 [innernet-test] ReadOnly=true   OmitPeers=false    Stream=true
    2021-07-17T15:24:14.635Z headscale headscale[61967]: 2021/07/17 17:24:14 [innernet-test] Client is starting up. Asking for DERP map
    2021-07-17T15:24:14.635Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:24:14 | 200 |   17.089359ms |     51.75.32.28 | POST     "/machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map"
    2021-07-17T15:24:14.859Z headscale headscale[61967]: 2021/07/17 17:24:14 [innernet-test] ReadOnly=true   OmitPeers=false    Stream=true
    2021-07-17T15:24:14.863Z headscale headscale[61967]: 2021/07/17 17:24:14 [innernet-test] Client is starting up. Asking for DERP map
    2021-07-17T15:24:14.863Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:24:14 | 200 |   19.440787ms |     51.75.32.28 | POST     "/machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map"
    2021-07-17T15:24:14.886Z headscale headscale[61967]: 2021/07/17 17:24:14 [innernet-test] ReadOnly=true   OmitPeers=false    Stream=true
    2021-07-17T15:24:14.889Z headscale headscale[61967]: 2021/07/17 17:24:14 [innernet-test] Client is starting up. Asking for DERP map
    2021-07-17T15:24:14.889Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:24:14 | 200 |    11.74931ms |     51.75.32.28 | POST     "/machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map"
    2021-07-17T15:24:14.964Z headscale headscale[61967]: 2021/07/17 17:24:14 [innernet-test] ReadOnly=true   OmitPeers=false    Stream=true
    2021-07-17T15:24:14.968Z headscale headscale[61967]: 2021/07/17 17:24:14 [innernet-test] Client is starting up. Asking for DERP map
    2021-07-17T15:24:14.968Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:24:14 | 200 |   15.699249ms |     51.75.32.28 | POST     "/machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map"
    2021-07-17T15:24:15.085Z headscale headscale[61967]: 2021/07/17 17:24:15 [innernet-test] ReadOnly=true   OmitPeers=false    Stream=true
    2021-07-17T15:24:15.091Z headscale headscale[61967]: 2021/07/17 17:24:15 [innernet-test] Client is starting up. Asking for DERP map
    2021-07-17T15:24:15.091Z headscale headscale[61967]: [GIN] 2021/07/17 - 17:24:15 | 200 |   15.791005ms |     51.75.32.28 | POST     "/machine/6594a17c9e61cd05571e10493228fe16277608228fa94b5f72764840333d8317/map"
    2021-07-17T15:24:15.117Z headscale headscale[61967]: 2021/07/17 17:24:15 [innernet-test] ReadOnly=false   OmitPeers=false    Stream=true
    2021-07-17T15:24:15.122Z headscale headscale[61967]: 2021/07/17 17:24:15 [innernet-test] Client is ready to access the tailnet
    2021-07-17T15:24:15.122Z headscale headscale[61967]: 2021/07/17 17:24:15 [innernet-test] Sending initial map
    2021-07-17T15:24:15.122Z headscale headscale[61967]: 2021/07/17 17:24:15 [innernet-test] Notifying peers
    2021-07-17T15:24:15.125Z headscale headscale[61967]: 2021/07/17 17:24:15 [innernet-test] Notifying peer headscale (100.99.59.105/32)
    2021-07-17T15:24:15.130Z headscale headscale[61967]: 2021/07/17 17:24:15 [innernet-test] Sending data (1835 bytes)
    2021-07-17T15:24:15.138Z headscale headscale[61967]: 2021/07/17 17:24:15 [headscale] Received a request for update
    2021-07-17T15:24:15.148Z headscale headscale[61967]: 2021/07/17 17:24:15 [innernet-test] Sending keepalive
    2021-07-17T15:24:15.159Z headscale headscale[61967]: 2021/07/17 17:24:15 [innernet-test] Sending data (75 bytes)
    2021-07-17T15:24:34.511Z headscale tailscaled[2483]: 2021/07/17 17:24:34 ping(100.87.15.215): sending disco ping to [QzY2R] innernet-test ...
    2021-07-17T15:24:34.519Z headscale tailscaled[2483]: 2021/07/17 17:24:34 wgengine: idle peer d:95f0a6e02bfcbb80 now active, reconfiguring wireguard
    2021-07-17T15:24:34.519Z headscale tailscaled[2483]: 2021/07/17 17:24:34 wgengine: Reconfig: configuring userspace wireguard config (with 1/1 peers)
    2021-07-17T15:24:34.519Z headscale tailscaled[2483]: 2021/07/17 17:24:34 magicsock: ParseEndpoint: key=[QzY2R]: disco=d:95f0a6e02bfcbb80 ipps=
    2021-07-17T15:24:34.536Z headscale tailscaled[2483]: 2021/07/17 17:24:34 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:24:34.541Z headscale tailscaled[2483]: 2021/07/17 17:24:34 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:24:34.654Z headscale tailscaled[2483]: 2021/07/17 17:24:34 magicsock: STUN done; sending call-me-maybe to d:95f0a6e02bfcbb80 [QzY2R]
    2021-07-17T15:24:39.532Z headscale tailscaled[2483]: 2021/07/17 17:24:39 ping(100.87.15.215): sending disco ping to [QzY2R] innernet-test ...
    2021-07-17T15:24:44.535Z headscale tailscaled[2483]: 2021/07/17 17:24:44 ping(100.87.15.215): sending disco ping to [QzY2R] innernet-test ...
    2021-07-17T15:24:49.547Z headscale tailscaled[2483]: 2021/07/17 17:24:49 ping(100.87.15.215): sending disco ping to [QzY2R] innernet-test ...
    2021-07-17T15:24:54.556Z headscale tailscaled[2483]: 2021/07/17 17:24:54 ping(100.87.15.215): sending disco ping to [QzY2R] innernet-test ...
    2021-07-17T15:24:56.339Z headscale tailscaled[2483]: 2021/07/17 17:24:56 health("overall"): error: not in map poll
    2021-07-17T15:24:57.081Z headscale headscale[61967]: 2021/07/17 17:24:57 [headscale] Sending keepalive
    2021-07-17T15:24:57.085Z headscale headscale[61967]: 2021/07/17 17:24:57 [headscale] Sending data (75 bytes)
    2021-07-17T15:24:59.565Z headscale tailscaled[2483]: 2021/07/17 17:24:59 ping(100.87.15.215): sending disco ping to [QzY2R] innernet-test ...
    2021-07-17T15:25:04.577Z headscale tailscaled[2483]: 2021/07/17 17:25:04 ping(100.87.15.215): sending disco ping to [QzY2R] innernet-test ...
    2021-07-17T15:25:05.353Z headscale tailscaled[2483]: 2021/07/17 17:25:05 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:25:05.360Z headscale tailscaled[2483]: 2021/07/17 17:25:05 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:25:05.473Z headscale tailscaled[2483]: 2021/07/17 17:25:05 magicsock: STUN done; sending call-me-maybe to d:95f0a6e02bfcbb80 [QzY2R]
    2021-07-17T15:25:09.604Z headscale tailscaled[2483]: 2021/07/17 17:25:09 ping(100.87.15.215): sending disco ping to [QzY2R] innernet-test ...
    2021-07-17T15:25:14.623Z headscale tailscaled[2483]: 2021/07/17 17:25:14 ping(100.87.15.215): sending disco ping to [QzY2R] innernet-test ...
    2021-07-17T15:25:15.166Z headscale headscale[61967]: 2021/07/17 17:25:15 [innernet-test] Sending keepalive
    2021-07-17T15:25:15.173Z headscale headscale[61967]: 2021/07/17 17:25:15 [innernet-test] Sending data (75 bytes)
    2021-07-17T15:25:19.635Z headscale tailscaled[2483]: 2021/07/17 17:25:19 ping(100.87.15.215): sending disco ping to [QzY2R] innernet-test ...
    2021-07-17T15:25:35.983Z headscale tailscaled[2483]: 2021/07/17 17:25:35 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:25:35.988Z headscale tailscaled[2483]: 2021/07/17 17:25:35 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:25:36.095Z headscale tailscaled[2483]: 2021/07/17 17:25:36 magicsock: STUN done; sending call-me-maybe to d:95f0a6e02bfcbb80 [QzY2R]
    2021-07-17T15:25:57.091Z headscale headscale[61967]: 2021/07/17 17:25:57 [headscale] Sending keepalive
    2021-07-17T15:25:57.095Z headscale headscale[61967]: 2021/07/17 17:25:57 [headscale] Sending data (75 bytes)
    2021-07-17T15:26:06.584Z headscale tailscaled[2483]: 2021/07/17 17:26:06 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:26:06.589Z headscale tailscaled[2483]: 2021/07/17 17:26:06 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:26:06.696Z headscale tailscaled[2483]: 2021/07/17 17:26:06 magicsock: STUN done; sending call-me-maybe to d:95f0a6e02bfcbb80 [QzY2R]
    2021-07-17T15:26:15.186Z headscale headscale[61967]: 2021/07/17 17:26:15 [innernet-test] Sending keepalive
    2021-07-17T15:26:15.192Z headscale headscale[61967]: 2021/07/17 17:26:15 [innernet-test] Sending data (75 bytes)
    2021-07-17T15:26:35.170Z headscale tailscaled[2483]: 2021/07/17 17:26:35 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:26:35.179Z headscale tailscaled[2483]: 2021/07/17 17:26:35 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:26:35.280Z headscale tailscaled[2483]: 2021/07/17 17:26:35 magicsock: STUN done; sending call-me-maybe to d:95f0a6e02bfcbb80 [QzY2R]
    2021-07-17T15:26:57.101Z headscale headscale[61967]: 2021/07/17 17:26:57 [headscale] Sending keepalive
    2021-07-17T15:26:57.104Z headscale headscale[61967]: 2021/07/17 17:26:57 [headscale] Sending data (75 bytes)
    2021-07-17T15:27:07.302Z headscale tailscaled[2483]: 2021/07/17 17:27:07 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:27:07.306Z headscale tailscaled[2483]: 2021/07/17 17:27:07 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:27:07.412Z headscale tailscaled[2483]: 2021/07/17 17:27:07 magicsock: STUN done; sending call-me-maybe to d:95f0a6e02bfcbb80 [QzY2R]
    2021-07-17T15:27:15.206Z headscale headscale[61967]: 2021/07/17 17:27:15 [innernet-test] Sending keepalive
    2021-07-17T15:27:15.211Z headscale headscale[61967]: 2021/07/17 17:27:15 [innernet-test] Sending data (75 bytes)
    2021-07-17T15:27:38.782Z headscale tailscaled[2483]: 2021/07/17 17:27:38 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:27:38.786Z headscale tailscaled[2483]: 2021/07/17 17:27:38 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:27:38.893Z headscale tailscaled[2483]: 2021/07/17 17:27:38 magicsock: STUN done; sending call-me-maybe to d:95f0a6e02bfcbb80 [QzY2R]
    2021-07-17T15:27:57.121Z headscale headscale[61967]: 2021/07/17 17:27:57 [headscale] Sending keepalive
    2021-07-17T15:27:57.123Z headscale headscale[61967]: 2021/07/17 17:27:57 [headscale] Sending data (75 bytes)
    2021-07-17T15:28:09.582Z headscale tailscaled[2483]: 2021/07/17 17:28:09 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:28:09.587Z headscale tailscaled[2483]: 2021/07/17 17:28:09 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:28:09.693Z headscale tailscaled[2483]: 2021/07/17 17:28:09 magicsock: STUN done; sending call-me-maybe to d:95f0a6e02bfcbb80 [QzY2R]
    2021-07-17T15:28:15.226Z headscale headscale[61967]: 2021/07/17 17:28:15 [innernet-test] Sending keepalive
    2021-07-17T15:28:15.231Z headscale headscale[61967]: 2021/07/17 17:28:15 [innernet-test] Sending data (75 bytes)
    2021-07-17T15:28:37.820Z headscale tailscaled[2483]: 2021/07/17 17:28:37 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:28:37.829Z headscale tailscaled[2483]: 2021/07/17 17:28:37 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:28:37.932Z headscale tailscaled[2483]: 2021/07/17 17:28:37 magicsock: STUN done; sending call-me-maybe to d:95f0a6e02bfcbb80 [QzY2R]
    2021-07-17T15:28:57.131Z headscale headscale[61967]: 2021/07/17 17:28:57 [headscale] Sending keepalive
    2021-07-17T15:28:57.133Z headscale headscale[61967]: 2021/07/17 17:28:57 [headscale] Sending data (75 bytes)
    2021-07-17T15:29:05.593Z headscale tailscaled[2483]: 2021/07/17 17:29:05 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:29:05.598Z headscale tailscaled[2483]: 2021/07/17 17:29:05 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:29:05.892Z headscale tailscaled[2483]: 2021/07/17 17:29:05 magicsock: STUN done; sending call-me-maybe to d:95f0a6e02bfcbb80 [QzY2R]
    2021-07-17T15:29:05.895Z headscale tailscaled[2483]: 2021/07/17 17:29:05 control: NetInfo: NetInfo{varies=false hairpin=true ipv6=false udp=true derp=#4 portmap= link=""}
    2021-07-17T15:29:15.249Z headscale headscale[61967]: 2021/07/17 17:29:15 [innernet-test] Sending keepalive
    2021-07-17T15:29:15.256Z headscale headscale[61967]: 2021/07/17 17:29:15 [innernet-test] Sending data (75 bytes)
    2021-07-17T15:29:36.412Z headscale tailscaled[2483]: 2021/07/17 17:29:36 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:29:36.416Z headscale tailscaled[2483]: 2021/07/17 17:29:36 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:29:36.523Z headscale tailscaled[2483]: 2021/07/17 17:29:36 magicsock: STUN done; sending call-me-maybe to d:95f0a6e02bfcbb80 [QzY2R]
    2021-07-17T15:29:57.141Z headscale headscale[61967]: 2021/07/17 17:29:57 [headscale] Sending keepalive
    2021-07-17T15:29:57.144Z headscale headscale[61967]: 2021/07/17 17:29:57 [headscale] Sending data (75 bytes)
    2021-07-17T15:30:07.232Z headscale tailscaled[2483]: 2021/07/17 17:30:07 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:30:07.235Z headscale tailscaled[2483]: 2021/07/17 17:30:07 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:30:07.347Z headscale tailscaled[2483]: 2021/07/17 17:30:07 magicsock: STUN done; sending call-me-maybe to d:95f0a6e02bfcbb80 [QzY2R]
    2021-07-17T15:30:15.265Z headscale headscale[61967]: 2021/07/17 17:30:15 [innernet-test] Sending keepalive
    2021-07-17T15:30:15.270Z headscale headscale[61967]: 2021/07/17 17:30:15 [innernet-test] Sending data (75 bytes)
    

    innernet-test

    tailscaled
    2021-07-17T15:24:14.050Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 logtail started
    2021-07-17T15:24:14.072Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 Program starting: vdate.20210603, Go 1.16.6: []string{"/usr/local/bin/tailscaled"}
    2021-07-17T15:24:14.074Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 LogID: ee6414f1b608db52193ac3e35f185522bc0ce6528ee16a49bab8c6a8c2060618
    2021-07-17T15:24:14.077Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 logpolicy: using system state directory "/var/db/tailscale"
    2021-07-17T15:24:14.082Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 wgengine.NewUserspaceEngine(tun "tun") ...
    2021-07-17T15:24:14.087Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 dns: using dns.directManager
    2021-07-17T15:24:14.089Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 link state: interfaces.State{defaultRoute=TODO ifs={vio0:[192.168.135.48/24]} v4=true v6=false}
    2021-07-17T15:24:14.094Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 Creating wireguard device...
    2021-07-17T15:24:14.101Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 Bringing wireguard device up...
    2021-07-17T15:24:14.104Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 Bringing router up...
    2021-07-17T15:24:14.132Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 external route: up
    2021-07-17T15:24:14.136Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 Clearing router settings...
    2021-07-17T15:24:14.138Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 Starting link monitor...
    2021-07-17T15:24:14.141Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 Starting magicsock...
    2021-07-17T15:24:14.143Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 Engine created.
    2021-07-17T15:24:14.152Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 Listening on /var/run/tailscale/tailscaled.sock
    2021-07-17T15:24:14.181Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 netmap packet filter: (not ready yet)
    2021-07-17T15:24:14.183Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 Start
    2021-07-17T15:24:14.185Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 using backend prefs
    2021-07-17T15:24:14.186Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 backend prefs for "_daemon": Prefs{ra=false dns=true want=true url="https://headscale.viq.vc" Persist{lm=, o=, n=[QzY2R] u=""}}
    2021-07-17T15:24:14.186Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 got initial portlist info in 0s
    2021-07-17T15:24:14.189Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 magicsock: disco key = d:4ee08d2740640e2e
    2021-07-17T15:24:14.190Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 control: HostInfo: {"IPNVersion":"date.20210603","BackendLogID":"ee6414f1b608db52193ac3e35f185522bc0ce6528ee16a49bab8c6a8c2060618","OS":"openbsd","Hostname":"innernet-test","GoArch":"amd64","Services":[{"Proto":"tcp","Port":22},{"Proto":"tcp","Port":25},{"Proto":"tcp","Port":8000}]}
    2021-07-17T15:24:14.190Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 Backend: logs: be:ee6414f1b608db52193ac3e35f185522bc0ce6528ee16a49bab8c6a8c2060618 fe:
    2021-07-17T15:24:14.191Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 control: client.Login(false, 0)
    2021-07-17T15:24:14.191Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 control: authRoutine: state:new; wantLoggedIn=true
    2021-07-17T15:24:14.199Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 control: direct.TryLogin(token=false, flags=0)
    2021-07-17T15:24:14.200Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 control: doLogin(regen=false, hasUrl=false)
    2021-07-17T15:24:14.200Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 control: mapRoutine: state:authenticating
    2021-07-17T15:24:14.445Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 logtail: dialed "log.tailscale.io:443" in 371ms
    2021-07-17T15:24:14.587Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 control: RegisterReq: onode=[AAAAA] node=[QzY2R] fup=false
    2021-07-17T15:24:14.608Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 control: RegisterReq: got response; nodeKeyExpired=false, machineAuthorized=true; authURL=false
    2021-07-17T15:24:14.608Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 control: No AuthURL
    2021-07-17T15:24:14.609Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 authReconfig: netmap not yet valid. Skipping.
    2021-07-17T15:24:14.609Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 control: authRoutine: state:authenticated; goal=nil paused=false
    2021-07-17T15:24:14.613Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 control: mapRoutine: new map needed while idle.
    2021-07-17T15:24:14.613Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 control: mapRoutine: state:authenticated
    2021-07-17T15:24:14.653Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 active login: viqWORKS
    2021-07-17T15:24:14.664Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 netmap packet filter: [[TCP UDP ICMPv4 ICMPv6][0.0.0.0/0,::/0]=>[0.0.0.0/0:*,::/0:*]]
    2021-07-17T15:24:14.675Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 Switching ipn state NoState -> Starting (WantRunning=true, nm=true)
    2021-07-17T15:24:14.675Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 magicsock: SetPrivateKey called (init)
    2021-07-17T15:24:14.675Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 wgengine: Reconfig: configuring userspace wireguard config (with 0/1 peers)
    2021-07-17T15:24:14.675Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 wgengine: Reconfig: configuring router
    2021-07-17T15:24:14.719Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 health("overall"): error: state=Starting, wantRunning=true
    2021-07-17T15:24:14.739Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:24:14.803Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 wgengine: Reconfig: configuring DNS
    2021-07-17T15:24:14.803Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 dns: Set: {DefaultResolvers:[] Routes:map[] SearchDomains:[] Hosts:map[headscale.:[100.99.59.105] innernet-test.:[100.87.15.215]]}
    2021-07-17T15:24:14.807Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 dns: Resolvercfg: {Routes:map[] Hosts:map[headscale.:[100.99.59.105] innernet-test.:[100.87.15.215]] LocalDomains:[]}
    2021-07-17T15:24:14.810Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 dns: OScfg: {Nameservers:[] SearchDomains:[] MatchDomains:[]}
    2021-07-17T15:24:14.810Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 peerapi: serving on http://100.87.15.215:47775
    2021-07-17T15:24:14.814Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 Received error: PollNetMap: EOF
    2021-07-17T15:24:14.816Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 control: mapRoutine: backoff: 14 msec
    2021-07-17T15:24:14.820Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 control: HostInfo: {"IPNVersion":"date.20210603","BackendLogID":"ee6414f1b608db52193ac3e35f185522bc0ce6528ee16a49bab8c6a8c2060618","OS":"openbsd","Hostname":"innernet-test","GoArch":"amd64","Services":[{"Proto":"peerapi4","Port":47775}]}
    2021-07-17T15:24:14.839Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 control: mapRoutine: state:authenticated
    2021-07-17T15:24:14.872Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 control: mapRoutine: state:authenticated
    2021-07-17T15:24:14.899Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 Received error: PollNetMap: EOF
    2021-07-17T15:24:14.901Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 control: mapRoutine: backoff: 34 msec
    2021-07-17T15:24:14.944Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 control: mapRoutine: state:authenticated
    2021-07-17T15:24:14.945Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 [RATELIMIT] format("control: mapRoutine: %s")
    2021-07-17T15:24:14.979Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 Received error: PollNetMap: EOF
    2021-07-17T15:24:14.979Z innernet-test tailscaled[56712]: 2021/07/17 17:24:14 control: mapRoutine: backoff: 82 msec
    2021-07-17T15:24:15.080Z innernet-test tailscaled[56712]: 2021/07/17 17:24:15 magicsock: home is now derp-4 (fra)
    2021-07-17T15:24:15.081Z innernet-test tailscaled[56712]: 2021/07/17 17:24:15 magicsock: endpoints changed: 51.75.32.28:57997 (stun), 192.168.135.48:22735 (local)
    2021-07-17T15:24:15.082Z innernet-test tailscaled[56712]: 2021/07/17 17:24:15 control: client.newEndpoints(0, [51.75.32.28:57997 192.168.135.48:22735])
    2021-07-17T15:24:15.084Z innernet-test tailscaled[56712]: 2021/07/17 17:24:15 magicsock: adding connection to derp-4 for home-keep-alive
    2021-07-17T15:24:15.084Z innernet-test tailscaled[56712]: 2021/07/17 17:24:15 magicsock: 1 active derp conns: derp-4=cr0s,wr0s
    2021-07-17T15:24:15.092Z innernet-test tailscaled[56712]: 2021/07/17 17:24:15 Switching ipn state Starting -> Running (WantRunning=true, nm=true)
    2021-07-17T15:24:15.093Z innernet-test tailscaled[56712]: 2021/07/17 17:24:15 control: NetInfo: NetInfo{varies=true hairpin=false ipv6=false udp=true derp=#4 portmap= link=""}
    2021-07-17T15:24:15.102Z innernet-test tailscaled[56712]: 2021/07/17 17:24:15 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:24:15.102Z innernet-test tailscaled[56712]: 2021/07/17 17:24:15 derphttp.Client.Connect: connecting to derp-4 (fra)
    2021-07-17T15:24:15.165Z innernet-test tailscaled[56712]: 2021/07/17 17:24:15 magicsock: derp-4 connected; connGen=1
    2021-07-17T15:24:15.165Z innernet-test tailscaled[56712]: 2021/07/17 17:24:15 health("overall"): ok
    2021-07-17T15:24:15.211Z innernet-test tailscaled[56712]: 2021/07/17 17:24:15 magicsock: endpoints changed: 51.75.32.28:61715 (stun), 192.168.135.48:22735 (local)
    2021-07-17T15:24:15.211Z innernet-test tailscaled[56712]: 2021/07/17 17:24:15 control: client.newEndpoints(0, [51.75.32.28:61715 192.168.135.48:22735])
    2021-07-17T15:24:24.163Z innernet-test tailscaled[56712]: 2021/07/17 17:24:24 LinkChange: major, rebinding. New state: interfaces.State{defaultRoute=TODO ifs={tun0:[100.87.15.215/32] vio0:[192.168.135.48/24]} v4=true v6=false}
    2021-07-17T15:24:24.164Z innernet-test tailscaled[56712]: 2021/07/17 17:24:24 magicsock: closing connection to derp-4 (rebind), age 9s
    2021-07-17T15:24:24.164Z innernet-test tailscaled[56712]: 2021/07/17 17:24:24 magicsock: 0 active derp conns
    2021-07-17T15:24:24.171Z innernet-test tailscaled[56712]: 2021/07/17 17:24:24 magicsock: adding connection to derp-4 for home-keep-alive
    2021-07-17T15:24:24.171Z innernet-test tailscaled[56712]: 2021/07/17 17:24:24 magicsock: 1 active derp conns: derp-4=cr0s,wr0s
    2021-07-17T15:24:24.172Z innernet-test tailscaled[56712]: 2021/07/17 17:24:24 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:24:24.172Z innernet-test tailscaled[56712]: 2021/07/17 17:24:24 health("overall"): error: not connected to home DERP region 4
    2021-07-17T15:24:24.173Z innernet-test tailscaled[56712]: 2021/07/17 17:24:24 derphttp.Client.Recv: connecting to derp-4 (fra)
    2021-07-17T15:24:24.258Z innernet-test tailscaled[56712]: 2021/07/17 17:24:24 magicsock: derp-4 connected; connGen=1
    2021-07-17T15:24:24.258Z innernet-test tailscaled[56712]: 2021/07/17 17:24:24 health("overall"): ok
    2021-07-17T15:24:24.423Z innernet-test tailscaled[56712]: 2021/07/17 17:24:24 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:24:34.561Z innernet-test tailscaled[56712]: 2021/07/17 17:24:34 health("overall"): error: not in map poll
    2021-07-17T15:24:34.561Z innernet-test tailscaled[56712]: 2021/07/17 17:24:34 wgengine: idle peer d:d52bb11973f8889b now active, reconfiguring wireguard
    2021-07-17T15:24:34.563Z innernet-test tailscaled[56712]: 2021/07/17 17:24:34 wgengine: Reconfig: configuring userspace wireguard config (with 1/1 peers)
    2021-07-17T15:24:34.574Z innernet-test tailscaled[56712]: 2021/07/17 17:24:34 magicsock: ParseEndpoint: key=[WwgZK]: disco=d:d52bb11973f8889b ipps=
    2021-07-17T15:24:34.585Z innernet-test tailscaled[56712]: 2021/07/17 17:24:34 magicsock: adding connection to derp-8 for [WwgZK]
    2021-07-17T15:24:34.592Z innernet-test tailscaled[56712]: 2021/07/17 17:24:34 magicsock: 2 active derp conns: derp-4=cr10s,wr10s derp-8=cr0s,wr0s
    2021-07-17T15:24:34.596Z innernet-test tailscaled[56712]: 2021/07/17 17:24:34 magicsock: DERP packet received from idle peer [WwgZK]; created=true
    2021-07-17T15:24:34.600Z innernet-test tailscaled[56712]: 2021/07/17 17:24:34 derphttp.Client.Recv: connecting to derp-8 (lhr)
    2021-07-17T15:24:34.722Z innernet-test tailscaled[56712]: 2021/07/17 17:24:34 magicsock: derp-8 connected; connGen=1
    2021-07-17T15:24:55.224Z innernet-test tailscaled[56712]: 2021/07/17 17:24:55 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:24:55.226Z innernet-test tailscaled[56712]: 2021/07/17 17:24:55 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:24:55.336Z innernet-test tailscaled[56712]: 2021/07/17 17:24:55 magicsock: STUN done; sending call-me-maybe to d:d52bb11973f8889b [WwgZK]
    2021-07-17T15:25:25.673Z innernet-test tailscaled[56712]: 2021/07/17 17:25:25 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:25:25.675Z innernet-test tailscaled[56712]: 2021/07/17 17:25:25 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:25:25.784Z innernet-test tailscaled[56712]: 2021/07/17 17:25:25 magicsock: STUN done; sending call-me-maybe to d:d52bb11973f8889b [WwgZK]
    2021-07-17T15:25:56.512Z innernet-test tailscaled[56712]: 2021/07/17 17:25:56 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:25:56.514Z innernet-test tailscaled[56712]: 2021/07/17 17:25:56 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:25:56.624Z innernet-test tailscaled[56712]: 2021/07/17 17:25:56 magicsock: STUN done; sending call-me-maybe to d:d52bb11973f8889b [WwgZK]
    2021-07-17T15:26:29.231Z innernet-test tailscaled[56712]: 2021/07/17 17:26:29 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:26:29.237Z innernet-test tailscaled[56712]: 2021/07/17 17:26:29 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:26:29.342Z innernet-test tailscaled[56712]: 2021/07/17 17:26:29 magicsock: STUN done; sending call-me-maybe to d:d52bb11973f8889b [WwgZK]
    2021-07-17T15:26:46.745Z innernet-test tailscaled[56712]: 2021/07/17 17:26:46 [WwgZK] - Failed to create response message: handshake initiation must be consumed first
    2021-07-17T15:26:57.093Z innernet-test tailscaled[56712]: 2021/07/17 17:26:57 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:26:57.097Z innernet-test tailscaled[56712]: 2021/07/17 17:26:57 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:26:57.209Z innernet-test tailscaled[56712]: 2021/07/17 17:26:57 magicsock: STUN done; sending call-me-maybe to d:d52bb11973f8889b [WwgZK]
    2021-07-17T15:27:28.405Z innernet-test tailscaled[56712]: 2021/07/17 17:27:28 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:27:28.407Z innernet-test tailscaled[56712]: 2021/07/17 17:27:28 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:27:28.517Z innernet-test tailscaled[56712]: 2021/07/17 17:27:28 magicsock: STUN done; sending call-me-maybe to d:d52bb11973f8889b [WwgZK]
    2021-07-17T15:27:59.395Z innernet-test tailscaled[56712]: 2021/07/17 17:27:59 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:27:59.397Z innernet-test tailscaled[56712]: 2021/07/17 17:27:59 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:27:59.506Z innernet-test tailscaled[56712]: 2021/07/17 17:27:59 magicsock: STUN done; sending call-me-maybe to d:d52bb11973f8889b [WwgZK]
    2021-07-17T15:28:01.999Z innernet-test tailscaled[56712]: 2021/07/17 17:28:01 ping(100.99.59.105): sending disco ping to [WwgZK] headscale ...
    2021-07-17T15:28:07.023Z innernet-test tailscaled[56712]: 2021/07/17 17:28:07 ping(100.99.59.105): sending disco ping to [WwgZK] headscale ...
    2021-07-17T15:28:12.031Z innernet-test tailscaled[56712]: 2021/07/17 17:28:12 ping(100.99.59.105): sending disco ping to [WwgZK] headscale ...
    2021-07-17T15:28:17.042Z innernet-test tailscaled[56712]: 2021/07/17 17:28:17 ping(100.99.59.105): sending disco ping to [WwgZK] headscale ...
    2021-07-17T15:28:22.062Z innernet-test tailscaled[56712]: 2021/07/17 17:28:22 ping(100.99.59.105): sending disco ping to [WwgZK] headscale ...
    2021-07-17T15:28:27.082Z innernet-test tailscaled[56712]: 2021/07/17 17:28:27 ping(100.99.59.105): sending disco ping to [WwgZK] headscale ...
    2021-07-17T15:28:32.020Z innernet-test tailscaled[56712]: 2021/07/17 17:28:32 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:28:32.027Z innernet-test tailscaled[56712]: 2021/07/17 17:28:32 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:28:32.101Z innernet-test tailscaled[56712]: 2021/07/17 17:28:32 ping(100.99.59.105): sending disco ping to [WwgZK] headscale ...
    2021-07-17T15:28:32.133Z innernet-test tailscaled[56712]: 2021/07/17 17:28:32 magicsock: STUN done; sending call-me-maybe to d:d52bb11973f8889b [WwgZK]
    2021-07-17T15:28:37.112Z innernet-test tailscaled[56712]: 2021/07/17 17:28:37 ping(100.99.59.105): sending disco ping to [WwgZK] headscale ...
    2021-07-17T15:28:42.121Z innernet-test tailscaled[56712]: 2021/07/17 17:28:42 ping(100.99.59.105): sending disco ping to [WwgZK] headscale ...
    2021-07-17T15:28:47.143Z innernet-test tailscaled[56712]: 2021/07/17 17:28:47 ping(100.99.59.105): sending disco ping to [WwgZK] headscale ...
    2021-07-17T15:29:00.440Z innernet-test tailscaled[56712]: 2021/07/17 17:29:00 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:29:00.442Z innernet-test tailscaled[56712]: 2021/07/17 17:29:00 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:29:00.555Z innernet-test tailscaled[56712]: 2021/07/17 17:29:00 magicsock: STUN done; sending call-me-maybe to d:d52bb11973f8889b [WwgZK]
    2021-07-17T15:29:31.404Z innernet-test tailscaled[56712]: 2021/07/17 17:29:31 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:29:31.406Z innernet-test tailscaled[56712]: 2021/07/17 17:29:31 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:29:31.711Z innernet-test tailscaled[56712]: 2021/07/17 17:29:31 magicsock: STUN done; sending call-me-maybe to d:d52bb11973f8889b [WwgZK]
    2021-07-17T15:30:02.153Z innernet-test tailscaled[56712]: 2021/07/17 17:30:02 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:30:02.155Z innernet-test tailscaled[56712]: 2021/07/17 17:30:02 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:30:02.302Z innernet-test tailscaled[56712]: 2021/07/17 17:30:02 magicsock: STUN done; sending call-me-maybe to d:d52bb11973f8889b [WwgZK]
    2021-07-17T15:30:30.730Z innernet-test tailscaled[56712]: 2021/07/17 17:30:30 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:30:30.738Z innernet-test tailscaled[56712]: 2021/07/17 17:30:30 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:30:30.850Z innernet-test tailscaled[56712]: 2021/07/17 17:30:30 magicsock: STUN done; sending call-me-maybe to d:d52bb11973f8889b [WwgZK]
    2021-07-17T15:30:58.208Z innernet-test tailscaled[56712]: 2021/07/17 17:30:58 magicsock: want call-me-maybe but endpoints stale; restunning
    2021-07-17T15:30:58.210Z innernet-test tailscaled[56712]: 2021/07/17 17:30:58 netcheck: probePortMapServices: failed to look up gateway address
    2021-07-17T15:30:58.324Z innernet-test tailscaled[56712]: 2021/07/17 17:30:58 magicsock: STUN done; sending call-me-maybe to d:d52bb11973f8889b [WwgZK]
    
  • Mobile clients

    Mobile clients

    Tailscale has clients for linux, Windows, macOS, Android and iOS. Linux, Windows and macOS can be told to connect to a headscale server. I'm not aware of a way to do that on Android or iOS.

    Can the (open source) android client be compiled with another server or be patched to allow server selection? What about iOS?

  • Support for IPv6 prefixes in namespaces

    Support for IPv6 prefixes in namespaces

    I'm sending an MR to initiate a discussion about this initial implementation.

    I have found that specifying an IPv6 prefix for ip_prefix caused the Headscale server to crash, because getAvailableIP assumed an IPv4 address by calling As4().

    While I was at it, I also tidied up address generation a bit, because the comment within was inaccurate (a network/broadcast address is one where the host parts of the address are all zero/one bits, not ones that end with eights consecutive zero/one bits), and if I interpret the netaddr API reference correctly, IsZero() and IsLoopback() should never return true for the same address, so I assume the use of && probably had been a typo here.

    I also found that machine.go also assumed an IPv4 representation and sent /32 routes to nodes, which tailscaled refused to use, even though tailscale ping managed to resolve the correct destination node.

    These changes were enough to ICMPv6 ping working both against namespace addresses, as well as advertised IPv6 routes. As far as I can see, the changes did not break any of the established tests that use IPv4, but I have not yet added any IPv6 specific test coverage - If I read the code correctly, there is a single unit under test preconfigured with an IPv4 prefix, and I'm not sure about the optimal way to handle the situation.

    I have also separately tested with the default IPv4 prefix as well and things seem to still work that way. I'm not sure why yet, but I was only able to access IPv4 advertised routes when I also used an IPv4 prefix for the namespace, and only able to access IPv6 advertised routes with an IPv6 prefix configured for the namespace. Accessing IPv4 advertised routes from an IPv6 prefix or the other way around does not seem to work, and I have yet to perceive any error messages anywhere, so far I can only observe the lack of packets.

  • Docker releases appear out of sync with the code releases?

    Docker releases appear out of sync with the code releases?

    Issue description

    The tags used for docker releases appear out of sync with the code releases?

    0.12 was released a month ago according to docker, and it is not clear how they relate to the code releases?

    Is there a docker release for 0.12.0-beta2, or I presume those other docker tags should be ignored?

    To Reproduce

    The docker releases I am referring to are these -> https://hub.docker.com/r/headscale/headscale/tags

    Thanks for any clarification 👍🏻

  • Rework the CLI to use gRPC

    Rework the CLI to use gRPC

    First, apologise for the massive PR, I got a bit carried away. (A lot of the code is generated, and is a separate commit)

    This PR moves the rest of the user facing CLI (all commands but serve) to use gRPC to communicate with the server.

    This means that the PR has "three layers".

    1. It adds protobuf definitions and generate types and rpc based on this
    2. Then it implements the "service" interface provided by gRPC
    3. And then we move all the commands to use the new interface.
    4. Bonus layer: I have added integration tests for the CLI (execute command and read out result) for every command.

    In between these steps, there is a lot of code cleanup and streamlining of functions to better fit the new interface. I have also made an attempt on standardising and cleaning up where we had several different ways to get information.

    This means that we now have:

    • A CLI that communicates over rpc
      • which means we can run it from everywhere when we add authentication
    • A Web API generated from the same spec, supporting the same as gRPC (currently disabled, due to missing auth)
    • Integration tests for the CLI, should help us find direct and detect underlying issues changes can cause.

    What I still would like to tackle (before release): The cli takes quite inconsistent parameters: database id, machine key, name + namespace. I think we should discuss to standardise on one main approach.

  • create namespace error : ephemeral_node_inactivity_timeout

    create namespace error : ephemeral_node_inactivity_timeout

    download headscale binary from latest release and try to create my first namespace , but headscale return some error messages like

    2021-12-07 09:58:25 [changch@hqdc034 Downloads]$ ./headscale_0.11.0_linux_amd64 namespaces create em
    An updated version of Headscale has been found (0.12.0-beta1 vs. your current v0.11.0). Check it out https://github.com/juanfont/headscale/releases
    2021/12/07 09:58:36 Error initializing: ephemeral_node_inactivity_timeout () is set too low, must be more than 1m5s
    

    any suggestions??

  • Make /metrics listen on a different address

    Make /metrics listen on a different address

    • [x] read the CONTRIBUTING guidelines
    • [x] raised a GitHub issue or discussed it on the projects chat beforehand
    • [x] added unit tests
    • [x] added integration tests
    • [x] updated documentation if needed
    • [x] updated CHANGELOG.md

    Addresses #343

  • Nodes IP missing in tailscale status

    Nodes IP missing in tailscale status

    Hi,

    Here is my config.json

    {
        "server_url": "https://sub.domain.tld",
        "listen_addr": "0.0.0.0:443",
        "ip_prefix": "10.0.1.0/24",
        "private_key_path": "/etc/headscale/private.key",
        "derp_map_path": "/etc/headscale/derp.yaml",
        "ephemeral_node_inactivity_timeout": "30m",
        "db_type": "sqlite3",
        "db_path": "/etc/headscale/db.sqlite",
        "tls_cert_path": "/etc/headscale/crt.pem",
        "tls_key_path": "/etc/headscale/key.pem",
        "acl_policy_path": "",
        "dns_config": {
            "nameservers": ["1.1.1.1", "8.8.8.8"],
            "domains": [],
            "magic_dns": true,
            "base_domain": "local.net"
        }
    }
    

    Created namescpace. Joined 3 nodes successfully. They can reach each others. The issue is, when I run tailscale status, it doesn't show headscale IP on node list. I get the following output.

    hakim@node-2:~$ sudo tailscale status
    10.0.1.2        node-2                main         linux   -
                    node-1                main         linux   active; direct PUBLICIP:41641, tx 11524412 rx 288104
                    node-3                main         linux   active; direct PUBLICIP:41641, tx 3092 rx 2556
    

    I can ping using node name like ping node-1 because of Magic DNS but can't use tailscale ping node-1 or Taildrop using node name. I have to use node's tailscale IP address. Headscale log seems fine. I am running v0.10.0

  • Improvements on the ACLs and bug fixing

    Improvements on the ACLs and bug fixing

    • [x] read the CONTRIBUTING guidelines
    • [x] raised a GitHub issue or discussed it on the projects chat beforehand
    • [x] added unit tests
    • [] added integration tests
    • [x] updated documentation if needed
    • [x] updated CHANGELOG.md

    This PR is a first implementation of what has been discussed on #311 It should be reviewed commit by commit since last commits are linting modifications and changes quite much some part of the code that I didn't touch.

    All subject discussed in PR #311 are not implemented here. I think all those modifications should be splitted in multiple PRs.

    If this PR is too big, some commits could be moved outside of this PR it's related but just fixes some bugs on the ACLs parsing behavior.

  • headscale_0.18.0-beta2 cannot open the exit node

    headscale_0.18.0-beta2 cannot open the exit node

    Please ask, the same configuration file, and the client version remains unchanged, headscale_0.18.0-beta2 cannot open the exit node, but headscale_0.18.0-beta1 can open the exit node, thank you

    Bug description

    To Reproduce

    Context info

  • use smallzstd and sync pool

    use smallzstd and sync pool

    • [x] read the CONTRIBUTING guidelines
    • [ ] raised a GitHub issue or discussed it on the projects chat beforehand
    • [ ] added unit tests
    • [ ] added integration tests
    • [ ] updated documentation if needed
    • [ ] updated CHANGELOG.md

    This PR tweaks the zstd encoding by using smallzstd package from tailscale and a sync pool, instead of creating a new encoder. While this won't fix #1014 entirely, it could reduce CPU usage when sending mapresponses to the clients

  • namespace.basedomain.xyz cannot resolve any nameserver provided by a third-party DNS provider

    namespace.basedomain.xyz cannot resolve any nameserver provided by a third-party DNS provider

    Feature request I am using special domain for a all services of my company (basedomain.xyz). Sometimes I want to assign custom DNS, apart from the names that are provided by headscale. For example I have a namespaces like api for all nodes, which provided a internal api of my company. I want to add these nodes, so that they can be solved with api.basedomain.xyz.

    While I want to resolve namespace.basedomain.xyz for existing namespace, then headscale DNS, does not return any IP address. I checked answers for headscale vs cloudflare DNS: dig @100.100.100.100 a namespace.basedomain.xyz return a empty A record, while dig @1.1.1.1 a namespace.basedomain.xyz return a expected A record.

    For a nonnamespace.basedomain.xyz, everything worked as expected, that's why I think it's not a problem with my headscale configuration

    Before I am using headscale 0.15.x, and everything worked as expected, but while I am migrated to 0.17.1, then I got above behavior.

  • Better name resolution for CNAME records

    Better name resolution for CNAME records

    Feature request I am using special domain for a all services of my company (mycompany.dev). Sometimes I want to assign custom DNS, apart from the names that are provided by headscale. For example I have a namespaces like api for all nodes, which provided a internal api of my company. I want to add these nodes, so that they can be solved with api.mycompany.dev. When I add them as A record the problem is not occured, but when I want add them as a CNAME record the problem is appear. As default providers like cloudflare resolve CNAME records as:

    dig A api.mycompany.dev
    ;api.mycompany.dev.		IN	CNAME api1.api.mycompany.dev
    ;api.mycompany.dev.		IN	A           10.0.0.1
    

    but headscale resolve these CNAME record only for CNAME queries and can not resolve any IP for A queries:

    dig A api.mycompany.dev
    ;api.mycompany.dev.		IN	A <empty>
    

    I think, headscale should resolve A queries in a similar way as a cloudflare, thanks.

  • Remove ephemeral on logout

    Remove ephemeral on logout

    This PR implements #1087, to better adhere to a change on how ephemeral nodes behave on logout in the SaaS https://tailscale.com/blog/ephemeral-logout/.

Apache Traffic Control is an Open Source implementation of a Content Delivery Network

Apache Traffic Control Apache Traffic Control is an Open Source implementation of a Content Delivery Network. Documentation Intro CDN Basics Traffic C

Jan 6, 2023
A memory-safe SSH server, focused on listening only on VPN networks such as Tailscale

Features Is tested to work with SCP Integrates well with systemd Quickstart Download binary for your architecture. We only support Linux. If you don't

Jun 10, 2022
Provides agent and server plugins for SPIRE to allow Tailscale node attestation.

SPIRE Tailscale Plugin ⚠️ this node attestation plugin relies on a Tailscale OIDC id-token feature, which is marked as Work-in-Progress and may not be

May 22, 2022
The fastest way to create self-hosted exit-servers
The fastest way to create self-hosted exit-servers

inletsctl - the fastest way to create self-hosted exit-servers inletsctl automates the task of creating an exit-server (tunnel server) on public cloud

Dec 15, 2022
☁️ Cloud Torrent: a self-hosted remote torrent client
☁️ Cloud Torrent: a self-hosted remote torrent client

Cloud torrent is a a self-hosted remote torrent client, written in Go (golang). You start torrents remotely, which are downloaded as sets of files on

Jan 6, 2023
Gogrok is a self hosted, easy to use alternative to ngrok. It uses SSH as a base protocol, using channels and existing functionality to tunnel requests to an endpoint.

gogrok A simple, easy to use ngrok alternative (self hosted!) The server and client can also be easily embedded into your applications, see the 'serve

Dec 3, 2022
Underpass - Self-hosted ngrok alternative.

Underpass Self-hosted ngrok alternative. Installation (CLI) brew install

Dec 28, 2022
Self-hosted and Easy-to-deploy Cloudflare based Dynamic DNS service for router
Self-hosted and Easy-to-deploy Cloudflare based Dynamic DNS service for router

Self-hosted and Easy-to-deploy Cloudflare based Dynamic DNS service for router Contents Features Environment Variables Installation Heroku Docker (Run

Oct 9, 2022
Self-hosted reverse-proxy for F1 web viewer.
Self-hosted reverse-proxy for F1 web viewer.

F1WebViewer-SelfHosted Self-hosted reverse-proxy for F1 web viewer and includes a web server at port 13331. You can also run this proxy on a server if

Dec 21, 2022
Go Http Proxy with Authentication, Schedule Control, and Portal Control

goproxy Go Http Proxy with Authentication, Schedule Control, and Portal Control Why this tool? You may need to restrict my kids's youtube watch time i

Mar 27, 2022
An open source Pusher server implementation compatible with Pusher client libraries written in Go

Try browsing the code on Sourcegraph! IPÊ An open source Pusher server implementation compatible with Pusher client libraries written in Go. Why I wro

Aug 27, 2022
A TCP proxy used to expose services onto a tailscale network without root. Ideal for container environments.

tailscale-sidecar This is barely tested software, I don't guarantee it works but please make an issue if you use it and find a bug. Pull requests are

Dec 30, 2022
Example of how to write reverse proxy in Go that runs on Cloud Run with Tailscale

Cloudrun Tailscale Reverse Proxy Setup Create a ephemeral key in Tailscale Set TAILSCALE_AUTHKEY in your Cloud Run environment variables Set TARGET_UR

Dec 18, 2022
A pair of local reverse proxies (one in Windows, one in Linux) for Tailscale on WSL2

tailscale-wsl2 TL;DR Running two reverse proxies (one in Windows, one in the WSL2 Linux VM), the Windows Tailscale daemon can be accessed via WSL2: $

Dec 9, 2022
Cdn - CDN microservice to upload files to zachlatta.com that only accepts traffic from Tailscale IPs

cdn CDN microservice to upload files to zachlatta.com that only accepts traffic from Tailscale IPs. source code available at https://github.com/zachla

Jun 26, 2022
Tscert - Minimal package for just the HTTPS cert fetching part of the Tailscale client API

tscert This is a stripped down version of the tailscale.com/client/tailscale Go

Nov 27, 2022
An unofficial GUI wrapper around the Tailscale CLI client.
An unofficial GUI wrapper around the Tailscale CLI client.

Trayscale Trayscale is an unofficial GUI wrapper around the Tailscale CLI client, particularly for use on Linux, as no official Linux GUI client exist

Dec 26, 2022
Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution.
Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution.

Connecting the Next Billion People Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core

Dec 31, 2022
Project Kebe is the open-source Snap Store implementation.

Introduction Kebe intends to be a full replacement for the Snap Store. Quickstart Once you have an environment setup (for instance using https://githu

Nov 9, 2022