This program will connect desktop devices to Meraki firewalls via an L2TP/IPSEC connection. This program uses a Meraki dashboard admin's credentials to pull the data required for a Client VPN connection, create the connection with OS built-ins, and then connect.
-
Authentication/Authorization
- Dashboard admins/Guest users supported with Meraki Auth
- TFA prompt supported
- Only networks/organizations that that user has access to are shown
-
VPN Connection (Windows-only)
- Split Tunnel
- Remember Credential
-
Platforms
- Windows 7/8/10
- macOS 10.7-13
- linux (requires network-manager)
-
CI/CD on tagged commits
- Windows 10
- macOS 10.13
- Ubuntu 14.04
- Ubuntu 16.04
-
Troubleshooting tests on connection failure
- Is the MX online?
- Can the client ping the firewall's public IP?
- Is the user behind the firewall?
- Is Client VPN enabled?
- Is authentication type Meraki Auth?
- Are UDP ports 500/4500 port forwarded through firewall?
The goals for future major versions can be found in the Project list.
Download the executables here.
1. Clone the repository:
git clone https://github.com/pocc/merlink
2. Download the required libraries with pip3
pip3 install requirements.txt
3. Execute the file
python3 merlink.py
Please read contributing.md for the process for submitting pull requests.
To set up your Windows environment, please read pycharm_setup.md
SemVer is used for versioning:
- MAJOR version: Incompatible UI from previous version from a user's perspective
- MINOR version: Functionality is added to UI from a user's persective
- PATCH version: Minor enhancements and bug fixes
For the versions available, see the tags on this repository.
Adapting Git Branching for this projcet
- iss#-X.Y: Branch from dev-X.Y and reintegrate to dev-X.Y. Should be tied to an issue tagged with 'bug', 'feature', or 'enchancement' on repo.
- dev-X.Y: Development branch. When it's ready for a release, branch into a release.
- rel-X.Y: Release candidate targeting version X.Y. When it is ready, it should be merged into master tagged with version X.Y.
- master: Master branch.
- Python 3 - Base language
- Qt5 - Comprehensive Qt reference made by the Qt company. It is made for C++, but will supply the information you need about classes and functions.
- PyQt5 - Documentation for PyQt5. This is a copypaste of the Qt docs applied to Python, and generally contains less useful information
- Mechanical Soup - Web scraper for Python 3
- PyCharm - IDE used
- Powershell VPN Client docs - Collection of manpages for VPN Client-specific powershell functions.
-
PyInstaller - Python bundler used as part of this project
- Make sure you install the latest PyIntstaller directly:
pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
-
NSIS - Windows program installer system
- NSIS Wizard + IDE - Will build and debug NSIS scripts
- NSIS Sample Installers - To learn how to build your own installer by example
-
FPM - A way to package to targets deb, rpm, pacman, and osxpkg libxml2-utils
-
coala:
- On ubuntu, be sure to install these libraries as well:
sudo apt install libxml2-utils libxml2-dev libxslt-dev libxml2
This project is licensed under the Apache License 2.0 - see the LICENSE.md file for details.
- Ross Jacobs - Initial work - pocc
See also the list of contributors who participated in this project.
Praise be Stack Overflow!