![OpenVPN 客户端正在监听 0.0.0.0](https://linux22.com/image/1628857/OpenVPN%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%AD%A3%E5%9C%A8%E7%9B%91%E5%90%AC%200.0.0.0.png)
我正在 Linux 中测试和校准 OpenVPN,最初使用免费的 VPN。
根据我所看到的所有来源,OpenVPN 代理应该监听 localhost:1194。实际上,它始终监听 0.0.0.0(原点),并且浏览器只会在通常的端口上连接到将代理设置为此地址的 OpenVPN。
man openvpn 中没有提到 0.0.0.0。网上有一个提及在服务器实现中显示了此地址,但我正在使用 client.ovpn 运行客户端,没有指示 0.0.0.0。网上的建议通常会警告应用程序在源上监听,但更重要的是,我看到的所有文档都假设 OpenVPN 在 localhost:1194 上监听,并且浏览器应该设置为这个代理。
为什么 OpenVPN 监听错误的地址?我该如何修复它?
编辑:
再次查看 man openvpn,我看到 0.0.0.0 被提及为“默认网关”,并且 localhost 被指定为管理 IP。
我记得看到的所有提及使用 OpenVPN 的商业 VPN 和使用 OpenVPN 的浏览器都建议或暗示使用 localhost:1194。这也暗示了大多数代理在本地主机上监听(Tor、Privoxy 等)。尽管有以下评论,但 OpenVPN 和 VPN 客户端确实被广泛讨论,就好像它们是代理一样 - 可用的监听服务,如 socks 或 http 隧道,应用程序将网络活动移植到这些服务。
我看到的都没有提到必须输入 0.0.0.0:1194 作为工作代理,事实上,除非明确给出地址:端口,否则 Firefox 将无法与 OpenVPN 一起使用。
我所拥有的有关使用 OpenVPN 的 iptables 的唯一教程仅建议指定 dport,但从不指定地址,表明端口位于本地主机上。
所有的提及都存储在网络上的文档中,我没有这些文档的 URL,而且现在也没有时间在线搜索。
关于 0.0.0.0 IP 的讨论表明,此处监听的服务在所有接口上都这样做,我立即认为这是有问题的。我宁愿将监听器限制在特定接口上,即 localhost。例如,Superuser 上的其他地方出现以下内容:
当服务监听 0.0.0.0 时,这意味着该服务正在监听所有配置的网络接口;当监听 127.0.0.1 时,该服务仅绑定到环回接口(仅在本地机器上可用)
IP 地址 0.0.0.0 可以具有非常不同的含义,具体取决于其使用地点。
它不是可以分配给实际网络接口的有效地址,以及 0.0.0.0/8 子网中的任何其他地址(即以 0. 开头的任何地址)。它不能用作任何 IP 数据包的源地址,除非计算机仍然不知道自己的 IP 地址并试图获取 IP 地址(典型示例:DHCP)。如果在路由表中使用,它标识默认网关;到 0.0.0.0 的路由是默认路由,即当没有更具体的路由可用于目标地址时使用的路由。最后,当在 netstat 命令的输出中看到它(这是您要求的)时,它意味着给定的套接字正在监听计算机拥有的所有可用 IP 地址;当计算机具有多个 IP 地址时,套接字只能绑定到特定的地址和端口对,或者绑定到端口和所有地址;如果您在那里看到 IP 地址,则意味着套接字只监听该端口和该特定地址;如果您看到 0.0.0.0,则表示它正在监听机器所有地址的该端口,包括环回地址(127.0.0.1)。
Lifewire 上也有类似的不祥之兆;更糟糕的是,OpenVPN 在初始化阶段以 root 身份运行,然后才返回到非特权用户,而且据我所知,Debian 对此没有缓解措施。
https://www.lifewire.com/four-zero-ip-address-818384
作为脚注,可以将任何给定服务器的 OpenVPN 设置为在本地主机上监听吗?
答案1
IP 地址0.0.0.0
表示默认地址。
OpenVPN 显然设置为通过 VPN 路由所有流量,因此它正在监听(并回答)客户端上的所有请求,并将它们路由到 VPN。
如果您将其设置为不监听0.0.0.0
,您将失去默认通过 VPN 路由所有内容的选项。
解释:OpenVPN 会创建一个虚拟网络适配器,对于操作系统来说,它与物理网络适配器相同。连接 OpenVPN 后,您的计算机将拥有两个这样的适配器。
为了让所有的网络请求都通过其适配器,OpenVPN 将其路由地址设置为0.0.0.0
。这是一个特殊的元地址,其含义是“我处理一切”。
在 OpenVPN 连接之前,物理适配器将自己宣传为0.0.0.0
,因此是它的驱动程序正在监听它。
OpenVPN 连接后,它会0.0.0.0
从物理适配器中移除并将其据为己有,因此现在 OpenVPN 驱动程序正在监听它。
让 OpenVPN 停止监听的唯一方法0.0.0.0
是断开 VPN。它需要监听才能正常工作。