Help us understand the problem. What is going on with this article?

本当にあった怖い話〜IPアドレスが消えた〜

More than 3 years have passed since last update.

この前私の目の前で起こって何が起こったのか分からずパニックになったので書いておきます.
OS は Debian7 です.

今回以下のことをやりたいとします.

  • グローバルIP(別に仮想IPでも何でも同じ)を持っているサーバー A を諸事情によりサーバー B に移したい
  • サーバー B にまずテスト用の IP アドレスを付けて動作を確認したい
  • 動作確認をして問題がなければサーバー A の IP アドレスを乗っ取って対応完了としたい

ということで以下の作業を行いました.

  1. サーバー B の /etc/network/interfaces にテスト用の IP アドレスを付ける設定を書いた上で ifdown -a && ifup -a
    • 動作を確認
  2. サーバー B でip addr add を使ってサーバー A の IP アドレスを付けて乗っ取る
  3. テスト用に付けた IP を ip addr del を使って削除

という作業を行うと乗っ取った IP アドレスもろとも該当 NIC から IP アドレスが消えます

どうやら NIC に 2 つの IP アドレスを付けると最初に付けた IP アドレスが primary になり次に付けた IP アドレスが secondary になるらしく primary の IP アドレスを消すと secondary もろとも消えます.
今回テスト用の IP アドレスが primary になり,乗っ取った IP アドレスが secondary になったのでテスト用の IP アドレスを消すと同時に目的の IP アドレスまでも消えてしまったということでした.

またこれの非常に厄介なところは該当 NIC に付けられるネットワークの IP アドレスが全て消えてしまうのでこちらのネットワークのルーティングが消えてしまうというところです.
ルーティングが消えたことに気付かず,もう一度 IP アドレスを付けてもなかなか疎通せず,ここでパニックになってしまいました…

ということで今回の作業は以下の方法が正解みたいです.

  1. サーバー B の /etc/network/interfaces にテスト用の IP アドレスを付ける設定を書いた上で ifdown -a && ifup -a
    • 動作を確認
  2. テスト用の IP アドレスを ip addr del する
    • この時点でルーティングが消えているので要注意
  3. サーバー B でip addr add を使ってサーバー A の IP アドレスを付けて乗っ取る
    • Linux - 仮想IPを付けたいそんな時 - Qiita
    • send_arp の前に ip route add を打ってルーティングを付け直すことを忘れないこと
    • サーバー A で ip addr del を使ってサーバー A が持っている IP アドレスを消す
  4. テスト用に付けた IP アドレスを ip addr del を使って削除

という過程を踏むことで安全に切り替えることができます.

目の前で付けたはずの IP アドレスが消えた時は本当にパニックになりましたが落ち着いて IP アドレスを付け直してから疎通できなければルーティングを確認するというフローを踏めばよかった話で経験と確かな知識がものを言うなぁと改めて感じました.

ということで IP アドレス乗っ取りをする際は気を付けてください.

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away