답변:
모든 포트 80 트래픽을 포트 8080으로 전달하려면 터미널 명령 줄에서 다음을 입력하면됩니다.
echo "
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -
sudo pfctl -F all -f /etc/pf.conf
현재 포트 전달 규칙을 표시합니다.sudo pfctl -s nat
pf.conf
파일을 포함하여 이전에로드 된 다른 규칙을 대체 합니다.
El Capitan에서 포트를 전달하는 현대적인 방법은을 사용하는 것 pf
입니다. 아래 예에서 모든 포트 80 요청은 동일한 호스트의 포트 8080으로 전달됩니다. 필요에 따라 리디렉션을 조정하십시오.
/private/etc/pf.anchors에 앵커 파일 org.user.forwarding 을 작성하십시오.
sudo touch /private/etc/pf.anchors/org.user.forwarding
다음 내용과 후행 빈 줄
rdr pass on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
rdr pass on en0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
rdr pass on en1 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
또는
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
/private/etc/pf.conf 파일을 수정하지만 뒤에 빈 줄을 유지하십시오.
원본 파일 :
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
에
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
rdr-anchor "org.user.forwarding"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
load anchor "org.user.forwarding" from "/etc/pf.anchors/org.user.forwarding"
앵커 파일을 구문 분석하고 테스트하여 오류가 없는지 확인하십시오.
sudo pfctl -vnf /etc/pf.anchors/org.user.forwarding
이제 /System/Library/LaunchDaemons/com.apple.pfctl.plist를
<array>
<string>pfctl</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
에
<array>
<string>pfctl</string>
<string>-e</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
이를 위해 시스템 무결성 보호를 비활성화해야합니다. 파일을 편집 한 후 SIP를 다시 활성화하십시오. 재부팅 후 Mac pf가 활성화됩니다 (-e 옵션).
또는 서버 공유 5.0.15를 사용하여 인터넷 공유없이 인터넷 공유 에 대한 답변과 유사한 자체 시작 데몬을 만들 수도 있습니다 .
시스템 업데이트 또는 업그레이드 후 위의 일부 원본 파일이 교체되었을 수 있으며 모든 변경 사항을 다시 적용해야합니다.
다른 인터페이스를 통해 전달하려면 /etc/sysctl.conf에서이를 활성화해야합니다.
net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
ping
네트워크 문제를 진단하는 데있어 친구라는 점을 기억 하십시오.
@ sal-ferrarello 답변의 솔루션을 확장하기 위해의 기존 항목 을 손상시키지 않고 리디렉션 을 활성화 하거나 비활성화 하는 두 가지 기본 쉘 스크립트를 만들었습니다 .pf
I. 먼저 어떤 항목이 있는지 찾으십시오.
sudo pfctl -s nat
내 출력은 다음과 같습니다
No ALTQ support in kernel
ALTQ related functions disabled
nat-anchor "com.apple/*" all
rdr-anchor "com.apple/*" all
우리가 관심을 갖는 것은 실제 항목이므로 처음 두 개의 정보 행을 생략하십시오.
II. enable.sh
스크립트 작성 :
#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -
sudo pfctl -s nat
다음 두 줄 echo
은 이미 있던 항목입니다. 세 번째 라인은 새로운 리다이렉션 (이 경우 80에서 8080)을 사용합니다. 마지막으로 sudo pfctl -s nat
변경 사항이 적용되었는지 확인합니다.
III. disable.sh
스크립트 작성 :
유사에 enable.sh
우리가 스크립트를 만들 수 있지만 80> 8080 리디렉션하지 않고 있지만, 이전에 이미 존재하는 항목이 :
#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
" | sudo pfctl -ef -
sudo pfctl -s nat