`127.0.0.1:65535`是`/ dev / null`的网络等价物吗?

时间:2017-08-17 10:01:32

标签: firefox proxy network-programming firefox-webextensions pac

在MDN的proxy example中,我看到他们使用127.0.0.1:65535作为无效网址 (link to the source):

const allow = "DIRECT";
const deny = "PROXY 127.0.0.1:65535";
...
function FindProxyForURL(url, host) {
  if (blockedHosts.indexOf(host) != -1) {
    browser.runtime.sendMessage(`Proxy-blocker: blocked ${url}`);
    return deny;
  }
  return allow;
}

端口65535有什么特别之处吗?假设没有进程会侦听该端口是否安全?

Proxy Auto-Configuration (PAC) files的文档中,我没有看到以其他方式阻止请求的简单方法。例如,有DIRECTPROXYSOCKS但没有REJECTDENY。我假设PROXY 127.0.0.1:65535是拒绝请求的官方方式。

假设向127.0.0.1:65535发送请求会拒绝它们是否安全?

3 个答案:

答案 0 :(得分:2)

通常,“9”用作“丢弃服务”的默认端口。 65535没有什么特别的,但最大可能的端口号。我认为他们使用它是因为他们相信没有人会听到这个端口。

然而,这种方法并不安全,因为1)任何人都可以编写一个监听端口65535的服务器套接字; 2)端口号可以随机分配给客户端作为临时端口。

答案 1 :(得分:1)

  

假设向127.0.0.1:65535发送请求会拒绝它们是否安全?

不,这不安全。

这只是本地计算机上的最后端口。我完全能够在没有任何特殊权限的情况下打开它并向其发送数据。

他们只是将它用作有效地址,但使用不太可能的端口。不是最好的解决方案,但可能足够好,例如代码

没有特殊规定,65535是代理的有效端口。如果您只是发生来运行有效的代理,那么示例将无法阻止。

答案 2 :(得分:1)

除了其他答案之外,丢弃协议(端口9)最接近于/dev/null。引用Wikipedia article

  

Discard Protocol是Unix文件系统节点/dev/null的TCP / UDP等价物。这样的服务保证接收发送给它的服务,并且可以用于调试需要保证接收有效载荷的TCP和/或UDP代码。

     

在各种路由器上,默认情况下,此Discard协议的TCP或UDP端口9(或用于中继ICMP数据报的Echo协议的端口7)也用作从中继Wake-on-LAN(WOL)魔术数据包的代理互联网到本地网络上的主机以远程唤醒它们(这些主机还必须将其网络适配器配置为接受WOL数据报,并且路由器必须启用此代理设置,并且还可能在其嵌入式中配置转发规则防火墙在Internet上打开这些端口)。

通过代理API阻止请求也不是典型用法。相反,webRequest API更适合阻止请求。有change the example的讨论。

我认为这解释了为什么没有明确支持拒绝PAC事实上的标准中的请求,以及为什么使用将流量重定向到未使用的端口或域的变通方法。