对 ESX/ESXi 上的网络和 TCP/UDP 端口连接问题进行故障排除 (2020669)

免责声明: 本文为 Troubleshooting network and TCP/UDP port connectivity issues on ESX/ESXi (2020669) 的翻译版本。 尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。 有关最新内容,请参见英文版本。

 Purpose

本文提供使用以下故障排除工具对网络和 TCP/UDP 端口连接问题进行故障排除的相关信息:

  • ping/vmkping,用于对两个服务器之间的网络连接进行故障排除。
  • telnet,用于对 TCP 端口连接进行故障排除。
  • netcat (nc),用于对 TCP 端口连接进行故障排除。
  • openssl,用于对 SSL 端口连接进行故障排除并验证 SSL 证书信息。
  • tcpdump 和 tcpdump-uw,用于收集数据包跟踪以对网络问题进行故障排除。
  • netstat 和 esxcli network,用于查看与主机之间处于活动状态的 TCP/UDP 连接。

注意:telnet 和 nc 工具可帮助您检查 TCP 端口是否处于联机状态,或者是否有防火墙正阻止访问 TCP 端口。

 Resolution

使用 ping 和 vmkping 确认网络连接

要检查远程主机是否处于联机状态,可以在 ESX/ESXi 主机上使用 ping 和 vmkping 命令。这些命令的语法如下:

# ping destination-ip

# vmkping destination-ip

您会看到类似以下内容的输出:

# vmkping 192.168.48.133

PING 192.168.48.133 (192.168.48.133): 56 data bytes

64 bytes from 192.168.48.133: icmp_seq=0 ttl=64 time=0.978 ms

64 bytes from 192.168.48.133: icmp_seq=1 ttl=64 time=1.009 ms

在此示例输出中,您可以看到 ESX/ESXi 主机能够与 IP 地址为 192.168.48.133 的远程主机进行通信。

注意:在 ESX 主机上,ping 命令通过服务控制台的网络堆栈运行,而 vmkping 命令独立于服务控制台通过 vmkernel 网络堆栈运行。在 ESXi 上,ping 和 vmkping 是相同命令且通过 vmkernel 网络堆栈运行,因为在 ESXi 中没有服务控制台。

有关使用 ping 命令的详细信息,请参见 Testing network connectivity with the ping command (1003486)

使用 telnet 确认与 TCP 端口的连接

注意:仅在 ESX 主机上提供了 Telnet。对于 ESXi 3.5、4.x 和 5.x,您将需要使用 netcat (nc)。有关详细信息,请参见下面标题为“使用 netcat 确认与 TCP 端口的连接”的部分。

当 ping 命令确认连接时,不一定意味着可以访问远程主机上的所有 TCP 端口。网络防火墙可允许或阻止访问主机上的特定端口。

要检查特定的 TCP 端口是否正在远程主机上运行,可以使用 telnet 命令确认端口是否处于联机状态。

# telnet destination-ip destination-port

尝试与 TCP 端口 80 建立 telnet 连接时,您会看到类似以下内容的输出:

# telnet 192.168.48.133 80

Trying 192.168.48.133...

Connected to 192.168.48.133.

Escape character is '^]'.

在此示例输出中,您可以看到已连接至 IP 地址为 192.168.48.133 的服务器上的端口 80 (http)。

如果为主机上未在运行的服务选择端口号,您会看到类似以下内容的输出:

# telnet 192.168.48.133 81

Trying 192.168.48.133...

telnet: Unable to connect to remote host: Connection timed out

在这种情况下,您可以看到在尝试连接到服务器 192.168.48.133 上的端口 81 时没有响应。


注意:Telnet 是一种使用 TCP 协议运行的应用程序。无法使用 Telnet 测试 UDP 连接。
 

使用 netcat 确认与 TCP 端口的连接

在任何版本的 ESXi 中都未提供 telnet 命令,因此必须使用 netcat (nc) 来确认与远程主机上 TCP 端口的连接。nc 命令的语法如下:

# nc -z <destination-ip> <destination-port>

测试与 TCP 端口 80 的连接时,您将会看到类似以下内容的输出:

# nc -z 192.168.48.133 80
Connection to 192.168.48.133 80 port [tcp/http] succeeded!

在示例输出中,您可以看到能够与主机 192.168.48.133 上的 TCP 端口 80 建立连接。

注意:Netcat 包括一个可使用 -uz 标记测试 UDP 连接的选项;但由于 UDP 是一种无连接协议,即使端口已关闭或阻止,也将始终报告为“已成功”。相反,使用 tcpdump 或 tcpdump-uw 测试双向 UDP 连接。

可以使用 nc 命令来检查与远程主机上 TCP 端口范围的连接:

# nc -w 1 -z 192.168.48.133 20-81

Connection to 192.168.48.133 22 port [tcp/ssh] succeeded!

Connection to 192.168.48.133 80 port [tcp/http] succeeded!

-w 选项指定了超时值。

注意:端口扫描是一种非常强大的故障排除工具,但可能会违反公司网络或安全策略。请向您的网络或安全团队确认,以确保他们了解此活动。

使用 openssl 测试 SSL 端口连接和证书信息

要测试 SSL 端口,可以使用 openssl 命令来测试连接以及确认当前的 SSL 信息。在使用 vCenter Server 确认 SSL 证书时,这可能非常有用。openssl 命令的语法如下:

# openssl s_client -connect destination-ip:ssl-port

您会看到类似以下内容的输出:

