我可以在 OS X 上的 /etc/hosts 中的条目中指定端口吗?

我可以在 OS X 上的 /etc/hosts 中的条目中指定端口吗?

可能重复:
如何使用 DNS 将域名重定向到我的服务器上的特定端口

我想欺骗我的浏览器转到 localhost:3000 而不是 xyz.com。我进入 OS X 10.5 上的 /etc/hosts 并添加以下条目:

127.0.0.1:3000 xyz.com

这不起作用,但如果不指定端口,这个技巧就有效了。有没有办法通过指定端口来实现这一点?

答案1

不,hosts 文件只是在没有 DNS 服务器时静态解析名称的一种方法。

答案2

hosts 文件用于 DNS 解析。DNS 将名称解析为 IP 地址,恐怕与端口无关。您需要结合使用 hosts 文件来重定向端口(通过更改目标端口来破坏 TCP 标头)。

使用 iptables:
MAC OS 是否使用 iptables / netfilter (我不认为它使用)?如果 OS X 使用 iptables,您可以将 xyz.com 指向 hosts 文件中的某个 ip,如 157.166.226.25,然后:

sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -d 157.166.226.25 -j DNAT --to-destination 127.0.0.1:3000

:-)

答案3

您不需要在 hosts 文件中指定端口。只需像省略端口那样进行输入,如 127.0.0.1 xyz.com,这会将您定向到本地主机,然后只需将端口 3000 添加到 URL 末尾即可...http://xyz.com:3000

答案4

针对此问题的 DNS 解决方案是使用 SRV 记录:

http://en.wikipedia.org/wiki/SRV_record

这些是允许 DNS(最初是“名称到数字”或“数字到名称”的分布式数据库)包含“名称到服务端点”的一种方式,它可以(可选)包含协议和端口。

坏消息是,必须开发应用程序才能使用 SRV 记录,因此它不是您要尝试执行的操作的直接解决方案。

相关内容