Blame
| d13735 | Samuli Seppänen | 2025-03-18 12:52:14 | 1 | # PluginOverview |
| 2 | ||||
| 3 | # OpenVPN Plugins |
|||
| 4 | ||||
| 5 | OpenVPN functionality can be extended by plugins to bring in extra functionality. |
|||
| 6 | ||||
| 7 | Most frequently used are authentication plugins to bring in authentication against LDAP or Radius or other PAM backends, but there's also hooks to add per-client configuration etc. |
|||
| 8 | ||||
| 9 | This page is intended to collect information about existing plugins and pointers to documentation. |
|||
| 10 | ||||
| 11 | ## Existing Plugins |
|||
| 12 | ||||
| 13 | ### Fully maintained by OpenVPN maintainers |
|||
| 14 | ||||
| 15 | |**plugin name** |**hook(s)** |**async** |**source** |**remark** | |
|||
| 16 | |-|-|-|-|-| |
|||
| 17 | | auth-pam | up, auth | yes(opt) | openvpn repo (src/plugins/) | use operating system PAM stack for username+password (or 2FA...) authentication | |
|||
| 18 | | down-root | up, down | no | openvpn repo (src/plugins/) | permit running a "cleanup" script at openvpn exit time if openvpn is running with reduced privileges and cannot cleanup itself | |
|||
| 19 | ||||
| 20 | ### Sample plugins in the OpenVPN source tree (not considered "ready for production") |
|||
| 21 | ||||
| 22 | |**plugin name** |**hook(s)** |**async** |**source** |**remark** | |
|||
| 23 | |-|-|-|-|-| |
|||
| 24 | | defer | up, auth (*) | yes | sample/sample-plugins/ | sample plugin to show how a "deferred authentication" plugin operates | |
|||
| 25 | | keying-material-exporter-demo | TLS_FINAL, TLS_VERIFY | no | sample/sample-plugins/ | shows how one could do a HTTP/SSO via OpenVPN | |
|||
| 26 | | log | many | no | sample/sample-plugins/ | shows how to do logging from a plugin using the OpenVPN APIs | |
|||
| 27 | | simple | many | no | sample/sample-plugins/ | hooks everything and logs when called | |
|||
| 28 | ||||
| 29 | ### Plugins maintained elsewhere |
|||
| 30 | ||||
| 31 | |**plugin name** |**hook(s)** |**async** |**source** |**remark** | |
|||
| 32 | |-|-|-|-|-| |
|||
| 33 | | radiusplugin | auth, client-connect | yes | https://github.com/FreeRADIUS/ https://www.nongnu.org/radiusplugin/ https://github.com/ValdikSS/openvpn-radiusplugin.git https://github.com/comicchang/radiusplugin.git https://github.com/cuckoohello/radiusplugin.git https://github.com/OpenVPN-Community/openvpn-radiusplugin.git https://github.com/zelenkovsky/radiusplugin.git https://github.com/ArtemZ/radiusplugin-2x4.git https://github.com/PrivateCommunicationsCorp/radius-plugin.git | adds authentication and client configuration from RADIUS data | |
|||
| 34 | | eurephia | auth | no (?) | http://www.eurephia.net/ | flexible authentication from database/rules | |
|||
| 35 | | mozilla/openvpn-defer-auth | auth | yes | https://github.com/mozilla-it/openvpn_defer_auth | use the async/deferred auth plugin interface to run --auth-user-pass *scripts* in the background without blocking | |
|||
| 36 | | openvpn-auth-ldap | auth, OpenBSD pf | //no// (PR exists) | https://github.com/threerings/openvpn-auth-ldap | Username/Password auth via LDAP, Integration with OpenBSD pf. Supports Challenge/Response. | |
|||
| 37 | | auth-script-openvpn | auth | yes | https://github.com/pdemonaco/auth-script-openvpn | another plugin to run a script in deferred/async mode | |
|||
| 38 | ||||
| 39 | ## Documentation |
|||
| 40 | ||||
| 41 | (This section needs work). |
|||
| 42 | ||||
| 43 | Some information on the available hooks and calling convention can be found in the OpenVPN source tree in ``` include/openvpn-plugin.h ```, and in the ``` sample/sample-plugins/... ``` source files. |
