所以我有一个 IP 地址 5x.2x.2xx.1xx 我想映射到本地主机。在我的主机文件中,我有:
cat /etc/hosts
127.0.1.1 test test
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
5x.2x.2xx.1xx 127.0.0.1
我想要完成的是,当我在这台机器上连接到 5x.2x.2xx.1xx 时,我会转到 localhost。
我真正想要的是使用连接到 MySQL
mysql -uroot 5x.2x.2xx.1xx -p 我想使用本地 MySQL 服务器,而不是指向该 IP 地址
当时它不起作用,因为它仍然重定向到服务器的 IP (5x.2x.2xx.1xx)
我也尝试过: sudo service nscd restart 没有运气
答案1
/etc/hosts
如果您想映射特定的 DNS,可以使用姓名到与实际不同的 IP 地址,但如果应用程序已经指定了 IP 地址,那么基于操纵主机名解析的任何其他技术将毫无用处:应用程序已经有一个完美的 IP 地址可供连接,因此它不需要任何主机名解析服务。
如果您想将出站流量重定向到指定的IP地址返回到您的本地系统,您将需要iptables
它。
sudo iptables -t nat -I OUTPUT --dst 5x.2x.2xx.1xx -p tcp --dport 3306 -j REDIRECT --to-ports 3306
这会将所有从您的系统到默认 MySQL 端口 3306(5x.2x.2xx.1xx)的传出连接重定向回您自己系统的端口 3306。显然,将 5x.2x.2xx.1xx 和 3306 替换为真实的 IP 地址和端口号。
上面的命令将立即生效,但不会在重新启动后持续存在,除非您执行其他操作来使设置持久化,但也许您甚至不需要这样做?
答案2
不,不会工作 - 当系统看到 IP 时,它会跳过 DNS 查找(其中还包括主机文件查找)。如果它起作用的话(可能)会破坏东西。无论如何,它在文件中是向后的。
ip.add.re.ss hostname
所以你会想要
127.0.1.1 5x.2x.2xx.1xx
这是行不通的。我仍然有一种感觉它会破坏东西。
不过,可行的方法是使用名称,并根据需要更改名称。
IE,
127.0.1.1 dbhost
并将其更改为
5x.2x.2xx.1xx dbhost
如所须。并且mysql -h dbhost -u root -p
无论名称恰好指向哪个 IP,始终连接...