同じ PC 上の Linux ではアクセス可能なのに、Windows では一部のサイトにアクセスできない

同じ PC 上の Linux ではアクセス可能なのに、Windows では一部のサイトにアクセスできない

次のようなサイトにアクセスする際に問題が発生しますペーストビンまたはパイレーツベイWindows 10 システムから。ブラウザがタイムアウトします。さまざまなブラウザ (Brave、Edge、Chrome、Firefox) を試し、Windows で新しいユーザー プロファイルも作成しましたが、結果は同じでした。

私のネットワーク内の他のシステムでは、これらのサイトへのアクセスに問題はありません。また、システムで Linux を起動すると、その PC からこれらのサイトにアクセスすることもできます。

これは、ルーターまたは ISP レベルでフィルタリングが行われていないことを示しています。そうでなければ、他のシステムもこれらのサイトにアクセスできないはずです。

何を探せばいいか、何かアイデアはありますか?

答え1


要約

ホスト ファイルが変更され、Web サイトのアドレスが間違った IP にリダイレクトされ、アクセスできなくなったため、Web サイトにアクセスできません。


コンピュータファイル hosts は、ホスト名を IP アドレスにマッピングするオペレーティングシステムファイルです。プレーンテキストファイルです。元々 HOSTS.TXT というファイルは手動で管理され、ARPANET 会員向けにスタンフォード研究所によってファイル共有を介して提供されていました。このファイルには、会員組織によって提供されたホストのホスト名とアドレスが含まれています。1983 年に初めて説明され、1984 年に実装されたドメインネームシステムは、1公開プロセスを自動化し、急速に成長するネットワークで瞬時に動的なホスト名解決を実現しました。最新のオペレーティング システムでは、hosts ファイルは代替の名前解決メカニズムとして残っており、多くの場合、ネーム サービス スイッチなどの機能の一部として、主要な方法またはフォールバック方法として構成できます。

からウィキペディア

Windows システムの場合、hosts ファイルは C:\Windows\System32\drivers\etc\hosts にあり、Web サイトのアドレスとインターネット プロトコル アドレスのマッピングが含まれています。

コンピュータはウェブサイトのアドレスを理解できず、1と0しか理解できないため、コンピュータが接続先を認識できるようにウェブサイトのアドレスを IPv4 アドレスに変換する必要があります。

アンIPv4アドレスは 4 バイト (32 ビット) の 2 進数で、各数字が 1 バイトの長さの 4 つの数字に分割され、ドットで区切られるため、合計アドレスは 4294967296 に制限されます。

ここに画像の説明を入力してください

IPv4 を 4 バイトの数値に変換するには、左から右へ次のようにします。

16777216*$ip.split('.')[0]+65536*$ip.split('.')[1]+256*$ip.split('.')[2]+$ip.split('.')[3]

ただし、4 バイトを IPv4 に変換するのは難しくなります。

$byte1=[math]::floor($number/16777216)
$number=$number % 16777216
$byte2=[math]::floor($number/65536)
$number=$number % 65536
$byte3=[math]::floor($number/256)
$number=$number % 256
"{0}.{1}.{2}.{3}" -f $byte1,$byte2,$byte3,$number

上記は PowerShell で IPv4 を変換する例です。実のところ、簡単に理解できます。ただし、1 秒以内に値をすばやく変換することはできないと認めざるを得ません。コンピューターなら可能です。ただし、Web サイトのアドレスは理解できますが、コンピューターは理解できません。

コンピュータにとっての IP アドレスは、人間にとっての名前のようなものです。Web サイトはコンピュータが所有する本のようなものです。本は多くの人が所有している可能性があり、1 人の人間が複数の本を所有することもできますが、名前は各人に固有です (少なくとも理論上は)。人と名前の間には 1 対 1 の対応があります。IP アドレスは実際には各コンピュータに固有であることに注意してください。私たちは、所有している本の名前で誰かを呼ぶのではなく、名前で誰かを呼び出します。コンピュータも同様に機能します。Web サイトにアクセスするには、その本を所有しているコンピュータと通信して、その本を読む必要があります。

そのため、Web アドレスにアクセスするときにどのコンピューターに接続するかをコンピューターに伝える DNS サーバーがあります。DNS サーバーは、Web サイトがホストされている IP アドレス (本の所有者) を記録し、IP アドレスが指すコンピューターと通信するようにコンピューターに指示します。

コンピュータは、Web サイトが実際にどこにあるのか、またその答えが本物かどうかはわかりません。指定された IP アドレスにアクセスするだけです。そのため、間違った IP アドレスが返された場合は、Web サイトにアクセスできません (間違った IP が指しているマシンでは Web サイトがホストされておらず、間違った IP に関連付けられているマシンには Web ページが存在しないためです)。これは DNS スプーフィングと呼ばれ、特定の Web サイトについて質問されたときに DNS サーバーが意図的に偽の IP を返して、これらの Web サイトをブロックします。この手法は、Wikipedia や DeviantArt などの一部の Web サイトを禁止するために GFW で広く使用されています (この手法では、ブロックされているすべての Web サイトがブロックされるわけではありません)。

DNS スプーフィングに対抗する簡単な方法は、ホストを変更することです。Web サイトにアクセスすると、コンピューターは Web サイトのアドレスがホスト ファイルに存在するかどうかを確認し、アドレスがホスト ファイルに存在しない場合にのみ DNS サーバーにクエリを実行します。アドレスがホスト ファイルに見つかった場合は、ホスト ファイルにあるアドレスにアクセスし、DNS サーバーにクエリを実行しません。したがって、正しい IP がホスト ファイル内にある場合、DNS サーバーの誤った応答によって特定の Web サイトへのアクセスがブロックされることはありません。正しい IP は、オンライン DNS ルックアップによって検出されます。

ただし、hosts ファイルも悪用される可能性があります。

次のように、hosts ファイルを使用して Web サイトをブロックできます。

127.0.0.1 www.contoso.com

一部のプログラム (特にマルウェアやマルウェア対策プログラム) もこれを行うことができます。

繰り返しますが、コンピュータには IP が正しいか、サイトをブロックしたいかどうかを判断する方法がないため、単に従うだけです。

このため、ほとんどすべてのウイルス対策ソフトウェアとマルウェア対策ソフトウェア (少なくとも私が知っている限り) は、hosts ファイルが変更されないようにする一方で、セキュリティ上の理由からユーザーを「保護」するために一部の Web サイトをブロックするように hosts ファイル自体を変更します。そのため、hosts ファイルに手を出す場合は、まずいわゆるウイルス対策ソフトウェアをアンインストールしてください。

関連情報