Вебхук бота Telegram работает локально, но не на Proxmox с NAT/MikroTik: время ожидания соединения истеклоPython

Программы на Python
Ответить
Anonymous
 Вебхук бота Telegram работает локально, но не на Proxmox с NAT/MikroTik: время ожидания соединения истекло

Сообщение Anonymous »

Body
Я пытаюсь развернуть своего бота Telegram со своего локального компьютера (где он работает через локальный туннель) на виртуальной машине на Proxmox за MikroTik с NAT и nginx.
  • На виртуальной машине nginx завершает HTTPS и передает прокси /telegram_webhook на мой Python Quart app.
  • Доступ к https://example.com/telegram_webhook через Curl с внешнего компьютера работает нормально.
  • Однако бот не получает обновлений от Telegram.
  • Код: Выделить всё

    getWebhookInfo
    показывает:

Код: Выделить всё

{
"ok": true,
"result": {
"url": "https://example.com/telegram_webhook",
"pending_update_count": 6,
"last_error_message": "Connection timed out",
"ip_address": "192.168.1.100(example)"
}
}
  • Запуск tcpdump на виртуальной машине показывает, что нет пакетов, поступающих от Telegram.
  • Локальные тесты (проверка POST вручную) работают нормально.
Похоже, что Telegram не может связаться с моей виртуальной машиной через NAT/брандмауэр, хотя общедоступный IP-адрес правильный и nginx отвечает.
Мои текущие настройки
  • Интерфейс WAN: ether1
  • IP-адрес виртуальной машины: 192.168.1.100 (пример)
  • Порт вебхука: 443 (проксируется на 3443 в виртуальной машине)
  • Конфигурация nginx:

Код: Выделить всё

server {
listen 443 ssl;
server_name example.com;

ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/certificate.key;

location /telegram_webhook {
proxy_pass http://127.0.0.1:3443;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

location / {
return 200 "Nginx is working\n";
add_header Content-Type text/plain;
}
}
• Правила MikroTik NAT/брандмауэра проверены:

Код: Выделить всё

/ip firewall nat
add chain=dstnat in-interface=ether1 protocol=tcp dst-port=443 \
action=dst-nat to-addresses=192.168.1.100 to-ports=443

/ip firewall filter
# allow established / related connections
add chain=forward connection-state=established,related action=accept
# allow new TCP connections from WAN
add chain=forward in-interface=ether1 protocol=tcp dst-port=443 action=accept
Вопрос:
Какова правильная конфигурация MikroTik NAT/брандмауэра, чтобы веб-перехватчики Telegram могли достигать моей виртуальной машины и гарантировать возврат ответных пакетов?
  • Мне нужен работающий двунаправленный путь для запросов и ответов веб-перехватчиков.
  • Есть ли дополнительные Функции MikroTik (FastTrack, RAW, маршрутизация), которые могут блокировать пакеты Telegram даже при наличии правил NAT?


Подробнее здесь: https://stackoverflow.com/questions/798 ... otik-conne
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»