Move derpmap.Prod to a static JSON file (go:generate'd) instead, to make its role explicit. And add a TODO about making dnsfallback use an update-over-time DERP map file instead of a baked-in one. Updates #1264 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>main
parent
194d5b8412
commit
10d7c2583c
@ -0,0 +1,179 @@ |
||||
{ |
||||
"Regions": { |
||||
"1": { |
||||
"RegionID": 1, |
||||
"RegionCode": "r1", |
||||
"RegionName": "r1", |
||||
"Nodes": [ |
||||
{ |
||||
"Name": "1a", |
||||
"RegionID": 1, |
||||
"HostName": "derp1.tailscale.com", |
||||
"IPv4": "159.89.225.99", |
||||
"IPv6": "2604:a880:400:d1::828:b001" |
||||
}, |
||||
{ |
||||
"Name": "1b", |
||||
"RegionID": 1, |
||||
"HostName": "derp1b.tailscale.com", |
||||
"IPv4": "45.55.35.93", |
||||
"IPv6": "2604:a880:800:a1::f:2001" |
||||
} |
||||
] |
||||
}, |
||||
"10": { |
||||
"RegionID": 10, |
||||
"RegionCode": "r10", |
||||
"RegionName": "r10", |
||||
"Nodes": [ |
||||
{ |
||||
"Name": "10a", |
||||
"RegionID": 10, |
||||
"HostName": "derp10.tailscale.com", |
||||
"IPv4": "137.220.36.168", |
||||
"IPv6": "2001:19f0:8001:2d9:5400:2ff:feef:bbb1" |
||||
} |
||||
] |
||||
}, |
||||
"11": { |
||||
"RegionID": 11, |
||||
"RegionCode": "r11", |
||||
"RegionName": "r11", |
||||
"Nodes": [ |
||||
{ |
||||
"Name": "11a", |
||||
"RegionID": 11, |
||||
"HostName": "derp11.tailscale.com", |
||||
"IPv4": "18.230.97.74", |
||||
"IPv6": "2600:1f1e:ee4:5611:ec5c:1736:d43b:a454" |
||||
} |
||||
] |
||||
}, |
||||
"2": { |
||||
"RegionID": 2, |
||||
"RegionCode": "r2", |
||||
"RegionName": "r2", |
||||
"Nodes": [ |
||||
{ |
||||
"Name": "2a", |
||||
"RegionID": 2, |
||||
"HostName": "derp2.tailscale.com", |
||||
"IPv4": "167.172.206.31", |
||||
"IPv6": "2604:a880:2:d1::c5:7001" |
||||
}, |
||||
{ |
||||
"Name": "2b", |
||||
"RegionID": 2, |
||||
"HostName": "derp2b.tailscale.com", |
||||
"IPv4": "64.227.106.23", |
||||
"IPv6": "2604:a880:4:1d0::29:9000" |
||||
} |
||||
] |
||||
}, |
||||
"3": { |
||||
"RegionID": 3, |
||||
"RegionCode": "r3", |
||||
"RegionName": "r3", |
||||
"Nodes": [ |
||||
{ |
||||
"Name": "3a", |
||||
"RegionID": 3, |
||||
"HostName": "derp3.tailscale.com", |
||||
"IPv4": "68.183.179.66", |
||||
"IPv6": "2400:6180:0:d1::67d:8001" |
||||
} |
||||
] |
||||
}, |
||||
"4": { |
||||
"RegionID": 4, |
||||
"RegionCode": "r4", |
||||
"RegionName": "r4", |
||||
"Nodes": [ |
||||
{ |
||||
"Name": "4a", |
||||
"RegionID": 4, |
||||
"HostName": "derp4.tailscale.com", |
||||
"IPv4": "167.172.182.26", |
||||
"IPv6": "2a03:b0c0:3:e0::36e:9001" |
||||
}, |
||||
{ |
||||
"Name": "4b", |
||||
"RegionID": 4, |
||||
"HostName": "derp4b.tailscale.com", |
||||
"IPv4": "157.230.25.0", |
||||
"IPv6": "2a03:b0c0:3:e0::58f:3001" |
||||
} |
||||
] |
||||
}, |
||||
"5": { |
||||
"RegionID": 5, |
||||
"RegionCode": "r5", |
||||
"RegionName": "r5", |
||||
"Nodes": [ |
||||
{ |
||||
"Name": "5a", |
||||
"RegionID": 5, |
||||
"HostName": "derp5.tailscale.com", |
||||
"IPv4": "103.43.75.49", |
||||
"IPv6": "2001:19f0:5801:10b7:5400:2ff:feaa:284c" |
||||
} |
||||
] |
||||
}, |
||||
"6": { |
||||
"RegionID": 6, |
||||
"RegionCode": "r6", |
||||
"RegionName": "r6", |
||||
"Nodes": [ |
||||
{ |
||||
"Name": "6a", |
||||
"RegionID": 6, |
||||
"HostName": "derp6.tailscale.com", |
||||
"IPv4": "68.183.90.120", |
||||
"IPv6": "2400:6180:100:d0::982:d001" |
||||
} |
||||
] |
||||
}, |
||||
"7": { |
||||
"RegionID": 7, |
||||
"RegionCode": "r7", |
||||
"RegionName": "r7", |
||||
"Nodes": [ |
||||
{ |
||||
"Name": "7a", |
||||
"RegionID": 7, |
||||
"HostName": "derp7.tailscale.com", |
||||
"IPv4": "167.179.89.145", |
||||
"IPv6": "2401:c080:1000:467f:5400:2ff:feee:22aa" |
||||
} |
||||
] |
||||
}, |
||||
"8": { |
||||
"RegionID": 8, |
||||
"RegionCode": "r8", |
||||
"RegionName": "r8", |
||||
"Nodes": [ |
||||
{ |
||||
"Name": "8a", |
||||
"RegionID": 8, |
||||
"HostName": "derp8.tailscale.com", |
||||
"IPv4": "167.71.139.179", |
||||
"IPv6": "2a03:b0c0:1:e0::3cc:e001" |
||||
} |
||||
] |
||||
}, |
||||
"9": { |
||||
"RegionID": 9, |
||||
"RegionCode": "r9", |
||||
"RegionName": "r9", |
||||
"Nodes": [ |
||||
{ |
||||
"Name": "9a", |
||||
"RegionID": 9, |
||||
"HostName": "derp9.tailscale.com", |
||||
"IPv4": "207.148.3.137", |
||||
"IPv6": "2001:19f0:6401:1d9c:5400:2ff:feef:bb82" |
||||
} |
||||
] |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,17 @@ |
||||
// Copyright (c) 2021 Tailscale Inc & AUTHORS All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package dnsfallback |
||||
|
||||
import "testing" |
||||
|
||||
func TestGetDERPMap(t *testing.T) { |
||||
dm := getDERPMap() |
||||
if dm == nil { |
||||
t.Fatal("nil") |
||||
} |
||||
if len(dm.Regions) == 0 { |
||||
t.Fatal("no regions") |
||||
} |
||||
} |
||||
@ -0,0 +1,47 @@ |
||||
// Copyright (c) 2021 Tailscale Inc & AUTHORS All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build ignore
|
||||
|
||||
package main |
||||
|
||||
import ( |
||||
"encoding/json" |
||||
"fmt" |
||||
"io/ioutil" |
||||
"log" |
||||
"net/http" |
||||
"os" |
||||
|
||||
"tailscale.com/tailcfg" |
||||
) |
||||
|
||||
func main() { |
||||
res, err := http.Get("https://login.tailscale.com/derpmap/default") |
||||
if err != nil { |
||||
log.Fatal(err) |
||||
} |
||||
if res.StatusCode != 200 { |
||||
res.Write(os.Stderr) |
||||
os.Exit(1) |
||||
} |
||||
dm := new(tailcfg.DERPMap) |
||||
if err := json.NewDecoder(res.Body).Decode(dm); err != nil { |
||||
log.Fatal(err) |
||||
} |
||||
for rid, r := range dm.Regions { |
||||
// Names misleading to check into git, as this is a
|
||||
// static snapshot and doesn't reflect the live DERP
|
||||
// map.
|
||||
r.RegionCode = fmt.Sprintf("r%d", rid) |
||||
r.RegionName = r.RegionCode |
||||
} |
||||
out, err := json.MarshalIndent(dm, "", "\t") |
||||
if err != nil { |
||||
log.Fatal(err) |
||||
} |
||||
if err := ioutil.WriteFile("dns-fallback-servers.json", out, 0644); err != nil { |
||||
log.Fatal(err) |
||||
} |
||||
} |
||||
Loading…
Reference in new issue