# openssl s_client -connect 192.168.48.133:443

CONNECTED(00000003)

其中,443 是默认的 SSL 端口。

在此示例输出中,您可以看到通过 SSL 端口与远程服务器 192.168.48.133 建立的连接成功。

注意:此输出可能包含大量与 SSL 证书相关的信息,在对证书问题进行故障排除时,这些信息可能非常有用。

使用 tcpdump 和 tcpdump-uw 收集数据包跟踪

ESX 和 ESXi 主机附带了可用于收集网络跟踪的数据包跟踪工具 tcpdump 和 tcpdump-uw。在对网络问题进行故障排除时,网络跟踪是非常有用的。

使用 netstat 和 esxcli network 查看处于活动状态的 TCP/UDP 连接

对网络连接问题进行故障排除时,查看 ESX/ESXi 主机上处于活动状态的所有入站和出站 TCP/UDP 连接可能会很有帮助。ESX 主机可以使用 netstat 命令,而 ESXi 4.1 及更高版本的主机可以使用 esxcli network 来显示 TCP/UDP 连接的列表。这些命令如下:
 

ESX 3.5/4.x – # netstat -tnp

ESXi 4.1 – # esxcli network connection list

ESXi 5.0 – # esxcli network ip connection list

ESXi 5.1 – # esxcli network ip connection list

ESXi 5.5 – # esxcli network ip connection list

来自 ESXi 4.1 主机的示例输出如下:
 

# esxcli network connection list

Proto Recv-Q Send-Q Local Address Foreign Address State World ID

tcp 0 52 192.168.48.136:22 192.168.48.1:55169 ESTABLISHED 0

tcp 0 0 127.0.0.1:62024 127.0.0.1:5988 TIME_WAIT 0

tcp 0 0 127.0.0.1:57867 127.0.0.1:5988 TIME_WAIT 0

tcp 0 0 127.0.0.1:62196 127.0.0.1:5988 TIME_WAIT 0

tcp 0 0 127.0.0.1:8307 127.0.0.1:52943 ESTABLISHED 5790

tcp 0 0 127.0.0.1:52943 127.0.0.1:8307 ESTABLISHED 5790

tcp 0 0 127.0.0.1:80 127.0.0.1:55629 ESTABLISHED 5785

tcp 0 0 127.0.0.1:55629 127.0.0.1:80 ESTABLISHED 6613

tcp 0 0 127.0.0.1:8307 127.0.0.1:56319 ESTABLISHED 5785

tcp 0 0 127.0.0.1:56319 127.0.0.1:8307 ESTABLISHED 5785

tcp 0 0 127.0.0.1:80 127.0.0.1:62782 ESTABLISHED 5166

tcp 0 0 127.0.0.1:62782 127.0.0.1:80 ESTABLISHED 6613

tcp 0 0 127.0.0.1:5988 127.0.0.1:53808 FIN_WAIT_2 0

tcp 0 0 127.0.0.1:53808 127.0.0.1:5988 CLOSE_WAIT 5166

tcp 0 0 127.0.0.1:8307 127.0.0.1:56963 CLOSE_WAIT 5788

tcp 0 0 127.0.0.1:56963 127.0.0.1:8307 FIN_WAIT_2 5785

tcp 0 0 127.0.0.1:8307 0.0.0.0:0 LISTEN 5031

tcp 0 0 127.0.0.1:8309 0.0.0.0:0 LISTEN 5031

tcp 0 0 127.0.0.1:5988 0.0.0.0:0 LISTEN 0

tcp 0 0 0.0.0.0:5989 0.0.0.0:0 LISTEN 0

tcp 0 0 0.0.0.0:80 0.0.0.0:0 LISTEN 5031

tcp 0 0 0.0.0.0:443 0.0.0.0:0 LISTEN 5031

tcp 0 0 127.0.0.1:12001 0.0.0.0:0 LISTEN 5031

tcp 0 0 127.0.0.1:8889 0.0.0.0:0 LISTEN 5331

tcp 0 0 192.168.48.136:427 0.0.0.0:0 LISTEN 0

tcp 0 0 127.0.0.1:427 0.0.0.0:0 LISTEN 0

tcp 0 0 0.0.0.0:22 0.0.0.0:0 LISTEN 0

tcp 0 0 0.0.0.0:902 0.0.0.0:0 LISTEN 0

tcp 0 0 0.0.0.0:8000 0.0.0.0:0 LISTEN 4801

tcp 0 0 0.0.0.0:8100 0.0.0.0:0 LISTEN 4795

udp 0 0 192.168.48.136:427 0.0.0.0:0 0

udp 0 0 0.0.0.0:427 0.0.0.0:0 0

udp 0 0 192.168.48.136:68 0.0.0.0:0 4693

udp 0 0 0.0.0.0:8200 0.0.0.0:0 4795

udp 0 0 0.0.0.0:8301 0.0.0.0:0 4686

udp 0 0 0.0.0.0:8302 0.0.0.0:0 4686

要检索网络适配器的错误和统计信息,请运行以下命令:

# esxcli network nic stats get -n <vmnicX>

其中 <vmnicX> 是 ESXi 主机上的网卡名称。

 Related Information

有关使用 esxcli network 命令收集信息以及对网络问题进行故障排除的详细信息,请参见 vSphere Command-Line Interface Concepts and Examples guide 中的“网络故障排除”部分。Troubleshooting network and TCP/UDP port connectivity issues on ESX/ESXi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值