4 votes

Transfert de port d'OS X El Capitan vers Parallels VM à l'aide de pfctl

J'ai Parallels Desktop 11, qui ne prend pas en charge le transfert de port vers les VM (seule la version Pro le prend en charge). J'essaie donc d'utiliser pfctl pour transférer les ports vers ma VM Parallels.

J'ai suivi cette réponse pour configurer le transfert de port. La redirection est activée avec sysctl net.inet.ip.forwarding=1

J'ai précisé cette règle.

rdr pass inet proto tcp from any to any port 51414 -> 10.211.55.9 port 51414

10.211.55.9 est l'IP statique de la VM de Parallels.

Cependant, le transfert de port ne fonctionne pas pour la VM. Il peut transférer avec succès le port x vers le port y sur 127.0.0.1 mais ne peut pas transférer le port x du Mac vers le port x sur Parallels VM.

Qu'est-ce qui peut bien se passer ? Est-ce que c'est Parallels qui laisse tomber des paquets, etc.

0 votes

J'ai regardé cette liste gist.github.com/kujohn/7209628 On dirait que beaucoup d'autres personnes ont des problèmes de transfert de ports vers des adresses IP différentes.

2voto

klanomath Points 63400

Il existe deux solutions à votre problème avec Parallels Desktop 11 (cela ne s'applique pas à Parallels Desktop Pro/Enterprise 11, qui offrent tous deux une interface pratique pour configurer la redirection de port - néanmoins, les solutions devraient également fonctionner dans ces versions améliorées) :

Au lieu d'attacher l'interface réseau de la VM au "réseau partagé", utilisez une interface pontée (par exemple en0 ou en1) et configurez-la avec une IP/masque de réseau dans le réseau respectif. Vous n'avez alors pas besoin de NAT/transfert de port.


Si vous insistez pour avoir un réseau NAT'ed, faites ce qui suit :

Dans l'exemple ci-dessous, j'utilise nc comme serveur. Pour exécuter un serveur, entrez nc -l -4 port et pour se connecter à ce serveur, utilisez nc server-IP port . Vous pouvez également spécifier un port source : nc -p source-port server-IP port .

Ici, j'utilise nc -l -4 11111 sur la VM. Pour me connecter à ce serveur, je dois exécuter nc server-IP 11111 à partir d'un hôte du même réseau. Après avoir démarré le serveur et connecté le client, il suffit de saisir un texte qui est envoyé à l'autre console. Pour se connecter à partir d'un troisième hôte dans un réseau différent à la VM nc-server que je veux utiliser nc NAT-host-IP 22222 . Je dois donc transférer l'adresse IP de l'hôte NAT:22222 vers l'adresse IP de la machine virtuelle:11111. Dans ce cas, NAT-host est le Mac hébergeant la VM de Parallels.

  1. attachez l'interface réseau de l'invité VM au "Réseau de l'hôte seulement". Habituellement, le réseau hôte seulement de Parallels a la configuration hôte suivante (vérifiez cela en entrant ifconfig sur la machine hôte) :

    vnic1: ...
    ...
    inet 10.37.129.2 netmask 255.255.255.0 broadcast 10.37.129.255

    Configurez donc l'invité VM comme suit :

    • IP : 10.37.129.x (avec x != 0,1,2,255) - ci-dessous je suppose que c'est 10.37.129.10
    • Netmask : 255.255.255.0
    • Passerelle : 10.37.129.2
    • DNS : un vrai serveur DNS comme 8.8.8.8.
  2. Sur la machine hôte du NAT, activez la redirection dans /etc/sysctl.conf :

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

    et redémarrez l'hôte.

  3. Sur la machine hôte NAT (dont l'adresse IP est par exemple en0 : 192.168.0.2), créez 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 à la fin :

    rdr pass on en0 inet proto tcp from any to any port 22222 -> 10.37.129.10 port 11111
  4. Sur la machine hôte NAT, 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"

    à

    ...
    scrub-anchor "com.apple/*"
    nat-anchor "com.apple/*"
    rdr-anchor "com.apple/*"
    rdr-anchor "org.user.forwarding"
    nat on en0 proto {tcp, udp, icmp} from 10.37.129.0/24 to any -> en0
    pass from {lo0, 10.37.129.0/24} to any keep state
    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"
  5. Analysez et testez votre ancre et votre fichier pf.conf pour vous assurer qu'il n'y a pas d'erreurs :

    sudo pfctl -vnf /etc/pf.anchors/org.user.forwarding
    sudo pfctl -vnf /etc/pf.conf
  6. Activez le pf avec :

    sudo pfctl -e -f /etc/pf.conf
  7. Pour tester cela, démarrez le serveur nc sur la VM avec nc -l -4 11111 . Maintenant sur un troisième hôte dans votre réseau physique, entrez nc 192.168.0.2 22222 .


Après un redémarrage, vous devez relancer pf. Si vous voulez activer pf de façon permanente, consultez mon autre site web pf lié réponses.

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.

0 votes

Je vais l'essayer.

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