Какая-то странная причина, я не могу заставить мой сервер OpenVPN запускаться во время загрузки, используя systemd на сервере Ubuntu Linux 16.04 LTS. Я пробовал несколько настроек, но не получилось.

Вот мой файл /lib/systemd/system/openvpn.service:

# cat /lib/systemd/system/openvpn.service

Его содержимое

# This service is actually a systemd target,
# but we are using a service since targets cannot be reloaded.
 
[Unit]
Description=OpenVPN service
After=network.target
 
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/true
ExecReload=/bin/true
WorkingDirectory=/etc/openvpn
 
[Install]
WantedBy=multi-user.target

Я хотел запустить сервисы после того, как сеть будут запущена, чтобы OpenVPN мог привязать определенный IP-адрес и порт. После = network.target говорит ждать, пока nework «запуститься».

Мое решение проблемы

Я, наконец, сдался и просто написал задание cron, которое начнется после каждой перезагрузки системы:

@reboot sleep 100;/etc/init.d/openvpn restart;/etc/init.d/ssh restart;/etc/init.d/squid reload

Команда @reboot принудительно запускает задание один раз при запуске. В этом случае перезапустится сервер openvpn и sshd:

$ ss -tulpn

ИЛИ

$ netstat -tulpn

Пример вывода

tcp        0      0 10.8.0.1:80             0.0.0.0:*               LISTEN      1549/lighttpd   
tcp        0      0 0.0.0.0:53              0.0.0.0:*               LISTEN      1524/dnsmasq    
tcp        0      0 10.8.0.1:22             0.0.0.0:*               LISTEN      1756/sshd       
tcp        0      0 10.8.0.1:3128           0.0.0.0:*               LISTEN      1675/(squid-1)  
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      1732/openvpn

Должен быть способ запуска сервисов (OpenVPN) после выхода из сети. Однако я не смог понять. Если кто-нибудь знает, как решить эту проблему без использования cron, дайте мне знать в разделе комментариев ниже.