Mac OSXでポート転送が機能しない

Mac OSXでポート転送が機能しない

Macでは、次のようにポート転送を設定しました。

sudo sysctl net.inet.ip.forwarding=1
echo "rdr pass inet proto tcp from any to any port 445 -> 127.0.0.1 port 5441" | sudo pfctl -ef -

この設定のために、次のサーバーを実行していますnc

$ nc -l 5441

Telnetを介してこのサーバーに接続しようとすると、次のエラーで失敗します。

$ sudo telnet 127.0.0.1 445
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host

tcpdumpポートで実行すると、445パケットはキャプチャされません。何が起こっているのかよく分からない。助けてくれてありがとう。

答え1

Aはrdrリダイレクトにすぎず、passポートへのアクセスを許可するために必要になる場合があります(またはシステム環境設定で適切なクリック)。これは私にとって効果的でした(Mac OS X 10.11ノートブックでAppleのファイアウォールルールをほぼ完全に無効にしましたが)/etc/pf.conf

set skip on { lo0, vboxnet0 }
rdr pass inet proto tcp from any to any port 445 -> 127.0.0.1 port 5441
block in
pass in inet proto tcp from any to any port 445

次にsudo pfctl -f /etc/pf.confそれをロードしてテストし、nc -l 127.0.0.1 5441リモートシステムからポート445に接続してアクセスを表示します。

よく!しかし、地元のMac OS Xシステムtelnet 127.0.0.1 445が失敗する理由は次のとおりですskip lo0skiplocalhost アクセスリダイレクトが必要な場合は、以下を使用しないと問題を解決できます。

set skip on vboxnet0
rdr pass inet proto tcp from any to any port 445 -> 127.0.0.1 port 5441
block in
pass on lo0
pass in inet proto tcp from any to any port 445

これは、IPv6が機能しているかどうかを確認するためにルールを設定することも、接続が常にIPv4を使用して行われることをlocahost意味することもあります。127.0.0.1::1inet6

関連情報