Net-Toolsが完全に廃止されることは秘密ではありません。 はい、私を含め、パブロフの条件反射の前の多くの管理者は、 ifconfig
、 route
、 netstat
コマンドに精通しifconfig
ます。 一見、何かを変更する理由はなく、最高は常に善の敵です。
Net-Tools
が同じではない理由と、 iproute2
シームレスに切り替える方法を見つけましょう。
ifconfigの何が問題になっていますか?
Net-Toolsに対する主張はどのようなもので、どの程度合理的ですか?
- 廃止された
ioctl
使用し、iproute2
は現在のnetlink
使用します。 -
ifconfig
は、セカンダリIPアドレスを個別のインターフェースとして表示します。
root ~ $ ifconfig dummy0:1 1.2.3.4 up root ~ $ ifconfig dummy0 dummy0 Link encap:Ethernet HWaddr FE:50:31:E6:14:17 BROADCAST NOARP MTU:1500 Metric:1 [...]
-
ifconfig
は、マーキングなしでセカンダリIPアドレスをifconfig
しません 。 次のコマンドを実行して、ifconfig
の出力を確認してください。eth0
インターフェイスでは、IPアドレスが既に構成されている必要があります。
ip addr add 192.168.1.2/24 brd + dev eth0
-
ifconfig
はCIDRの存在を認識しません。 従来のIPv4アドレスのみ。 -
ifconfig
は、アドレスの代わりにトンネルインターフェイスtun
、tap
、固体ゼロの物理アドレスを表示できません。
root ~ $ ifconfig tun0 root ~ $ tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.0.254.6 PtP:10.0.254.5 Mask:255.255.255.255
-
ifconfig
はtun
、tap
デバイス、静的l2tp
、l2tp
、gre
トンネルの作成を許可しません。 -
ifconfig
はピアIPアドレスを表示しません(ピアIP)。eth0
でピアツーピアネットワークを構成できますが、ifconfig
はリモートIPを表示しません。
root ~ $ ip addr add 192.168.13.37/32 peer 192.168.13.38 dev eth0 root ~ $ ifconfig eth0 192.168.13.37
-
netstat
、SNMP変数の説明を表示する統計表示モードで友好的になろうとしますが、これは常に正当とは限りません 。 リンクはtimeout in transit
何であるかをどう理解するかに関する物語timeout in transit
。 さらに、統計に対するそのような結論は、正規表現プロセッサーに提供するのは容易ではありません。
Icmp: 3327 ICMP messages received 17 input ICMP message failed ICMP input histogram: destination unreachable: 3151 timeout in transit: 56
-
netstat
は、 statistics.cファイルで定義されている/proc/net/{snmp,netstat}
からのSNMP変数のみを表示するため、完全な統計を表示しません。
カテゴリー | Netstat | Nstat | 違い |
---|---|---|---|
IP | 6 | 17 | +11 |
IP6 | 14 | 32 | +18 |
Icmp | 6 | 29日 | +23 |
ICCM6 | 25 | 46 | +21 |
Tcp | 10 | 10 | 0 |
Udp | 7 | 8 | +1 |
Udp6 | 4 | 8 | +4 |
Udplite | 0 | 15 | +15 |
UdpLite6 | 0 | 7 | +7 |
Tcpext | 48 | 116 | +68 |
Ipext | 11 | 17 | +6 |
これらの欠点はすべて、プロジェクトの開発期間が長すぎなかったためです。最後のリリースは2011年で、この期間中にカーネルとネットワークスタックが大幅に進歩しました。 公平を期して、最近プロジェクトの作業が再開されたことに注意する必要がありますが、これはコードベースの大幅な変更につながる可能性は低いです。
iproute2の再トレーニング
iproute2
を使用すると、 Net-Toolsと同様にすべてを取得できますが、端末へのコマンドの構文と出力のみが異なります。 正直に言うと、一部のip
コマンドの読みやすさは、 新しいものが常に最良ではないことを示唆しています 。
次の2つのコマンドは、キーを追加せずにifconfig
を置き換えることを目的としています。
(5:520)$ ip -c link 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:80:c8:f8:4a:51 brd ff:ff:ff:ff:ff:ff
-c
出力は色付きで読みやすくなります。
(5:521)$ ip -c addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000 link/ether 00:80:c8:f8:4a:51 brd ff:ff:ff:ff:ff:ff inet 192.0.2.1/24 brd 192.0.2.255 scope global eth0
ルーティングテーブルを簡単に表示します。
(5:522)$ ip ro
ルーティングテーブル全体。
(5:523)$ ip ro list table all broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1 local 10.0.0.1 dev eth0 proto kernel scope host src 10.0.0.1 broadcast 10.0.0.0 dev eth0 proto kernel scope link src 10.0.0.1 local 212.64.94.251 dev ppp0 proto kernel scope host src 212.64.94.251 broadcast 10.255.255.255 dev eth0 proto kernel scope link src 10.0.0.1 broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1 local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1 local ::1 dev lo proto none metric 0 pref medium local fe80::5166:f6f:fea2:29f dev lo proto none metric 0 pref medium local fe80::fa61:45ff:f1e0:109e dev lo proto none metric 0 pref medium local fe80::f5c4:ff:efbf:0455 dev lo proto none metric 0 pref medium fe80::/64 dev eth0 proto kernel metric 256 pref medium fe80::/64 dev ppp0 proto kernel metric 256 linkdown pref medium ff00::/8 dev eth0 metric 256 pref medium ff00::/8 dev ppp0 metric 256 linkdown pref medium ff00::/8 dev lo metric 256 pref medium
iproute2
セットからのコマンドの出力は、多くの場合、スクリプトで解析するのが簡単ではないことに注意してください。 これは、配布からNet-Toolsを捨てようとしているメンテナーに人気を追加するものではありません。
ARPキャッシュから隣接ノードの物理アドレスを表示します。 明確にするために、 Net-Toolsとiproute2
並べてオプションを記述します。
(5:524)$ arp -a (5:525)$ ip neigh show
設定に移りましょう。 インターフェイスを上げます。
(5:501)$ ifconfig eth0 up (5:502)$ ip link set eth0 up
インターフェイスをオフにします。
(5:503)$ ifconfig eth0 down (5:504)$ ip link set eth0 down
IPアドレスを設定します。
(5:504)$ ifconfig eth0 192.168.0.77 netmask 255.255.255.0 broadcast 192.168.0.255 (5:505)$ ip addr add 192.168.0.77/24 broadcast 192.168.0.255 dev eth0
Net-Toolsとは異なり、 iproute2
ではIPアドレスを削除することもできます。
(5:506)$ ip addr del 192.168.0.77/24 dev eth0
セカンダリアドレスを追加します。
(5:507)$ ifconfig eth0:1 10.0.0.1/8 (5:508)$ ip addr add 10.0.0.1/8 dev eth0 label eth0:1
ルートを追加します。
(5:509)$ route add -net 192.168.4.0/24 dev eth2 (5:510)$ ip route add 192.168.4.0/24 dev eth2
そしてそれを削除します。
(5:511)$ route del -net 192.168.4.0/24 dev eth2 (5:512)$ ip route del 192.168.4.0/24 dev eth2
デフォルトルート(ゲートウェイ)を追加します。
(5:513)$ route add default gw 192.0.2.1 (5:514)$ ip route add default via 192.0.2.1
リンクからのiproute2
コマンドの完全なリストより少し少ない、基本的な監視および構成コマンドのみを調べました。
netstatの代わりにNstat
Nstatは、以前のバージョンとは異なり、厳密に定義された順序でSNMPメトリックのみを提供し、それらをすべて表示します。
(5:526)$ nstat -a #kernel IpInReceives 69783 0.0 IpInDelivers 69469 0.0 IpOutRequests 68643 0.0 ...
もう1つの違いは、 netstat
はOSの起動以降のメトリックの累積値が表示されるのに対し、 nstat
はデフォルトで値の差分が表示されるため、両方のコマンドを初めて実行するときに値が同じになるという点です。 nstat
を通常どおりにnstat
させるには、 -s
実行する必要があります。
(5:527)$ nstat -sa #
--zero
ゼロの値のみが取得されます。
(5:528)$ nstat --zero #kernel IpInReceives 0 0.0 IpInHdrErrors 0 0.0 IpInAddrErrors 2 0.0 IpForwDatagrams 0 0.0 IpInUnknownProtos 0 0.0 IpInDiscards 0 0.0 (...)
これが良いか悪いかはわかりませんが、 nstat
json
形式で結果を生成できます。
(5:528)$ nstat --json {"kernel":{"TcpInSegs":2,"TcpOutSegs":4,"Ip6InReceives":2,"Ip6InDelivers":2,"Ip6OutRequests":4,"Ip6InOctets":776,"Ip6OutOctets":770,"Ip6InNoECTPkts":2,"TcpExtTCPHPHits":1,"TcpExtTCPHPAcks":1,"TcpExtTCPOrigDataSent":2}}
netstatの代わりのSS
ss
コマンドは、ネットワーク接続に関する情報を表示するという点で、 Netstat
機能をカバーしているだけでなく、より高速に、より深く掘り下げます。 netstat
はくしゃみごとに/proc
クロールし、速度を失いますが、 ss
はNetlinkインターフェイスを介してカーネルから情報をすばやくダウンロードします。
(5:529)$ sudo ss --summary Total: 348 (kernel 352) TCP: 15 (estab 9, closed 1, orphaned 0, synrecv 0, timewait 1/0), ports 0 Transport Total IP IPv6 * 352 - - RAW 1 0 1 UDP 3 3 0 TCP 14 12 2 INET 18 15 3 FRAG 0 0 0
両方のチームの構文が似ていることを喜ばしく思うので、長い間慣れる必要はありません。
(5:530)$ ss -t State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 192.168.1.2:43839 108.160.162.37:http ESTAB 0 0 192.168.1.2:43622 199.59.149.201:https ESTAB 0 0 192.168.1.2:33141 83.170.73.249:ircd ESTAB 0 0 192.168.1.2:54028 74.125.135.125:xmpp-client
ただし、 ss
使用すると、文字通りtcp接続の内部を取得できます。
(5:531)$ sudo ss --tcp --info |tail -n 1 cubic wscale:4,7 rto:280 rtt:71.541/13.487 ato:40 mss:1460 cwnd:100 bytes_acked:465157 bytes_received:513194 segs_out:604 segs_in:937 send 16.3Mbps lastsnd:86100 lastrcv:85680 lastack:5050 pacing_rate 32.7Mbps rcv_rtt:12120 rcv_space:186376
配信確認タイマー、往復、キュービックチャネルの輻輳制御メカニズムなど、すべてがあります。
ネットツールをプルアラウンド
Linuxコミュニティでは、この問題に関するコンセンサスはまだありません。 2009年のOpenSuseで 本会議 この問題に関する議論が続いたが、彼らは厳しい対策を講じなかったが、RedHatとFedoraは2011年に十分であると判断し 、バージョン7からRHELはNet-Toolsを導入しなかった。 7.1では、それを返す試みが失敗しました。これは、 Net-Toolsの避けられない人気を示しています 。 Debian Linuxでは、2009年にNet-Toolsが廃止され、それを交換するプロセスを開始しようとして失敗した後、数年前からこれを思い出せず、最近、活発な議論が再開されました。 実際のところ、Debianにはまだかなりの数のパッケージが依存しています。 Gentooでは、いつものように、賭けるかどうかを決定しますが、サブジェクトに依存関係はありません。
(5:532)$ equery depends net-tools * These packages depend on net-tools: net-misc/openvpn-2.3.12 (!iproute2 ? sys-apps/net-tools)
個人的には、可能な限りNet-Toolsを放棄する理由はないと思われます。 localhostにループバックを含む2つ半のネットワークインターフェイスがある場合、これらのプログラムを安全に使用し続けることができますが、通常の古いコマンドを入力する指の動きに関係なく、まともな戦いまたはテストサーバーでもiproute2
が望ましいでしょう。 遅かれ早かれ、すべてのLinuxディストリビューションとDebianもデフォルトでこのパッケージのインストールを停止し、 iproute2
スイートからのコマンドを知ってiproute2
と便利になりますが、この点はすぐにはiproute2
ません。