Servidor VPN en la máquina systemd-nspawn

Estoy tratando de implementar un server VPN (elijo el sabor Openswan) en un contenedor systemd-nspawn en un raspberry pi ejecutando Arch Linux. Por ahora puedo iniciar session en el contenedor, hacer ping, salir fuera del contenedor (logré poner Internet en él).

Aquí está mi file de configuration del sistema para mi contenedor. (override.conf)

[Service] ExecStart= ExecStart=/usr/bin/systemd-nspawn \ --quiet --keep-unit --boot --link-journal=try-guest \ -D /usr/lib/machines/%I \ --machine=%I 

Editar: creo una configuration de openswan.nspawn y refactorizo ​​la configuration en el file de anulación.

Entonces este file es así:

 [alarm@alarmpi ~]$ sudo cat /etc/systemd/nspawn/openswan.nspawn [Exec] Capability=CAP_NET_ADMIN CAP_NET_BIND_SERVICE [Network] Private=yes VirtualEthernet=yes Port=udp:500:500 Port=udp:4500:4500 Port=udp:1701:1701 Port=tcp:500:500 Port=tcp:4500:4500 Port=tcp:80:80 

Mi contenedor se inicia correctamente y los diferentes services relacionados con openswan se encuentran correctamente dentro del contenedor:

 $ systemctl status systemd-nspawn@openswan.service ● systemd-nspawn@openswan.service - Container openswan Loaded: loaded (/usr/lib/systemd/system/systemd-nspawn@.service; enabled; vendor preset: disabled) Drop-In: /etc/systemd/system/systemd-nspawn@openswan.service.d └─override.conf Active: active (running) since lun 2016-07-04 11:36:55 CEST; 1 day 1h ago Docs: man:systemd-nspawn(1) Main PID: 15805 (systemd-nspawn) Status: "Container running." CGroup: /machine.slice/systemd-nspawn@openswan.service ├─15805 /usr/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --private-network --network-veth --capability=CAP_NET_ADMIN --mach ├─init.scope │ └─15810 /usr/lib/systemd/... └─system.slice ├─console-getty.service │ └─15853 /sbin/agetty --no... ├─dbus.service │ └─15838 /usr/bin/dbus-dae... ├─openswan.service │ ├─18417 /bin/sh /usr/lib/... │ ├─18418 logger -s -p daem... │ ├─18419 /bin/sh /usr/lib/... │ ├─18420 /bin/sh /usr/lib/... │ ├─18423 /usr/lib/openswan... │ ├─18425 _pluto_adns -- <i... │ └─18426 /usr/lib/openswan... ├─systemd-journald.service │ └─15824 /usr/lib/systemd/... ├─systemd-logind.service │ └─15837 /usr/lib/systemd/... ├─systemd-networkd.service │ └─15839 /usr/lib/systemd/... ├─systemd-resolved.service │ └─15848 /usr/lib/systemd/... └─xl2tpd.service └─15844 /usr/bin/xl2tpd -D 

Configuro el contenedor con –network-veth.

Mi pregunta ahora es cómo realmente me gusta en Docker "publicar" esos puertos (udp 500/4500/1701) y ponerlos a disposition desde fuera del contenedor.

Me gusta:

Road Warrior -> nube -> Arch pi -> contenedor systemd-nspawn –

Sé que esto sería trivial para enviar tráfico usando iptables, pero eso no es lo que quiero.

Tal vez necesito tener una configuration de puente?

Editar: utilizando la directiva "Puerto", ahora puedo reenviar el tráfico dentro de mi contenedor, ¡genial! :RE

El único problema al que me enfrento ahora es que Plutón se cuelga al tratar con la Asociación de Seguridad (ISAKMP) con el siguiente post:

"L2TP-PSK-NAT" [1] 178.50.79.197 # 1: ABORT en /build/openswan/src/openswan-2.6.47/programs/pluto/keys.c:488 "L2TP-PSK-NAT" [1] 178.50.79.197 # 1: ABORTAR en /build/openswan/src/openswan-2.6.47/programs/pluto/keys.c:488

Si le suena a alguien, por favor dígame. Voy a mirar el código cuando tenga time …

Continuará..