Osx

埠轉發在 mac osx 上不起作用

  • February 16, 2017

我在我的 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不會擷取任何數據包。我不確定發生了什麼,並感謝所有幫助。

Ardr只是一個重定向;還可能需要一個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

引用自:https://unix.stackexchange.com/questions/345497