我目前正在使用 CentOS 7.3。
为了激活 SNMP,我安装了它、配置了它并使用命令成功启动了该服务firewall-cmd
。
现在,我意识到我需要打开端口 161 才能使 SNMP 开始通信。因此我运行了以下命令。
$sudo firewall-cmd --permanent --add-port=161/udp --zone-public
Success
$sudo firewall-cmd --reload
Success
之后我检查了新的选项是否成功添加,结果一切正常。
但是,当我尝试检查使用 telnet 连接到端口 161 是否没有问题时,我收到了以下错误消息。
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
Trying ::1...
telnet: connect to address ::1: No route to host
我是否遗漏了这一步中的某些部分?
答案1
您无法 telnet snmp 端口,因为它不是 TCP,而是 UDP;
尝试使用 net-snmp 包中的 snmpget 命令进行测试:
http://net-snmp.sourceforge.net/tutorial/tutorial-5/commands/snmpget.html
答案2
为了提供更多的理解,请参阅@tkedwards 的这篇帖子linuxquestions.org了解使用 telnet 检查 UDP 端口连通性的结果:
“UDP 是一种无连接协议,这意味着它基本上只是将数据包发送到指定的目的地。TCP 是面向连接的,这意味着它使用‘三次握手’与另一端建立连接。
因此,将“telnet”范例应用于 TCP 是有意义的 - 您连接到特定的主机和端口,即使您没有发送任何数据,您仍然保持连接(一段时间),并且您可以连续发送和接收数据而无需在中间重新连接。
另一方面,UDP 并不真正适合 telnet 模型 - 它更像是一种“发射后不管”系统,您可以向目的地发射一系列数据包。然后,您可以继续执行其他操作(或只是等待而不执行任何操作),直到(或如果)远程进程发回一些数据包。
因此,在恢复 UDP 时,您无法真正检查它,除非它能返回信息。