Where macOS keeps VPN Network configuration?

When using the Default profile with Configuration: for the VPN and modifying its settings, the /Library/Preferences/com.apple.networkextension.plist file, the one starting in the root of the e.g. Macintosh HD, not your Home folder, will contain the VPN settings.

Also note that if you select Add Configuration... with Configuration: for the VPN, then some information is also stored in the ~/Library/Preferences/ByHost/com.apple.networkConnect.<UUID>.plist file for the VPN as well.

By the way, you can use the defaults command e.g. defaults read /Library/Preferences/com.apple.networkextension.plist, to read this and other .plist files, you do not necessarily need to use plutil to convert to XML in order to read them.


You can also try using the scutil command, which should break the dependence on actual .plist file locations, which are fluid from version to version.

You can even register for notifications on networking events, such as vpn connections.

man scutil

Also:

[chiggsy:Faithless:0:~ ]$  scutil --help
usage: scutil
    interactive access to the dynamic store.

   or: scutil --prefs [preference-file]
    interactive access to the [raw] stored preferences.

   or: scutil [-W] -r nodename
   or: scutil [-W] -r address
   or: scutil [-W] -r local-address remote-address
    check reachability of node, address, or address pair (-W to "watch").

   or: scutil -w dynamic-store-key [ -t timeout ]
    -w  wait for presense of dynamic store key
    -t  time to wait for key

   or: scutil --get pref
   or: scutil --set pref [newval]
   or: scutil --get filename path key  
    pref    display (or set) the specified preference.  Valid preferences
        include:
            ComputerName, LocalHostName, HostName
    newval  New preference value to be set.  If not specified,
        the new value will be read from standard input.

   or: scutil --dns
    show DNS configuration.

   or: scutil --proxy
    show "proxy" configuration.

   or: scutil --nwi
    show network information

   or: scutil --nc
    show VPN network configuration information. Use --nc help for full command list

   or: scutil --allow-new-interfaces [off|on]
    manage new interface creation with screen locked.

   or: scutil --error err#
    display a descriptive message for the given error code

scutil with no options puts you into a shell and you can see the raw configd data

VPN options:

 scutil --nc help
Valid commands for scutil --nc (VPN connections)
Usage: scutil --nc [command]

    list
        List available network connection services in the current set

    status <service>
        Indicate whether a given service is connected, as well as extended status information for the service

    show <service>
        Display configuration information for a given service

    statistics <service>
        Provide statistics on bytes, packets, and errors for a given service

    select <service>
        Make the given service active in the current set. This allows it to be started

    start <service> [--user user] [--password password] [--secret secret]
        Start a given service. Can take optional arguments for user, password, and secret

    stop <service>
        Stop a given service

    suspend <service>
        Suspend a given service (PPP, Modem on Hold)

    resume <service>
        Resume a given service (PPP, Modem on Hold)

    ondemand [-W] [hostname]
    ondemand -- --refresh
        Display VPN on-demand information

    trigger <hostname> [background] [port]
        Trigger VPN on-demand with specified hostname, and optional port and background flag

    enablevpn <service or vpn type> [path]
        Enables the given VPN application type. Takes either a service or VPN type. Pass a path to set ApplicationURL

    disablevpn <service or vpn type>
        Disables the given VPN application type. Takes either a service or VPN type

    help
        Display available commands for --nc