публиковать в Mosquitto на сервере OpenStack - PullRequest
0 голосов
/ 06 января 2019

Пожалуйста, помогите мне узнать, как публиковать в Mosquitto, сидя на сервере, для которого требуется ssh-файл ключа.

Я пытаюсь опубликовать сообщение на моем сервере Mosquitto на сервере Ubuntu 16.04 с компьютера в другой сети.

Я сузил проблему до параметров конфигурации подключения сервера.

Для SSH мне нужно передать файл ключа как: ssh -i mykeyfile.pem user@ipaddress

Проблема в том, что я не могу получить доступ к Mosquitto с компьютера в другой сети, потому что я не знаю, как указать файл ключа. Я проверил порты, и они открыты.

Вот как я пытаюсь опубликовать:

mosquitto_pub -h ip_address -p 1883 -t test -m "hello world"

С той же конфигурацией я пробовал на другом сервере, которому не нужен файл ключа для ssh к нему. Мне удалось опубликовать сообщение. Вот как я пришел к выводу, что проблема заключалась в ключевом файле.

Конфигурация Mosquitto является настройкой по умолчанию. Содержание mosquitto.conf:

# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

Ошибка при попытке опубликовать:

Error: Connection timed out

EDIT

Брандмауэр был отключен, поэтому результат sudo ufw status был disactivated. Я включил это и установил некоторые правила. Текущий статус:

Status: active

To                         Action      From
--                         ------      ----
8083                       ALLOW       Anywhere
22                         ALLOW       Anywhere
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
1883                       ALLOW       Anywhere
8083 (v6)                  ALLOW       Anywhere (v6)
22 (v6)                    ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
1883 (v6)                  ALLOW       Anywhere (v6)

Следующий вывод из iptables sudo iptables -L -v -n:

Chain ufw-user-input (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8083
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:8083
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:22
  699 40412 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:80
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:443
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:1883
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:1883
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:1883
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:1883

Но по-прежнему не может публиковать сообщения.

На компьютере, где сидит Москитто, работает сервер Apache2

Надеюсь, это имеет смысл. Благодарю.

1 Ответ

0 голосов
/ 08 января 2019

Вот как я решил свой вопрос.

Контекст:

  • Москит находится на сервере,
  • серверы в VM
  • виртуальная машина включена OpenStack .

После внесения (возможно, ненужных) изменений в конфигурационные файлы iptables, ufw, firewall и mosquitto я проверил OpenStack ( Я знаю ... почему я не упоминал об этом раньше! Ну, я был так растерялся, что это была не моя первая мысль ). Тогда я понял, что группа безопасности для моей виртуальной машины не не имеет правила для порта 1883 (не разрешающего и не отклоняющего). Я добавил это.

Эврика, я могу публиковать сообщения с внешнего компьютера.

Вот так выглядит моя группа безопасности (добавлены две последние строки):

enter image description here

Мой вывод: не только одна дверь, но и лук, через который нужно пройти много слоев!

Надеюсь, это поможет другим.

...