Blame

178ed7 Samuli Seppänen 2025-02-12 14:16:41 1
# OpenVPN 3 Linux 
2
The [OpenVPN 3 Linux project](https://codeberg.org/OpenVPN/openvpn3-linux/) is a new client built on top of the [OpenVPN 3 Core Library](https://github.com/OpenVPN/openvpn3/), which is also used in the various OpenVPN Connect clients and OpenVPN for Android (need to be enabled via the settings page in the app).
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 3
178ed7 Samuli Seppänen 2025-02-12 14:16:41 4
This client is built around a completely different architecture in regards to usage. It focuses more on allowing ordinary, unprivileged users on a system to start and manage their own VPN sessions. This is possible by building on features available in modern Linux distrubtions. OpenVPN 3 Linux builds on the D-Bus infrastructure, which enables a better privilege separation between various components. In the end this results in OpenVPN 3 Linux requiring very little privileges to run, and only an isolated service responsible for configuring network settings runs with just the few needed elevated privileges to achieve its job. The rest of the OpenVPN 3 Linux runs with no extra privileges.
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 5
178ed7 Samuli Seppänen 2025-02-12 14:16:41 6
Even though the project name carries "Linux", it doesn't mean it is restricted to Linux only. Any platform which has D-Bus available should be capable of running this client in theory. But since D-Bus is most commonly used in Linux environments, this will naturally be the primary focus for the project.
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 7
178ed7 Samuli Seppänen 2025-02-12 14:16:41 8
The release notes are stored in git tags in the project git repository. They can also be viewed here: https://codeberg.org/OpenVPN/openvpn3-linux/tags
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 9
178ed7 Samuli Seppänen 2025-02-12 14:16:41 10
## Pre-built packages
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 11
178ed7 Samuli Seppänen 2025-02-12 14:16:41 12
Since the release of OpenVPN 3 Linux v21, we will provide packages via different software repositories. Users requiring production stable version should only use the software repositories for stable releases. All the distributions targeting the Enterprise Linux or Long-Term Stable releases will be available through this channel. Other distributions may need to use the repositories for development/beta releases. The stable versions will not have as frequent releases as the development/beta releases.
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 13
178ed7 Samuli Seppänen 2025-02-12 14:16:41 14
Supported distributions:
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 15
178ed7 Samuli Seppänen 2025-02-12 14:16:41 16
| **Distribution Vendor** | **Release** | **Release name** (`DISTRIBUTION`) | **Architecture** |**DCO support**| **Repositories** |
17
|-|-|-|-|-|-|
99a00e flichtenheld 2025-12-16 14:20:59 18
| Debian | 12, 13 | bookworm, trixie | amd64, arm64 (\*0) | yes | Stable, openSUSE Build Service |
19
| Fedora | 41, 42, 43, Rawhide (\*1) | - | aarch64 (\*0), ppc64le, s390x, x86_64 | yes | Fedora Copr |
20
| Red Hat Enterprise Linux | 8 | - | aarch64 (\*0), ppc64le (\*2), s390x (\*2), x86_64 | yes | Stable, Fedora Copr |
21
| Red Hat Enterprise Linux | 9 | - | aarch64 (\*0), ppc64le (\*2), s390x (\*2), x86_64 | yes | Stable, Fedora Copr |
22
| Red Hat Enterprise Linux | 10 | - | aarch64 (\*0), ppc64le (\*2), s390x (\*2), x86_64 | yes | Fedora Copr |
23
| Ubuntu (LTS) | 22.04 | jammy | amd64, arm64 (\*0) | yes | Stable, openSUSE Build Service |
24
| Ubuntu (LTS) | 24.04 | noble | amd64, arm64 (\*0) | yes | Stable, openSUSE Build Service |
25
| Ubuntu | 25.04 | plucky | amd64, arm64 (\*0) | yes | openSUSE Build Service |
26
| Ubuntu | 25.10 | questing | amd64, arm64 (\*0) | yes | openSUSE Build Service |
d80ed3 flichtenheld 2025-12-16 14:19:10 27
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 28
29
In many cases, the Red Hat Enterprise Linux packages will also work on Alma Linux and Rocky Linux.
30
178ed7 Samuli Seppänen 2025-02-12 14:16:41 31
#### Footnotes
32
0. ARM64/aarch64 architectures are in tech-preview; please report back your experiences if you use OpenVPN 3 LInux on this platform - good or bad
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 33
1. Fedora Rawhide is a moving target and there will be periods where there will not be updates available until we sort out the required changes to the build environment.
34
2. The ppc64le and s390x are not fully supported and only available via the Fedora Copr repositories. Consider these platforms tech-preview.
35
178ed7 Samuli Seppänen 2025-02-12 14:16:41 36
### __Stable repository__ - Debian / Ubuntu
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 37
38
Ensure you have the needed support packages already installed:
39
```
40
# apt install apt-transport-https curl
41
```
42
43
Retrieve the OpenVPN Inc package signing key:
44
```
45
# mkdir -p /etc/apt/keyrings ### This might not exist in all distributions
46
# curl -sSfL https://packages.openvpn.net/packages-repo.gpg >/etc/apt/keyrings/openvpn.asc
47
```
48
49
Replace the `DISTRIBUTION` part in the command below using the release name from the table above to set up the apt source listing:
50
```
51
# echo "deb [signed-by=/etc/apt/keyrings/openvpn.asc] https://packages.openvpn.net/openvpn3/debian DISTRIBUTION main" >>/etc/apt/sources.list.d/openvpn3.list
52
```
53
54
Example for Debian 12:
55
```
56
# echo "deb [signed-by=/etc/apt/keyrings/openvpn.asc] https://packages.openvpn.net/openvpn3/debian bookworm main" >>/etc/apt/sources.list.d/openvpn3.list
57
```
58
178ed7 Samuli Seppänen 2025-02-12 14:16:41 59
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 60
To install OpenVPN 3 Linux, run these commands:
61
```
62
# apt update
2de1e4 flichtenheld 2025-12-02 15:31:14 63
# apt install openvpn3-client
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 64
```
65
178ed7 Samuli Seppänen 2025-02-12 14:16:41 66
67
### __Stable repository__ - Red Hat Enterprise Linux
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 68
69
Red Hat Enterprise Linux 8 and 9 need to install this package:
178ed7 Samuli Seppänen 2025-02-12 14:16:41 70
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 71
```
72
# dnf install https://packages.openvpn.net/openvpn-openvpn3-epel-repo-1-1.noarch.rpm
73
```
1b4adc uddr 2025-07-17 19:16:48 74
Red Hat Enterprise Linux 10 need to install this package:
75
76
```
77
# dnf install https://packages.openvpn.net/openvpn-openvpn3-rhel+epel-repo-1-1.noarch.rpm
78
```
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 79
178ed7 Samuli Seppänen 2025-02-12 14:16:41 80
In addition, the [Fedora EPEL](https://docs.fedoraproject.org/en-US/epel/) package and the corresponding Code Ready Builder (or PowerTools on CentOS) must be installed.
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 81
82
To install OpenVPN 3 Linux, run this command:
83
```
84
# dnf install openvpn3-client
85
```
86
178ed7 Samuli Seppänen 2025-02-12 14:16:41 87
88
### __Development/beta repository__ - Debian / Ubuntu
d80ed3 flichtenheld 2025-12-16 14:19:10 89
90
This repository will have more frequent releases than the stable repository, but packages from this repository will not have been through the same level of QA testing before releases.
91
92
We're using openSUSE Build Service to build for the various non-LTS Ubuntu releases and to build Development/Beta versions for all Debian/Ubuntu distributions.
93
94
You can find a list of supported Debian/Ubuntu Distributions on the [Stable Download page](https://download.opensuse.org/repositories/isv:/OpenVPN:/Stable/) or [Beta Download page](https://download.opensuse.org/repositories/isv:/OpenVPN:/Beta/). Use them as follows (example for Ubuntu 24.04):
95
96
```
97
$ sudo -s
98
# mkdir -p /etc/apt/keyrings # directory does not exist on older releases
99
# curl -fsSL https://download.opensuse.org/repositories/isv:/OpenVPN:/Stable/xUbuntu_24.04/Release.key | tee /etc/apt/keyrings/obs-isv-openvpn-snapshots.asc
100
# echo "deb [arch=<arch> signed-by=/etc/apt/keyrings/obs-isv-openvpn-snapshots.asc] https://download.opensuse.org/repositories/isv:/OpenVPN:/Stable/xUbuntu_24.04 ./" > /etc/apt/sources.list.d/obs-isv-openvpn-snapshots.list
101
```
102
103
Replace `Stable` with `Beta` to use Development/Beta packages.
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 104
178ed7 Samuli Seppänen 2025-02-12 14:16:41 105
### __Fedora Copr repository__ - Fedora / Red Hat Enterprise Linux
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 106
107
This repository will have more frequent releases than the stable repository, but packages from this repository will not have been through the same level of QA testing before releases.
108
178ed7 Samuli Seppänen 2025-02-12 14:16:41 109
Ensure the `dnf copr` functionality is installed and ready. Then enable the Fedora Copr repository for OpenVPN 3 Linux:
110
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 111
```
112
# dnf copr enable dsommers/openvpn3
113
```
114
115
Then OpenVPN 3 Linux can be installed:
116
```
117
# dnf install openvpn3-client
178ed7 Samuli Seppänen 2025-02-12 14:16:41 118
```
119
120
## OpenVPN Data Channel Offload
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 121
178ed7 Samuli Seppänen 2025-02-12 14:16:41 122
The OpenVPN Data Channel Offload (OpenVPN DCO) is a kernel module which can accellerate the OpenVPN traffic throughput. OpenVPN 3 Linux uses the same kernel module as OpenVPN 2.6.
123
For Debian and Ubuntu distributions, install the `openvpn-dco-dkms` package. Fedora and Red Hat Enterprise Linux distributions need to install the `kmod-ovpn-dco` package.
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 124
178ed7 Samuli Seppänen 2025-02-12 14:16:41 125
With this in installed, VPN sessions can be started with the Data Channel Offload enabled. To test it on an existing configuration:
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 126
178ed7 Samuli Seppänen 2025-02-12 14:16:41 127
```
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 128
$ openvpn3 session-start --dco true --config CONFIG_NAME
129
```
130
131
To make this persistent each time, use the OpenVPN 3 Configuration Manager:
178ed7 Samuli Seppänen 2025-02-12 14:16:41 132
```
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 133
$ openvpn3 config-import --persistent --name CONFIG_NAME --config /path/to/configuration/profile.ovpn
134
$ openvpn3 config-manager --show --name CONFIG_NAME --dco true
135
```
136
178ed7 Samuli Seppänen 2025-02-12 14:16:41 137
Then each time the VPN configuration is started, either via `openvpn3 session-start` or the systemd `openvpn3-sessions@.service` unit file, DCO will be enabled.
138
Please do verify that the log output does indicate that DCO has truly been enabled, as it might be disabled on-the-fly if your configuration profile is not DCO compliant.
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 139
140
A DCO compliant configuration profile cannot use compression features and must use an AEAD based cipher (like AES-GCM or ChaCha20-Poly1305).
141
142
178ed7 Samuli Seppänen 2025-02-12 14:16:41 143
144
## __Quick start - how to use OpenVPN 3 Linux__
145
146
With the openvpn3 packages installed, everything should be ready to be used. By default any user account on the system should be able to start and manage their own VPN sessions.
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 147
148
### Using `openvpn2`
149
178ed7 Samuli Seppänen 2025-02-12 14:16:41 150
For users familiar with the classic OpenVPN 2.x command line, the `openvpn2` front-end aims to be fairly close to old behaviour.
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 151
178ed7 Samuli Seppänen 2025-02-12 14:16:41 152
```
153
$ openvpn2 --config ${MY_CONFIGURATION_FILE} --verb 6
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 154
```
155
178ed7 Samuli Seppänen 2025-02-12 14:16:41 156
Replace ${MY_CONFIGURATION_FILE} with the OpenVPN configuration file you want to use. If this configuration includes the `--daemon` option, the VPN session will be started in the background and the user is given the command line back again. To further manage this VPN session, the `openvpn3 session-manage` command line interface must be used. Without `--daemon` the console will be filled with log data from the VPN session and the session can be disconnected via a simple CTRL-C in the terminal.
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 157
158
For more information, see `openvpn2 --help`, `openvpn3 session-manage --help` as well as the [openvpn2](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/man/openvpn2.1.rst) and [openvpn3-session-manage](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/man/openvpn3-session-manage.1.rst) man pages.
159
160
### Using `openvpn3`
161
178ed7 Samuli Seppänen 2025-02-12 14:16:41 162
For more advanced usage, the `openvpn3` command line offers a lot more features. Configuration profiles in OpenVPN 3 Linux are managed by a [Configuration Manager](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/man/openvpn3-service-configmgr.8.rst) before the VPN session is started via the [Session Manager](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/man/openvpn3-service-sessionmgr.8.rst). The `openvpn3` utility gives access to the features these manager services provides.
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 163
164
#### Starting a one-shot configuration profile
165
178ed7 Samuli Seppänen 2025-02-12 14:16:41 166
A "one-shot configuration profile" means that the configuration file is parsed, loaded and deleted from the the configuration manage as soon as the VPN session has been attempted started. No configuration file is available for re-use after this approach. This is achieved by giving the configuration file to the `openvpn3 session-start` command directly.
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 167
178ed7 Samuli Seppänen 2025-02-12 14:16:41 168
```
169
$ openvpn3 session-start --config ${MY_CONFIGURATION_FILE}
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 170
```
171
172
178ed7 Samuli Seppänen 2025-02-12 14:16:41 173
#### Importing a configuration file for re-use and starting a VPN session
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 174
178ed7 Samuli Seppänen 2025-02-12 14:16:41 175
Using this approach, an imported configuration file can be used several times and access to the configuration file itself is not needed to start VPN tunnels. By default, configuration profiles imported are only available to the user who imported the configuration file. But OpenVPN 3 Linux also provides an Access Control List feature via [openvpn3 config-acl](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/man/openvpn3-config-acl.1.rst) to grant access to specific or all users on the system.
176
177
```
178
$ openvpn3 config-import --config ${MY_CONFIGURATION_FILE}
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 179
```
180
178ed7 Samuli Seppänen 2025-02-12 14:16:41 181
This loads the configuration profile and stores it in memory-only. That means, if the system is rebooted, the configuration profile is not preserved. If the `--persistent` argument is added to the command line above, the configuration profile will be saved to disk in a directory only accessible by the `openvpn` user. Whenever the [Configuration Manager](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/man/openvpn3-service-configmgr.8.rst) is started, configuration files imported with `--persistent` will be automatically loaded as well.
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 182
183
To list all available configuration profiles, run this command:
184
178ed7 Samuli Seppänen 2025-02-12 14:16:41 185
```
186
$ openvpn3 configs-list
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 187
```
188
178ed7 Samuli Seppänen 2025-02-12 14:16:41 189
A configuration file typically contains generic options to be able to connect to a specific server, regardless of the device itself. OpenVPN 3 Linux also supports setting more host-specific settings on a configuration profile as well. This is handled via the [`openvpn3 config-manage`](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/man/openvpn3-config-manage.1.rst) interface. Any settings here will also be preserved across boots if the configuration profile was imported with the `--persistent` argument.
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 190
191
#### Starting a new VPN session from an imported configuration profile
192
193
When a configuration profile is available via `openvpn3 configs-list`, it can easily be started via `openvpn3 session-start` using the configuration profile name (typically the filename used during the import)
194
178ed7 Samuli Seppänen 2025-02-12 14:16:41 195
```
196
$ openvpn3 session-start --config ${CONFIGURATION_PROFILE_NAME}
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 197
```
198
199
or it is possible to use the D-Bus path to the configuration profile:
200
201
```
178ed7 Samuli Seppänen 2025-02-12 14:16:41 202
$ openvpn3 session-start --config-path /net/openvpn/v3/configuration/.........
203
```
204
205
In either of these cases is it necessarily to have access to the configuration profile on disk. As long as configuration profiles are available via `openvpn3 configs-list`, all needed to start a VPN session should be present.
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 206
207
208
#### Managing a running VPN session
209
178ed7 Samuli Seppänen 2025-02-12 14:16:41 210
Once a VPN session has started, it should be seen in [`openvpn3 sessions-list`](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/man/openvpn3-sessions-list.1.rst):
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 211
178ed7 Samuli Seppänen 2025-02-12 14:16:41 212
```
213
$ openvpn3 sessions-list
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 214
```
215
178ed7 Samuli Seppänen 2025-02-12 14:16:41 216
Using the `openvpn3 session-manage` there are a few things which can be done, but most typically it is the `--disconnect` or `--restart` alternatives which is most commonly used.
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 217
178ed7 Samuli Seppänen 2025-02-12 14:16:41 218
```
219
$ openvpn3 session-manage --config ${CONFIGURATION_PROFILE_NAME} --restart
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 220
```
221
178ed7 Samuli Seppänen 2025-02-12 14:16:41 222
This disconnects and re-connects to the server again, re-establishing the connection. The `${CONFIGURATION_PROFILE_NAME}` is the configuration name as displayed in `openvpn3 sessions-list`. It is also possible to use the D-Bus path to the session as well:
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 223
178ed7 Samuli Seppänen 2025-02-12 14:16:41 224
```
225
$ openvpn3 session-manage --session-path /net/openvpn/v3/sessions/..... --disconnect
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 226
```
227
178ed7 Samuli Seppänen 2025-02-12 14:16:41 228
This command above will disconnect a running session. Once this operation has completed, it will be removed from the `openvpn3 sessions-list` overview.
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 229
230
It is also possible to retrieve real-time tunnel statistics from running sessions:
231
232
```
178ed7 Samuli Seppänen 2025-02-12 14:16:41 233
$ openvpn3 session-stats --config ${CONFIGURATION_PROFILE_NAME}
234
$ openvpn3 session-stats --session-path /net/openvpn/v3/sessions/.....
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 235
```
236
178ed7 Samuli Seppänen 2025-02-12 14:16:41 237
And to retrieve real-time log events as they occur, run the [`openvpn3 log`](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/man/openvpn3-log.1.rst) command line below:
238
```
239
$ openvpn3 log --config ${CONFIGURATION_PROFILE_NAME}
240
```
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 241
178ed7 Samuli Seppänen 2025-02-12 14:16:41 242
This might be quite silent, as it does not provide any log events from the past. Issue an `openvpn3 session-manage --restart` from a different terminal, and log events will occur. You may want to boost the log-level with `--log-level 6`. Valid log levels are from 0 to 6, where 6 is the most verbose.
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 243
178ed7 Samuli Seppänen 2025-02-12 14:16:41 244
Note that the maximum log level is configured centrally. If you don't get more output with higher log levels increase maximum log level first with [`openvpn3-admin`](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/man/openvpn3-admin.8.rst) (note that this command needs to be executed as root):
245
```
246
# openvpn3-admin log-service --log-level 6
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 247
```
248
178ed7 Samuli Seppänen 2025-02-12 14:16:41 249
VPN sessions are also owned by the user which started it. But the [Session Manager](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/man/openvpn3-service-sessionmgr.8.rst) also provides its own Access Control List feature via [`openvpn3 session-acl`](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/man/openvpn3-session-acl.1.rst).
250
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 251
252
## Further information
253
254
* man pages:
178ed7 Samuli Seppänen 2025-02-12 14:16:41 255
- [openvpn3-linux](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/man/openvpn3-linux.7.rst.in)(7) - Main overview
256
- [openvpn3](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/man/openvpn3.1.rst)(1) - `openvpn3` command line interface
257
- [openvpn2](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/man/openvpn2.1.rst)(1) - `openvpn2` command line interface which is similar to the classic OpenVPN 2.x interface
258
- [openvpn3-systemd](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/man/openvpn3-systemd.8.rst)(8) - Managing OpenVPN 3 Linux via systemd `systemctl`
259
- [More man pages](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/man)
2e07a6 Samuli Seppänen 2025-01-29 13:26:34 260
261
* Developers / D-Bus API documentation
178ed7 Samuli Seppänen 2025-02-12 14:16:41 262
- [D-Bus Primer](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/dbus/dbus-primer.md) - Understanding D-Bus
263
- [OpenVPN 3 D-Bus overview](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/dbus/dbus-overview.md) - Overview of all D-Bus services which are provided and used
264
- [Debugging](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/debugging.md) - How to debug OpenVPN 3 Linux
265
- [More D-Bus documentation](https://codeberg.org/OpenVPN/openvpn3-linux/src/branch/master/docs/dbus)