Fedora29への更新
少し前ですが、作業用のデスクトップをFedora29に更新しました。記事投稿のテストも兼ねて感想を。
Fedora29では大きな変更(*1)もないようでほとんど戸惑うことなく使用できます。一点だけ、VMWare上にインストールした場合に、外部へssh接続しようとすると以下のようなエラーとなり、鍵関連の設定がどこかまずいのかと悩みました。
$ ssh xxxx packet_write_wait: Connection to xx.xx.xx.xx port 22: Broken pipe
検索すると色々出てきますが、OpenSSH 7.8でQoSのデフォルト設定が変更になったことが原因です(Fedora29のOpenSSHはVer. 7.9)。変更履歴はこちら(https://www.openssh.com/txt/release-7.8)を見ていただくとして、要約すると、従来はIPQoSオプションのデフォルト設定値が対話的セッションの時はlowdelay、非対話的セッションの時はthroughputだったのが、7.8で対話的セッションの時はaf21、非対話的セッションの時はcs1に変更になりました。
一方VMWare側はQoSのDSCP値が設定されているとRSTを送り返すため(*3)、TCP接続が切断され、上記のエラーとなります。これは、最近アップグレードしたVMWare Workstation 15/VMWare Fusion 11でも現象は変わりませんでしたが、将来のバージョンでは対応されるかもしれません。
上記の理由のため、この問題を回避するには、ssh接続時のQoSオプションを従来の値(lowdelayかthroughput)に戻すことになります。これをsshコマンドで都度行うには以下のようにします。
ssh -o IPQoS=lowdelay target_host
ここでは対話セッションなのでlowdelayを指定していますが、throughputでも問題ありません。ネットで広まっている例ではthroughputが多いですが、あまり気にする必要はないでしょう。毎回オプション指定するのも面倒なので~/.ssh/configに以下のような記述をしておけば、今までどおりオプション指定を省略してssh接続できるようになります。
Host * IPQoS=lowdelay
Fedora29の感想というか、VMWare+OpenSSH7.8〜の話になってしまいました。繰り返しになりますが、Fedora29は従来から大きな変更もなく新しいバージョンのソフトウェア(PHPは7.2.13)が使えるので開発にはおすすめです。あと壁紙がかっこいいです。

(*1) ここでいう大きな変更とはiptablesがfirewalldになったり、/etc/init.dからsystemctlになったりするような変更。
(*2) IPQoSオプションの詳細はssh_configのmanを参照。
(*3) https://communities.vmware.com/thread/590825 参照。VMWare社の公式な文書は見つけられませんでした。
投稿日:2019/01/26 00:51
タグ: Linux