2台のPCをネットワークで接続する
今回の話題はWindowsネットワークに関してです。まずは一番基本的なところから、ということで2台のWindowsPCをネットワークで接続することから始めます。
まず接続する(レイヤー1)
まず2台のPCを接続する必要があります。接続するには主に以下のような方法があります。
- ハブ(スイッチングハブ、あるいはリピータハブ)を用意し、それぞれのPCをハブに接続する。ケーブルにはストレートケーブルを使う。
- クロスケーブルを使い、2台のPCを直接接続する。
- それぞれ無線LANのアクセスポイントに接続する。
どの方法でも構いません。下位レイヤに上位レイヤが無影響でいられるところがOSI参照モデルのメリットです。(参照:OSI参照モデルとTCP/IP)
APIPA(Automatic Private Ip Addressing)を理解する
接続がすんだら次はネットワークの設定…なのですがその前に今の状態を確認してみましょう。
何もネットワークの設定をしていない状態で以下のコマンドを実行してみてください。
- ping もう一台のコンピューター名
どうでしょうか?何も設定していないのにpingに応答があったと思います。(応答がない場合には後述する「通信できない原因」を参照してください)もうちょっと見てみましょう。「スタート」→「ファイル名を指定して実行」にて「\\もう一台のコンピューター名」を入力してみてください。結果は環境やパスワードの設定などによって異なるのですが以下のような挙動のはずです。
- パスワード入力を求められた
- コンピュータに接続でき、ウインドウが開いた
さらに言うと、「マイネットワーク」を開いて適当にたどってもらうと、そこにもう一台のコンピューターも表示されているはずです。表示されるまでには時間がかかるのでまだ表示されていないようであれば10分程度待ってからもう一度表示してみてください。
つまり、何も設定していないのにもうネットワーク的に接続されていて、しかも、コンピューター名をお互いに認識できているわけです。Windowsは知識がないユーザーのために「とりあえず刺せば繋がる」ようになっているわけですね。
このときネットワークの設定はAPIPAという機構が働いて設定されています。アドレスは169.254.0.0/16の範囲から重複しないように選ばれます。ipconfig /allで設定を確認することができます。
この機能、親切だし便利ではあるのですが「設定されるまでに時間がかかる」「インターネットには接続できない」という致命的な問題もあり、実際にはよく分かっていない人がわけもわからず使ってしまっていることをのぞけばまず使われていません。
ネットワークの設定をする(レイヤー3)
では、きちんとネットワークの設定をしていきましょう。現在はTCP/IPがデファクトスタンダードですので、WindowsのネットワークにおいてもTCP/IPの設定をすることになります。設定は以下の手順で行えます。
「マイネットワーク」を右クリック→「プロパティ」→「ローカルエリア接続」(※使用するネットワークアダプタ)を右クリック→「プロパティ」→「インターネットプロトコル(TCP/IP)」→「プロパティ」
ここで2台のコンピューターのネットワーク設定を以下のように設定します。
- 同一のネットワーク
- 重複しないIPアドレス
今はプライベートなネットワークを作ろうとしていますのでIPアドレスとしてはプライベートIPアドレスを設定すべきです。具体的には以下のアドレスの範囲から選択します。
範囲 | サブネットマスク |
10.0.0.0 – 10.255.255.255 | 255.0.0.0 |
172.16.0.0 – 172.31.255.255 | 255.240.0.0 |
192.168.0.0 – 192.168.255.255 | 255.255.0.0 |
実際には2台であれば192.168.1.0/24のネットワークを使って、192.168.1.1, 192.168.1.2というIPを割り当てることが慣習的に多いです。
しかし、上記のプライベートIPアドレスの範囲であれば何を使っても構いません。さらに言うと上記のプライベートIPアドレスの範囲を超えてグローバルIPアドレスの範囲を使っても通信は問題なく行えます。ただし、特殊用途のIPアドレスとして割り当てられている範囲もあるため、適当に設定すると通信できないこともあり得ますので、素直にプライベートIPアドレスを使うべきでしょう。
デフォルトゲートウェイとサブネットマスク
このとき、デフォルトゲートウェイとDNSサーバーに何を入れればいいのか迷うかもしれませんが、今回の構成ではネットワーク上に存在しないわけですから何も入力しなくて構いません。あるいは何か適当なIPアドレスを入力しても構いません。このような構成は検証環境等ではよくあります。
ここでひとつ注意点です。たまにデフォルトゲートウェイに値が入っていないと正常に動作しないアプリケーションがありますので注意してください。(単にソフトウェアのつくりが悪いだけなのですが)
通信してみる
ここまででWindowsネットワークの設定が完了しました。
- ping もう一台のコンピューター名
を実行するとpingに応答があるはずです。確認してみてください。
通信できない原因
たいていのケースではここまでの手順できちんと通信ができるようになるのですが、場合によっては通信できないこともあります。ここではその原因となりうるものとその対処法をあげてみます。
実はきちんと接続できていなかった
- ケーブルが断線している
- HUBの電源が入っていない
- 2台を直接つなぐ際にクロスケーブルではなくストレートケーブルをつかっている
- 無線LANに接続できていなかった
上記のような場合には接続できていないため、通信は成功しません。これに関してはipconfigコマンドの結果でMedia disconnectedと表示されることで判別可能です。
Ethernet adapter ローカル エリア接続:
Media State . . . . . . . . . . . : Media disconnected
ネットワークの設定が間違っている
ネットワークの設定が間違っている場合にはもちろん通信できません。よくあるのはpingを実行した際に「Destination Unreachable」というメッセージが返ってくるケースです。これは2台のPCが同一ネットワークに無いことを表していますので、IPアドレスとサブネットマスクの設定を見直してみてください。
Windowsファイアウォールがブロックしている
最近のバージョンではWindowsファイアウォールが規定で有効になっています。この場合設定はすべて正しくてもWindowsファイアウォールによってブロックされてしまい通信できません。特に以下のような状況であればまず間違いなくWindowsファイアウォールが原因です。
- arp -aコマンドを実行すると、MACアドレスの取得まではできている
- 片方からは通信できるのに、もう片方からは通信できない
- 通信できるものもあるのに、通信できないものもある
Windowsファイアウォールは「コントロールパネル」→「Windowsファイアウォール」からアクセスできるので有効になっているようであればテスト中だけ無効にする、必要な例外を追加するなどの対応を行う必要があります。
Windowsファイアウォールに関しては別エントリで解説しようと思います。
まさに
•片方からは通信できるのに、もう片方からは通信できない
の状況に陥っており、原因を探っているうちに貴ページにたどり着きました。
windowsファイアウォールが原因でした。
参考にさせていただきました。大変助かりました!ありがとうございました!
わざわざコメントありがとうございます!
お役に立てたようで嬉しいです!