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


18

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

有办法吗?或者Windows本身不允许这样做?

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

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


1
HOSTS文件仅将名称与IP地址相关联,而不是与IP +端口相关联。但是,请检查superuser.com,通过描述您尝试做的更多细节(对于Web服务器等等),因为有很多方法可以实现这种类型的映射,但总是取决于具体情况在眼前。

您需要NGNIX或Apache HTTP服务器作为代理服务器将http请求转发到适当的应用程序 - >侦听特定端口
Musa

Answers:


17

您无法将端口号与映射到hosts文件中的IP的主机名相关联。你可以通过Fiddler使用Fiddler来实现这个目的: 

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

7
对科技用户的好建议。只是为了澄清,1)首先安装Fiddler 2)然后打开它并转到规则菜单并选择自定义规则选项(或在Windows上按Ctrl + R)。这将在记事本中打开一个JS文件。3)找到静态函数OnBeforeRequest并将@John建议的脚本粘贴到其体内。HostNameIs也不起作用,应该是HostnameIs。希望这可以帮助。
Riz 2013年

您是否知道任何可以用于相同效果的开源替代品(james,owasp zap或其他)?
Marc.2377

16

只需使用没有端口的IP地址。例:

192.168.2.50  example.com

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

http://example.com:5555/

(该hosts文件可在以下找到C:\Windows\System32\drivers\etc\hosts。)


添加路径和要编辑的文件的名称会很有帮助。
nyedidikeke 2016年

@nyedidikeke感谢您的评论,我修复了这个
devi

1
在编辑文件时,是否可以更新以及未指定端口号的原因C:\Windows\System32\drivers\etc\hosts
nyedidikeke 2016年

这在其他答案中有所涉及。
斯科特

5
  • hosts文件仅用于主机名解析
  • 浏览器,在没有直接指定端口的:即<hostname>:<port>默认端口80

典型问题场景

  1. 应用程序通常设置他们的服务器相同的默认IP地址127.0.0.1又名localhost (在hosts文件中定义)
  2. 为了避免可能的其他现有/正在运行的服务器之间的冲突,应用程序通常允许您更改端口,但不能更改IP地址。

    2A。如果您可以在环回保留地址空间 中将服务器IP地址更改为另一个127.0.0.0/8,那么您可能不会尝试在hosts文件中设置端口。

可能解决方案

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


概观

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

操作

  • 启动服务器 localhost:8081
  • hosts文件中的“本地DNS”添加为新行
    • 127.65.43.21 example.app
      • 127.0.0.0/8可以使用网络中的任何空闲地址。
      • 注意:我假设127.65.43.21:80没有被其他服务占用。
      • 你可以查看 netstat -a -n -p TCP | grep "LISTENING"
  • 使用netsh命令实用程序 添加以下网络配置
    • netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  • 访问服务器 http://example.app

注意:
- 需要使用管理员权限执行这些命令/文件修改

- netsh portproxy甚至只需要使用v4tov4的ipv6库,通常它们也会默认包含在内,否则使用以下命令安装它们:netsh interface ipv6 install


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

netsh interface portproxy show v4tov4

您可以使用以下命令删除该条目

netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21


资源链接:

注意:这个答案是我在stackoverflow上的类似问题/答案中讨论的答案的重复

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.