TL;DR
Passepartout is a non-official, user-friendly OpenVPN® client for iOS. Soon for macOS (sneak peek).
EDIT: please subscribe to the subreddit to report issues or request new features!
Backstory
Hi!
I’m Davide, keeshux on the Internet, and I am a former iOS lead at Private Internet Access. I had deeply contributed to writing an unofficial OpenVPN client library in Swift/Obj-C, and I’m now maintaining it on my own.
Passepartout is the spin-off of a project that originally had a different goal.
However, after leaving PIA, I thought I was so frustrated myself by the clumsy look of OpenVPN Connect, that I wanted to realize my own concept of a VPN app with that library. An app with a native L&F and effective, no-fuss UI/UX. After all, VPN apps are background daemons.
Universal client
I believe that the “killer feature” of Passepartout is the ability to act as an universal client. Everybody knows that .ovpn configuration files are a pain to provision, which normally makes using proprietary VPN clients a no-brainer.
Network presets
Passepartout introduces network presets, i.e. a static API the app uses to infer how to connect to well-known VPN networks. Unsurprisingly, PIA is the first provider I rolled out in the app, but more to come. Virtually any provider having its .ovpn configurations in the public domain can be integrated into Passepartout!
Additionally, network presets can come with pre-resolved IPv4 addresses. Pretty useful where DNS is slow or even blocked.
OpenVPN features
Passepartout aims at ease of use. To do so, I bootstrapped it with key features the majority needs:
- UDP/TCP communication
- AES encryption (CBC and GCM)
- HMAC-SHA authentication
- Client certificate
- NCP
- Floating (WIP)
- Advanced routing
- IPv6
- Keep-alive
- Renegotiation
- …
OpenVPN supports a never ending list of things that are outdated/discouraged (e.g. compression, a huge lot of weak algorithms), so I didn’t feel stripping them like a limitation.
Bonus features
-
Trusted networks: do not enforce a VPN connection or prevent it completely when connecting to cellular or specific Wi-Fi networks.
-
Disconnect on sleep: I plan to improve it, but it’s a start. Keeping the VPN on all the time may not always be necessary, given that e.g. push notifications never go through the VPN on iOS. OpenVPN Connect disconnects on sleep no matter what, I rather made it an option.
-
Transparent connection parameters: Passepartout displays endpoints and connection parameters in an understandable manner. This is especially interesting for VPN providers not easily disclosing their configuration via UI.
Screenshots
Known limitations
- The app will soon support TLS wrapping (
--tls-auth
and--tls-crypt
). It’s not there yet but it’s just around the corner. - UDP fragmentation will probably never be supported (
--fragment
). I guess OpenVPN Connect doesn’t support it either. - MTU tweaks are only partially supported (
--*-mtu
and--mssfix
).
Disclaimer
Passepartout is independent work and is in no way affiliated to either PIA or OpenVPN Inc.
Support
Feedback and sharing would be alone a great display of appreciation.
If you want to take it further, mind supporting me on Patreon?