πŸ“¦ kitten / docker-strongswan

Docker image for easily setting up a secure StrongSwan VPN

β˜… 177 stars β‘‚ 84 forks πŸ‘ 177 watching βš–οΈ MIT License
πŸ“₯ Clone https://github.com/kitten/docker-strongswan.git
HTTPS git clone https://github.com/kitten/docker-strongswan.git
SSH git clone git@github.com:kitten/docker-strongswan.git
CLI gh repo clone kitten/docker-strongswan
Phil PlΓΌckthun Phil PlΓΌckthun Merge pull request #15 from markusforss/Dockerfile-Duplicate b9f8810 8 years ago πŸ“ History
πŸ“‚ master View all commits β†’
πŸ“„ .dockerignore
πŸ“„ .editorconfig
πŸ“„ .gitignore
πŸ“„ Dockerfile
πŸ“„ ipsec.conf
πŸ“„ LICENSE
πŸ“„ options.xl2tpd
πŸ“„ README.md
πŸ“„ run.sh
πŸ“„ strongswan.conf
πŸ“„ supervisord.conf
πŸ“„ vpn_adduser
πŸ“„ vpn_apply
πŸ“„ vpn_deluser
πŸ“„ vpn_setpsk
πŸ“„ vpn_unsetpsk
πŸ“„ xl2tpd.conf
πŸ“„ README.md

Strongswan on Docker

Base docker image to run a Strongswan IPsec and a XL2TPD server.

Usage

Run the following to start the container:

docker run -d -p 500:500/udp -p 4500:4500/udp -p 1701:1701/udp --privileged philplckthun/strongswan

If you haven't set any login credentials via configuration files or environment variables, then a new random password will be set. To get it, read the logs of the running container:

docker logs <CONTAINER>

Search for this line in the output at the top:

No VPN_PASSWORD set! Generated a random password: mrXEv2S3F
No VPN_PSK set! Generated a random PSK key: NZESSabnC

Here, the user hasn't set a PSK secret and password.

Environment variables

By default a single account is added for EAP and XAuth login.

Its password is specified by the VPN_PASSWORD environment variable, and its username is specified by the VPN_USER variable.

VPN_USER defaults to user and VPN_PASSWORD is randomised if not changed.

The PSK (pre-shared key) is specified in the VPN_PSK environment variable, and is randomised as well.

You can inject these variables through docker run:

docker run ... -e VPN_USER=dave VPN_PASSWORD=dave-is-awesome ...

Volume / Configuration files

There is a single volume that is mounted at /etc/ipsec.d. Through it you can add a lot of Strongswan configuration. Additionally you can overwrite:

  • /etc/ppp/l2tp-secrets
  • /etc/ipsec.secrets
  • /etc/ipsec.conf
  • /etc/strongswan.conf
  • /etc/xl2tpd.conf
with it, by putting your configuration files in that volume folder as well. They will be copied to the correct locations.

Services running

There are two services running: Strongswan and addtionally XL2TPD for IPSec/L2TP support.

The default IPSec configuration supports:

  • IKEv2 with EAP Authentication (Though a certificate has to be added for that to work)
  • IKEv2 with PSK
  • IKEv1 with PSK and XAuth (Cisco IPSec)
  • IPSec/L2TP with PSK
The ports that are exposed for this container to work are:

  • 4500/udp and 500/udp for IPSec
  • 1701/udp for L2TP