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
不會擷取任何數據包。我不確定發生了什麼,並感謝所有幫助。
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
另請注意,這
locahost
可能意味著您可能還需要設置相關規則,127.0.0.1
或確保始終使用 IPv4 完成連接,以便 IPv6 工作或不使用。::1``inet6