ローカルネットワーク

macOSのファイアウォールが受信接続をブロックする

macOSのファイアウォールは、他のコンピュータからMacに対して開始される接続を制御します。アプリが開始する接続は制御しません。

対象:「システム設定」>「ネットワーク」>「ファイアウォール」はmacOS 13 Ventura以降。それより前のバージョンでは「セキュリティとプライバシー」を使います。確認日:2026年10月29日

症状

  • 他のデバイスから、Mac上のサーバ、ゲーム、共有サービスに接続できない。
  • 他のデバイスからのpingにMacが応答しない。
  • 開発用サーバがMacでは動くのに、同じWi-Fiにつないだスマートフォンからは接続できない。
  • アプリが受信ネットワーク接続を受け付けてよいか、macOSが確認してくる。

考えられる原因

  • 「外部からの接続をすべてブロック」。Appleによると、このオプションは、必須ではないサービスと、その他すべての共有サービスへの接続をブロックします。
  • 拒否されたアプリ。以前の確認で「拒否」をクリックしたか、ファイアウォールのオプションでそのアプリがブロックに設定されています。
  • ステルスモード。Macはpingなどの探査要求に応答しません。
  • サーバが127.0.0.1で待ち受けている。この場合、ファイアウォールの設定に関係なく、Mac自身からしか接続できません。

確認方法

  1. アップルメニュー >「システム設定」>「ネットワーク」>「ファイアウォール」を選択します。ファイアウォールがオンかどうかを確認します。

  2. 「オプション」をクリックします。アプリの設定と「外部からの接続をすべてブロック」を確認します。

  3. ターミナルでファイアウォールの状態を表示します。

    /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
    /usr/libexec/ApplicationFirewall/socketfilterfw --getblockall
    /usr/libexec/ApplicationFirewall/socketfilterfw --getstealthmode
  4. サーバが127.0.0.1だけでなく、すべてのアドレスで待ち受けていることを確認します。

    lsof -nP -iTCP:8000 -sTCP:LISTEN

解決方法

  1. 共有やサーバが必要な場合は、ファイアウォールのオプションで「外部からの接続をすべてブロック」をオフにします。

  2. 追加ボタンをクリックしてアプリを選択し、受信接続を許可するように設定します。

  3. 「OK」をクリックします。もう一度、他のデバイスから接続をテストします。

  4. ターミナルからアプリを許可することもできます。パスは対象のアプリに置き換えてください。

    sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /Applications/Example.app

    管理者パスワードが必要です。

  5. ファイアウォールはオンのままにして、接続を受け付ける必要があるアプリだけを許可します。

Kilobatを使う場合

  1. Kilobatのフィルタは、アプリが開始する接続を制御します。受信接続に対するmacOSのファイアウォールの代わりにはなりません。

  2. サーバプロセスが開いているソケットを確認するには、destinationsコマンドを使います。

    kilobat destinations --pid 12345

よくある質問

macOSのファイアウォールは送信接続をブロックしますか?

いいえ。Appleはこれを、他のコンピュータが開始する接続からの保護として説明しています。送信接続にはフィルタアプリを使ってください。

ステルスモードとは何ですか?

不明な送信元からのpingなどの探査要求に、Macが応答しなくなります。許可されたアプリへの要求は引き続き届きます。

出典

出典は2026年10月29日に確認しました。manページはmacOSに付属のものです。「ターミナル」でman <name>を実行すると開けます。