总结

总结

在什么情况下,wireguard 会使用 /etc/wireguard/ 下的文件?我想在 kubernetes 上强化我的 wireguard 设置。具有 NET_ADMIN 功能和已安装的 wireguard 配置的 init 容器用于使用 wg-quick 配置 wireguard 网络接口 (wg0)。完成后,将启动另一个没有访问 wireguard 配置和 NET_ADMIN 功能的容器 (main) 来为对等方提供服务。它可以工作,但我想了解它为什么以及何时会失败,特别是在什么情况下需要包括私钥在内的配置。

参考和设置

  • k8s 初始化容器
  • 使用 kubenet 和 calico 在 Azure Kubernetes 服务上运行
  • 使用的图片:
    FROM alpine
    RUN apk update && apk add wireguard-tools
    

答案1

总结

/etc/wireguard/下的文件在什么情况下会被wireguard使用?

当您(手动)或脚本或 cron 或 systemd 单元(等)运行wg setconf|addconf|syncconfwg-quick传递接口名称或配置文件路径时。

...特别是在什么情况下需要包括私钥在内的配置。

当您想要配置和启动 wg 接口时,需要包括私钥在内的配置。通常在启动时或第一次配置 wg 接口时。接口启动后,您可以从磁盘中删除配置文件...但如果您重新启动,您将再次需要配置以恢复接口。

细节

有 2 种配置格式。config wg-quick是 的超集wg

wg-quick只是一个 bash 脚本,它过滤掉自己的配置以生成wg兼容的配置文件,同时处理更轻松启动 wireguard 接口所需的所有ip addrip route、等命令。iptables

wg-quick

根据手册页对于 wg-quick:

wg-quick [ up | down | save | strip ] [ CONFIG_FILE | INTERFACE ]

CONFIG_FILE是一个配置文件,其文件名是接口名称后跟.conf。否则,INTERFACE是接口名称,配置位于/etc/wireguard/INTERFACE.conf,首先搜索,然后是特定于发行版的搜索路径。

因此对于wg-quick...

当您运行时,配置文件就会被加载wg-quick

如果您提供了配置文件路径,它将采用该路径作为接口名称(例如,/opt/wireguard20.conf传递给wg-quick将创建名称为 的接口wireguard20)。

如果您提供的是接口名称(例如wg99)而不是文件路径,wg-quick 将会进行查找/etc/wireguard/wg99.conf(也可能是在其他一些目录中)。

工作组

根据手册页为了wg

配置文件名仅指定用于:

  • wg setconf
  • wg addconf
  • wg syncconf

如果您不运行其中一个命令,则接口的配置不会更新。您可以使用wg show或读取当前配置wg showconf

帮助wg-quick脚本用途 wg setconf一旦它剥离了wg-quick特定的配置。

私钥问题

你根本不需要把私钥放入配置文件中。你可以调用wg set ...几乎所有的配置。例如wg set private-key <file-path>

来自wg 手册页

private-key和都preshared-key必须是文件,因为在大多数系统上命令行参数不被视为私有的,但如果您使用 bash(1),则可以通过指定为private-keypreshared-key表达式来安全地传入字符串:<(echo PRIVATEKEYSTRING)

因此,一旦您配置了接口,您就不需要私钥,直到再次重新启动,因为接口需要在重新启动时启动和配置。

如果您已启用[email protected]在重启后保留接口,则所做的一切就是调用wg-quick wg0它,然后期望在中找到所需的一切(包括私钥)/etc/wireguard/wg0.conf。该单元文件支持启动/停止(无需重新加载),因此仅在启动时读取配置(如果您手动或通过重启执行此操作)。

启动 wg 界面的 systemd 单元应该以 root 身份运行,因此私钥当然可以位于 root 拥有的 600 perm 文件中。

如果这对您来说还不够安全,请注意任何具有系统根访问权限的人都可以运行wg show wg0 private-key...因此,一旦在界面上配置,您将无法向根隐藏私钥。

相关内容