何が根本原因が不明なのだが、備忘録。
構成
Azure Classic、CoreOS 1465.6.0 が動作する 2つのインスタンスがあり CloudServer のロードバランサで振っている。
Deis Workflow v2.16.0。
git push は Deis が動作している Kubernetes 上の Ubuntu インスタンス内から行った。
症状
git push deis master
で無応答になる。無事に繋がる場合もある。deis-builder のログを見ると、接続はしたものの、その後のネゴシエーションで固まっているように見える。
追跡
#!/bin/bash
ssh -vvv "$@"
なる ~/sshv.sh
に 755 設定の上、 GIT_SSH=~/sshv.sh git push deis master
などしてみる。
ログをつらつらと眺めると、下記の通り SSH2_MSG_KEY_ECDH_REPLY
のところで止まる。どうやら固まるときは再現性 100 %でここで固まる。
debug1: kex: server->client cipher: aes128-ctr MAC: hmac-sha2-256-etm@openssh.com compression: none
debug1: kex: client->server cipher: aes128-ctr MAC: hmac-sha2-256-etm@openssh.com compression: none
debug3: send packet: type 30
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
解決手段
echo 1 > /proc/sys/net/ipv4/tcp_mtu_probing
なぜかこれで治った。結果から MTU が大きすぎたことが原因であることは解るのだが、どこで MTU が絞られているのかが解らない…。