Windowsでサーバープログラムを実行する際は、常にこれをやらないと繋がりません。
Windows OSでは Windows Server 2022のようなサーバー用OSでも、Windows 10のようなクライアントOSでも、ファイアウォールのプログラムが動いています。
Windows OSにサーバープログラムを立ち上げて、その OSだけで動作が確認している場合、例えば Windows Server 2022で IISを立ち上げて、同じ Windows Server 2022の Edgeで IISにアクセスする場合ですけど、ファイアウォールには引っかかりません。
一方で、一旦ネットワーク経由で他の PCやスマホからアクセスする時に「設定は全て正しいはずなのに繋がらない…」ということに必ずなります。
これは単に先に知っておけば良いだけ、単に以下の作業をすれば良いだけの話なので、ここに書いておきます。
1.ネットワークの確認
Windowsのファイアウォールは、[パブリック][ドメイン][プライベート]という 3つの枠それぞれで別個にアクセス制限などの設定を行うことができます。
そしてネットワークインターフェイスは、これら 3つのうちのどれかに所属することになっていますので、まずそれを確認します。
スタートメニューから [(歯車アイコン)設定] → [ネットワークとインターネット] → [状態] と選択して下さい。
このような画面になるはずですので、ウィンドウの上の方を見て下さい。
ノートPCと地球(?)の間に有線LANのコネクタ(?)のアイコンがありまして、その下に書いてあるのが何かを覚えておいて下さい。
私の Windows Server 2022では [プライベート ネットワーク] になっていました。
2.ファイアウォールの設定変更
本名は「セキュリティが強化された Windows Defender ファイアウォール」って言うんですが、長いので以下は「Windowsファイアウォール」と省略します。
Windowsファイアウォールを起動します。
スタートメニューから [Windows管理ツール] → [セキュリティが強化された Windows Defender ファイアウォール] と選択して下さい。
比較はしたことがありませんが、サーバーOSでもクライアントOSでも画面が同じだと思います。
こんな画面になるはずです。
分かりづらいのですが、[概要] の中の [プライベート プロファイルがアクティブです] と書かれているところの下に、[規則に一致しない受信接続はブロックされます。] とあります。
私の環境では、ネットワークが [プライベート] の枠にありましたので、この設定のためにサーバープログラムを立ち上げても外からアクセスできないのです。
これから [プライベート] のプロファイルを変更します。
現場ではファイアウォールに「穴を開ける」ってよく言います。
上画像のウィンドウの左ペインのツリーに [受信の規則] ありますので、それをクリックします。
このような画面になります。
ここに羅列されているのが「受信の規則」で、サービス・プログラム・プロトコル(ポート)単位に穴を開けたり閉じたりしています。
例として、このサーバーに Oracleデータベースをインストールしたとして、ネットワーク上の他のクライアントPCからアクセスさせたいとします。
Oracleデータベースは [1521/tcp] で受信を行いますので、その設定をします。
上のウィンドウで、[受信の規則] で右クリックをするとメニューが出ますので、[新しい規則] を選択します。
[ポート] を選択し、次へを押します。
[TCP] と [特定のローカルポート] を選択し、[特定のローカル ポート] に「1521」と入れた上で、次へを押します。
[接続を許可する] を選択し、次へを押します。
この Windows Server 2022でのネットワークは [プライベート] に入っていましたので、[プライベート] を選択し、次へを押します。
[名前]・[説明] は分かりやすいように好きに書いて、完了を押します。
一番上に今設定したものが入っています。
これで Windowsファイアウォールの穴開けは完了です。
3.ファイアウォールのその他
一度規則として作ったものは、規則毎に ONしたり OFFしたりできて、削除する必要はありません。
設定の途中で [ポート] を選択する画面がありましたが、あそこで [プログラム] を選択すると、プログラムファイル(.exeで終わる)の選択ができます。
[プログラム] を使うとプログラムが使うポートが変わってしまっても追従してくれるので便利ではあるのですが、本物のネットワーク機器のファイアウォール製品などではポート番号での管理となりますし、使っているソフトが何番のポートを使っているかはサーバーエンジニアとして押さえておかないといけない情報なので、ポートで設定するのをお勧めします。
Windowsファイアウォールでは、画面を見ても分かる通り、受信側だけではなく送信側にも設定ができます。
受信側は「設定しないと受け付けない」という考え方になっていますが、送信側は「設定しないと制限しない」という考え方ですね。
他にも、受信時に送信元を IPアドレスで制限したり、破棄されたネットワークパケットを記録するログの設定もあります。
なお、豆知識ですが、Windowsサーバーはデフォルト設定だと Pingが通りません。
ヒントは「コアネットワーク診断」です。
==========
パブリッククラウドの IaaSにおいては Windowsファイアウォールよりも、クラウド側が用意したよりネットワークレイヤに近い所で行われるフィルタリング設定が使われているようです。
でもそれだけに頼らず、OSレイヤの Windowsファイアウォールでも明確に制限をしておくのがベターですね。
とにかく色々イジってみると良いでしょう。
但し、リモートでしかアクセスできない環境でミスるとハマりますのでご注意下さい。
(お勉強環境で一度事故を起こす経験をしておくのが良いと思います。)
ではごきげんよう。
Windowsはこういう書籍がキッチリ出るので良いですね。
ひと目でわかるWindows Server 2022 (マイクロソフト関連書) [ 天野 司 ] 価格:3300円 |