回答:
ポート80のすべてのトラフィックをポート8080に転送するには、ターミナルコマンドラインから次のように入力します。
echo "
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -
sudo pfctl -F all -f /etc/pf.conf
あなたの現在のポート転送ルールを表示しますsudo pfctl -s nat
pf.conf
ファイルを含む以前にロードされた他のルールを置き換えることに
エルキャピタンのポートを転送する現代の方法は使用していpf
ます。以下の例では、すべてのポート80要求が同じホストのポート8080に転送されます。必要に応じてリダイレクトを調整してください。
/private/etc/pf.anchorsにアンカーファイルorg.user.forwardingを作成します
sudo touch /private/etc/pf.anchors/org.user.forwarding
次のコンテンツと末尾の空行で
rdr pass on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
rdr pass on en0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
rdr pass on en1 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
または
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
ファイル/private/etc/pf.confを変更しますが、末尾の空行を保持します
元のファイル:
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
に
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
rdr-anchor "org.user.forwarding"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
load anchor "org.user.forwarding" from "/etc/pf.anchors/org.user.forwarding"
アンカーファイルを解析およびテストして、エラーがないことを確認します。
sudo pfctl -vnf /etc/pf.anchors/org.user.forwarding
次に/System/Library/LaunchDaemons/com.apple.pfctl.plistを
<array>
<string>pfctl</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
に
<array>
<string>pfctl</string>
<string>-e</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
これを行うには、システム整合性保護を無効にする必要があります。ファイルを編集したら、SIPを再度有効にします。Macを再起動すると、pfが有効になります(-eオプション)。
または、ここでの答えに似た独自の起動デーモンを作成することもできます。Server5.0.15を使用して、インターネット共有なしでインターネットを共有します。
システムの更新またはアップグレード後、上記の元のファイルの一部が置き換えられた可能性があるため、すべての変更を再適用する必要があります。
異なるインターフェース間で転送したい場合は、/ etc / sysctl.confでこれを有効にする必要があります。
net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
ping
ネットワークの問題を診断する上であなたの友人であることを忘れないでください。
SAL-ferrarello答え@からソリューションを拡張するために、私がために、2つの超基本的なシェルスクリプトを作成して有効または無効にリダイレクトし、既存のエントリを損なうことなく中pf
。
I.最初に、あなたがすでに持っているエントリを見つけます:
sudo pfctl -s nat
私の出力は次のようなものでした:
No ALTQ support in kernel
ALTQ related functions disabled
nat-anchor "com.apple/*" all
rdr-anchor "com.apple/*" all
関心のあるのは実際のエントリなので、最初の2行の情報は省略します。
II。enable.sh
スクリプトを作成:
#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -
sudo pfctl -s nat
後の最初の2行echo
は、すでにそこにあったエントリです。3行目は新しいリダイレクトです。この場合は80から8080です。最後にsudo pfctl -s nat
、変更が適用されたかどうかを確認するために呼び出します。
III。disable.sh
スクリプトを作成:
enable.sh
スクリプトを作成するのと似ていますが、80-> 8080リダイレクトなしで、以前の既存のエントリを使用します。
#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
" | sudo pfctl -ef -
sudo pfctl -s nat