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

텔넷을 통해 이 서버에 연결하려고 하면 다음 오류와 함께 시도가 실패합니다.

$ 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. skiplocalhost 액세스 리디렉션이 필요한 경우 다음을 사용하지 않으면 문제를 해결할 수 있습니다.

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

관련 정보