systemd啟動拒絕啟動時如何啟動OpenVPN服務器-LinuxTechBlog


F或者,出於某種奇怪的原因,我無法在 Ubuntu Linux 16.04 LTS 服務器上使用 systemd 在啟動時啟動 OpenVPN 服務器。我已經嘗試了一些設置,但到目前為止它失敗了。

所以我吐了出來:

親愛的系統,

至少告訴我怎麼了! !! !!#linux #系統管理員 #systemd #ubuntu #美分 #debian #openvpn

— NixCraft (@nixcraft) 2016 年 8 月 5 日

這是我的 /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 和端口。 After = network.target 告訴您等待網絡“啟動”。

我的修復

我最終放棄並創建了一個每次重新啟動系統時都會啟動的 cron 作業。
@reboot sleep 100;/etc/init.d/openvpn restart;/etc/init.d/ssh restart;/etc/init.d/squid reload

@reboot 強製作業在啟動時運行一次。這種情況下,重啟openvpn服務器,將sshd/squid綁定到openvpn端口。
$ 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 的情況下解決此問題,請在下面的評論部分告訴我。