web-dev-qa-db-ja.com

Mac OS 10.11(El Capitan)でpfctlを使用してポートを転送する

私は現在、開発中の環境が新しいMac OS 10.11で実行されるかどうか、およびリリースされたらすぐにアップグレードできるかどうかをテストしています。私のテストマシンでは、現在ベータプレビュー3を実行しています。すべてが正常に実行されているようです。

pfctlを取得してポートを転送できます。 Vagrant and Parallels Desktopを使用して、ローカルWebサーバー用のDebianシステムを実行しています。 Vagrantは、ホストのポート8080をゲストの80に転送します。そう 127.0.0.1:8080 正常に動作します。ただし、一部のプロジェクトでは、本番環境とまったく同じドメインをローカルにしたい場合があります。 (:8080なし)また、私はそれがもっと好きです。 ;-)

これを行うには、pfctlを使用してホストで80から8080に転送します。これが私の設定ファイルです:

〜/ port-forwarding/pf.conf

rdr-anchor "forwarding"
load anchor "forwarding" from "/Users/nick/port-forwarding/rules.conf"

〜/ port-forwarding/rules.conf

rdr pass on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080 
rdr pass on lo0 inet proto tcp from any to any port 443 -> 127.0.0.1 port 4433 

それを有効にするために、私は実行します:

Sudo pfctl -vnf ~/port-forwarding/pf.conf
Sudo pfctl -evf ~/port-forwarding/pf.conf

これは私にこれを与えます:

pfctl: Use of -f option, could result in flushing of rules
present in the main ruleset added by the system at startup.
See /etc/pf.conf for further details.

rdr-anchor "forwarding" all

Loading anchor forwarding from /Users/nick/port-forwarding/rules.conf
rdr pass on lo0 inet proto tcp from any to any port = 80 -> 127.0.0.1 port 8080
rdr pass on lo0 inet proto tcp from any to any port = 443 -> 127.0.0.1 port 4433
pfctl: Use of -f option, could result in flushing of rules
present in the main ruleset added by the system at startup.
See /etc/pf.conf for further details.

No ALTQ support in kernel
ALTQ related functions disabled
rdr-anchor "forwarding" all

Loading anchor forwarding from /Users/nick/port-forwarding/rules.conf
rdr pass on lo0 inet proto tcp from any to any port = 80 -> 127.0.0.1 port 8080
rdr pass on lo0 inet proto tcp from any to any port = 443 -> 127.0.0.1 port 4433
pf enabled
logout
Saving session...completed.

Sudo pfctl -s nat言います:

No ALTQ support in kernel
ALTQ related functions disabled
rdr-anchor "forwarding" all

今のところ良さそうだと思います。しかし、それは機能しません。

127.0.0.1:80-接続なし127.0.0.1:8080-動作します

Yosemiteでも同じファイルを使用していますが、そこでは問題なく動作します。

pfctlの使用方法に変更があったのか、何か間違ったことをしているのか、報告できるバグがあるのか​​、誰か知っていますか。

どうもありがとう

ニック

9
Dafen

これはOSX 10.11-El Capitan-パブリックベータ1にのみ適用されます

x-post from: https://superuser.com/questions/938999/osx-10-11-el-capitan-beta-pf-conf-behaviour-changed/943981#943981

最新の10.11ベータでは、127.0.0.1がブロックされています。ソリューション? 127.0.0.2を使用します。これをする:

最初に127.0.0.2をループバックエイリアスに追加しますSudo ifconfig lo0 alias 127.0.0.2 up

新しいエイリアスを使用するようにpfルールを変更します。 rdr pass proto tcp from any to any port 80 -> 127.0.0.2 port 8080

コマンドラインから、ファイルを使用せずに:

echo "rdr pass proto tcp from any to any port {80,8080} -> 127.0.0.2 port 8080" | pfctl -Ef - <-この最後のティックを必ず追加してください。STDINでパイプしています)

11
Cory