pf
시작시 일명 패킷 필터링-프로세스를 시작 하는 매우 우아한 방법을 찾고 있습니다. launchctl
또는 pfctl
명령을 사용하면 루트 권한이 필요하므로에 권한을 추가하는 것은 쓸모가 없습니다 .bash_profile
. 이 문제에 대한 대안 솔루션이 있습니까?
pf
.
pf
시작시 일명 패킷 필터링-프로세스를 시작 하는 매우 우아한 방법을 찾고 있습니다. launchctl
또는 pfctl
명령을 사용하면 루트 권한이 필요하므로에 권한을 추가하는 것은 쓸모가 없습니다 .bash_profile
. 이 문제에 대한 대안 솔루션이 있습니까?
pf
.
답변:
기본적으로 pf는 시작할 때 자동으로 실행되지 않으며 시작 데몬 com.apple.pfctl.plist 는 / System / Library / LaunchDaemons /에 있습니다. 부팅하는 동안 pf를 활성화하려면 -e
plist에 스위치 를 추가해야합니다 .
/ System / Library / LaunchDaemons /의 모든 파일은 macOS 10.11 이상에서 SIP로 보호 되므로 먼저 비활성화해야합니다 .
그런 다음 기본 시스템으로 부팅 한 후 실행 데몬 plist를 편집하십시오.
sudo nano /System/Library/LaunchDaemons/com.apple.pfctl.plist
교체
...
<key>ProgramArguments</key>
<array>
<string>/sbin/pfctl</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
...
와
...
<key>ProgramArguments</key>
<array>
<string>/sbin/pfctl</string>
<string>-e</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
...
복구 모드로 재부팅하고 SIP를 다시 활성화하십시오.
데몬을 사용하여 시작할 때 프로세스를 시작할 수 있습니다. 또는 .plist
내부 에 파일을 추가하거나 수정하는 데몬을 만들거나 기존의 데몬을 편집 할 /System/Library/LaunchDaemons
수도 /Library/LaunchDaemons
있습니다.
필자의 경우, 데몬 인 macOS Sierra를 실행하면 pfctl
이미 해당 폴더 중 하나 안에 있지만 -e
옵션 없이 설정되었습니다 . 결과적으로 시작시 데몬이 아무런 영향을 미치지 않고 시작되었습니다.
언급 된 옵션을 추가하여 문제가 해결되었으며 옵션이 적절하지 않아도 더 많은 문제가 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<false/>
<key>Label</key>
<string>com.apple.pfctl</string>
<key>WorkingDirectory</key>
<string>/var/run</string>
<key>Program</key>
<string>/sbin/pfctl</string>
<key>ProgramArguments</key>
<array>
<string>/sbin/pfctl</string>
<string>-e</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/var/log/pfctl.err</string>
<key>StandardOutPath</key>
<string>/var/log/pfctl.out</string>
</dict>
</plist>