-1

我正在尝试将我的 Guix 系统配置为通过启动 OpenVPN 客户端服务来自动连接到我的 VPN 提供商,但它无法启动并且我无法确定发生了什么,因为没有写入 VPN 的日志/var/log/。我还查找了 VPN 登录,/var/log/guix-daemon.log但它没有显示与启动 VPN 服务相关的任何内容。

不幸的是,shepherd没有提供关于特定故障的太多信息(我已经能够找到) - 即没有verbose选项或任何东西,我可以用来确定出了什么问题。

我的系统配置中的 VPN 配置是这样的:

(openvpn-client-service
 #:config (openvpn-client-configuration
           (proto 'tcp)
           (ca 'disabled)
           (cert 'disabled)
           (key 'disabled)
           (auth-user-pass "/path/to/my/user/credentials")
           (comp-lzo? #f)
           (fast-io? #t)
           (remote (map (lambda (ip)
                          (openvpn-remote-configuration
                           (name ip)
                           (port 443)))
                        '("IP address 1" "IP address 2")))))

通过查看特定于 VPN 的信息手册,我看不出哪里出错了。非常感谢以下两项中的任何一项的任何帮助:

  1. 找出如何强制牧羊人写日志。
  2. 确定为什么我的配置不起作用。

更新:

我忘了提到我认为日志问题可能是由于以下函数中的错误vpn.scm(但我仍然对 Guix/Shepherd 不够熟悉,无法知道它是否真的是错误):

请注意,它log-file已声明但未实际使用 - 除非它用于宏扩展或其他我没有看到的东西。

(define (openvpn-shepherd-service role)
  (lambda (config)
    (let* ((config-file (openvpn-config-file role config))
           (pid-file ((match role
                        ('server openvpn-server-configuration-pid-file)
                        ('client openvpn-client-configuration-pid-file))
                      config))
           (openvpn ((match role
                       ('server openvpn-server-configuration-openvpn)
                       ('client openvpn-client-configuration-openvpn))
                     config))
           (log-file (match role
                       ('server "/var/log/openvpn-server.log")
                       ('client "/var/log/openvpn-client.log"))))
      (list (shepherd-service
             (documentation (string-append "Run the OpenVPN "
                                           (match role
                                             ('server "server")
                                             ('client "client"))
                                           " daemon."))
             (provision (match role
                          ('server '(vpn-server))
                          ('client '(vpn-client))))
             (requirement '(networking))
             (start #~(make-forkexec-constructor
                       (list (string-append #$openvpn "/sbin/openvpn")
                             "--writepid" #$pid-file "--config" #$config-file
                             "--daemon")
                       #:pid-file #$pid-file))
             (stop #~(make-kill-destructor)))))))
4

0 回答 0