从 S3 段错误 OpenSwan 中提取的配置文件

Configuration file pulled from S3 segfaults OpenSwan

我正在尝试配置 OpenSwan,这是一个用 C 编写的开源 IPsec 解决方案。 我有一个脚本可以在我的 Macbook 上创建并上传到 S3 的 Amazon Linux EC2 上下载配置文件 ipsec.conf

当我启动 ipsec 服务时,出现段错误。

奇怪的是,如果我用 VIM 打开配置文件,不做任何更改,只是 write/quit,它就可以工作。这让我相信该文件有一些奇怪的东西 characters/formatting.

我知道 dos2unix,我在配置文件中 运行 但这并没有阻止段错误。

我想知道当我 write/quit 时 VIM 到底在做什么。提取配置文件后,我可以在我的配置文件上编写该操作的脚本。或者任何其他可以帮助我理解发生了什么的东西。

首先,尝试使用 vim 打开文件,然后退出 vim (:q) 之前没有保存文件。如果 vim 说 File modified since last complete write; write or use ! to override.,这意味着这不是 vim 在 write/quit 更改您的文件时所做的事情,而是 vim 所做的事情当它打开文件时。这是最常见的情况。

Vim 根据语言环境解析输入文件,如果某些字符根据语言环境无法理解,vim 可能会忘记它们。因此,保存文件时,这些字符将被删除。

现在,使用 vim 将文件另存为 ipsec-ok.conf。 并且 运行 以下命令:

bash -c 'diff <(od -xa ipsec.conf) <(od -xa ipsec-ok.conf)'

这将显示原始文件与使用 OpenSwan 的文件之间的差异。以 ascii 和十六进制格式。这样,您将找到使 OpenSwan 转储成为核心的不受支持的字符。