我有一个 ubuntu 服务器,它只允许通过 iptables 选择一组端口上的流量。REJECT
默认设置的端口之一是53
。
我需要定期打开端口 53 以运行一个实例acme-dns
来验证DNS-01
来自LetsEncrypt 的挑战,然后在完成后关闭它。
有没有一种简单的方法可以自动化?我知道如何通过在列表顶部插入一个for traffic来轻松自动添加规则,但我知道如何禁用特定规则的唯一方法是列出所有带有行号的活动规则并逐行禁用特定规则数字。这需要我手动交互。iptables -I
ACCEPT
udp
53
我需要删除该规则,而不是通过REJECT
在它之前插入 a 来撤消它,因为这将由 cron 作业运行,而且我不想用一堆相互撤消的 ACCEPT/REJECT 切换来污染规则。
我能想到的唯一方法是编写一个脚本,按行号打印规则,分析它们,然后删除匹配规则。有没有办法简单地使用我不知道的 iptables 命令来做到这一点?
我需要制作一个新映像并选择了新的 16.04 ubuntu,这样我就可以获得某些软件包的更新版本,而不是从源代码安装。到目前为止,我对这个决定感到遗憾,因为在线文档很少。
在 12.04 和 14.04 中,我经常能够通过安装一个包,然后删除(而不是清除)它来创建 ubuntu 启动脚本,从而将启动脚本重新用于自定义编译。然后我可以编辑它们以指向正确的配置文件和二进制文件。
例如,要使用最新的 openresty,我可以这样做:
apt-get install nginx
apt-get remove nginx
Run Code Online (Sandbox Code Playgroud)
然后我可以更新/etc/init.d/nginx
脚本以指向我的自定义二进制/配置文件,我有一个快乐的 ubuntu 启动脚本。伟大的!
此方法不再适用于 16.04。
我已经编辑:
/etc/init.d/nginx
/etc/init/nginx.conf
/lib/system.d/system/nginx.service
ubuntu 从不拉我的二进制文件(在 中/usr/local/openresty/nginx/sbin/nginx
)。它总是/sbin/nginx
在启动时运行(我一开始错过了卸载“nginx-core”)或什么都不运行。这同样适用于其他包。
Ubuntu 关于从新贵过渡的文档在这方面缺乏,他们关注“开始停止”。
我不知道ubuntu 在哪里决定这个。我找不到任何指向/sbin/nginx
. 没有日志帮助。我遇到的每个潜在文件都指向备用二进制文件和配置。
如果有人可以分享有关使用新启动系统及其外观/存储信息的良好资源,我将不胜感激。
似乎涉及到一个数据库,因为它检测到文件更改并要求我重新加载 - 但我还没有找到它。
在玩弄了很多之后,我想出了以下内容:
nginx 包似乎安装了两种类型的设置,但只使用了一种。一些问题与此有关。
/etc/init.d/nginx
和 /etc/init/nginx.conf
/lib/systemd/system/nginx.service
和 /etc/systemd/system/nginx.service
从试验和错误中: * 运行systemctl disable nginx.service
以禁用/删除大多数链接和文件 * 删除 /etc/systemd/system/nginx.service 中的文件(如果存在) * 在 /lib/systemd/system/nginx.service 中放置一个新文件 * 运行systemctl enable nginx.service
/lib/systemd/system/nginx.service …