我正在尝试将我的 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 的信息手册,我看不出哪里出错了。非常感谢以下两项中的任何一项的任何帮助:
- 找出如何强制牧羊人写日志。
- 确定为什么我的配置不起作用。
更新:
我忘了提到我认为日志问题可能是由于以下函数中的错误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)))))))