長い間、ifconfig
コマンドは、ネットワークインターフェイスを構成するためのデフォルトの方法でした。 Linuxユーザーには十分に役立ちましたが、ネットワークは複雑であり、それを構成するコマンドは堅牢でなければなりません。 ip
commandは、最新のシステムの新しいデフォルトのネットワークコマンドです。この記事では、その使用方法を説明します。
ip
コマンドは、OSIネットワークスタックの2つのレイヤー(レイヤー2(データリンクレイヤー)とレイヤー3(ネットワークまたはIPレイヤー))で機能的に編成されています。古いnet-tools
のすべての作業を実行します パッケージ。
ipのインストール
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
ip
コマンドはiproute2util
に含まれています パッケージ。おそらく、Linuxディストリビューションにはすでに含まれています。そうでない場合は、ディストリビューションのソフトウェアリポジトリからインストールできます。
ipconfigとipの使用法の比較
ip
およびipconfic
コマンドを使用してネットワークインターフェイスを構成できますが、動作が異なります。一般的なタスクの実行方法を古いもの(ipconfig
)と比較します )および新しい(ip
)コマンド。
ホストのIPアドレスを確認したり、ネットワークインターフェース情報を表示したりする場合は、古いifconfig
引数のないコマンドは、適切な要約を提供します:
$ ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether bc:ee:7b:5e:7d:d8 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 41 bytes 5551 (5.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 41 bytes 5551 (5.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.1.1.6 netmask 255.255.255.224 broadcast 10.1.1.31
inet6 fdb4:f58e:49f:4900:d46d:146b:b16:7212 prefixlen 64 scopeid 0x0<global>
inet6 fe80::8eb3:4bc0:7cbb:59e8 prefixlen 64 scopeid 0x20<link>
ether 08:71:90:81:1e:b5 txqueuelen 1000 (Ethernet)
RX packets 569459 bytes 779147444 (743.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 302882 bytes 38131213 (36.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
新しいip
コマンドは同様の結果を提供しますが、コマンドはip address show
です 、または単にip a
略して:
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
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 group default qlen 1000
link/ether bc:ee:7b:5e:7d:d8 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 08:71:90:81:1e:b5 brd ff:ff:ff:ff:ff:ff
inet 10.1.1.6/27 brd 10.1.1.31 scope global dynamic wlan0
valid_lft 83490sec preferred_lft 83490sec
inet6 fdb4:f58e:49f:4900:d46d:146b:b16:7212/64 scope global noprefixroute dynamic
valid_lft 6909sec preferred_lft 3309sec
inet6 fe80::8eb3:4bc0:7cbb:59e8/64 scope link
valid_lft forever preferred_lft forever
ifconfig
を使用してインターフェースにIPアドレスを追加するには 、コマンドは次のとおりです:
$ ifconfig eth0 add 192.9.203.21
コマンドはip
と同様です :
$ ip address add 192.9.203.21 dev eth0
ip
のサブコマンド 短縮できるため、このコマンドも同様に有効です:
$ ip addr add 192.9.203.21 dev eth0
さらに短くすることができます:
$ ip a add 192.9.203.21 dev eth0
IPアドレスを追加するのとは逆に、IPアドレスを削除することです。
ifconfig
を使用 、構文は次のとおりです。
$ ifconfig eth0 del 192.9.203.21
ip
コマンド構文は次のとおりです:
$ ip a del 192.9.203.21 dev eth0
ifconfig
を使用したインターフェースでのマルチキャストの有効化(または無効化) multicast
で発生します 引数:
# ifconfig eth0 multicast
ip
を使用 、set
を使用します デバイスのサブコマンド(dev
)およびブール値またはトグルmulticast
オプション:
# ip link set dev eth0 multicast on
すべてのシステム管理者は、問題を修正するための古い「オフにしてから再度オンにする」トリックに精通しています。ネットワークインターフェースに関しては、それはネットワークをアップまたはダウンさせることを意味します。
ifconfig
コマンドはup
でこれを行います またはdown
キーワード:
# ifconfig eth0 up
または、専用のコマンドを使用することもできます:
# ifup eth0
ip
コマンドはset
を使用します インターフェイスをup
に設定するサブコマンド またはdown
状態:
# ip link set eth0 up
アドレス解決プロトコル(ARP)を有効または無効にします
ifconfig
を使用 、ARPを有効にするには、次のように宣言します。
# ifconfig eth0 arp
ip
を使用 、設定 arp
on
としてのプロパティ またはoff
:
# ip link set dev eth0 arp on
ipとipconfigの長所と短所
ip
コマンドは、ifconfig
よりも用途が広く、技術的に効率的です。 Netlink
を使用しているため ioctl
ではなくソケット システムコール。
ip
コマンドは、ifconfig
よりも冗長で複雑に見える場合があります 、しかしそれはそれがより用途が広い理由の1つです。使い始めると、その内部ロジックの感触がわかります(たとえば、set
を使用します)。 一見恣意的な宣言や設定の組み合わせではなく)
最終的に、ifconfig
古くなっており(たとえば、ネットワーク名前空間が完全にサポートされていない)、ip
最新のネットワーク用に設計されています。それを試して、それを学び、それを使用してください。よろしくお願いします!