Ho cercato di apportare una modifica (per il port forwarding / reindirizzamento) al file pfctl.conf
e di averlo caricato (il file /etc/pfctl.conf
) caricato all'avvio. È stato confermato che pfctl.conf
funziona come previsto poiché l'emissione di sudo pfctl -ef /etc/pfctl.conf
determina il comportamento desiderato (le richieste a una porta vengono inoltrate all'altra).
Anche questo pfctl
è effettivamente caricato all'avvio è confermato anche perché facendo launchctl list | grep pf
mostra com.apple.pfctl
nell'output. Tuttavia, il comportamento di inoltro desiderato non viene raggiunto direttamente dopo l'avvio. Succede solo facendo pfctl -f /etc/pfctl.conf
dopo l'avvio. Stranamente, l'output di pfctl -ef /etc/pfctl.conf
dice ancora pf already enabled
.
Pertanto, ho concluso che mentre pf è caricato all'avvio, il demone sembra non caricare dal file conf. Il corpo del daemon di lancio com.apple.pfctl.plist
ora appare come:
<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/>
</dict>
</plist>
Dopo aver controllato la discussione a Avviare launchd per leggere correttamente gli argomenti del programma è stato informativo ma non è praticamente utile in questo caso - ho già provato a modificare gli argomenti del programma del file plist per includere il percorso completo dell'eseguibile pfctl (come si può vedere nel codice sopra - prima riga dell'array degli argomenti) ma senza successo. Ho anche aggiunto un argomento (seconda riga di array di argomenti) per avviare effettivamente pfctl in base alla discussione in questo elenco . Anche il demone sembra configurato correttamente secondo le istruzioni di Documenti per sviluppatori Apple . In accordo con i documenti dello sviluppatore (che affermano che il tag del programma è richiesto quando gli argomenti del programma non sono forniti e viceversa), ho anche provato a rimuovere il tag del programma lasciando la matrice degli argomenti del programma in posizione (con il percorso dell'eseguibile come il primo argomento) - ma anche questo non ha avuto alcun effetto.
Sconcertantemente, la versione del file pfctl.plist
fornita (che può essere presumibilmente corretta) aveva sia il tag del programma che il tag degli argomenti del programma, apparentemente in contraddizione con i docs di dev (o forse io frainteso i documenti).
Quindi ora sono completamente in perdita. Qualsiasi aiuto sarebbe più apprezzato!
Ulteriori informazioni: Non sono sicuro che questo sia rilevante, ma nel caso lo sia: il file di ancoraggio (creato da me) a cui fa riferimento pf.conf ha il seguente aspetto:
rdr pass on lo0 inet proto tcp from any to 127.0.0.1 port =80 -> 127.0.0.1 port 8888
Quindi esiste la possibilità che l'interfaccia di rete non sia ancora attiva e che gli indirizzi non siano stati assegnati al momento dell'esecuzione del daemon? Se è così, come può essere risolto?