まずインターフェースをシャットダウンします
# Shutdown the interfaces
ip link set enp2s0f0 down
ip link set enp2s0f1 down
使用方法ifconfig
:
# Set subnets to interfaces
ifconfig enp2s0f0 10.0.0.1/24
ifconfig enp2s0f1 10.0.1.1/24
# Add two routes
ip route add 10.11.1.1 dev enp2s0f0
ip route add 10.11.0.1 dev enp2s0f1
# Result => NO PROBLEM, my routes are here even tho the interfaces are down
$ip route
10.0.0.0/24 dev enp2s0f0 proto kernel scope link src 10.0.0.1
10.0.1.0/24 dev enp2s0f1 proto kernel scope link src 10.0.1.1
10.11.0.1 dev enp2s0f1 scope link
10.11.1.1 dev enp2s0f0 scope link
使用方法ip
:
# Set subnets to interfaces
ip addr add 10.0.0.1/24 dev enp2s0f0
ip addr add 10.0.1.1/24 dev enp2s0f1
$ip route
#NOTHING => Where are the routes?!
# Add two routes
ip route add 10.11.1.1 dev enp2s0f0
ip route add 10.11.0.1 dev enp2s0f1
$ip route
#NOTHING => Where are my routes?!
ip link set enp2s0f0 up
ip link set enp2s0f1 up
# Result => WOW only two routes appeared miraculously
$ip route
10.0.0.0/24 dev enp2s0f0 proto kernel scope link src 10.0.0.1
10.0.1.0/24 dev enp2s0f1 proto kernel scope link src 10.0.1.1
# => Where are my 10.11.*.* routes?
ip route
ルートが表示されないのはなぜですか?- インターフェイスを起動した後、ルートはどこに追加されましたか? 以前は表示されなかったのはなぜですか?
- インターフェースを起動した後、ルートが表示されないのはなぜですか?
インターフェイスを立ち上げる前に、すべてのルートを設定したいのですが、ifconfig
そうすることに何の問題もありません。次にどんな驚きが起こるのか楽しみです。
ifconfig
互換性があると思っていましたがip
、ifconfig から ip への移行はそれほど簡単ではありません。
答え1
あなたの 3 つの質問はすべて、1 つの誤解から生じています。
ifconfig
インターフェースとアドレスはup
オプションを意味しますつまり、あなたのifconfig
例では、アドレスを指定すると同時にインターフェースが起動します。
これはつまり
ifconfig enp2s0f0 10.0.0.1/24
ifconfig enp2s0f1 10.0.1.1/24
実際には
ifconfig enp2s0f0 10.0.0.1/24 up
ifconfig enp2s0f1 10.0.1.1/24 up
ip
からiproute2以下の行為をより明確に整理します。
- 持参するインターフェース上げたり下げたり(
ip link
)、 - IPの割り当て住所ネットワークデバイス(
ip address
)に接続し、 - カーネルの設定ルーティング表(
ip route
)。
ifconfig
これらの異なる概念が混在しているため、混乱を招きやすく、直感性が低下する可能性があります。
ルート、ネットワーク デバイス、インターフェイス、およびトンネルの状態を便利に管理したい場合は、ネットワーク構成管理ツールの使用を検討してください。 便利な宣言型構文でネットワークを定義でき、1 つのコマンドでネットワークをすばやく起動または停止できます。
一般的な Linux ディストリビューションに含まれているツールの一部を以下に示します。
- デビアン –アップダウン(
/etc/network/interfaces
、/etc/network/interfaces.d/
) - ウブントゥ –ネットプラン(
/etc/netplan/
) - Red Hat Enterprise Linux / CentOS –cfg の場合(
/etc/sysconfig/network-scripts/
) - 通常はデスクトップ環境を備えたディストリビューションです –ネットワーク管理者(
/etc/NetworkManager/
)
完全を期すために、質問に対する回答を以下に示します。
ip route
ルートが表示されないのはなぜですか?
対応するリンクがダウンしている場合、ルートはメイン テーブルに保存されません。ip
コマンド シーケンスでは、関連するインターフェイスが最初に起動されません。
- インターフェイスを起動した後、ルートはどこに追加されましたか? 以前は表示されなかったのはなぜですか?
インターフェースがダウンしている場合、デバイスのルートはルーティング テーブルに登録されません。
- インターフェースを起動した後、ルートが表示されないのはなぜですか?
対応するインターフェイスが最初に起動する必要があったため、ルートは追加されませんでした。ダウンしているインターフェイスでルートの追加を試行した場合RTNETLINK answers: Network is down
、またはのようなエラー メッセージが表示されるはずError: Device for nexthop is not up.
です。戻りコード ( $?
) もゼロ以外である必要があります。
インターフェースを起動する前に、すべてのルートを設定したいと思います。
私の知る限り、 を使ってもこれは実行できません。コマンドは実際にはルートを追加する前にインターフェースを起動しているifconfig
ことに注意してください。ifconfig
次はどんなサプライズが待っているのでしょうか。
願わくば、誰もいないでしょう。 ip
関心の分離は、それを知る。
私は相性が良い
ifconfig
と思ったip
2 つのコマンドには重複する部分がありますが、互換性はありません。