Столкнулся с действительно странной проблемой.
Первоначальным требованием было наличие сервера разработки, к которому можно было бы получить доступ из нашего офиса в Швеции и из Индии.
На нашем сервере в Стокгольме я создал новую виртуальную машину Ubuntu (Ubuntu 15.04, 64 бит) и присвоил ей IP-адрес 192.168.3.127. Я установил в него MySQL (5.6.24) и изменил bind-address
в /etc/mysql/mysql.conf.d/mysqld.cnf
к 0.0.0.0
Я настраиваю переадресацию портов в маршрутизаторе для пересылки 3306
на 192.168.3.127, а затем создал новую базу данных, используя
CREATE DATABASE mydatabase;
Я предоставил права пользователю
GRANT ALL PERMISSIONS ON mydatabase.* to 'someuser'@'%' IDENTIFIED BY 'supersecretpassword!';
Теперь разработчики могут подключаться из Индии, используя публичный IP-адрес шведского офиса, но разработчики внутри шведского офиса не могут подключиться к серверу. Они могут подключиться к нему, используя локальный IP-адрес (192.168.3.127), но не используя общедоступный IP-адрес.
Интересно, что не так. Любые идеи?
Вивек
Если вы выполняете DNAT из внешней сети во внутреннюю сеть, внешние пользователи могут получить доступ к вашему внутреннему серверу, используя общедоступный IP-адрес, как и вы. Общедоступный IP-адрес преобразуется в частный IP-адрес и перенаправляется на сервер.
Однако ваши внутренние пользователи не смогут получить доступ к тому же серверу, используя общедоступный IP-адрес, если NAT не установлен, чтобы разрешить это тоже. Должно быть другое правило DNAT для внутренней трансляции общедоступного IP-адреса перед его пересылкой на сервер.
Другое возможное решение - использовать DNS-имена и определять DNS-представления. Создайте внутреннее представление, которое сопоставляет имя с частным IP, и создайте внешнее представление, которое сопоставляет имя с общедоступным IP. Таким образом, вы в конечном итоге будете использовать одно и то же имя внутри и снаружи.