Задать вопрос
@lemonable

Почему php не отправляет UDP пакет на сервере?

Есть такой простой скрипт
<?php
$server_ip   = $_POST['host'];
$server_port = $_POST['port'];

echo "Sending heartbeat to IP $server_ip, port $server_port\n";

if ($socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP)) {
  for ($i = 1; $i <= 10; $i++) {
    $send_socket = socket_sendto($socket, $message, strlen($message), 0, $server_ip, $server_port);
    
    if($send_socket !== 0){
        echo "Сокет не отправлен.";
        var_dump($send_socket);
    }else{
        echo "Успеншо отправлен сокет";
    }

    sleep(1);
  }
} else {
  echo "Can't create socket";
}

Скрипт работает, запускал на своем компе, UDP пакет шлю на VPS'ку в ней проверяю прилетают ли пакеты командой tcpdump -n udp port 4444
Тоже самое если сделать на чистой VPS'ке, на которой ubuntu20.04 и php7.4-fpm, пакеты отправляются на сервер.

Но если скрипт запустить на каком-то стороннем сервере UDP пакеты почему-то не отправляются, socket_sendto возвращает bool(false), так же тестировал отправку UDP пакета на языке Си, все тоже самое почему-то на сторонних серверах пакеты не отправляются, в чем может быть проблема подскажите пожалуйста.
Сторонний сервер я подразумеваю например хостинг или просто VPS'ка на которой стоит админ панель для его администрирования.
Может файервол запрещает отправку пакетов или прав каких-то не хватает.
  • Вопрос задан
  • 168 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
karabanov
@karabanov Куратор тега Linux
Системный администратор
Проверь настройки фаирвола, как на VPS, так и в панели хостера, на странице, где настраивается подключение к сети (если таковая имеется) - надо убедиться, что разрешено прохождение траффика на этот порт.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы