拡張 POSIX シェルスクリプト Advent Calendar 2013、23日目の記事です。 ネタの在庫はともかく、書く気力がありません。 いくつかの記事がそれなりにうけたこともあり、頭が満足してしまったようです。
https://twitter.com/satoh_fumiyasu/status/415045480477765633
燃え尽きたぜ...真っ白に、 真っ白な灰に... (Advent Calendar 書けない
仕方ないので、過去に作成した bash スクリプト作品を紹介する内容で誤魔化します。 すみません。Linux 向けの話です。
Linux のネットワークコマンドと iproute2
ネットワーク設定を管理するコマンドと言うと何を思い浮かべますか?
一般的には ifconfig
, netstat
, route
, arp
あたりですよね。
UNIX 系の OS
であれば、まず間違いなくデフォルトでインストールされているでしょう。
OS の種類により一部非互換な仕様はありますが、ほとんどの OS
で似たような機能とインターフェイスを備えています。
一方、Linux には ip
(8) というコマンドも用意されています。
iproute (RHEL 系、旧 Debian 系) あるいは iproute2 (Debian 系)
という名前のパッケージに含まれているコマンドです。
(正式名称は「iproute2」のようですが何が「2」なのかは調べていません)
ip
コマンドは 1990 年代後半には各種 Linux
ディストリビューションに含まれており、Linux の歴史の中では比較的古い存在です。
ip
は ifconfig
などでは対応できない Linux
の低レベルなネットワーク設定の表示・変更に対応しています。
その昔はドキュメントがほとんど用意されておらず、
一部マニアがマニアックなネットワーク設定をするために利用する程度で、
一般的な Linux ユーザーには認知されていませんでした。
特に ip
が利用されていたのは「ポリシールーティング」が必要な場面でした。
「linux ip route ポリシー」で Web 検索
すると、多くの例が紹介されています。
iproute2 にはほかにもネットワーク統計情報を表示する ss
(8)、
トラフィックコントロールを管理するための tc
(8) などが含まれています。
非推奨になる Linux のネットワークコマンド
旧来からの UNIX / Linux ユーザーに悲しいお知らせです。
Linux 向けに ifconfig
, netstat
, route
, arp
などを提供してきた
net-tools パッケージは非推奨となり、iproute2 で置き換えられることになりました。
まだしばらくは旧来のコマンドも残されるようですが、
標準ではインストールされなくなったり、その先の将来はなくなる可能性すらあります。
幸い、最近の iproute2 はマニュアルが整備されていますし、関連情報も増えつつあります。 しかし、旧来のコマンドに慣れたユーザーにとっては辛いところです。
旧来のコマンドと iproute2 のコマンドの対応表を紹介してくれているページを紹介します。
- Deprecated Linux networking commands and their replacements | Doug Vitale Tech Blog
旧来のネットワークコマンドラインを iproute2 コマンドラインに変換する
ifconfig
, netstat
のコマンドラインを ip
, ss
のコマンドラインに変換する bash スクリプトを作ってみました。
- Convert to Linux iproute2 command-line from legacy networking command-line
ダウンロード:
$ git clone https://github.com/fumiyas/linux-legacynetcmd2iproute2.git
$ cd linux-legacynetcmd2iproute2
ifconfig
, netstat
のコマンドラインから ip
, ss
のコマンドラインを表示する:
$ ./ifconfig2.bash
ip address
$ ./ifconfig2.bash eth0
ip address show dev eth0
$ ./ifconfig2.bash eth0 192.168.0.1 netmask 255.255.0.0
ip address add 192.168.0.1/255.255.0.0 dev eth0
$ ./netstat2.bash
ss -r
$ ./netstat2.bash -i
ip -r -s link
$ ./netstat2.bash -a
ss -r -a
$ ./netstat2.bash -antp
ss -a -n -t -p
ifconfig
, netstat
のコマンドラインから ip
, ss
のコマンドラインを表示して実行:
$ ./ifconfig2.bash --x <ifconfig(8) のオプション>
…ip のコマンドラインに変換して表示・実行…
$ ./netstat2.bash --x <netstat(8) のオプション>
…ip あるいは ss のコマンドラインに変換して表示・実行…
ifconfig
, netstat
のコマンドラインから ip
, ss
のコマンドラインを実行(コマンドラインの表示はしない):
$ ./ifconfig2.bash --xx <ifconfig(8) のオプション>
…ip のコマンドラインに変換して実行…
$ ./netstat2.bash --xx <netstat(8) のオプション>
…ip あるいは ss のコマンドラインに変換して実行…
旧来のコマンド名でインストールするとラッパーとして動作し、
旧来のコマンドと同等に実行することもできます。
ただし、/sbin/ifconfig
、/bin/netstat
が存在する場合は、
内部でそちらを実行します:
$ sudo install -m 0755 ifconfig2.bash /usr/local/sbin/ifconfig
$ sudo install -m 0755 netstat2.bash /usr/local/bin/netstat
$ /usr/local/sbin/ifconfig <ifconfig(8) のオプション>
…ip のコマンドラインに変換して実行…
$ /usr/local/bin/netstat <netstat(8) のオプション>
…ip あるいは ss のコマンドラインに変換して実行…
Enjoy!
…
一部対応していないオプションもあります。
その際はエラーを表示するようにしていますが不完全かもしれません。
需要がありそうなら arp
, route
のラッパースクリプトも検討します。
ところで、12月25日はクリスマスな上に、
OSS 界隈で地味に活躍されているふみやすさんの誕生日ですね!
っ http://www.amazon.co.jp/registry/wishlist/27M7TV8CEEF6G?sort=priority
逆に、あなたの書いた OSS や Blog や Advent Calendar が気に入ったら何か送りたく なってしまうかもしれないので、プロフィールや Web サイトに あなたの Amazon 欲しいものリストの URL を貼っておいてくださいね!
私が勤める OSSTech っていう某弊社で社員募集しているようです。 人材紹介会社を介さなければ、入社後に 20万円のボーナス! 「ふみやすっていう人に紹介された」と言ってもらえると私にもボーナス!! → https://www.osstech.co.jp/recruit/
よろしければ、これまで参加した/参加予定のほかの Advent Calendar もどうぞ。
- Ansible Advent Calendar 2023
- シェル芸 Advent Calendar 2023
- 闇の魔術に対する防衛術 Advent Calendar 2023
- Ansible Advent Calendar 2023
- Ansible Advent Calendar 2020
- DNS温泉 Advent Calendar 2019
- OSSTech Advent Calendar 2019
- Ansible Advent Calendar 2018
- OSSTech Advent Calendar 2018
- Debian/Ubuntu Advent Calendar 2017
- Linux Advent Calendar 2017
- Shell Script Advent Calendar 2017
- Shell Script Advent Calendar 2016
- OpenLDAP と仲間たち Advent Calendar 2015
- Postfix Advent Calendar 2014
- 拡張 POSIX シェルスクリプト Advent Calendar 2013