doxctl
is a diagnostic CLI tool that endusers can use to triage connectivity problems stemming from their VPN & DNS setups on their laptops. It can help with the following areas:
Area | Description |
---|---|
VPN | Can servers be reached over the VPN across geo-locations |
DNS | Resolvers, search paths, etc. are set |
Resolvers | VPN defined DNS resolvers are defined and reachable |
Routing and connectivity | When on the VPN well-known servers are reachable |
Tree - CLICK ME
$ brew install slmingol/tap/doxctl
$ brew install slmingol/tap/doxctl
==> Installing doxctl from slmingol/tap
==> Downloading https://ghcr.io/v2/homebrew/core/go/manifests/1.16.4
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/go/blobs/sha256:8aa23b394e05aaef495604670401f9308c01c3c30a1857077493a80d1719e089
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:8aa23b394e05aaef495604670401f9308c01c3c30a1857077493a80d1719e089?se=202
######################################################################## 100.0%
==> Downloading https://github.com/slmingol/doxctl/releases/download/0.0.27-alpha/doxctl_0.0.27-alpha_Darwin_x86_64.tar.gz
==> Downloading from https://github-releases.githubusercontent.com/367779289/09fcfe00-c133-11eb-9f76-3f053be7f72c?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Cre
######################################################################## 100.0%
==> Installing dependencies for slmingol/tap/doxctl: go
==> Installing slmingol/tap/doxctl dependency: go
==> Pouring go--1.16.4.catalina.bottle.tar.gz
πΊ /usr/local/Cellar/go/1.16.4: 9,956 files, 503.6MB
==> Installing slmingol/tap/doxctl
πΊ /usr/local/Cellar/doxctl/0.0.27-alpha: 5 files, 9.1MB, built in 4 seconds
$ brew search doxctl
==> Formulae
slmingol/tap/doxctl β
$ brew update
Updated 2 taps (homebrew/cask and slmingol/tap).
==> Updated Formulae
slmingol/tap/doxctl β
==> Deleted Casks
appstudio filedrop hex rss
You have 96 outdated formulae and 10 outdated casks installed.
You can upgrade them with brew upgrade
or list them with brew outdated.
$ brew upgrade doxctl
==> Upgrading 1 outdated package:
slmingol/tap/doxctl 0.0.27-alpha -> 0.0.28-alpha
==> Upgrading slmingol/tap/doxctl 0.0.27-alpha -> 0.0.28-alpha
==> Downloading https://github.com/slmingol/doxctl/releases/download/0.0.28-alpha/doxctl_0.0.28-alpha_Darwin_x86_64.tar.gz
==> Downloading from https://github-releases.githubusercontent.com/367779289/c7d4bc00-c134-11eb-8b3d-622ae425b081?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Cre
######################################################################## 100.0%
πΊ /usr/local/Cellar/doxctl/0.0.28-alpha: 5 files, 9.1MB, built in 4 seconds
Removing: /usr/local/Cellar/doxctl/0.0.27-alpha... (5 files, 9.1MB)
Removing: /Users/smingolelli/Library/Caches/Homebrew/doxctl--0.0.27-alpha.tar.gz... (3.4MB)
$ brew uninstall doxctl
Uninstalling /usr/local/Cellar/doxctl/0.0.27-alpha... (5 files, 9.1MB)
$ doxctl -h
'doxctl' is a collection of tools which can be used to diagnose & triage problems
stemming from the following areas with a laptop or desktop system:
- DNS, specifically with the configuration of resolvers
- VPN configuration and network connectivity over it
- General access to well-known servers
- General access to well-known services
- ... or general network connectivity issues
Usage:
doxctl [command]
Available Commands:
dns Run diagnostics related to DNS servers (aka. resolvers) configurations
help Help about any command
net TBD
svcs TBD
svrs Run diagnostics verifying connectivity to well known servers thru a VPN connection
vpn Run diagnostics related to VPN connections, network interfaces & configurations
Flags:
-c, --config string config file (default is $HOME/.doxctl.yaml)
-h, --help help for doxctl
-v, --verbose Enable verbose output of commands
Use "doxctl [command] --help" for more information about a command.
$ doxctl dns -h
doxctl's 'dns' subcommand can help triage DNS resovler configuration issues,
general access to DNS resolvers and name resolution against DNS resolvers.
Usage:
doxctl dns [flags]
Flags:
-a, --allChk Run all the checks in this subcommand module
-d, --digChk Check if VPN defined resolvers respond with well-known servers in DCs
-h, --help help for dns
-p, --pingChk Check if VPN defined resolvers are pingable & reachable
-r, --resolverChk Check if VPN designated DNS resolvers are configured
Global Flags:
-c, --config string config file (default is $HOME/.doxctl.yaml)
-v, --verbose Enable verbose output of commands
Tree - CLICK ME
$ doxctl dns -r
**NOTE:** Using config file: /Users/smingolelli/.doxctl.yaml
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β VPN defined DNS Resolver Checks β
ββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββ€
β PROPERTY DESCRIPTION β VALUE β
ββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββ€
β DomainName defined? β unset β
β SearchDomains defined? β unset β
β ServerAddresses defined? β unset β
ββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββ
INFO: Any values of unset indicate that the VPN client is not defining DNS resolver(s) properly!
$ doxctl dns -r
**NOTE:** Using config file: /Users/smingolelli/.doxctl.yaml
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β VPN defined DNS Resolver Checks β
ββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββ€
β PROPERTY DESCRIPTION β VALUE β
ββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββ€
β DomainName defined? β set β
β SearchDomains defined? β set β
β ServerAddresses defined? β set β
ββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββ
INFO: Any values of unset indicate that the VPN client is not defining DNS resolver(s) properly!
Tree - CLICK ME
$ doxctl dns -p
**NOTE:** Using config file: /Users/smingolelli/.doxctl.yaml
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β VPN defined DNS Resolver Connectivity Checks β
ββββββββββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββ¬ββββββββββββββββ¬ββββββββ€
β PROPERTY DESCRIPTION β IP β NET I/F β VALUE β
ββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββΌββββββββββββββββΌββββββββ€
ββββββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββ΄ββββββββββββββββ΄ββββββββ
WARNING:
Your VPN client does not appear to be defining any DNS resolver(s) properly,
you're either not connected via VPN or it's misconfigured!
$ doxctl dns -p
**NOTE:** Using config file: /Users/smingolelli/.doxctl.yaml
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β VPN defined DNS Resolver Connectivity Checks β
ββββββββββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββ¬ββββββββββββββββ¬ββββββββ€
β PROPERTY DESCRIPTION β IP β NET I/F β VALUE β
ββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββΌββββββββββββββββΌββββββββ€
β Resovler is pingable? β 10.5.0.18 β utun2 β true β
β Reachable via TCP? β 10.5.0.18 β utun2 β true β
β Reachable via UDP? β 10.5.0.18 β utun2 β true β
ββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββΌββββββββββββββββΌββββββββ€
β Resovler is pingable? β 10.5.0.19 β utun2 β true β
β Reachable via TCP? β 10.5.0.19 β utun2 β true β
β Reachable via UDP? β 10.5.0.19 β utun2 β true β
ββββββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββ΄ββββββββββββββββ΄ββββββββ
Tree - CLICK ME
$ doxctl dns -d
**NOTE:** Using config file: /Users/smingolelli/.doxctl.yaml
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Dig Check against VPN defined DNS Resolvers β
ββββββββββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββ¬ββββββββββββββββββ€
β HOSTNAME TO 'DIG' β RESOLVER IP β IS RESOLVABLE? β
ββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββΌββββββββββββββββββ€
β idm-01a.lab1.somedom.local β β false β
β idm-01b.lab1.somedom.local β β false β
ββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββΌββββββββββββββββββ€
β idm-01a.rdu1.somedom.local β β false β
β idm-01b.rdu1.somedom.local β β false β
ββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββΌββββββββββββββββββ€
β idm-01a.atl1.somedom.local β β false β
β idm-01b.atl1.somedom.local β β false β
ββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββΌββββββββββββββββββ€
β idm-01a.dfw1.somedom.local β β false β
β idm-01b.dfw1.somedom.local β β false β
ββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββΌββββββββββββββββββ€
β idm-01a.lax2.somedom.local β β false β
β idm-01b.lax2.somedom.local β β false β
ββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββΌββββββββββββββββββ€
β idm-01a.jfk1.somedom.local β β false β
β idm-01b.jfk1.somedom.local β β false β
ββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββΌββββββββββββββββββ€
β SUCCESSESFUL QUERIES β RESOLVER #1: 0 β β
β β RESOLVER #2: 0 β β
ββββββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββββ΄ββββββββββββββββββ
WARNING:
Your VPN client does not appear to be defining any DNS resolver(s) properly,
you're either not connected via VPN or it's misconfigured!
$ doxctl dns -d
**NOTE:** Using config file: /Users/smingolelli/.doxctl.yaml
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Dig Check against VPN defined DNS Resolvers β
ββββββββββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββ¬ββββββββββββββββββ€
β HOSTNAME TO 'DIG' β RESOLVER IP β IS RESOLVABLE? β
ββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββΌββββββββββββββββββ€
β idm-01a.lab1.somedom.local β 10.5.0.18 β true β
β idm-01b.lab1.somedom.local β 10.5.0.18 β true β
β idm-01a.lab1.somedom.local β 10.5.0.19 β true β
β idm-01b.lab1.somedom.local β 10.5.0.19 β true β
ββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββΌββββββββββββββββββ€
β idm-01a.rdu1.somedom.local β 10.5.0.18 β true β
β idm-01b.rdu1.somedom.local β 10.5.0.18 β true β
β idm-01a.rdu1.somedom.local β 10.5.0.19 β true β
β idm-01b.rdu1.somedom.local β 10.5.0.19 β true β
ββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββΌββββββββββββββββββ€
β idm-01a.atl1.somedom.local β 10.5.0.18 β true β
β idm-01b.atl1.somedom.local β 10.5.0.18 β true β
β idm-01a.atl1.somedom.local β 10.5.0.19 β true β
β idm-01b.atl1.somedom.local β 10.5.0.19 β true β
ββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββΌββββββββββββββββββ€
β idm-01a.dfw1.somedom.local β 10.5.0.18 β true β
β idm-01b.dfw1.somedom.local β 10.5.0.18 β true β
β idm-01a.dfw1.somedom.local β 10.5.0.19 β true β
β idm-01b.dfw1.somedom.local β 10.5.0.19 β true β
ββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββΌββββββββββββββββββ€
β idm-01a.lax2.somedom.local β 10.5.0.18 β true β
β idm-01b.lax2.somedom.local β 10.5.0.18 β true β
β idm-01a.lax2.somedom.local β 10.5.0.19 β true β
β idm-01b.lax2.somedom.local β 10.5.0.19 β true β
ββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββΌββββββββββββββββββ€
β idm-01a.jfk1.somedom.local β 10.5.0.18 β true β
β idm-01b.jfk1.somedom.local β 10.5.0.18 β true β
β idm-01a.jfk1.somedom.local β 10.5.0.19 β true β
β idm-01b.jfk1.somedom.local β 10.5.0.19 β true β
ββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββΌββββββββββββββββββ€
β SUCCESSESFUL QUERIES β RESOLVER #1: 12 β β
β β RESOLVER #2: 12 β β
ββββββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββββ΄ββββββββββββββββββ
$ doxctl vpn -h
doxctl's 'vpn' subcommand can help triage VPN related configuration issues,
& routes related to a VPN connection.
Usage:
doxctl vpn [flags]
Flags:
-a, --allChk Run all the checks in this subcommand module
-h, --help help for vpn
-i, --ifReachableChk Check if network interfaces are reachable
-r, --vpnRoutesChk Check if >5 VPN routes are defined
-s, --vpnStatusChk Check if VPN client's status reports as 'Connected'
Global Flags:
-c, --config string config file (default is $HOME/.doxctl.yaml)
-v, --verbose Enable verbose output of commands
Tree - CLICK ME
$ doxctl vpn -i
NOTE: Using config file: /Users/smingolelli/.doxctl.yaml
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Interfaces Reachable Checks β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββ¬ββββββββ€
β PROPERTY DESCRIPTION β VALUE β NOTES β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββΌββββββββ€
β How many network interfaces found? β 1 β [en0] β
β At least 1 interface's a utun device? β false β [] β
β All active interfaces are reporting as reachable? β true β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββ΄ββββββββ
WARNING:
Your VPN client does not appear to be defining a TUN interface properly,
your VPN is either not connected or it's misconfigured!
$ doxctl vpn -i
NOTE: Using config file: /Users/smingolelli/.doxctl.yaml
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Interfaces Reachable Checks β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββ¬ββββββββββββββ€
β PROPERTY DESCRIPTION β VALUE β NOTES β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββΌββββββββββββββ€
β How many network interfaces found? β 2 β [en0 utun2] β
β At least 1 interface's a utun device? β true β [utun2] β
β All active interfaces are reporting as reachable? β true β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββ΄ββββββββββββββ
Tree - CLICK ME
$ doxctl vpn -r
NOTE: Using config file: /Users/smingolelli/.doxctl.yaml
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β VPN Interface Route Checks β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββ¬ββββββββ€
β PROPERTY DESCRIPTION β VALUE β NOTES β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββΌββββββββ€
β At least [5] routes using interface [NIL]? β false β 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββ΄ββββββββ
WARNING:
Your VPN client does not appear to be defining a TUN interface properly,
it's either not connected or it's misconfigured!
$ doxctl vpn -r
NOTE: Using config file: /Users/smingolelli/.doxctl.yaml
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β VPN Interface Route Checks β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββ¬ββββββββ€
β PROPERTY DESCRIPTION β VALUE β NOTES β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββΌββββββββ€
β At least [5] routes using interface [utun2]? β true β 148 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββ΄ββββββββ
Tree - CLICK ME
$ doxctl vpn -s
NOTE: Using config file: /Users/smingolelli/.doxctl.yaml
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β VPN Connection Status Checks β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββ¬ββββββββ€
β PROPERTY DESCRIPTION β VALUE β NOTES β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββΌββββββββ€
β VPN Client reports connection status as 'Connected'? β false β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββ΄ββββββββ
WARNING:
Your VPN client's does not appear to be a state of 'connected',
it's either down or misconfigured!"
$ doxctl vpn -s
NOTE: Using config file: /Users/smingolelli/.doxctl.yaml
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β VPN Connection Status Checks β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββ¬ββββββββ€
β PROPERTY DESCRIPTION β VALUE β NOTES β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββΌββββββββ€
β VPN Client reports connection status as 'Connected'? β true β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββ΄ββββββββ
$ doxctl svrs -h
doxctl's 'svrs' subcommand can help triage & test connectivity to 'well known servers'
thru a VPN connection to servers which have been defined in your '.doxctl.yaml'
configuration file.
Usage:
doxctl svrs [flags]
Flags:
-a, --allChk Run all the checks in this subcommand module
-h, --help help for svrs
-s, --svrsReachableChk Check if well known servers are reachable
Global Flags:
-c, --config string config file (default is $HOME/.doxctl.yaml)
-v, --verbose Enable verbose output of commands
Tree - CLICK ME
$ doxctl svrs -s
NOTE: Using config file: /Users/smingolelli/.doxctl.yaml
INFO: Attempting to ping all well known servers, this may take a few...
--- Working through svc: openshift
--- Working through svc: elastic
--- Working through svc: idm
...one sec, preparing `ping` results...
WARNING: More than 5 hosts appear to be unreachable, aborting remainder....
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Well known Servers Reachable Checks β
ββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββ¬βββββββββββββ¬βββββββββββββββββββ€
β HOST β SERVICE β REACHABLE? β PING PERFORMANCE β
ββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββΌβββββββββββββΌβββββββββββββββββββ€
β ocp-master-01a.lab1.somedom.local β openshift β false β N/A β
β ocp-master-01a.rdu1.somedom.local β openshift β false β N/A β
β ocp-master-01a.dfw1.somedom.local β openshift β false β N/A β
β ocp-master-01a.lax2.somedom.local β openshift β false β N/A β
β ocp-master-01a.jfk1.somedom.local β openshift β false β N/A β
β ocp-master-01b.lab1.somedom.local β openshift β false β N/A β
β ocp-master-01b.rdu1.somedom.local β openshift β false β N/A β
β ocp-master-01b.dfw1.somedom.local β openshift β false β N/A β
β ocp-master-01b.lax2.somedom.local β openshift β false β N/A β
β ocp-master-01b.jfk1.somedom.local β openshift β false β N/A β
β ocp-master-01c.lab1.somedom.local β openshift β false β N/A β
β ocp-master-01c.rdu1.somedom.local β openshift β false β N/A β
β ocp-master-01c.dfw1.somedom.local β openshift β false β N/A β
β ocp-master-01c.lax2.somedom.local β openshift β false β N/A β
β ocp-master-01c.jfk1.somedom.local β openshift β false β N/A β
β ocp-master-01a.lhr1.somedom.us β openshift β false β N/A β
β ocp-master-01a.fra1.somedom.us β openshift β false β N/A β
β ocp-master-01b.lhr1.somedom.us β openshift β false β N/A β
β ocp-master-01b.fra1.somedom.us β openshift β false β N/A β
β ocp-master-01c.lhr1.somedom.us β openshift β false β N/A β
β ocp-master-01c.fra1.somedom.us β openshift β false β N/A β
ββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββΌβββββββββββββΌβββββββββββββββββββ€
β es-master-01a.lab1.somedom.local β elastic β false β N/A β
β es-master-01a.rdu1.somedom.local β elastic β false β N/A β
β es-master-01b.lab1.somedom.local β elastic β false β N/A β
β es-master-01b.rdu1.somedom.local β elastic β false β N/A β
β es-master-01c.lab1.somedom.local β elastic β false β N/A β
β es-master-01c.rdu1.somedom.local β elastic β false β N/A β
ββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββΌβββββββββββββΌβββββββββββββββββββ€
β idm-01a.lab1.somedom.local β idm β false β N/A β
β idm-01a.rdu1.somedom.local β idm β false β N/A β
β idm-01a.dfw1.somedom.local β idm β false β N/A β
β idm-01a.lax2.somedom.local β idm β false β N/A β
β idm-01a.jfk1.somedom.local β idm β false β N/A β
β idm-01b.lab1.somedom.local β idm β false β N/A β
β idm-01b.rdu1.somedom.local β idm β false β N/A β
β idm-01b.dfw1.somedom.local β idm β false β N/A β
β idm-01b.lax2.somedom.local β idm β false β N/A β
β idm-01b.jfk1.somedom.local β idm β false β N/A β
β idm-01a.lhr1.somedom.us β idm β false β N/A β
β idm-01a.fra1.somedom.us β idm β false β N/A β
β idm-01b.lhr1.somedom.us β idm β false β N/A β
β idm-01b.fra1.somedom.us β idm β false β N/A β
ββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββ΄βββββββββββββ΄βββββββββββββββββββ
WARNING:
Your VPN client does not appear to be functioning properly, it's likely one or more of the following:
- Well known servers are unreachable via ping --- try running 'doxctl vpn -h'
- Servers are unresovlable in DNS --- try running 'doxctl dns -h'
- VPN client is otherwise misconfigured!
doxctl svrs -s
NOTE: Using config file: /Users/smingolelli/.doxctl.yaml
INFO: Attempting to ping all well known servers, this may take a few...
--- Working through svc: openshift
--- Working through svc: elastic
--- Working through svc: idm
...one sec, preparing `ping` results...
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Well known Servers Reachable Checks β
ββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββ¬βββββββββββββ¬ββββββββββββββββββββββββββ€
β HOST β SERVICE β REACHABLE? β PING PERFORMANCE β
ββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββΌβββββββββββββΌββββββββββββββββββββββββββ€
β ocp-master-01a.lab1.somedom.local β openshift β true β rnd-trp avg = 44.525ms β
β ocp-master-01a.rdu1.somedom.local β openshift β true β rnd-trp avg = 24.337ms β
β ocp-master-01a.dfw1.somedom.local β openshift β true β rnd-trp avg = 55.118ms β
β ocp-master-01a.lax2.somedom.local β openshift β true β rnd-trp avg = 97.183ms β
β ocp-master-01a.jfk1.somedom.local β openshift β true β rnd-trp avg = 36.187ms β
β ocp-master-01b.lab1.somedom.local β openshift β true β rnd-trp avg = 44.237ms β
β ocp-master-01b.rdu1.somedom.local β openshift β true β rnd-trp avg = 17.678ms β
β ocp-master-01b.dfw1.somedom.local β openshift β true β rnd-trp avg = 56.559ms β
β ocp-master-01b.lax2.somedom.local β openshift β true β rnd-trp avg = 96.493ms β
β ocp-master-01b.jfk1.somedom.local β openshift β true β rnd-trp avg = 43.273ms β
β ocp-master-01c.lab1.somedom.local β openshift β true β rnd-trp avg = 41.358ms β
β ocp-master-01c.rdu1.somedom.local β openshift β true β rnd-trp avg = 31.427ms β
β ocp-master-01c.dfw1.somedom.local β openshift β true β rnd-trp avg = 55.095ms β
β ocp-master-01c.lax2.somedom.local β openshift β true β rnd-trp avg = 103.423ms β
β ocp-master-01c.jfk1.somedom.local β openshift β true β rnd-trp avg = 37.22ms β
β ocp-master-01a.lhr1.somedom.us β openshift β true β rnd-trp avg = 133.023ms β
β ocp-master-01a.fra1.somedom.us β openshift β true β rnd-trp avg = 136.647ms β
β ocp-master-01b.lhr1.somedom.us β openshift β true β rnd-trp avg = 127.451ms β
β ocp-master-01b.fra1.somedom.us β openshift β true β rnd-trp avg = 139.85ms β
β ocp-master-01c.lhr1.somedom.us β openshift β true β rnd-trp avg = 132.362ms β
β ocp-master-01c.fra1.somedom.us β openshift β true β rnd-trp avg = 137.558ms β
ββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββΌβββββββββββββΌββββββββββββββββββββββββββ€
β es-master-01a.lab1.somedom.local β elastic β true β rnd-trp avg = 44.029ms β
β es-master-01a.rdu1.somedom.local β elastic β true β rnd-trp avg = 32.187ms β
β es-master-01b.lab1.somedom.local β elastic β true β rnd-trp avg = 48.833ms β
β es-master-01b.rdu1.somedom.local β elastic β true β rnd-trp avg = 22.477ms β
β es-master-01c.lab1.somedom.local β elastic β true β rnd-trp avg = 55.587ms β
β es-master-01c.rdu1.somedom.local β elastic β true β rnd-trp avg = 25.79ms β
ββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββΌβββββββββββββΌββββββββββββββββββββββββββ€
β idm-01a.lab1.somedom.local β idm β true β rnd-trp avg = 47.484ms β
β idm-01a.rdu1.somedom.local β idm β true β rnd-trp avg = 22.766ms β
β idm-01a.dfw1.somedom.local β idm β true β rnd-trp avg = 54.07ms β
β idm-01a.lax2.somedom.local β idm β true β rnd-trp avg = 94.755ms β
β idm-01a.jfk1.somedom.local β idm β true β rnd-trp avg = 36.26ms β
β idm-01b.lab1.somedom.local β idm β true β rnd-trp avg = 41.171ms β
β idm-01b.rdu1.somedom.local β idm β true β rnd-trp avg = 27.097ms β
β idm-01b.dfw1.somedom.local β idm β true β rnd-trp avg = 51.547ms β
β idm-01b.lax2.somedom.local β idm β true β rnd-trp avg = 94.203ms β
β idm-01b.jfk1.somedom.local β idm β true β rnd-trp avg = 36.956ms β
β idm-01a.lhr1.somedom.us β idm β true β rnd-trp avg = 145.853ms β
β idm-01a.fra1.somedom.us β idm β true β rnd-trp avg = 146.425ms β
β idm-01b.lhr1.somedom.us β idm β true β rnd-trp avg = 127.987ms β
β idm-01b.fra1.somedom.us β idm β true β rnd-trp avg = 135.593ms β
ββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββ΄βββββββββββββ΄ββββββββββββββββββββββββββ
All the CLI subcommands can make use of either the -v
or the --verbose
switch to gather further diagnostics which can be helpful when triaging connectivity issues.
Tree - CLICK ME
For example:
$ doxctl dns -r -v
+ printf '\n\nDNS Resolver Checks\n===================\n\n\n'
DNS Resolver Checks
===================
++ printf 'get State:/Network/Service/com.cisco.anyconnect/DNS\nd.show\n'
++ scutil
+ vpn_resolvers='<dictionary> {
DomainName : somedom.local
SearchDomains : <array> {
0 : somedom.local
}
SearchOrder : 1
ServerAddresses : <array> {
0 : 10.5.0.18
1 : 10.5.0.19
2 : 192.168.7.85
}
SupplementalMatchDomains : <array> {
0 :
1 : somedom.local
}
}'
+ column -t
+ echo '<dictionary> {
DomainName : somedom.local
SearchDomains : <array> {
0 : somedom.local
}
SearchOrder : 1
ServerAddresses : <array> {
0 : 10.5.0.18
1 : 10.5.0.19
2 : 192.168.7.85
}
SupplementalMatchDomains : <array> {
0 :
1 : somedom.local
}
}'
+ grep -q 'DomainName.*somedom.local'
+ echo 'DomainName set'
+ echo '<dictionary> {
DomainName : somedom.local
SearchDomains : <array> {
0 : somedom.local
}
SearchOrder : 1
ServerAddresses : <array> {
0 : 10.5.0.18
1 : 10.5.0.19
2 : 192.168.7.85
}
SupplementalMatchDomains : <array> {
0 :
1 : somedom.local
}
}'
+ grep -A1 SearchDomains
+ grep -qE '[0-1].*somedom'
+ echo 'SearchDomains set'
+ echo '<dictionary> {
DomainName : somedom.local
SearchDomains : <array> {
0 : somedom.local
}
SearchOrder : 1
ServerAddresses : <array> {
0 : 10.5.0.18
1 : 10.5.0.19
2 : 192.168.7.85
}
SupplementalMatchDomains : <array> {
0 :
1 : somedom.local
}
}'
+ grep -A3 ServerAddresses
+ grep -qE '[0-1].*10.5'
+ echo 'ServerAddresses set'
DomainName set
SearchDomains set
ServerAddresses set
+ [[ 1 -eq 1 ]]
+ set +x