Red Hat Enterprise Linux 7.1でもssコマンドは腐っているので使い物にならない

以前、CentOS 7 (7.0.1406)およびRed Hat Enterprise Linux 7のssコマンドが腐っていたことにビックリして、「ssコマンドはバグと地雷の塊なのでnetstatの代わりにならない」という記事を書きました。

これはどういうお話かと言うと:

  • RHEL 7からはnetstatコマンドなどが収録されているnet-toolsパッケージが非推奨となり、デフォルトではインストールすらされなくなりました。
  • しかしnetstatコマンドの代替であるssコマンドはかなり雑な感じで、UDPポートを「tcp」と表示するひどいバグがあります

というお話でした。

このssコマンドのバグは、2014年2月にRed Hat Bugzillaにも上がっていました。

というわけで、さすがに次のバージョンでは直るだろうと待っていたら、ようやくRed Hat Enterprise Linux 7.1が2015年3月にリリースされました。


ということでさっそく試してみます。ちなみにssコマンドが収録されているiprouteパッケージのリリースは「21.el7」なので、RHEL 7(無印)のときの13.el7からいくつか修正が当たっているようです。これは期待できるぞ!

$ yum info iproute
読み込んだプラグイン:langpacks, product-id, subscription-manager
インストール済みパッケージ
名前 : iproute
アーキテクチャー : x86_64
バージョン : 3.10.0
リリース : 21.el7
....(省略)....

さっそくssコマンドに-anオプションを付けて実行してみました。ntp(123/udp)やmdns(5353/udp)と、ssh(22/tcp)が上がっているので、これらがちゃんと「udp」と「tcp」と分けて表示されるはず……。

うおぉぉぉぃい! 直っとらんやんけ!!!!

上の図で「UNCONN」と表示されているポートは、本当はUDPなのですが、やっぱり「tcp」と表示されちゃってます。腐ってます(早すぎました)。これはRHEL 7.1も、絶対に本番環境への導入はできないなぁ……。

というわけで前回の記事の繰り返しになりますが、RHEL 7のssコマンドは、Red Hat Enterprise Linuxが利用されるようなエンタープライズ用途での利用シーンで信頼できるレベルには全く達していない、という結論です。Red Hat社が非推奨と言っていますが、それは華麗に無視してnet-toolsパッケージをインストールして、netstatコマンドを使いましょう。

追記(2015-03-08)

RedHatは関係ないのでは」「パッチを本家iproute2プロジェクトに投げないと意味ない」的なコメントをいくつか頂いたので補足しておきます。

本家のiproute2の方では、既にこの問題は1年以上前の2014/02/10のv3.14.0から修正されています。

そのため、あとはこれをRed Hat社がいつバックポートしてRed Hat 7.1上のssコマンドを修正するか、という話だけです。