在pptpd vpn服务器之后运行docker容器时tls握手超时

问题描述

如何复制它:

  1. 创建PPTP服务器
  2. 从您的主机连接PPTP服务器
  3. 在主机中运行Debian docker容器
  4. 在Docker容器中运行以下命令:curl --insecure -v -i https://www.google.com
  5. 获得以下结果:
* Rebuilt URL to: https://google.com/
*   Trying 216.58.221.238...
* TCP_NODELAY set
* Connected to google.com (216.58.221.238) port 443 (#0)
* ALPN,offering h2
* ALPN,offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.2 (OUT),TLS header,Certificate Status (22):
* TLSv1.2 (OUT),TLS handshake,Client hello (1):
* UnkNown SSL protocol error in connection to google.com:443 
* Curl_http_done: called premature == 1
* stopped the pause stream!
* Closing connection 0

如果执行以下操作之一,则不会发生此问题:

  1. 请勿使用PPTP服务器,并在docker容器中运行curl
  2. 请勿使用docker容器,并在pptpd服务器之后的主机中运行curl
  3. 不要在相同的VPN和docker条件下连接到https://www.google.com,而是连接到https://www.wordpress.com

解决方法

原来是PPTP MTU问题。 我必须将ppp0的mtu设置为较低的值,以防止出现此问题。