Linux - 打開埠,但仍然無法使用 telnet 連接到它
我目前正在開發 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
在這一步中我缺少任何部分嗎?
您不能 telnet snmp 埠,因為它不是 TCP,是 UDP;
嘗試使用 net-snmp 包中的 snmpget 命令對其進行測試:
http://net-snmp.sourceforge.net/tutorial/tutorial-5/commands/snmpget.html
為了提供更多的理解,請從linuxquestions.org上的@tkedwards 找到這篇文章,以了解使用 telnet 檢查 UDP 埠連接的結果:
“UDP 是一種無連接協議,這意味著它基本上只是將數據包發送到指定的目的地。TCP 是面向連接的,這意味著它使用‘3 次握手’建立到另一端的連接。
因此,將“telnet”範例應用於 TCP 是有意義的——您連接到特定的主機和埠,即使您沒有發送任何數據並且您可以發送和接收,您仍然保持連接(一段時間)連續數據,而無需在兩者之間重新連接。
另一方面,UDP 並不真正適合 telnet 模型——它更像是一個即發即棄的系統,您可以在其中向目的地發送一系列數據包。然後你繼續做其他事情(或者只是等待什麼都不做),直到(或者如果)遠端程序發回一些數據包。”
因此,在恢復 UDP 中,除非它會給您返回資訊,否則您無法真正檢查它。