2
2
3
3
actor developer as "Developer"
4
4
participant device as "NAIS Device"
5
- participant dnca as "NAIS Device Client Agent"
5
+ participant ndca as "NAIS Device Client Agent"
6
6
participant aad as "Azure Active Directory"
7
7
participant kolide as "Kolide"
8
8
participant nds as "NAIS Device Server"
@@ -11,17 +11,16 @@ collections vpnserver as "VPN Server"
11
11
collections ndga as "NAIS Device Gateway Agent"
12
12
13
13
== Enroll ==
14
- developer -> dnca : enroll device
15
- dnca -> device : install kolide-agent
14
+ developer -> ndca : enroll device
15
+ ndca -> device : install kolide-agent
16
16
device -> kolide : register
17
- dnca -> aad : login
18
- aad -> dnca : token
19
- dnca -> device : get serial
20
- device -> dnca : serial
21
- dnca -> nds : HTTP POST /register {token, serial}
22
- nds -> aad : validate token
17
+ ndca -> aad : login
18
+ aad -> ndca : token
19
+ ndca -> device : get serial
20
+ device -> ndca : serial
21
+ ndca -> nds : HTTP POST /device/register {token, serial}
23
22
nds -> ndsdb : add db entry {serial, email}
24
- nds -> dnca : response
23
+ nds -> ndca : response
25
24
26
25
== Kolide ==
27
26
loop
@@ -38,23 +37,30 @@ loop every x minutes
38
37
nds -> nds : update database entries with status
39
38
end
40
39
40
+ == Healthcheck VPN ==
41
+ ndca -> vpnserver : establish tcp connection
42
+ loop every second :
43
+ ndca -> vpnserver : send byte
44
+ vpnserver -> ndca : send byte
45
+ end
46
+ ndca -> ndca : if no byte response, trigger Connect to VPN
47
+ ndca -> ndca : close tcp connection
48
+ ndca -> ndca : restart healthcheck
49
+
41
50
== Connect to VPN ==
42
- dnca -> nds : HTTP GET /psk { token, public key, serial}
43
- nds -> nds : validate token
51
+ ndca -> ndca : if no cached token, login
52
+ ndca -> nds : HTTP GET /device/vpn/config { token, public key, serial}
44
53
nds -> ndsdb : is device ok?
45
54
46
55
nds -> ndsdb : get {psk, ip, routes, server-configs}
47
- nds -> dnca : {psk, ip, routes, server-configs}
56
+ nds -> ndca : {psk, ip, routes, server-configs}
48
57
49
- dnca -> device : ip dev add / ifconfig add / netsh add device
50
- dnca -> device : wg set psk, private key, ip
51
- dnca -> device : route add
58
+ ndca -> device : ip dev add / ifconfig add / netsh add device
59
+ ndca -> device : wg set psk, private key, ip
60
+ ndca -> device : route add
52
61
53
62
== Enroll VPN Server ==
54
- ndga -> aad : login
55
- aad -> ndga : token
56
- ndga -> nds : HTTP POST /gateway/register {token, server-id, public ip}
57
- nds -> nds : validate token
63
+ ndga -> nds : HTTP POST /gateway/register {token, public key, public ip}
58
64
nds -> ndsdb : write server config
59
65
nds -> ndga : response
60
66
66
72
67
73
== Configure VPN Server (runs every minute or more) ==
68
74
loop every minute
69
- ndga -> aad : login
70
- aad -> ndga : token
71
- ndga -> nds : HTTP GET /peers {token, server-id}
72
- nds -> nds : validate token
75
+ ndga -> nds : HTTP GET /gateway/peers {token, public key}
73
76
nds -> ndsdb : get peers
74
77
nds -> ndga : {peers}
75
78
end
0 commit comments