J'exécute OS X Mountain Lion sur une machine avec l'adresse IP locale 192.168.1.6 (comme indiqué par l'utilitaire réseau et ifconfig) et j'exécute un serveur Web de développement local (Django) sur le port 8000 auquel je voudrais me connecter à partir d'une machine virtuelle exécutant un système d'exploitation invité sur la même machine.
Sur le système d'exploitation hôte (c'est-à-dire OS X fonctionnant sur le métal de la machine avec l'adresse 192.168.1.6), je peux me connecter à mon serveur Web de test via le navigateur en accédant à 127.0.0.1:8000; ou localhost: 8000; mais pas lors de l'utilisation de l'adresse IP locale de la machine. Voici ce qui rend cette confusion supplémentaire:
Voici les règles ipfw:
00100 allow tcp from any to any dst-port 8000
65535 allow ip from any to any
Voici une confirmation supplémentaire que le port est effectivement écouté par mon serveur de test:
netstat -an | grep 8000
tcp4 0 0 127.0.0.1.8000 *.* LISTEN
alors qu'est-ce qui se passe ici? D'une manière ou d'une autre, le port 22 est traité différemment du port 8000, mais je ne peux trouver aucun endroit où trouver ces différences. Pourquoi ne puis-je pas accéder au port 8000 de cette machine en utilisant son adresse IP locale?
Lorsque vous démarrez Django serveur de développement, vous devez donner l'adresse explicitement:
python manage.py runserver 192.168.1.6:8000
Ou si vous souhaitez que le serveur s'exécute sur toutes les interfaces, vous pouvez utiliser:
python manage.py runserver 0.0.0.0:8000
Dans les autres cas, le serveur de développement Django par défaut s'exécute uniquement sur l'interface locale.