Marty Asked: 2019-05-30 08:47:41 +0800 CST2019-05-30 08:47:41 +0800 CST 2019-05-30 08:47:41 +0800 CST 为什么 Little Snitch 拒绝从 vpn.btguard.com 到 openvpn 的传入连接? 772 我在我的 BTGuard VPN 上,随机收到 Little Snitch 的拒绝连接弹出窗口。LS 条目中的注释是: 2019 年 5 月 29 日,vpn.btguard.com 尝试建立到 openvpn 的传入连接。请求被自动拒绝,因为这种连接不能延迟。 openvpn vpn 1 个回答 Voted Best Answer user1686 2019-05-30T09:32:35+08:002019-05-30T09:32:35+08:00 它可能类似于您上次连接时的杂散数据包。例如,OpenVPN 客户端重新启动,但服务器仍尝试通过之前的会话发送数据。 OpenVPN(默认情况下,在 BTGuard 的配置中)运行在 UDP 之上,UDP 是一种无状态传输协议,其中没有明确的“建立连接”或“断开连接”数据包,没有序列号,除了一对端口号之外什么都没有。 在 TCP 中,主机和防火墙一看到 SYN(握手)数据包就开始跟踪连接。但在 UDP 中,因为没有任何类型的“连接”数据包(只有数据包),防火墙在看到任何数据包后就开始跟踪“连接”。 在 TCP 中,主机和防火墙一看到 FIN(断开连接)数据包就会忘记连接。但在 UDP 中,因为没有任何类型的“断开连接”数据包,防火墙必须使用超时来使旧的“连接”过期(例如,只要空闲 60 秒或 180 秒或 10 分钟或类似时间,条目就会被删除)。 像 OpenVPN 这样的程序当然可能在其应用层协议中有“连接”/“断开连接”命令,但防火墙对此一无所知——它只看到 UDP 和一些内部数据。 所以有时会发生的是: 要么 OpenVPN 重新启动/退出并且防火墙忘记了与旧进程关联的所有条目,要么 VPN 连接空闲太久以至于防火墙由于达到到期时间而忘记了它。 但是,BTGuard 服务器没有收到 OpenVPN“断开连接”数据包,也没有因为超时而忘记连接,因此它会尝试通过旧会话向您发送一些数据。 防火墙看到传入的数据包,但无法知道它是一个新的“连接”还是属于以前建立的连接。(而且它也无法知道它最初是向外还是向内建立的。) 因为防火墙不记得这个端口对(由于在第 1 部分中忘记了它),它只是假设它必须是新的。因为它是传入数据包,防火墙会显示有关“传入连接”的警告。 这是一个猜测,但这是一个不错的猜测。
它可能类似于您上次连接时的杂散数据包。例如,OpenVPN 客户端重新启动,但服务器仍尝试通过之前的会话发送数据。
OpenVPN(默认情况下,在 BTGuard 的配置中)运行在 UDP 之上,UDP 是一种无状态传输协议,其中没有明确的“建立连接”或“断开连接”数据包,没有序列号,除了一对端口号之外什么都没有。
在 TCP 中,主机和防火墙一看到 SYN(握手)数据包就开始跟踪连接。但在 UDP 中,因为没有任何类型的“连接”数据包(只有数据包),防火墙在看到任何数据包后就开始跟踪“连接”。
在 TCP 中,主机和防火墙一看到 FIN(断开连接)数据包就会忘记连接。但在 UDP 中,因为没有任何类型的“断开连接”数据包,防火墙必须使用超时来使旧的“连接”过期(例如,只要空闲 60 秒或 180 秒或 10 分钟或类似时间,条目就会被删除)。
像 OpenVPN 这样的程序当然可能在其应用层协议中有“连接”/“断开连接”命令,但防火墙对此一无所知——它只看到 UDP 和一些内部数据。
所以有时会发生的是:
要么 OpenVPN 重新启动/退出并且防火墙忘记了与旧进程关联的所有条目,要么 VPN 连接空闲太久以至于防火墙由于达到到期时间而忘记了它。
但是,BTGuard 服务器没有收到 OpenVPN“断开连接”数据包,也没有因为超时而忘记连接,因此它会尝试通过旧会话向您发送一些数据。
防火墙看到传入的数据包,但无法知道它是一个新的“连接”还是属于以前建立的连接。(而且它也无法知道它最初是向外还是向内建立的。)
因为防火墙不记得这个端口对(由于在第 1 部分中忘记了它),它只是假设它必须是新的。因为它是传入数据包,防火墙会显示有关“传入连接”的警告。
这是一个猜测,但这是一个不错的猜测。