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 lo0
。skip
localhost アクセスリダイレクトが必要な場合は、以下を使用しないと問題を解決できます。
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
::1
inet6