LoginSignup
2
0

More than 3 years have passed since last update.

ゲートウェイ設定にハマる

Posted at

わたしは片手間に、サーバやネットワークを やらされております。
(専門外なのに・・・)
先日、サーバのネットワークが つながらなくて困りました。

困った現象

ある Linux(CentOS7) サーバについて、もともと次の設定で運用していました。
※ 以下のIPアドレス等は、架空のものです。

ifcfg-em1(未使用
ifcfg-em2 (192.168.1.10)(ローカルアドレス。使用中。)

つまり、サーバは外部に公開せず、ローカルで使っていました。
これに、グローバルアドレスを追加で有効にしたのです。

ifcfg-em1 (12.34.56.78)(グローバルアドレス。使用開始!
ifcfg-em2 (192.168.1.10)(ローカルアドレス。使用中。)

ところが、グローバルアドレスに対して PING が通らないのです。
グローバルの ifcfg-em1 は確かにUPしているのに、です。

PING で調べる

いろいろ調べると、不思議な現象を確認しました。
グローバルアドレスと同じセグメントからなら PING が通ることに気づきました。

例えば、設定したグローバルアドレスが 12.34.56.78 なら、
12.34.56.80 の別サーバからは PING が通るのです。

(しかしセグメント外の、例えば自分のPCからは PING が通りません。)

さらに不思議なことに、まったく同じ設定の別のサーバでは、
グローバルアドレスに PING が通るのです。

別のサーバというのは、OSや基本設定(2種類のネットワークを使う)は
同じで、IPアドレスだけが異なるサーバのことです。

私はこの正常サーバと、今回の異常サーバで何が違うのか、
いろんなコマンドを投入して調べました。

ファイル比較で相違点を発見

ようやく相違点を発見しました。
正常/異常サーバで、GENERAL.DEFAULT なるものが違っていました。

異常サーバのグローバルアドレス

# nmcli c s em1
    :
GENERAL.DEVICES:  em1
GENERAL.STATE:    アクティベート済み
GENERAL.DEFAULT:  いいえ
    :

同じく異常サーバのローカルアドレス

# nmcli c s em2
    :
GENERAL.DEVICES:  em2
GENERAL.STATE:    アクティベート済み
GENERAL.DEFAULT:  はい
    :

上記は異常サーバですが、正常サーバでは、
はい/いいえ がどちらも反転していたのです。
(グローバル側が「はい」、ローカル側が「いいえ」でした。)

さらに、ルーティングテーブル?(←ゴメン よく知らないの)の順番も
違うことに気づきました。(ローカル側が上に表示されていました。)

# ip route

default via 192.168.1.1 dev em2 proto static metric 102
default via 12.34.56.1 dev em1 proto static metric 101

これも正常サーバでは、順番が逆でした。

OSによるゲートウェイ設定の違い

冒頭に述べたとおり、わたしは片手間にサーバを担当しています。

以前は CentOS5 を扱っていて、ゲートウェイの設定箇所は
/etc/sysconfig/network の1ヶ所でした。

今回の問題のサーバは CentOS7 で、ゲートウェイは
ネットワークごとに複数箇所で設定できるようです。つまり、
/etc/sysconfig/network-scripts/ifcfg-em1 でも設定できるし、
/etc/sysconfig/network-scripts/ifcfg-em2 でも設定できます。

なので、「グローバル/ローカル 両方にゲートウェイを設定するんだな」
と理解していました。実際それで、問題なく運用しているサーバもありました。

しかし もしかしたら、それは たまたま上手くいっていただけかもしれません。
よくよく考えたら、ゲートウェイが複数ってのは妙です。
サーバから外部に通信するとき、ゲートウェイは1つで十分だからです。

もし2つあれば、どちらかを優先して、もう一方は使われないんじゃないか・・・?
その使われないほうが、グローバルアドレスのゲートウェイなのでは・・・?
だから外部から PING が通らないんじゃないか・・・?

おぼろげながら原因が見えてきました。
ただ残念なことに、どんなコマンドで修正すればよいか分かりませんでした。

コマンドはあきらめ、設定ファイルを直接 修正することにしました。
(ネットでは、設定ファイルの直接の修正は非推奨で、
コマンドを使えとありましたが、私には それしか方法がありませんでした。)

/etc/sysconfig/network-scripts/ifcfg-em2(ローカルアドレス)の
ゲートウェイの行を削除し、サーバを再起動しました。

    :
DEVICE=em2
ONBOOT=yes
IPADDR=192.168.1.10
PREFIX=24
GATEWAY=192.168.1.1   ← ← ← 削除
    :

結果は・・・?

グローバルアドレスに対して PING が通りました!!
(よかったよかった)

やはりゲートウェイを複数 設定していて、ローカルの方が優先されていたから、
グローバルのほうが無視されていたようです。

それにしても、疑問が残ります。
複数のゲートウェイを設定していて、グローバルアドレスに つながるサーバもあります。
(この場合はローカル側のゲートウェイが無視されているはず。)

どちらを優先するか、どう決めているのでしょう???
そういえば、正常/異常サーバの違いがありました。

正常サーバでは、グローバル/ローカルアドレスを、最初から両方UPしていました。
一方 異常サーバでは、最初 ローカルアドレスのみをUPしていて、
後でグローバルアドレスを追加でUPしました。違いといえば それくらいです。

:thinking: :thinking: :thinking:

この対応のために、1日無駄にしてしまいました。
サーバ専門の担当者を雇ってほしい・・・。

2
0
1

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
2
0