使用 OpenVPN 时无法检索 http 站点,但 https 站点可以正常工作。为什么?

使用 OpenVPN 时无法检索 http 站点,但 https 站点可以正常工作。为什么?

我使用的 VPN 提供商使用 OpenVPN。我不想让任何其他流量离开我的计算机,因此我已将 iptables 设置如下:

iptables -P INPUT DROP 
iptables -P FORWARD DROP 
iptables -P OUTPUT DROP 

### Inbound rules
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

### Outbound rules
iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 1194 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

我只是允许 OpenVPN 流量和 DNS 查找(用于 OpenVPN 连接)。连接正常。

当我尝试访问http网站时,问题就出现了。连接超时。但是可以正常https工作!如果我这样做,iptables -P OUTPUT ACCEPT一切都会很完美!

我在使用两者时都使用 Wireshark 进行了检查iptables -P OUTPUT DROPiptables -P OUTPUT ACCEPT但没有发现任何不同,只是使用 DROP 时http无法获取站点。

这可能是什么问题?

答案1

您可能需要对规则的其他元素进行双重测试 - 在我看来,它们不接受 HTTP 或 HTTPS 流量 - 我想知道在摆弄规则时是否添加了(并可能随后删除了)HTTPS 流量 - 保持“已建立”连接完好无损并为您提供错误的读数。您可以使用 iptables -vnL 来测试此理论,并观察在执行各种请求时规则的计数器如何变化。

我希望你需要添加

> iptables -A OUTPUT -o tun+ -p tcp --dport 80 -j ACCEPT 
> iptables -A OUTPUT -o tun+ -p tcp --dport 80 -j ACCEPT

或者,如果您想要一个更通用的解决方案,让所有通过隧道的流量都能正常工作

> iptables -A output -o tun+ -j ACCEPT

相关内容