面临一个非常奇怪的问题。
最初的要求是拥有一个可从我们在瑞典和印度的办公室访问的开发服务器。
在我们位于斯德哥尔摩的服务器上,我创建了一个新的 Ubuntu VM(Ubuntu 15.04,64 位),并为其指定了 IP 192.168.3.127。我在它里面安装了 MySQL(5.6.24),并将 inbind-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。
我想知道哪里出了问题。有什么想法吗?
维韦克
答案1
如果您从外部网络到内部网络进行 DNAT,外部用户可以像您一样正确使用公共 IP 访问您的内部服务器。公共 IP 被 NAT 为私有 IP 并转发到服务器。
但是,除非修复了 NAT 以允许这样做,否则您的内部用户将无法使用公共 IP 访问同一台服务器。在将公共 IP 转发到服务器之前,应该有另一条 DNAT 规则在内部转换公共 IP。
另一个可能的解决方案是使用 DNS 名称并定义 DNS 视图。创建一个将名称映射到私有 IP 的内部视图,并创建一个将名称映射到公共 IP 的外部视图。因此,您最终将在内部和外部使用相同的名称。