我接到一个测试员的电话,说一台机器出现了我们的软件故障。当我检查问题机器时,我很快意识到问题是相当低级的:入站网络流量工作正常。像 ping 和 ssh 这样的基本出站命令工作正常,但任何涉及connect()
调用的操作都因“没有路由到主机”而失败。
例如 - 在这台特定的机器connect()
上,该程序将在以下任何 IP 地址的语句上失败127.0.0.1
:
#!/usr/bin/perl -w
use strict;
use Socket;
my ($remote,$port, $iaddr, $paddr, $proto, $line);
$remote = shift || 'localhost';
$port = shift || 2345; # random port
if ($port =~ /\D/) { $port = getservbyname($port, 'tcp') }
die "No port" unless $port;
$iaddr = inet_aton($remote) || die "no host: $remote";
$paddr = sockaddr_in($port, $iaddr);
$proto = getprotobyname('tcp');
socket(SOCK, PF_INET, SOCK_STREAM, $proto) || die "socket: $!";
connect(SOCK, $paddr) || die "connect: $!";
while (defined($line = <SOCK>)) {
print $line;
}
close (SOCK) || die "close: $!";
exit;
关于这台机器坏在哪里的任何建议?它正在运行 SUSE-10.2。