Есть система CentOS rel.5
На которой работает скрипт для получения netflow-трафика путем прослушки udp-порта 9996
Фрагмент скрипта:
Код: Выделить всё
# Создаём сокет
my $socket;
if ( $ret_val = create_socket(\$socket) ) { logg($ret_val); }
# Хэш для хранения заголовка датаграммы
my %header = ();
# Хэш для хранения одной записи датаграммы
my %record = ();
# Строка для хранения датаграммы
my $data;
# Здесь будет храниться возвращаемое recv значение (запакованные адрес и порт роутера)
my $from;
# Читаем датаграмму из сокета - eval НЕОБХОДИМ (perldoc -f alarm)
eval
{
local $SIG{ALRM} = sub {die "alarm\n"};
alarm ($global_cfg{alarm_timeout});
$from = $socket->recv($data, 8192, 0) or next;
logg ($from);
alarm(0);
};
sub create_socket($)
{
my $sock = shift;
my_die("sub create_socket : no reference to socket handle") unless defined $sock;
$$sock = IO::Socket::INET -> new (
LocalPort => $local_port},
Proto =>'udp'
) or return "Can't create socket : '$!'";
return undef;
}Установил этот скрипт на другой сервер в этой же сети с ОС Fedora 11.
Скрипт запускается без проблем, сокет открывает.
netstat -avn выдает:
udp 0 0 0.0.0.0:9996 0.0.0.0:*
tcpdump показывает наличие пакетов:
...
14:03:28.101886 IP 80.241.32.253.55117 > 80.241.32.196.palace-5: UDP, length 1464
14:03:28.110150 IP 80.241.32.253.55117 > 80.241.32.196.palace-5: UDP, length 1464
14:03:28.115266 IP 80.241.32.253.55117 > 80.241.32.196.palace-5: UDP, length 1464
14:03:28.122073 IP 80.241.32.253.55117 > 80.241.32.196.palace-5: UDP, length 1464
...
но датаграммы никакие не принимает.
Не могу разобраться в чем причина.
Может нужны какие-то настройки в самой Fedora, чтобы заставить скрипт получать данные?