ローカルネットワーク(または外部ネットワーク)の他のコンピュータではWebページを見るのに問題はありませんが、私のMacBookではRaspberry Piが提供するWebページにアクセスできない理由を見つけようとしています。そのため、MacとPiの両方にtcpdumpを設定し、両方で試してみました。
私の最初の質問は次のとおりです。 (2つの部分に)
A)発信パケットがtcpdumpに表示された場合、これは起こりますか?保証するパケットは実際に送信されましたか? (つまり、タップポイントのダウンストリームにパケット転送を妨げる可能性がありますか?)
B)予想される受信パケットがtcpdumpに現れない場合、これは起こりますか?保証するこのパケットを受信できませんでしたか? (つまり、tcpdumpが見る前に受信したパケットを破棄できるタブポイントのアップストリームはありますか?)
これらの質問はtcpdumpログを観察しながら出てきました。
- MacはPiに短いパケットを送信します。
- Piはパケットを受信し、短いパケットをMacに送り返します。
- Macはパケットを受信し、2番目のパケットにブラウザ情報などを含む2つのパケットを送信します。
- Piはこれら2つのパケットを受信できませんでした。
上記の仮定AとBの両方が正しい場合、これは私のルータが何らかの理由でMacパケットを私のWinXPシステムのパケットとは異なる方法で処理していることを意味します。 (外部的には、パケットが内部ネットワークのどのシステムに属しているかを知る方法がないため、私のルータに存在する必要があるとします。したがって、他のシステムを別の方法で処理する方法はありません。)
もしそうなら、私が想定したすべてが正しいなら、何が間違っているのか、それとも次に何を見なければなりませんか?
答え1
A)発信パケットがtcpdumpに現れた場合、そのパケットが実際に送信されたという保証はありますか? (つまり、タップポイントのダウンストリームにパケット転送を妨げる可能性がありますか?)
これは、パケットがネットワークインターフェイスから流れ出るが、それ以上ではないという意味です。パケットが宛先に到達したことを確認するには、tcpdump
受信側でパケットを実行する必要があります。
ファイアウォールはおそらく犯人です(出て行くものと入ってくるものの両方)。
B) 期待される受信パケットが tcpdump に現れない場合、パケットが受信されないことは保証されますか。 (つまり、tcpdumpが見る前に受信したパケットを破棄できるタブポイントのアップストリームはありますか?)
はい、tcpdump
正しいインターフェイスを見ていて外部から送信されたと確認されたパケットが表示されない場合は、パケットが送信されていない可能性があります。
デフォルトパス
デフォルトパスが正しく指定されていない場合、パケットは正しいゲートウェイネットワークデバイスに到達し、その特定のサブネット上のデバイスに転送されません。
Macのデフォルトルーティングが正しく設定されていることを確認します。
はい
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 wlp3s0
192.168.1.0 0.0.0.0 255.255.255.0 U 9 0 0 wlp3s0
メモ:上記はFedora 19システムからのものですが、Macにも同様の機能があります。ネットワークのデフォルトルーティングが正しく設定されていることを確認してください。
ファイアウォール
また、邪魔になるファイアウォールがないことを確認したいと思います。 Piデバイスでは、iptables関連のサービスをすべて無効にする必要があります。
$ /etc/init.d/iptables stop