
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
. 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