telnet
我们一般检查服务的端口是否可用,通常使用telnet工具。
使用方法:
# telnet 192.168.173.82 22
Trying 192.168.173.82...
Connected to 192.168.173.82.
Escape character is '^]'.
SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8
^C
Connection closed by foreign host.
但如果是udp的服务,telnet检测就会失效,因为telnet是基于tcp协议的。此时可以使用uc这个工具,大多linux发行版都自带这个工具。
nc
使用方法:
# nc -vuz 192.168.173.103 750
Connection to 192.168.173.103 750 port [udp/kerberos4] succeeded!
上面例子显示结果是通的。
但是要注意,如果对端开启了防火墙,防火墙把包DROP了,那么是收不到端口不可达消息的,那么使用nc命令就会发现实际不通的端口是通的。
仔细想想UDP的原理就清楚了,UDP不像TCP一样需要ACK,所以过一段时间没收到端口不可达,UDP就认为端口是通的,但是实际上UDP数据被防火墙DROP了。