从本地主机连接到本地主机时出现错误的 IP 地址

从本地主机连接到本地主机时出现错误的 IP 地址

我有一台安装了 Ubuntu 的 Linux 服务器。当我从同一台机器的地址 连接到某些服务(例如 MySQL、apache、icecast)时127.0.0.1,它们都显示我从本地地址 ( 10.10.x.x) 而不是localhost( 127.0.0.1) 连接。这导致无法连接到 MySQL 数据库(因为限制只允许从本地主机连接),而且看起来很丑陋。

这个问题是什么原因造成的?如何解决?

答案1

遗憾的是,MySQL 历来使用 localhost 作为基于套接字的连接,而不是 ip。除非您不通过套接字连接,否则您将看不到 127.0.0.1 或 localhost。(是的,这是错误的)

答案2

像往常一样,问题隐藏在系统的另一个地方。我有一条规则,iptables只是从一些手册中复制过来的:

-A POSTROUTING -j MASQUERADE

此规则设置为允许客户端通过 NAT 访问 Internet。此规则不受任何条件限制,因此从本地主机到本地主机的请求被 NAT,应用程序检测到错误的 IP。在此规则中添加一些条件(源 IP 地址)后,我正确地将 127.0.0.1 作为客户端的 IP 地址:

-A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE
-A POSTROUTING -s 192.168.3.0/24 -j MASQUERADE
-A POSTROUTING -s 10.10.10.0/24 -j MASQUERADE

问题解决了。

相关内容