Reorganize OpenVPN and use s6-overlay
This commit is contained in:
		
							parent
							
								
									311d1b4ad6
								
							
						
					
					
						commit
						0472a0ecd6
					
				|  | @ -1,12 +1,15 @@ | |||
| FROM ubuntu:xenial | ||||
| FROM buildpack-deps:xenial-curl | ||||
| MAINTAINER Kelvin Chen <kelvin@kelvinchen.org> | ||||
| 
 | ||||
| # Install OpenVPN | ||||
| RUN apt-get update \ | ||||
| RUN curl -sL "https://github.com/just-containers/s6-overlay/releases/download/v1.18.1.5/s6-overlay-amd64.tar.gz" \ | ||||
|         | tar xz -C / \ | ||||
|     && apt-get update \ | ||||
|     && apt-get install -y --no-install-recommends \ | ||||
|         openvpn \ | ||||
|         easy-rsa \ | ||||
|         iptables \ | ||||
|         bridge-utils \ | ||||
|     && apt-get clean \ | ||||
|     && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* | ||||
| 
 | ||||
|  | @ -16,8 +19,6 @@ EXPOSE 1194/udp | |||
| 
 | ||||
| VOLUME /config | ||||
| 
 | ||||
| COPY vars /usr/share/easy-rsa/ | ||||
| COPY openvpn.conf init client.ovpn / | ||||
| COPY export-client /usr/local/bin/ | ||||
| COPY container-root/ / | ||||
| 
 | ||||
| CMD ["/init"] | ||||
|  |  | |||
|  | @ -0,0 +1,9 @@ | |||
| #!/usr/bin/with-contenv bash | ||||
| 
 | ||||
| mkdir -p /dev/net | ||||
| 
 | ||||
| if [ ! -c /dev/net/tun ]; then | ||||
|     mknod /dev/net/tun c 10 200 | ||||
| fi | ||||
| 
 | ||||
| chmod 600 /dev/net/tun | ||||
|  | @ -0,0 +1,3 @@ | |||
| #!/usr/bin/with-contenv bash | ||||
| 
 | ||||
| iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE | ||||
|  | @ -0,0 +1,19 @@ | |||
| #!/usr/bin/with-contenv bash | ||||
| 
 | ||||
| # Make sure OpenVPN config directory exists. | ||||
| mkdir -p /config/openvpn/ | ||||
| 
 | ||||
| # Copy over the default OpenVPN config if it does not exist | ||||
| cp -n /etc/defaults/openvpn.conf /config/openvpn/ | ||||
| 
 | ||||
| # Create server CA/keys and keys for client "client" if they do not exist | ||||
| if [ ! -d "/config/openvpn/keys" ]; then | ||||
|     cd /usr/share/easy-rsa | ||||
|     source vars | ||||
|     ./clean-all | ||||
|     ./build-dh | ||||
|     ./pkitool --initca | ||||
|     ./pkitool --server server | ||||
|     ./pkitool client | ||||
|     openvpn --genkey --secret /config/openvpn/keys/ta.key | ||||
| fi | ||||
|  | @ -13,7 +13,10 @@ auth       SHA512 | |||
| 
 | ||||
| tls-client | ||||
| 
 | ||||
| comp-lzo | ||||
| # comp-lzo | ||||
| 
 | ||||
| persist-tun | ||||
| persist-key | ||||
| 
 | ||||
| sndbuf 393216 | ||||
| rcvbuf 393216 | ||||
|  | @ -25,7 +25,12 @@ push "redirect-gateway def1 bypass-dhcp" | |||
| push "dhcp-option DNS 8.8.8.8" | ||||
| push "dhcp-option DNS 8.8.4.4" | ||||
| 
 | ||||
| comp-lzo | ||||
| # comp-lzo | ||||
| 
 | ||||
| persist-key | ||||
| persist-tun | ||||
| 
 | ||||
| sndbuf 393216 | ||||
| rcvbuf 393216 | ||||
| push "sndbuf 393216" | ||||
| push "rcvbuf 393216" | ||||
|  | @ -0,0 +1,3 @@ | |||
| #!/usr/bin/with-contenv sh | ||||
| 
 | ||||
| exec openvpn /config/openvpn/openvpn.conf | ||||
|  | @ -4,7 +4,7 @@ KEYDIR="/config/openvpn/keys" | |||
| CLIENT=${1:-client} | ||||
| 
 | ||||
| echo " | ||||
| $(cat /client.ovpn) | ||||
| $(cat /etc/defaults/client.ovpn) | ||||
| <ca> | ||||
| $(cat $KEYDIR/ca.crt) | ||||
| </ca> | ||||
|  | @ -43,8 +43,8 @@ export KEY_EXPIRE=3650 | |||
| # Don't leave any of these fields blank. | ||||
| export KEY_COUNTRY="US" | ||||
| export KEY_PROVINCE="CA" | ||||
| export KEY_CITY="SanFrancisco" | ||||
| export KEY_ORG="Fort-Funston" | ||||
| export KEY_CITY="MyCity" | ||||
| export KEY_ORG="MyOrg" | ||||
| export KEY_EMAIL="me@myhost.mydomain" | ||||
| export KEY_OU="MyOrganizationalUnit" | ||||
| 
 | ||||
|  | @ -55,6 +55,7 @@ export KEY_NAME="EasyRSA" | |||
| # export PKCS11_MODULE_PATH="/usr/lib/changeme.so" | ||||
| # export PKCS11_PIN=1234 | ||||
| 
 | ||||
| # If you'd like to sign all keys with the same Common Name, uncomment the KEY_CN export below | ||||
| # You will also need to make sure your OpenVPN server config has the duplicate-cn option set | ||||
| # If you'd like to sign all keys with the same Common Name, uncomment the | ||||
| # KEY_CN export below. You will also need to make sure your OpenVPN server | ||||
| # config has the duplicate-cn option set | ||||
| # export KEY_CN="CommonName" | ||||
|  | @ -1,28 +0,0 @@ | |||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| # Make sure OpenVPN config directory exists. | ||||
| mkdir -p /config/openvpn/ | ||||
| 
 | ||||
| cp -n /openvpn.conf /config/openvpn/ | ||||
| 
 | ||||
| # Check if keys exist, if not, create with easy-rsa | ||||
| if [ ! -d "/config/openvpn/keys" ]; then | ||||
|     cd /usr/share/easy-rsa | ||||
|     source vars | ||||
|     ./clean-all | ||||
|     ./build-dh | ||||
|     ./pkitool --initca | ||||
|     ./pkitool --server server | ||||
|     ./pkitool client | ||||
|     openvpn --genkey --secret /config/openvpn/keys/ta.key | ||||
| fi | ||||
| 
 | ||||
| # Make the tun device | ||||
| mkdir -p /dev/net | ||||
| if [ ! -c /dev/net/tun ]; then | ||||
|     mknod /dev/net/tun c 10 200 | ||||
| fi | ||||
| 
 | ||||
| iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE | ||||
| 
 | ||||
| exec openvpn /config/openvpn/openvpn.conf | ||||
		Loading…
	
		Reference in New Issue