我试图通过UDP测试我是否可以访问远程服务器上的特定端口(我可以访问它们).
两台服务器都面向互联网.
我正在使用netcat来监听某个端口.
然后我使用nmap检查该端口是否打开,但它似乎不是.
Iptables已关闭.
任何建议为什么会这样?我最终将设置一个VPN隧道,但因为我对隧道很新,我想确保在推进之前我在端口UDP 1194上有连接.
没有“开放”的UDP端口这样的东西,至少在大多数人习惯的意义上都没有(这是回答“好吧我接受了你的连接”).
UDP是无会话的,因此“端口”(读取:操作系统IP堆栈中的UDP协议)将永远不会自行响应“成功”.
UDP是无会话的,因此“端口”(读取:操作系统IP堆栈中的UDP协议)将永远不会自行响应“成功”.
UDP端口只有两种状态:监听与否.这通常转换为“通过进程打开套接字”或“没有任何套接字打开”.后一种情况应该易于检测,因为系统应该使用代码= 3(端口不可达)的ICMP Destination Unreachable数据包进行响应.不幸的是,许多防火墙可能会削减这些数据包,所以如果你没有得到任何回报,你不确定该端口是否处于这种状态.
而且我们不要忘记ICMP会话也少,并且不进行重传:端口无法访问的数据包很可能在网络的某个地方丢失.
处于“侦听”状态的UDP端口无法响应任何内容(侦听它的进程只接收数据包并且不发送任何内容)或者可以发回一些东西(如果进程确实在接收时起作用,并且如果它通过响应通过UDP到原始发件人IP:端口),你再也不知道状态是什么.
您说您可以控制接收主机:这使您能够构建自己的协议来检查UDP端口可达性:只需在接收主机上放置一个进程,该进程将侦听给定的UDP端口并回复(或发送给您一封电子邮件,或者只是吓坏了,取消链接()主机文件系统上的所有内容……任何会引起你注意的事情都会发生.