LoginSignup
11
9

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-01-30

この前私の目の前で起こって何が起こったのか分からずパニックになったので書いておきます.
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 アドレス乗っ取りをする際は気を付けてください.

11
9
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9