私も最近似たようなことをしなければならなかった、と検索でこの答えに出くわした。残念ながら、Nafeの答えipfw
は、現在は非推奨であり、OSXでは使用できません。そして、Kevin Learyの答えは確かに少しハックです。それで、私は何かをより良く(よりきれいに)しなければならなかったので、後世のためにここでそれを共有することにしました。この答えは主にこの要点で言及されたアプローチに基づいています。
OPが言及しているように、192.168.99.100でブラウザをポイントすると、localhost:8000のサーバーから応答が返されます。へのエイリアスの追加ifconfig
は、実際には必要ではなく、それpfctl
だけで十分です。これを実現するには、pf.conf
ファイルを/etc/pf.conf
変更する必要があります。
まず、次の場所で(sudoを使用して)新しいアンカーファイルを作成します(呼び出しましょう redirection
)/etc/pf.anchors/redirection
。これは基本的に通常のテキストファイルであり、次の行が含まれています(Kevin Learyの回答と同様)rdr pass on lo0 inet proto tcp from any to 192.168.99.100 port = 80 -> 127.0.0.1 port 8000
。新しいアンカーファイルを作成したら、ファイル内で参照する必要がありpf.conf
ます。pf.conf
sudoでファイルを開き、rdr-anchor "redirection"
最後のrdr-anchor行(つまりrdr-anchor "com.apple/*"
)の後に追加load anchor "redirection" from "/etc/pf.anchors/redirection"
し、最後に追加します。
最終的に、これはpf.confファイルが次のようになるはずです。
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
rdr-anchor "redirection" #added for redirection/port forwarding
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
load anchor "pow" from "/etc/pf.anchors/redirection" #added for redirection/port forwarding
そして、それはほとんどそれです。最初に無効にpfctl
してsudo pfctl -d
から再起動することで、再起動しsudo pfctl -fe /etc/pf.conf
ます。
今、これを再起動するたびに自動的に行う必要がある場合は、もう少し作業が必要です:起動デーモンをpfctl
更新する必要がありますコードを見てからのケース)。(sudoで)開きSystem/Library/LaunchDaemons/com.apple.pfctl.plist
、これを探します:
<array>
<string>pfctl</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
<string>-e</string>
最終的に次のようにするために行を追加します。
<array>
<string>pfctl</string>
<string>-e</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
それはそれを行う必要があります。
警告:Appleは、そのような起動デーモンファイルを変更することを許可しなくなりました(sudo、chmod、その他の変更は不可)。唯一の方法は、といじくり回すあるシステムの整合性の保護の設定:リカバリーモードおよび起動端子に起動します。でSIPステータスを確認しますcsrutil status
。通常は有効にする必要があります。で無効にしcsrutil disable
て通常モードで再起動し、上記のようにplistファイルに変更を加えます。完了したら、リカバリモードに戻り、を発行して保護を再度有効にします(正当な理由で適切に配置されていcsrutil enable
ます)。
説明:すでにローカルホストlo0の(デフォルト)エイリアスであるifconfig
コマンドを発行することで確認でき127.0.0.1
ます-この事実は、ローカルホストに余分なエイリアスを追加する必要をなくし、pf.conf
ファイル内のデフォルトアドレスを単に使用するために使用されています。
更新:残念ながら、起動時にファイルをロードしても機能しないようです。私はまだそれをソートするための助けを得ようとしています。それまでは、起動sudo pfctl -f /etc/pf.conf
後に実行するとうまくいきます。