Net-Toolsによるハードパーティング

Net-Toolsが完全に廃止されること秘密ではありません。 はい、私を含め、パブロフの条件反射の前の多くの管理者は、 ifconfig



route



netstat



コマンドに精通しifconfig



ます。 一見、何かを変更する理由はなく、最高は常に善の敵です。











Net-Tools



が同じではない理由と、 iproute2



シームレスに切り替える方法を見つけましょう。







ifconfigの何が問題になっていますか?



Net-Toolsに対する主張はどのようなもので、どの程度合理的ですか?









 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 [...]
      
      







 ip addr add 192.168.1.2/24 brd + dev eth0
      
      







 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
      
      







 root ~ $ ip addr add 192.168.13.37/32 peer 192.168.13.38 dev eth0 root ~ $ ifconfig eth0 192.168.13.37
      
      







 Icmp: 3327 ICMP messages received 17 input ICMP message failed ICMP input histogram: destination unreachable: 3151 timeout in transit: 56
      
      







カテゴリー 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-Toolsiproute2



並べてオプションを記述します。







 (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



ません。







使用材料






All Articles