无法连接到某些 HTTPS 网站

无法连接到某些 HTTPS 网站

我刚刚搬到一个新公寓,通过路由器连接互联网,但我发现无法连接到很多使用 SSL 的网站。

例如尝试连接到 PayPal:

curl -v https://paypal.com
* About to connect() to paypal.com port 443 (#0)
*   Trying 66.211.169.3... connected
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* Unknown SSL protocol error in connection to paypal.com:443 
* Closing connection #0
curl: (35) Unknown SSL protocol error in connection to paypal.com:443 

curl -v -ssl https://paypal.com给出相同的输出。

对于某些网站来说,它是有效的:

curl -v https://www.google.com
* About to connect() to www.google.com port 443 (#0)
*   Trying 74.125.235.112... connected
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using ECDHE-RSA-RC4-SHA
* Server certificate:
*    subject: C=US; ST=California; L=Mountain View; O=Google Inc; CN=www.google.com
*    start date: 2011-10-26 00:00:00 GMT
*    expire date: 2013-09-30 23:59:59 GMT
*    common name: www.google.com (matched)
*    issuer: C=ZA; O=Thawte Consulting (Pty) Ltd.; CN=Thawte SGC CA
*    SSL certificate verify ok.
> GET / HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: www.google.com
> Accept: */*
> 
< HTTP/1.1 302 Found
< Location: https://www.google.co.jp/
  .
  .
  .

我使用的是 Ubuntu 12.04,同时还安装了 Windows 7。这些网站可以在 Windows 上运行 :(

不确定这些信息是否有帮助但我运行ifconfig并得到以下结果:

eth0      Link encap:Ethernet  HWaddr 1c:c1:de:bc:e2:4f  
          inet6 addr: 2408:c3:7fff:991:686b:8d18:81b3:8dd1/64 Scope:Global
          inet6 addr: 2408:c3:7fff:991:1ec1:deff:febc:e24f/64 Scope:Global
          inet6 addr: fe80::1ec1:deff:febc:e24f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:87075 errors:0 dropped:0 overruns:0 frame:0
          TX packets:54522 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:78167937 (78.1 MB)  TX bytes:10016891 (10.0 MB)
          Interrupt:46 Base address:0x4000 

eth1      Link encap:Ethernet  HWaddr ac:81:12:0d:93:80  
          inet6 addr: fe80::ae81:12ff:fe0d:9380/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:498
          TX packets:0 errors:26 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:17 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:630 errors:0 dropped:0 overruns:0 frame:0
          TX packets:630 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:39592 (39.5 KB)  TX bytes:39592 (39.5 KB)

ppp0      Link encap:Point-to-Point Protocol  
          inet addr:180.57.228.200  P-t-P:118.23.8.175  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:39631 errors:0 dropped:0 overruns:0 frame:0
          TX packets:22391 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:43462054 (43.4 MB)  TX bytes:2834628 (2.8 MB)

我已经运行了 PING:

ping www.paypal.com
PING e6166.b.akamaiedge.net (184.31.66.234) 56(84) bytes of data.
64 bytes from a184-31-66-234.deploy.akamaitechnologies.com (184.31.66.234): icmp_req=1 ttl=54 time=15.3 ms
64 bytes from a184-31-66-234.deploy.akamaitechnologies.com (184.31.66.234): icmp_req=2 ttl=54 time=15.0 ms
64 bytes from a184-31-66-234.deploy.akamaitechnologies.com (184.31.66.234): icmp_req=3 ttl=54 time=15.2 ms
64 bytes from a184-31-66-234.deploy.akamaitechnologies.com (184.31.66.234): icmp_req=4 ttl=54 time=17.2 ms
64 bytes from a184-31-66-234.deploy.akamaitechnologies.com (184.31.66.234): icmp_req=5 ttl=54 time=16.6 ms
64 bytes from a184-31-66-234.deploy.akamaitechnologies.com (184.31.66.234): icmp_req=6 ttl=54 time=16.7 ms
64 bytes from a184-31-66-234.deploy.akamaitechnologies.com (184.31.66.234): icmp_req=7 ttl=54 time=14.8 ms
^C
--- e6166.b.akamaiedge.net ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 6009ms
rtt min/avg/max/mdev = 14.878/15.890/17.214/0.901 ms

并且不带 www:

ping paypal.com
PING paypal.com (66.211.169.66) 56(84) bytes of data.
^C
--- paypal.com ping statistics ---
303 packets transmitted, 0 received, 100% packet loss, time 302265ms

跟踪路由:

traceroute www.paypal.com
traceroute to www.paypal.com (184.31.66.234), 30 hops max, 60 byte packets
 1  118.23.8.175 (118.23.8.175)  8.424 ms  8.404 ms  8.540 ms
 2  118.23.10.121 (118.23.10.121)  8.212 ms  8.189 ms  8.162 ms
 3  122.1.164.213 (122.1.164.213)  9.405 ms  11.359 ms  13.469 ms
 4  60.37.55.165 (60.37.55.165)  8.049 ms  8.072 ms  8.040 ms
 5  118.23.168.89 (118.23.168.89)  8.574 ms  8.549 ms  8.558 ms
 6  210.163.230.238 (210.163.230.238)  8.667 ms  7.605 ms  7.545 ms
 7  xe-4-0-0.a21.osakjp01.jp.ra.gin.ntt.net (61.213.169.218)  18.255 ms  18.232 ms xe-3-0-0.a21.osakjp01.jp.ra.gin.ntt.net (61.213.162.206)  19.042 ms
 8  * * *
 9  * * *
   .
   .
   .
29  * * *
30  * * *

不含 www:

traceroute paypal.com
traceroute to paypal.com (66.211.169.66), 30 hops max, 60 byte packets
 1  118.23.8.175 (118.23.8.175)  5.607 ms  5.674 ms  5.875 ms
 2  118.23.10.121 (118.23.10.121)  5.468 ms  5.453 ms  5.576 ms
 3  122.1.164.213 (122.1.164.213)  7.595 ms  10.062 ms  11.660 ms
 4  60.37.55.165 (60.37.55.165)  5.684 ms  5.660 ms  5.635 ms
 5  60.37.27.90 (60.37.27.90)  5.960 ms  5.924 ms  5.898 ms
 6  ae-11.r20.tokyjp01.jp.bb.gin.ntt.net (129.250.12.197)  86.468 ms  30.960 ms  30.899 ms
 7  as-1.r20.sttlwa01.us.bb.gin.ntt.net (129.250.4.189)  161.185 ms  144.343 ms  132.410 ms
 8  ae-1.r05.sttlwa01.us.bb.gin.ntt.net (129.250.5.47)  139.008 ms  127.377 ms  139.050 ms
 9  xe-0.sprint.sttlwa01.us.bb.gin.ntt.net (129.250.9.190)  116.006 ms  104.306 ms  115.954 ms
10  144.232.1.153 (144.232.1.153)  141.046 ms  129.870 ms  140.991 ms
11  sl-crs2-sj-0-5-2-0.sprintlink.net (144.232.18.204)  131.271 ms  131.248 ms  142.544 ms
12  sl-st31-sj-0-15-0-0.sprintlink.net (144.232.8.151)  129.543 ms  141.575 ms  141.066 ms
13  * * *
14  * * *
    .
    .
    .
29  * * *
30  * * *

tcpdump:

1   0.000000    114.178.88.59   66.211.169.66   TCP 76  37374 > https [SYN] Seq=0 Win=14520 Len=0 MSS=1452 SACK_PERM=1 TSval=68855 TSecr=0 WS=64
2   0.136291    66.211.169.66   114.178.88.59   TCP 80  https > 37374 [SYN, ACK] Seq=0 Ack=1 Win=4356 Len=0 MSS=1460 WS=1 TSval=3608913175 TSecr=68855 SACK_PERM=1
3   0.136322    114.178.88.59   66.211.169.66   TCP 68  37374 > https [ACK] Seq=1 Ack=1 Win=14528 Len=0 TSval=68889 TSecr=3608913175
4   0.137409    114.178.88.59   66.211.169.66   SSL 309 Client Hello
5   0.274446    66.211.169.66   114.178.88.59   SSL 95  [TCP Previous segment lost] Continuation Data
6   0.274469    114.178.88.59   66.211.169.66   TCP 80  [TCP Dup ACK 4#1] 37374 > https [ACK] Seq=242 Ack=1 Win=14528 Len=0 TSval=68923 TSecr=3608913175 SLE=2881 SRE=2908
7   7.117833    91.189.89.76    114.178.88.59   TLSv1   142 Application Data, Application Data
8   7.118823    114.178.88.59   91.189.89.76    TLSv1   216 Application Data, Application Data, Application Data, Application Data
9   7.393725    91.189.89.76    114.178.88.59   TCP 68  https > 41264 [ACK] Seq=75 Ack=149 Win=146 Len=0 TSval=875420654 TSecr=70634
10  60.301444   66.211.169.66   114.178.88.59   TCP 56  https > 37374 [RST, ACK] Seq=2908 Ack=242 Win=4597 Len=0

这是一家日本 ISP,尽管我使用电缆连接到调制解调器/路由器,但我需要添加用户名和密码,但使用 Ubuntu 的“有线”连接时,我无法添加这些。我的室友告诉我创建一个 OCN 连接,但我不确定这是某种网络的名称还是只是日本公司的名称……但在查看了她的电脑后,我们发现它是一个 PPPoE 连接。经过一番谷歌搜索,我了解到要创建 PPPoE 连接,我需要创建一个 DSL 连接,并且可以为其添加密码和用户名。我还将“有线”连接更改为不自动连接。

如果我直接连接到调制解调器,也会遇到同样的问题。

我尝试将 DSL MTU 更改为 500、1500、1492 和 1482,但没有什么变化。

另外由于某种原因,Ubuntu 并不总是能接收到连接,有时我必须重新启动才能连接。

答案1

这是一个老问题,但对于那些通过 Google 来到这里的人来说,这会有所帮助。问题是 SSL 上的碎片化很糟糕,会破坏协议。如果您使用的是 PPPOE,路由器/DSL/Cable 调制解调器中的正常 MTU 是 1492。这太高了,会导致碎片化。1476 是适用于大多数网站的神奇数字。一些网站使用不同的 SSL 实现,因此 1480 甚至 1488 可能有效。为了实现 MOST 兼容性,网络设备(路由器、调制解调器等)WAN 端的 MTU 应该是 1476。

答案2

您可以尝试以下几件事:

  1. 检查您的网卡设置。您的两个以太网接口均未显示 IPv4 地址。请确保您已打开 IPv4(您可能需要重新建立与路由器的连接以更新 IP)。如果这不起作用,请尝试关闭 IPv6 支持,看看是否有区别。通过右键单击时钟旁的网络图标(当处于以太网连接时,它是一对箭头,一个指向上方,另一个指向下方)并选择“编辑连接...”来执行此操作。在“IPv4 设置”选项卡中,确保将其设置为“自动(DHCP)”。如果要关闭 IPv6,请转到其选项卡并将其设置为“忽略”。

  2. 检查是否可以使用其他方法连接到站点。对于您无法连接的站点,响应是什么ping?怎么样traceroute(您可能需要安装 traceroute 才能使用它,仅供参考)?他们的响应可能会帮助您解决问题。如果他们无法访问 URL 的服务器,那么可能是 DNS 问题(但是,如果他们可以访问 URL 的服务器,但随后被丢弃,这可能只是意味着这些命令被阻止了)。

  3. 绕过路由器。如果您的路由器和调制解调器是两台不同的机器,请尝试将您的计算机直接连接到调制解调器,看看是否有任何变化。

  4. 重新启动调制解调器和路由器。有时,他们就是很糟糕。

  5. 重启你的电脑。有时,他们就是很糟糕。

  6. 尝试使用另一台计算机。如果你有一台电脑,那么这台电脑出现故障时,另一台电脑能正常工作吗?如果不行,那么可能是你的电脑出了问题。

  7. 清除计算机的缓存、cookie 等。有时,不良会话 cookie、缓存等可能会干扰与网站的连接(不久前我在使用 Google 时就遇到过这个问题)。清除它们并重新开始,看看会有什么结果。

  8. 断开所有 VPN 连接。点对点协议通常用于 VPN(PPP 接口),而 VPN 可能会干扰与站点的连接。右键单击时钟旁的网络图标,找到“VPN 连接”条目,并确保未选中任何列表(如果您没有“VPN 连接”菜单项,则表示您没有设置该菜单项),以确保您未连接。如果已选中任何列表,则表示您已连接到该网络,请断开与该网络的连接。

记住:你所做的每一件事,并非都会导致简单的“成功或失败”,任何服务器对您的请求的反应的变化会告诉我们一些信息。因此,如果您执行上述任何操作并收到新消息,请不要忘记更新您的问题。

答案3

我在实践中已经两次看到过这种行为,并找到了以下解决方案。

  • 本地网络中的某台计算机成功尝试了中间人攻击。它对网关进行 ARP 欺骗,从而将所有流量重定向到这台机器,修改请求和其他恶意内容。这台机器运行的是 Windows,被发现感染了一些恶意恶意软件。一旦这台机器与网络物理断开连接,症状就会消失。
  • 一个MTU 问题在您的网关或其他网关上。在 IPv4 中,如果路由流量的网络的帧大小不同,网关负责在网络上对 IP 数据包进行分段和重新组装。对于使用 PPPoE/PPPoA 的 DSL 连接,MTU 大小通常小于 LAN 端的 1500 字节。此外,中间的路由器也会发生故障,您需要启用TCP MSS 夹紧在你的路由器上。我总是需要在之前的 ISP 连接上设置此选项,但它解决的不仅仅是 SSL 相关问题。检查您的调制解调器/路由器是否有这样的选项。将此视为一种解决方法。
  • 我当时在一个网络中,可能正在运行透明的代理也可以传递 SSL 流量,但由于某种原因在 TLSv1 上失败。使用 VPN 连接时,相同的请求有效。可怕的
    尝试curl使用选项运行--sslv3。如果这样可以解决问题,那么问题就解决了。

可以尝试的一般方法:

  • 检查您的调制解调器/路由器是否运行最新固件。如果没有,请尝试升级。
  • 使用或 Whireshark 捕获流量tcpdump并进行分析(例如,将其发布在此处)。

      # 1. start the dump
    $ sudo tcpdump -w httpstrafficdump.pcap -i eth0 -s 0 port 443
      # 2. open a new terminal window and do your HTTPS request there (curl/browser)
      # 3. end tcpdump (Ctrl+C)
      # 4. open the file in wireshark
    $ wireshark httpstrafficdump.pcap
    

    如果你得到重组错误或者前一个片段丢失反复出现这种情况,这显然是由于错误的 MTU 大小导致数据包丢失。
    但是,HTTPS 流量是加密的,很难从网络流量本身进行分析。

编辑:

从你的 tcpdump 来看,你的 SSL 问题的根源很明显:TCP Previous segment lost。此处应适用常规网络故障排除,但它可能超出了您的本地网络范围并且是您的 ISP 的问题。

答案4

谢谢大家的帮助,问题终于解决了!

我尝试限制 MTU 以查看是否有帮助,最终使用pppoeconfPPPoE 连接进行设置,因为它限制了我的 MTU。然后我禁用了之前使用的 DSL 连接。

对于遇到类似问题的人,您可以通过输入sudo ppoeconf并按照说明尝试此解决方案。然后,您可以连接pon adsl-provider和断开连接poff

相关内容