CentOS - 如何查找 NIC 断开的连接

CentOS - 如何查找 NIC 断开的连接

我正在运行 CentOS 5 和 sendmail。 Sendmail 充当同一 LAN 网段上网络服务器的 MTA。大多数电子邮件都会通过,但我确实在 /var/log/maillog 中收到几个错误,内容如下:

Oct 20 11:10:01 mail sendmail[15733]: s9K29kgh015733: <webserver> [<ip redacted>] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA

看起来,当网络服务器尝试创建电子邮件时,MTA 和网络服务器之间的连接偶尔会断开,因此我们会收到这些错误,而客户永远不会收到电子邮件。

如何监控运行 sendmail 的 Linux 服务器上的 NIC,以便了解是什么终止了连接?

答案1

网卡有问题吗?

您可以使用 ip_route2 工具ip显示有关特定网络接口的统计信息。

$ ip -s link show wlp1s0
3: wlp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
    link/ether c8:f7:33:15:0b:12 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    2080111115 7611725  0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    727520431  6328004  0       0       0       0      

上图显示了接收 (RX) 和发送 (TX) 的数据包,以及数据包传入/传出 NIC 时发生的任何错误。你可以看到所有的接口是这样的:

$ ip -s link

类似的命令如ifconfignetstat -i将报告相同类型的信息。

连接有问题?

如果 NIC 看起来没问题,那么我会在 foodc 链的更高层诊断问题。为此,您可以使用tcpdumpwireshark监视相应的接口,直至特定端口和特定 IP 地址。

笔记:这里有许多tcpdump可用的示例命令:Tcpdump 使用示例

在你的情况下,这样的事情将有助于捕获你的主机和网络服务器之间的网络流量。在CentOS系统上:

$ sudo tcpdump -n "src host 192.168.1.1 and dst port 25"

上面的 IP 是尝试连接到 CentOS 系统的服务器。端口 25 通常用于 SMTP。

进一步提升?

我怀疑您真正的问题不在下面,但很可能是邮件服务器由于某种原因丢弃了邮件。也许它格式错误或缺少标头信息。我建议打开邮件服务器的日志记录,假设它是sendmail,您可以在配置文件中执行类似的操作,/etc/mail/sendmail.cf.sendmail之后您需要重新启动:

O LogLevel=9

答案2

Wireshark就是您正在寻找的。

相关内容