![xinetd 仍然是让非 root 守护进程监听特权端口的最佳方法吗?](https://linux22.com/image/21965/xinetd%20%E4%BB%8D%E7%84%B6%E6%98%AF%E8%AE%A9%E9%9D%9E%20root%20%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B%E7%9B%91%E5%90%AC%E7%89%B9%E6%9D%83%E7%AB%AF%E5%8F%A3%E7%9A%84%E6%9C%80%E4%BD%B3%E6%96%B9%E6%B3%95%E5%90%97%EF%BC%9F.png)
当我需要使用时java应用程序的SNMP监控,需要该应用程序(通常作为守护程序用户运行)来侦听 snmp 端口。
如果没有其他选择,我当然可以使用另一个端口,比如11161。
但我可以使用 XInetd 将端口 161 重定向到 11161。
我的问题是:这是最好的方法吗? iptables 端口重定向更好吗?
答案1
总体来说,xinetd
这是一个很好的解决方案。对于一次性问题,我经常使用平衡只是因为一切都可以在命令行上设置,但如果您需要多次执行,xinetd
则是更好的选择。
通过 iptables 进行重定向效果很好,但缺乏透明度。如果其他人必须维护系统,他们可能不知道重定向规则,而像 xinetd 这样的代理解决方案会出现在各种标准诊断命令的输出中,等等netstat
。
答案2
首先——Oracle 的描述很糟糕。将 SNMP 用于应用程序(java 是与操作系统有关的应用程序)的正确方法是将其注册为 OS-snmp-service 的子代理(对于 linux:snmpd)。
必须有一种方法来实现这一点。之后,您可以使用 SNMPD 安全设置(请参阅 snmpd 的手册页)来限制对 MIB 该部分的访问。