dポイントプレゼントキャンペーン実施中!

サーバに限ったことじゃないかもしれませんが・・・
サーバ(CentOS)にNICを2枚挿し、どちらも同じセグメントに繋いだ時、サーバからインターネットや、ルータやPC1に送信する場合はどちらのNICが優先的に使われるのでしょうか?
NICを複数挿しした場合は必ずどのNICか1つをデフォルトNICとするような設定をしないとこのままでは通信できませんか?
調べていたらDEFROUTE=yesというのがあり、複数NICの場合は必ずそれをデフォルトNICに指定しないとダメなのかな?と思いまして。基本的なことですみません。

└ルーター(192.168.1.1)
 ├PC1(192.168.1.2)
 ├サーバ(eth0:192.168.1.100/eth1:192.168.1.200)
 

/etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4

/etc/sysconfig/network-scripts/ifcfg-eth1
IPADDR=192.168.1.200
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4

A 回答 (3件)

>どっちのNICを使って送信するかは分からないってことになりますかね。


リクエストを出す場合は両方のNICへパケットを流すと思います。
相手からの応答が早い方でリクエストが完了してしまうので後から帰ってきたパケットは不要なので無視されると思います。

>PC1から192.168.1.100への要求ならeth0が応答し、応答したeth0がPC1に返す。
>PC1から192.168.1.200への要求ならeth1が応答し、応答したeth1がPC1に返す。
当然、そうなるでしょう。
所謂、負荷分散の手法です。
只、クライアントからの要求はサーバー名で出されると思いますのでDNS等でIPアドレスに変換されるので負荷分散の設定はNICの設定とは関係ない所で行われるはずです。
    • good
    • 0

通常、サーバだとNIC2枚ならActive/Standbyでボンディングするところですが、それぞれIPアドレスを割り当てて独立させているのは負荷分散のためですかね?



 さて、ご質問についてですが、

> サーバ(CentOS)にNICを2枚挿し、どちらも同じセグメントに繋いだ時、サーバから
> インターネットや、ルータやPC1に送信する場合はどちらのNICが優先的に使われるのでしょうか?

 たぶん、NICの認識順で確定すると思います。デフォルトゲートウェイがどちらに割当たっているかは、netstat -nrで確認できると思います。

> NICを複数挿しした場合は必ずどのNICか1つをデフォルトNICとするような設定をしないとこのままでは通信できませんか?

 問題なくできるかと思います。

> 調べていたらDEFROUTE=yesというのがあり、複数NICの場合は必ずそれをデフォルトNICに
> 指定しないとダメなのかな?と思いまして。基本的なことですみません。

 かならずじゃないでしょうね。デフォルトNICを指定したければという理解でいいと思います。

 あと、/etc/sysconfig/networkや/etc/sysconfig/netowrk-scripts/ifcfg-eth?の手動設定を行うのであれば、NICの設定ファイルにNM_CONTROLLED="no"の設定を入れておくことをお勧めします。

 余談ですが、通常はNIC2つを同一セグメントにつなげるなら、冗長性確保を優先してbonding(ifcfg-bond0)を組みます。これであれば片方のNICが故障したり断線したりしても継続運用可能です。障害発生時は瞬断はしますが。この場合ゲートウェイはbondingに割り当てます。
 bondingしたうえで、複数のIPアドレスが必要であればbondingにIPエイリアス(ifcfg-bond0:0)を作成します。

 検証、開発環境であり、これらに対する本番機がNIC4つを同一セグメントに物理接続して2つのbondingを作成している場合は、これの縮退構成としてbondingを廃しておっしゃるような構成にすることもありますね。
    • good
    • 0
この回答へのお礼

>たぶん、NICの認識順で確定すると思います。デフォルトゲートウェイがどちらに割当たっているかは、netstat -nrで確認できると思います。

認識順なんですね。netstat -nrで確認してみます。


>かならずじゃないでしょうね。デフォルトNICを指定したければという理解でいいと思います。

なるほどです。DEFROUTE=yesと言うのはデフォルトNICを認識順ではなく、固定的に指定したい場合にそのNICに追記するんですね。


>NICの設定ファイルにNM_CONTROLLED="no"の設定を入れておくことをお勧めします。

すみません。上のifcfg-eth(x)には書いていないですが、実際にはNM_CONTROLLED="no"やONBOOT=yesやTYPE=Ethernetなどは記述しています。


>余談ですが、通常はNIC2つを同一セグメントにつなげるなら、冗長性確保を優先してbonding(ifcfg-bond0)を組みます

bondingを組むという方法もあるんですね。聞いたことがなかったので勉強してみます。

お礼日時:2014/05/27 11:59

>サーバ(CentOS)にNICを2枚挿し、どちらも同じセグメントに繋いだ時、サーバからインターネットや、ルータやPC1に送信する場合はどちらのNICが優先的に使われるのでしょうか?


NIC2枚使う意味が無いように思います。
其々を別セグメントに接続してルーターの役割をさせる場合やWAN回線が2つのとき負荷分散に使うのであればNICの2枚刺しに意味があります。
特殊な例としてはLANの回線が2重化されていて1方に断線が有ったときのバックアップであれば同一セグメントの2枚刺しも有り得ます。
何方かが優先的に使われるということを考える必要はないと思います。
先に応答が有った方を有効にして遅れた方のパケットは無視されるのではないでしょうか?
    • good
    • 0
この回答へのお礼

>NIC2枚使う意味が無いように思います。特殊な例としてはLANの回線が2重化されていて1方に断線が有ったときのバックアップであれば同一セグメントの2枚刺しも有り得ます。

まさにおっしゃる通りなのですが、このように同じセグメントに2枚差す意味を問うのはここでは無しでお願いします。

>先に応答が有った方を有効にして遅れた方のパケットは無視されるのではないでしょうか?
応答が有ったほうですか。。どっちのNICを使って送信するかは分からないってことになりますかね。

例えば、逆にPC1からサーバに対しての通信なら、
PC1から192.168.1.100への要求ならeth0が応答し、応答したeth0がPC1に返す。
PC1から192.168.1.200への要求ならeth1が応答し、応答したeth1がPC1に返す。
ってなるんでしょうけど。。

お礼日時:2014/05/27 11:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!