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

Ton*_*ony 65 hosts mac-osx

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

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

127.0.0.1:3000 xyz.com
Run Code Online (Sandbox Code Playgroud)

这不起作用,但没有指定该技巧的端口。有没有办法做到这一点,指定端口?

Chi*_*A-G 53

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

  • 这并不完全准确。如果机器配置为在 DNS 之前使用主机,那么即使存在同一目的地的 DNS 条目,也会使用主机条目。 (11认同)
  • 我能够在 Mac 10.10.2 上使用 `ifconfig` 和 `pfctl` 命令来完成这项工作。通过以下方法,我成功地将“127.0.0.1:3000”映射到我机器上本地的“mydomain.com”。我无法在此处发布此内容,但我可以在此处发布有关如何执行此操作的分步说明:http://serverfault.com/questions/102416/iptables-equivalent-for-mac-os-x /673551#673551 (6认同)
  • 天哪,我不知道。(后来)@John Gardeniers 天哪,我也不知道。 (2认同)

Kyl*_*ndt 48

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

使用 iptables:
MAC OS 是否使用 iptables/netfilter(我认为它没有使用)..?如果 OS X 使用 iptables,您可以将 xyz.com 指向主机文件中的某个 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
Run Code Online (Sandbox Code Playgroud)

:-)

  • ifpw(mac 友好)方式是 `sudo ipfw add 100 fwd 127.0.0.1,3000 tcp from any to any 80 in` 并删除它 `sudo ipfw flush` 就像一个魅力! (13认同)
  • OS X 源自 FreeBSD,因此它使用 ipfw 和 natd。 (4认同)
  • 我在 Mavericks 中得到了“未找到 iptables 命令”。 (3认同)

小智 15

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

  • 问:“我想这样做” 答:“不,你不想。” (11认同)
  • 这不是 OP 所要求的。 (9认同)