如何在 Windows hosts 文件中指定主机名的 IP 和端口?

如何在 Windows hosts 文件中指定主机名的 IP 和端口?

我想在 Windowshosts文件中指定具有两个不同端口的主机名。

有办法吗?还是 Windows 本身不允许?

过去 8 个小时里我一直在浪费时间寻找解决方案。

是否可以在主机文件中指定端口hosts?例如:127.0.0.1:80127.0.0.1:9211

答案1

只需使用不带端口的 IP 地址即可。例如:

192.168.2.50  example.com

然后,从浏览器(或其他程序)访问 192.168.2.50:5555:

http://example.com:5555/

hosts文件可以在以下位置找到:

Linux /etc/hosts

视窗C:\Windows\System32\drivers\etc\hosts

答案2

您无法将端口号与映射到 hosts 文件中 IP 的主机名关联起来。您可以使用以下方法实现此目的Fiddler尽管使用 FiddlerScript: 

if (oSession.HostnameIs("somesite.com")){
    oSession.bypassGateway = true;
    oSession["x-overrideHost"] = "1.2.3.4:8080";
}

答案3

  • hosts文件仅用于将主机名解析为 IP 地址
  • 如果您没有在 URL 中指定端口(例如),<protocol>://<hostname>[:<port>][/path]您的浏览器将使用协议的默认端口:HTTP/80, HTTPS/443, FTP/21

示例问题场景

  1. 应用程序通常将其服务器设置为相同的默认 IP 地址127.0.0.1localhost又称定义在主办方文件)
  2. 当多台服务器共享同一个 IP 时,为了允许将流量路由到正确的服务器,应用程序通常允许您根据需要修改其端口,但不允许修改其 IP 地址。
    • “如果”您可以将服务器 IP 地址更改为另一个环回保留地址空间 127.0.0.0/8,那么你可能不会尝试在主办方文件

可能的解决方案

你可以使用 Windows 的内置网络工具来解决此问题netsh作为端口代理。


概述

http://example.app
|                                 <--browser defaults to HTTP port 80
+-> http://example.app:80          
    |                             <--Hostname resolved to IP by Hosts File
    +-> http://127.65.43.21:80    
        |                         <--Link by netsh Utility
        +-> http://127.0.0.1:8081 

操作

  1. 在自定义端口上启动应用的 HTTP 服务器:localhost:8081
  2. 在中添加一行主办方将免费 IP 地址映射到应用程序主机名的文件:
    • 例子:127.65.43.21 example.app
    • 我建议,但可以使用127.65.43.21子网中的任何免费地址127.0.0.0/8
    • 验证该 IP127.65.43.21:80未被其他服务使用。如果已被使用,请使用其他 IP。使用以下方式检查:netstat -a -n -p TCP | FINDSTR "LISTENING"
  3. 添加以下网络配置,使用netsh
netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  1. 尝试访问服务器http://example.app

笔记:

  • 这些命令/文件修改需要使用管理员权限
  • netsh portproxy 需要 IPv6 库,甚至只是使用v4tov4。通常,这些将默认安装,否则,使用netsh interface ipv6 install

你可以查看条目您已使用以下命令添加:

netsh interface portproxy show v4tov4

你可以删除条目使用以下命令:

netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21

资源链接:

注意:这个答案与我在这个 stackoverflow 上类似的问题/答案。

相关内容