Назад | Перейти на главную страницу

https-соединение не может быть установлено за туннелем gre

У меня есть такой топологический граф сети:

   Local box                GateWay box
+---------------+    +--------------------------+   
|192.168.1.200  | -> |192.168.1.2     10.2.10.2 |
+---------------+    +--------------------------+
                                         |
                                         |GRE tunnel over pppoe
                                         |
                                         v
+----------------+      +--------------------------+
|  The Internet  |  <-- |54.179.141.101  10.2.10.1 |
+----------------+      +--------------------------+ 
                             Remote "proxy" box

И gateway boxppoe имеет mtu 1468, а также tun0 туннель (который является туннелем gre). Проблема в том, что когда это простой HTTP-запрос, все работает нормально. Но когда дело доходит до https, некоторые сайты вроде https://www.gravatar.com/avatar/8bd68135185d99a58252795422d21bb9?s=24&d=identicon&r=PG . Не удается установить https-соединение. И вывод с curl застрял на этом:

 curl -v "https://www.gravatar.com/avatar/8bd68135185d99a58252795422d21bb9?s=24&d=identicon&r=PG"
* Hostname was NOT found in DNS cache
*   Trying 68.232.44.121...
* Connected to www.gravatar.com (68.232.44.121) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):

Он застрял там только ждать тайм-аута. Но я могу выполнить тот же запрос, успешно на Remote "proxy" box. Итак, я предполагаю, что что-то не так с туннелем gre (или даже с правилами iptable, которые я написал?)

Итак, я получаю wirehark и записываю пакет на GateWay box и результат:

Это показывает, что при подтверждении ssl отсутствует сегмент.

Для получения дополнительной информации правило iptables выглядит следующим образом:

На коробке GateWay

*nat
:PREROUTING ACCEPT [61416:4763478]
:INPUT ACCEPT [19674:1619565]
:OUTPUT ACCEPT [18416:1183854]
:POSTROUTING ACCEPT [3:144]
-A POSTROUTING -o ppp0 -j MASQUERADE
-A POSTROUTING -o tun0 -j MASQUERADE #<- this is a gre tunnel and the route for this request
-A POSTROUTING -o tun1 -j MASQUERADE

В поле прокси

*nat
:PREROUTING ACCEPT [3997:794751]
:INPUT ACCEPT [297:43841]
:OUTPUT ACCEPT [612:44944]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE

Я погуглил, и некоторые ребята сказали, что это может быть связано с MTU, но как я могу дополнительно диагностировать эту проблему?

Это проблема MTU, это правило iptable (на шлюзе) заставляет его работать:

iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu