67 votes

Quelle est la méthode moderne de transfert de port sur El Capitan ? (transférer le port 80 vers 8080)

L'ancienne utilité ipfw était déconseillé dans les versions récentes de Mac OS X et a maintenant disparu d'El Capitan.

Quelle est la méthode moderne de transfert de port dans El Capitan ?

Je veux simplement que le port 80 soit redirigé vers le port 8080.

2 votes

Veuillez accepter une réponse.

93voto

Sal Ferrarello Points 1021

Pour transférer tout le trafic du port 80 vers le port 8080, vous pouvez saisir la commande suivante à partir de la ligne de commande du terminal.

echo "
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -

Tiré de https://salferrarello.com/mac-pfctl-port-forwarding/

1 votes

Cela a fonctionné parfaitement !

22 votes

Et de l'article mentionné, pour le supprimer, sudo pfctl -F all -f /etc/pf.conf et pour afficher vos règles actuelles de transfert de port, sudo pfctl -s nat

5 votes

Gardez à l'esprit que cette solution n'ajoute pas de règles mais remplace toute autre règle chargée auparavant, y compris la règle pf.conf fichier

37voto

klanomath Points 63400

La façon moderne de transférer les ports dans El Capitan est d'utiliser pf . Dans l'exemple ci-dessous, toutes les requêtes sur le port 80 sont redirigées vers le port 8080 sur le même hôte. Veuillez adapter les redirections à vos besoins.

  1. Créer un fichier d'ancrage org.user.forwarding dans /private/etc/pf.anchors

    sudo touch /private/etc/pf.anchors/org.user.forwarding

    avec le contenu suivant et une ligne vide en fin de parcours

    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

    o

    rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
  2. Modifiez le fichier /private/etc/pf.conf mais gardez une ligne vide à la fin du fichier.

    fichier original :

    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"

    a

    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"
  3. Analysez et testez votre fichier d'ancrage pour vous assurer qu'il n'y a pas d'erreurs :

    sudo pfctl -vnf /etc/pf.anchors/org.user.forwarding
  4. Maintenant, modifiez /System/Library/LaunchDaemons/com.apple.pfctl.plist à partir de

    <array>
        <string>pfctl</string>
        <string>-f</string>
        <string>/etc/pf.conf</string>
    </array>

    a

    <array>
        <string>pfctl</string>
        <string>-e</string>
        <string>-f</string>
        <string>/etc/pf.conf</string>
    </array>

    Pour ce faire, vous devez désactiver la protection de l'intégrité du système. Après avoir modifié le fichier, réactivez SIP. Après avoir redémarré votre Mac, pf sera activé (c'est l'option -e).

    Sur MacOS 10.15 Catalina (et son volume système en lecture seule), vous devez modifier le démon de lancement en mode de récupération. SIP est désactivé par défaut en mode de récupération - il n'est donc pas nécessaire d'exécuter csrutil :

    /Volumes/Name_of_boot_volume/usr/bin/nano /Volumes/Name_of_boot_volume/System/Library/LaunchDaemons/com.apple.pfctl.plist

    avec le nom de volume de démarrage par défaut Macintosh HD c'est :

    /Volumes/Macintosh\ HD/usr/bin/nano /Volumes/Macintosh\ HD/System/Library/LaunchDaemons/com.apple.pfctl.plist

    Vous pouvez également créer votre propre démon de lancement en vous inspirant de la réponse donnée ici : Utilisation du serveur 5.0.15 pour partager l'internet SANS partage de l'internet .

Après une mise à jour ou une mise à niveau du système, certains des fichiers d'origine ci-dessus peuvent avoir été remplacés et vous devez réappliquer tous les changements.

Si vous voulez transférer à travers différentes interfaces, vous devez l'activer dans /etc/sysctl.conf :

net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1

9 votes

Pourquoi n'y a-t-il plus de commande simple pour faire ça ? C'est trop compliqué maintenant.

0 votes

@klanomath -- cela fonctionne et je peux rediriger le port x vers le port y sur 127.0.0.1 etc., mais je ne peux pas rediriger les ports vers mon vm Windows qui tourne sur le bureau de Paralles. stackoverflow.com/questions/40695684/

0 votes

Cela ne semble pas fonctionner lorsque l'on transfère un port vers une machine virtuelle fonctionnant sur le bureau de Parallels.

9voto

cadavre Points 151

Pour étendre la solution de la réponse de @sal-ferrarello, j'ai créé deux Shell scripts super basiques pour activer o désactiver rediriger sans compromettre les entrées déjà existantes en pf .

I. Trouvez d'abord quelles entrées vous avez déjà avec :

sudo pfctl -s nat

Ma sortie était comme :

No ALTQ support in kernel
ALTQ related functions disabled
nat-anchor "com.apple/*" all
rdr-anchor "com.apple/*" all

Ce qui nous intéresse, ce sont les entrées réelles, donc omettez les deux premières lignes d'information.

II. Créez enable.sh script :

#!/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

Les deux premières lignes après echo sont les entrées qui étaient déjà là. La troisième ligne est avec la nouvelle redirection - dans ce cas 80 vers 8080. A la fin, nous appelons sudo pfctl -s nat pour voir si les changements ont été appliqués.

III. Créez disable.sh script :

Similaire à enable.sh nous créons script, mais sans redirection 80->8080, mais avec des entrées précédentes déjà existantes :

#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
" | sudo pfctl -ef -
sudo pfctl -s nat

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X