AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 406520
Accepted
Ilya
Ilya
Asked: 2017-11-24 01:52:29 +0800 CST2017-11-24 01:52:29 +0800 CST 2017-11-24 01:52:29 +0800 CST

自编译 OpenVPN 不会从 systemd 启动

  • 772

我已经从源代码编译了 openvpn,运行openvpn --version返回:

OpenVPN 2.4.4 x86_64-unknown-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [MH/PKTINFO] [AEAD] built on Nov 19 2017
library versions: OpenSSL 1.0.2g  1 Mar 2016, LZO 2.08

并创建了一个/etc/openvpn/server.conf包含一些基本设置的文件。但是,当我尝试启动它时,sudo systemctl start openvpn@server它会返回

Failed to start [email protected]: Unit [email protected] not found.

并sudo systemctl status openvpn返回:

● openvpn.service
   Loaded: masked (/dev/null; bad)
   Active: inactive (dead) since Sun 2017-11-19 14:21:06 HKT; 4 days ago
 Main PID: 1502 (code=exited, status=0/SUCCESS)

这让我觉得 openvpn 服务甚至没有注册。

我查了一下/lib/systemd/system/,没有openvpn.service文件,但是/etc/systemd/system/有。据我了解,这是因为我编译而不是apt-get install openvpn?

谁能建议我应该如何将自编译的 openvpn 添加为服务?

第一次从源代码编译,因此非常感谢任何建议/提示!

编辑1:

我可以启动 openvpn 服务器并将客户端连接到它(只有服务似乎不起作用):

sudo openvpn /etc/openvpn/server.conf
ubuntu compiling
  • 2 2 个回答
  • 13237 Views

2 个回答

  • Voted
  1. Best Answer
    Ilya
    2017-11-24T04:39:14+08:002017-11-24T04:39:14+08:00

    通过在/lib/systemd/system.

    第一个是openvpn.service:

    [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
    

    第二个是[email protected]:

    [Unit]
    Description=OpenVPN connection to %i
    PartOf=openvpn.service
    ReloadPropagatedFrom=openvpn.service
    Before=systemd-user-sessions.service
    Documentation=man:openvpn(8)
    Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
    Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO
    
    [Service]
    PrivateTmp=true
    KillMode=mixed
    Type=forking
    ExecStart=/usr/local/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid
    PIDFile=/run/openvpn/%i.pid
    ExecReload=/bin/kill -HUP $MAINPID
    WorkingDirectory=/etc/openvpn
    ProtectSystem=yes
    CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_READ_SEARCH CAP_AUDIT_WRITE
    LimitNPROC=10
    DeviceAllow=/dev/null rw
    DeviceAllow=/dev/net/tun rw
    
    [Install]
    WantedBy=multi-user.target
    

    创建它们后,sudo systemctl daemon-reload重新加载新的更改。

    一般来说,文件是一样的,好像openvpn是从官方repo安装的,唯一的区别ExecStart=/usr/sbin/openvpn应该是ExecStart=/usr/local/sbin/openvpn,指向编译的本地openVPN。

    编辑:如果您使用 openvpn 2.4+,请从第二个文件中删除PIDFile=/run/openvpn/%i.pid和--writepid /run/openvpn/%i.pid,因为它会阻止服务器在启动时启动。在这里找到

    • 7
  2. River Rock
    2020-04-15T07:17:35+08:002020-04-15T07:17:35+08:00

    从伊利亚的回答中更新(我没有评论的声誉)

    我通过使用提供的服务作为模板(因此是单个服务文件)在 Ubuntu 16.04 上工作,改变了两件事:

    sudo cp ~/Downloads/openvpn-2.4.8/distro/systemd/[email protected] /lib/systemd/system/[email protected]
    
    sudo vi /lib/systemd/system/[email protected]
    

    改变:

    • @sbindir@ 到 /usr/local/sbin/
    • 类型=通知类型=简单

    重新加载并开始

    sudo systemctl daemon-reload
    service [email protected] restart
    service [email protected] status
    

    这假设您已经在 /etc/openvpn/client/client.service.conf 中获得了配置

    • 3

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    JSON数组使用jq来bash变量

    • 4 个回答
  • Marko Smith

    日期可以为 GMT 时区格式化当前时间吗?[复制]

    • 2 个回答
  • Marko Smith

    bash + 通过 bash 脚本从文件中读取变量和值

    • 4 个回答
  • Marko Smith

    如何复制目录并在同一命令中重命名它?

    • 4 个回答
  • Marko Smith

    ssh 连接。X11 连接因身份验证错误而被拒绝

    • 3 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Marko Smith

    systemctl 命令在 RHEL 6 中不起作用

    • 3 个回答
  • Marko Smith

    rsync 端口 22 和 873 使用

    • 2 个回答
  • Marko Smith

    以 100% 的利用率捕捉 /dev/loop -- 没有可用空间

    • 1 个回答
  • Marko Smith

    jq 打印子对象中所有的键和值

    • 2 个回答
  • Martin Hope
    EHerman JSON数组使用jq来bash变量 2017-12-31 14:50:58 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Drux 日期可以为 GMT 时区格式化当前时间吗?[复制] 2017-12-26 11:35:07 +0800 CST
  • Martin Hope
    AllisonC 如何复制目录并在同一命令中重命名它? 2017-12-22 05:28:06 +0800 CST
  • Martin Hope
    Steve “root”用户的文件权限如何工作? 2017-12-22 02:46:01 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST
  • Martin Hope
    Cbhihe 将默认编辑器更改为 vim for _ sudo systemctl edit [unit-file] _ 2017-12-03 10:11:38 +0800 CST
  • Martin Hope
    showkey 如何下载软件包而不是使用 apt-get 命令安装它? 2017-12-03 02:15:02 +0800 CST
  • Martin Hope
    youxiao 为什么目录 /home、/usr、/var 等都具有相同的 inode 编号 (2)? 2017-12-02 05:33:41 +0800 CST
  • Martin Hope
    user223600 gpg —list-keys 命令在将私钥导入全新安装后输出 uid [未知] 2017-11-26 18:26:02 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve