Я использовал удаленную и локальную переадресацию с успехом в прошлом, но на этот раз я не могу заставить работать настройку.

Чего я добиваюсь: сделать мой sql-сервер общедоступным, чтобы Google CloudSql мог реплицировать базу данных.

У меня есть NAS, на котором запущен debian за маршрутизатором, который может выполнять сопоставление портов в расположении A Я нахожусь в расположении B с виртуальной машиной CentOS, выполняющей mariadb

С виртуальной машины в местоположении BI выполните следующую команду

:~$ ssh -f -N -T -R 3306:localhost:3306 my.dyndns.address -p [sshport]

(ни один сервер mysql не работает в nas или, по крайней мере, не в порту 3306)

Тогда на NAS:

:~# ss -anp | grep :330
tcp    LISTEN     0      128    127.0.0.1:3306                  *:*                   users:(("sshd",pid=27182,fd=9))
tcp    LISTEN     0      128     ::1:3306                 :::*                   users:(("sshd",pid=27182,fd=8))

На маршрутизаторе у меня есть порт 33006, перенаправленный на порт 3306 NAS, например:

(протокол столбцов, внешний начальный порт, внешний конечный порт, локальный порт, пункт назначения маршрутизатор переадресации портов Другие правила переадресации портов, такие как openvpn и ssh, прекрасно работают таким образом.

Я могу подключиться со своего компьютера к базе данных mysql, для директивы bind-address было установлено значение '*', я также пытался прокомментировать эту директиву, но, как и ожидалось, не дал никаких других результатов.

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

--- уточнение ---

  1. Я хочу подключиться снаружи к my.dyndns.address через порт 33006 .

  2. my.dyndns.address переводит на публичный адрес от моего модема ISP.

  3. 33006 пересылается по модему на локальный IP-адрес NAS через порт 3306, который, в свою очередь, туннелируется на mysql-сервер (в местоположении B).

  4. Я проверяю это с

    mysql -h my.dyndns.address --port=33006 -u myuser -p
    

    в то время как

     mysql -h local_ip_on_B -u myuser -p
    

    работает просто отлично

Я также попытался использовать VPN с сервера db из местоположения B в местоположение A (NAS также является сервером OpenVpn) и направить перенаправленный порт на модеме интернет-провайдера непосредственно на IP-адрес IP, который получает сервер db на интерфейсе tun. Если я установлю второе VPN-подключение к местоположению A, я смогу подключить базу данных с помощью IP-адреса из интерфейса tun со своего компьютера.

Я получаю ошибку ERROR 2002 (HY000) Can't connect to MySQL server on ip_of_the_nas .

ОБНОВИТЬ

Я сделал схему, чтобы прояснить мою ситуацию дальше: Обзор сетей

Кто-нибудь может мне помочь ?

1 ответ1

1

Этот фрагмент вывода ss

127.0.0.1:3306

указывает, что sshd прослушивает порт 3306 IPv4 только в интерфейсе обратной связи. Ваше общение извне происходит через другой (не петлевой) интерфейс.

Смотри man 5 sshd_config:

GatewayPorts
Указывает, разрешено ли удаленным узлам подключаться к портам, перенаправленным для клиента. По умолчанию sshd(8) связывает перенаправления удаленных портов с адресом обратной связи. Это предотвращает подключение других удаленных хостов к перенаправленным портам. GatewayPorts можно использовать для указания того, что sshd должен позволять перенаправлениям удаленных портов связываться с адресами без обратной связи, что позволяет другим хостам подключаться. Аргумент может быть « no чтобы принудительно сделать переадресацию удаленных портов доступным только для локального хоста, « yes заставить принудительно переадресацию удаленных портов связываться с подстановочным адресом или clientspecified чтобы позволить клиенту выбрать адрес, с которым связана переадресация. По умолчанию no .

Так вам нужно

  • GatewayPorts yes в вашем sshd_config ; или же
  • В качестве альтернативы GatewayPorts clientspecified а затем один из них:

    ssh -R               :3306:localhost:3306 …  # note the extra `:'
    ssh -R            '*':3306:localhost:3306 …
    ssh -R proper_IP_here:3306:localhost:3306 …
    

Не забудьте перезагрузить / перезапустить sshd . Также проверьте, не блокирует ли межсетевой экран на NAS порт.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .