幼稚園時代「何組」でしたか?

サブネットマスクを間違って設定したときのデフォルトゲートウェイとの通信について教えてください。

ホストAのアドレス   :192.168.1.200
デフォルトゲートウェイ:192.168.1.1

であったとき、ホストAのサブネットマスクを255.255.255.0とすれば通信できると思いますが、
間違って255.255.255.128と設定したときに別のネットワークとホストAが通信できるのか(デフォルトゲートウェイが中継するのか)を知りたいと思っています。

デフォルトゲートウェイ側のサブネットマスクは255.255.255.0だとし、デフォルトゲートウェイ側からはホストAは同じネットワークである場合です。

つまりホストAから違うネットワークへパケットを送る場合、
ホストA → デフォルトゲートウェイ … 送れるか(私には)わからない。そもそもパケットが出るのか。
デフォルトゲートウェイ → ホストA … 同じネットワークなため応答は問題ない(はず)。

arpテーブルにデフォルトゲートウェイのMACアドレスが登録されているかいないかによっても違うのでしょうか。

私もテストしてみたのですが、通信前からデフォルトゲートウェイのMACアドレスがarpテーブルにあり、ルータやOSの方で何か特殊なことをしているかもしれない(そもそもこれが特殊なことなのかどんなOSやルータでもそうなのかもわからない)と思い実験にならなかったため、質問させていただきました。
ちなみに、以上のような私の環境では、サブネットマスクを間違えてもインターネットにつながりました。

よろしくお願いします。

A 回答 (9件)

No.2の方がなかなかに予想外な結果を出してくれましたので、もう少し調べて見ました。

(遊ぶとも言う)
どうもWindows (XP/Vista)は、経路情報が設定されている場合、nexthopがインタフェースのネットワーク内に有る/無しにかかわらず、arpを出してMACアドレスを求めるようです。これはdefault gatewayに限らず、routeコマンドで追加した場合でも同様でした(パケットキャプチャで確認)。
ちなみにLinux(CentOS5)の場合、そもそもdefault gatewayを異なるネットワークに設定することができなかったので、質問の条件がそもそも成り立たないです。
一般のルータ(Cisco等)については検証できないので不明。多分設定できないんじゃないかと思いますが、設定できたとしてもまともな動作は期待できないでしょうね。

ちなみにPC2台を以下のように設定して、
 PC-A : 192.168.1.26/26, gateway 192.168.1.254
 PC-B : 192.168.1.224/24, gateway 192.168.1.254

PC-A→PC-Bにpingを打った場合、パケットの到達経路は以下のようになりました。
PC-A → PC-B : PC-A → gateway → PC-B
PC-B → PC-A : PC-B → PC-A
なお、今回、gatewayは一般のブロードバンドルータですが、すべてのルータでこのような中継動作をするかどうかまでは何とも言えません。

余談ですが、defult gateway を自分自身にすると、すべてのIPに対してarpによりMACアドレスを求めるようになります。(Windowsの場合)

この回答への補足

お礼への補足です。

ARPキャッシュについてですが、自分でも少し調べてみました。
結局、私の言ったような動作ではなく、単純にARPで解決されたものだけARPテーブルに登録されるのではないでしょうか。たぶん。
たぶんというのは、私みたいな間違いをしている人がいなかったため、ネット上ではピンポイントで回答をみつけることができなかったため、確証がないためたぶんです。
でも、自分のPCのARPテーブルを見ても、閲覧したHPのIPアドレスがARPに登録されていないため、おそらくこの解釈であってるでしょう。
そうすれば、PC-BからPC-Aへ直接パケットが届くのが納得できます。
詳しい方の賛同があると心強いのですが…。

なくてもそのうち締め切ります。
回答くださった方々、ありがとうございました。

補足日時:2010/04/29 20:54
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

Windowsの動作や到達経路まで教えて頂き、大変参考になりました。
Linuxでは設定自体ができないのですね。

ただひとつ疑問なのが、PC-BからPC-Aの経路です。
直接PC-Aに戻るのでしょうか。もちろんPC-Aからの通信を一度も行わずにPC-BからPingしたらPC-Aに直接行くと思うのですが。

送信元IPアドレスはgatewayを経由しても変わらず、MACアドレスのみgatewayのものに置き換わったと思いますが、そうするとPC-AのIPアドレスに対応するMACアドレスはgatewayのものであるとPC-Bは勘違いしてしまいそうな気がするのですが。

PC-A           gateway            PC-B
送信元IP:PC-A   ⇒  送信元IP:PC-A    ⇒  PC-AのIPに対応するMACはgatewayのMAC?
送信元MAC:PC-A     送信元MAC:gateway

APRキャッシュへの動的エントリの部分がわかっていないので間違っているのかもしれませんが、PC-B → PC-Aの場合もgatewayを経由するのではないでしょうか。
PC-Bの設定が、ARPキャッシュしないようになっていたりしなかったでしょうか。そもそも自分でARPしなかったものはARPキャッシュに入らないとかでしょうか?(ARPキャッシュの動作がわかっておりませんm(_ _)m)

よろしければなぜこういう動作になるのか、教えていただければと思います。
本来の質問は解決しましたので、回答がなければ締め切りたいと思います。

お礼日時:2010/04/29 17:14

> そうするとPC-AのIPアドレスに対応するMACアドレスはgatewayのものであるとPC-Bは勘違いしてしまいそうな気がするのですが。



その心配は無用です。
arpのパケット構造を見てもらえれば判りますが、宛先IPのMACアドレスを問い合わせる際、問い合わせ元のIPとMACアドレスがARPパケット内に含まれます。
このとき、arpリクエストを受けた側は、arpパケット内の問い合わせ元IPとMACアドレスをarpテーブルに登録します。
前回の回答で示したping試験の場合だと、PC-Bはpingのecho request を受信した状態では、arpテーブルに含まれるのはgatewayのIPとMACになります。PC-AのMACアドレスは判らないので、echo replyを返すときにarpで改めてMACアドレスを要求しています。

届いたパケットの送信元IPと送信元MACアドレスの組み合わせがarpテーブルのそれと異なるなんて状況はTCP/IPの通信では普通のことなので、そんなことでおかしくなったりはしません。

> 閲覧したHPのIPアドレスがARPに登録されていない

なにか勘違いがあるようですが、プロトコルの性格上、arpテーブルに登録されるのはPCが接続しているネットワークのIPだけです。他のネットワークへの通信の場合、arpテーブルにはそのネットワークへのgatewayのIPとMACアドレスが載ります。
mixiを見ようがg-mailでメールを書こうが、arpテーブルにはルータのIPとMACアドレスしか載りません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>なにか勘違いがあるようですが、プロトコルの性格上、arpテーブルに登録されるのはPCが接続しているネットワークのIPだけです。他のネットワークへの通信の場合、arpテーブルにはそのネットワークへのgatewayのIPとMACアドレスが載ります。

この部分について、どうやら私の方で勘違いしていたようです(^^ゞ
前回のお礼を書いたあとに気づき、補足へ書いたのですが、ARPで解決されたアドレスのみをARPテーブルに保持するということですよね?(ARP要求された側も登録するようですが)

>なにか勘違いがあるようですが、プロトコルの性格上、arpテーブルに登録されるのはPCが接続しているネットワークのIPだけです。

この部分の勘違いについても、同様な勘違いが原因です。
要は、ARPじゃないパケットが届いたときにもARPテーブルにキャッシュされると思っていました。
(勘違いの原因は、勘違いの動きでも理論的には通信できるからですね^^;)

長らくお付き合いいただきありがとうございました。

お礼日時:2010/05/04 01:34

No.2 です。


No.7さんの回答が興味深かったので、私の方でも、再度試してみたところ、(問題のPCからは別ネットワークに見える)別PCにも通信できました。

経路は↓でした。

自PC → ルータ(Default Gateway) → 別PC

先日はIPアドレス打ち間違えてたのかも・・・。ごめんなさい。

ちなみに我が家のルータは3~4千円のエントリーモデルですが、ちゃんと中継してくれました。
(^^;
    • good
    • 0
この回答へのお礼

回答ならびに訂正ありがとうございます。

同じネットワークアドレスでもルータが中継してくれるということですね。

了解です!

お礼日時:2010/04/29 17:16

>デフォルトゲートウェイだけ特別扱いでARP要求を送るのか等が知りたかったのです。


デフォルトゲートウェイの役割をご存じないのでしょうか?

ホストAのアドレス:192.168.1.200
ゲートウェイ   :192.168.1.1

この例ではサブネットマスクを 255.255.255.0(クラスC)にしなければネットワークの整合性がとれません。
ここでデフォルトゲートウェイというのはホストAから見て他のネットワークへの出口にあたるルーター(ゲートウェイ)を指定します。
ホストAにTCP/IPの設定を行うときサブネットマスクが 255.255.255.128 としたとき、ホストAからゲートウェイ(192.168.1.1)宛に送出したパケットは出口を見つけられず消滅するはずです。
ゲートウェイ自身はデフォルトであるという認識は無く、ホストが自身の属しているネットワーク以外の宛先へ送るときにパケットをゲートウェイへ預けます。その預け先のゲートウェイをデフォルトゲートウェイと言っています。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

デフォルトゲートウェイの役割は存じ上げており、普通は255.255.255.0にしなければいけないこともわかります。
ただ今回は、実験として質問のようなサブネットマスクにしました。
この質問で通信できることがわかったからといって実際にそのような設定をするつもりはありません。
ただ知識として知りたかったというだけです。

サブネットマスクが間違っていても、質問のような特殊な場合では、私の実験とNo.2さんの実験のとおり、MACアドレスがわかっていれば(わかっていなくてもarpで解決するようですが)通信できるようです。

お礼日時:2010/04/29 16:41

No.4です。


>ホストAからのパケットはデフォルトゲートウェイに送信され、ルーティングされてホストBに届く。
上記のように書きましたが、ルーティングのループを防ぐためにルーティングされないように思えてきました。
(何の機能かは調査未です)

と考えると、No.2さんの以下が納得できます。
>ちなみに別ネットワークになってしまってたLAN内の別のPCへはPingも通りませんでした。

確かな回答でなくて申し訳ありません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。No.4,5まとめてお礼させていただきます。

>この時デフォルトゲートウェイのMACアドレスがなければ当然ARPで解決が図られる。

というところですが、デフォルトゲートウェイが同じネットワークなら当然ARPで解決されると思いますが、デフォルトゲートウェイが違うネットワークだと分かっているのにARPが出るかどうかというのがわかりませんでした。デフォルトゲートウェイに送る際にMACアドレスが分かっていなければ無条件でARPするような作りなんでしょうか、どうなんでしょうね。


>ホストAからのパケットはデフォルトゲートウェイに送信され、ルーティングされてホストBに届く。ホストBからのレスポンスはデフォルトゲートウェイを経由しないで(正しいサブネットマスクをもつホストBではホストAを同一ネットワーク内と認識するため)直接ホストAに送られる。

の部分についてですが、ホストBへ行く時の経路はなんとなくそんな感じになりそうな気がしますが、ホストAへ戻ってくるときは、デフォルトゲートウェイからホストBにパケットが行っているため、ホストBから一旦デフォルトゲートウェイに行くのではないでしょうか。MACアドレスって最新のに置き換わるような気がするので。
でもどっちにしろ、デフォルトゲートウェイが中継するなら通信できそうな気がしますね。
結局No.2さんの実験の結果がすべてなんでしょうけど。tracerouteとかしてくれるとちょっとわかったりしないかな(人任せ(笑))

自分の考えでは、MACアドレスはデフォルトゲートウェイを指しているためパケットは届くんだけど、ネットワーク層での判断(?)的なところで同じネットワークのパケットは弾くんじゃないかなと思ったりしました。ブロードキャストとかでもパケットは届くわけですし。でもブロードキャストとは違うのか。
ちょっとわかりませんね。

本来の質問とは違いますが、これも気になるので誰か回答してくれたらいいなと思います。

回答がつかなかったら締め切りたいと思います。

お礼日時:2010/04/27 22:45

CCNAレベルでしかない私の考えは。



1)インターネットへの通信は問題なく行えると思います
  インターネットへの通信ということは、宛先IPアドレスは今回のようなサブネットマスクの間違いでは(又は正しかろうと)、他ネットワークと認識されるので、ホストAからはデフォルトゲートウェイにパケットは送出される。この時デフォルトゲートウェイのMACアドレスがなければ当然ARPで解決が図られる。

2)ホストBへの通信はどうなるか
  仮に192.168.1.2のアドレスを持つホストBが存在し、ホストAからホストBへの通信ではどうなるか、推測ですが。
  ホストAからのパケットはデフォルトゲートウェイに送信され、ルーティングされてホストBに届く。ホストBからのレスポンスはデフォルトゲートウェイを経由しないで(正しいサブネットマスクをもつホストBではホストAを同一ネットワーク内と認識するため)直接ホストAに送られる。

上記のように考えますがいかがでしょうか。
    • good
    • 0

サブネットマスクでクラスC以下のネットワークを設定する方法になりますので、通信出来なくなります。



サブネットマスクは以下のように規定されています。
クラスA 255.0.0.0 xxx.0.0.0~xxx.255.255.255
クラスB 255.255.0.0 xxx.xxx.0.0~xxx.xxx.255.255
クラスC 255.255.255.0 xxx.xxx.xxx.0~xxx.xxx.xxx.255

クラスC以下の細分化では次のようになります。
2分割 255.255.255.128 xxx.xxx.xxx.0~xxx.xxx.xxx.127
    255.255.255.128 xxx.xxx.xxx.128~xxx.xxx.xxx.255

4分割、8分割などに分割可能です。

あなたの設定では192.168.1.1と192.168.1.200間の通信は物理的な配線で同一に見えるネットワークでも論理的に別のネットワークと見なされますので、192.168.1.200側に別のルーター(ゲートウェイ)が必要です。(192,168.1.129など)
当然ですが、意識的に細分化する場合はルーターのサブネットマスクを同一にしなければなりません。
    • good
    • 0
この回答へのお礼

そうですね。別ネットワークだとデフォルトゲートウェイに送るため、デフォルトゲートウェイのMACアドレスがわかっていたりしたらどうなるのかや、デフォルトゲートウェイだけ特別扱いでARP要求を送るのか等が知りたかったのです。

回答ありがとうございました。

お礼日時:2010/04/27 22:19

興味深い内容でしたので WindowsXP SP3 で実験してみました。


下記の様に、arp テーブルをクリアしてから外部へ通信して見たら、普通に通信できてしまいました。


C:\>ipconfig
Windows IP Configuration
Ethernet adapter ローカル エリア接続:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.0.201
Subnet Mask . . . . . . . . . . . : 255.255.255.128
Default Gateway . . . . . . . . . : 192.168.0.1

C:\>arp -d
C:\>arp -a
No ARP Entries Found


パケットキャプチャをしてみたところ、意外なことにPC側から Broadcast で 192.168.0.1 のARP要求が出てました。
デフォルトゲートウェイの場合は、自分と違うネットワークのアドレスが設定されていても、ARPするようになっているのかも知れませんね。(Windows の仕様?)
そもそも、デフォルトゲートウェイが自分と違うネットワークのアドレスに設定されている時点で何かが間違っている訳ですからね。

ちなみに別ネットワークになってしまってたLAN内の別のPCへはPingも通りませんでした。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

まさに、こんな感じの実験をしたかったのですが、環境がありませんでした。
ARP要求が出るのはOSによっても違うのかもしれませんね。

大変参考になりました!

お礼日時:2010/04/27 22:15

ん~、時間がとれなくて検証できてませんが…



> arpテーブルにデフォルトゲートウェイのMACアドレスが登録されているかいないかによっても違うのでしょうか。

違ってくるでしょうね。基本的にnext hopのIPとmacアドレスが判ればパケットを転送できますので。今のPCがWindowsであれば、DOSプロンプトから"arp -d *" とコマンドを実行して、arpテーブルを削除してもう一回やってみてください。多分違う結果が出るのではないかと予想しております。

> 通信前からデフォルトゲートウェイのMACアドレスがarpテーブルにあり

こういう状態は普通有りませんので、試験環境としては特殊になりますね。

普通は質問文のような状況だと通信はできないはずです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

arp -d も試したんですが、なんでか削除できませんでした。
”ARP エントリを削除できませんでした: 87”
と出ました。

普通は通信できないということがわかればOKです。

念のため、他の回答ももう少し待ちたいと思います。

お礼日時:2010/04/25 00:00

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