3 votes

Transfert de port sur Mac Pro avec MacOS Sierra

Je voudrais faire un transfert de port depuis mon ordinateur MacOS Sierra avec l'adresse IP 152.1.2.3 vers mon NAS qui est 192.168.2.3. Plus précisément, je voudrais accéder au serveur web HTTP de mon NAS à l'adresse 192.168.2.3/Photos. Tout le trafic entrant par HTTP sur le NAS est dirigé vers le bon dossier (Photos).

J'ai activé le partage Internet et je partage la connexion Ethernet de mon ordinateur MacOS (152.1.2.3 sur Ethernet 2) avec mon NAS (192.168.2.3 sur Ethernet 1).

Mon NAS peut voir l'internet et recevoir des mises à jour.

Je peux accéder au serveur web localement depuis mon ordinateur en entrant 192.168.2.3 et il me dirige vers la page du serveur web à 192.168.2.3/Photos.

Je ne peux tout simplement pas y accéder depuis l'extérieur du réseau local.

La solution la plus simple est de connecter le NAS directement au réseau, mais je ne peux pas le faire à cause des politiques locales.

En résumé : Je voudrais taper ce qui suit et être redirigé vers le serveur web sur le NAS --> 152.1.2.3:9999

la commande du terminal serait-elle :

rdr pass on en2 inet proto tcp from any to any port 9999 -> 198.168.2.3 port 80

2voto

klanomath Points 63400

Le partage de l'Internet dans MacOS se fait (en interne) en créant un périphérique de pont contenant deux interfaces ou plus, en activant un serveur DHCP, en configurant diverses règles pf et en activant le pf.

Pour imprimer toutes les règles, le shell script suivant doit être exécuté :

pfdump.sh :

#!/bin/bash

function pfprint() {
  if [ -n "$1" ];then
    sudo pfctl -a "$2" -s"$1" 2>/dev/null
  else
    sudo pfctl -s"$1" 2>/dev/null
  fi
}

function print_all() {

  local p=$(printf "%-40s" $1)
  (
    pfprint r "$1" | sed "s,^,r     ,"
    pfprint n "$1" | sed "s,^,n     ,"
    pfprint A "$1" | sed "s,^,A     ,"
  ) | sed "s,^,$p,"

  for a in `pfprint A "$1"`; do
    print_all "$a"
  done
}

print_all

Par défaut pf est désactivé avec le dump pf suivant :

                                        r     scrub-anchor "com.apple/*" all fragment reassemble
                                        r     anchor "com.apple/*" all
                                        n     nat-anchor "com.apple/*" all
                                        n     rdr-anchor "com.apple/*" all
                                        A       com.apple
com.apple                               r     anchor "200.AirDrop/*" all
com.apple                               r     anchor "250.ApplicationFirewall/*" all
com.apple                               A       com.apple/200.AirDrop
com.apple                               A       com.apple/250.ApplicationFirewall

Après avoir activé le partage d'Internet pf est activé et un vidage ressemble à ceci :

                                        r     scrub-anchor "com.apple/*" all fragment reassemble
                                        r     scrub-anchor "com.apple.internet-sharing" all fragment reassemble
                                        r     anchor "com.apple/*" all
                                        r     anchor "com.apple.internet-sharing" all
                                        n     nat-anchor "com.apple/*" all
                                        n     nat-anchor "com.apple.internet-sharing" all
                                        n     rdr-anchor "com.apple/*" all
                                        n     rdr-anchor "com.apple.internet-sharing" all
                                        A       com.apple
                                        A       com.apple.internet-sharing
com.apple                               r     anchor "200.AirDrop/*" all
com.apple                               r     anchor "250.ApplicationFirewall/*" all
com.apple                               A       com.apple/200.AirDrop
com.apple                               A       com.apple/250.ApplicationFirewall
com.apple.internet-sharing              r     scrub-anchor "base_v4" all fragment reassemble
com.apple.internet-sharing              r     anchor "base_v4" all
com.apple.internet-sharing              n     nat-anchor "base_v4" all
com.apple.internet-sharing              n     rdr-anchor "base_v4" all
com.apple.internet-sharing              A       com.apple.internet-sharing/base_v4
com.apple.internet-sharing/base_v4      r     scrub on en1 all no-df fragment reassemble
com.apple.internet-sharing/base_v4      r     scrub on bridge100 all no-df max-mss 1460 fragment reassemble
com.apple.internet-sharing/base_v4      r     scrub on bridge100 proto esp all no-df fragment reassemble
com.apple.internet-sharing/base_v4      r     pass on en1 all flags any keep state
com.apple.internet-sharing/base_v4      r     pass on en1 proto esp all no state
com.apple.internet-sharing/base_v4      r     pass on bridge100 all flags any keep state rtable 6
com.apple.internet-sharing/base_v4      n     nat on en1 inet from 192.168.2.0/24 to any -> (en1:0) extfilter ei
com.apple.internet-sharing/base_v4      n     no nat on bridge100 inet from 192.168.2.1 to 192.168.2.0/24
com.apple.internet-sharing/base_v4      n     rdr on bridge100 inet proto tcp from 192.168.2.0/24 to any port = 21 -> 127.0.0.1 port 8021

Ici, en1 est l'interface externe (celle partageant à votre réseau interne) et 192.168.2.0/24 le réseau interne fourni par le serveur DHCP. Les deux peuvent être différents dans votre environnement.

Pour exposer un serveur interne au public avec le partage d'Internet activé, vous devez transférer un port de l'interface externe vers l'IP et le port de service du serveur :

Créez la règle rdr sur le routeur (votre Mac Pro) en entrant dans Terminal.app :

sudo nano /private/etc/pf-rdr.rule

et le contenu :

rdr on en1 inet proto tcp from any to 152.1.2.3 port = 9999 -> 192.168.2.3 port 80

en supposant que en1 est l'interface externe, 152.1.2.3:9999 son IP:port et 192.168.2.3:80 l'IP:port du serveur interne. Pour obtenir l'identifiant de périphérique (et l'IP) de votre interface externe, entrez ifconfig sur votre Mac Pro.

Ensuite, créez un démon de lancement :

sudo nano /Library/LaunchDaemons/org.user.pfrdr.plist

avec le contenu :

<?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>org.user.pfrdr</string>
    <key>ProgramArguments</key>
    <array>
        <string>/sbin/pfctl</string>
        <string>-a</string>
        <string>com.apple/portforwarding</string>
        <string>-f</string>
        <string>/private/etc/pf-rdr.rule</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/Library/Logs/org.usr.pfrdr.log</string>
    <key>StandardOutPath</key>
    <string>/Library/Logs/org.usr.pfrdr.log</string>
</dict>
</plist>

Lancez le démon avec :

sudo launchctl load /Library/LaunchDaemons/org.user.pfrdr.plist

Cela ajoutera une deuxième règle rdr dans l'ancre com.apple pour pf et de transférer le port externe vers l'hôte interne.

Comme DHCP attribue les adresses IP de manière dynamique, il est également utile de définir une IP fixe pour le serveur interne :

Créer un fichier bootptab sur le routeur (votre Mac Pro) :

sudo nano /etc/bootptab

avec le contenu :

# Bootptab file
# Section 1 -- ignored
%%
# Section 2 -- used
# Hardware types: 1=Ethernet, 6=Wireless
#                 See http://www.ietf.org/rfc/rfc1700.txt
#
# machine entries have the following format:
#
# hostname         hwtype     hwaddr         ipaddr   bootfile
your-nas-ethernet     1 c4:2c:03:3a:7f:65 192.168.2.3 boot
a-wireless-machine    6 60:33:4b:27:6c:62 192.168.2.4 boot
another-ethernet      1 00:0d:93:72:e7:96 192.168.2.2 boot

Remplacez ici les adresses MAC (hwaddr) et les types de matériel (hwtype) par ceux que vous trouvez dans votre environnement. Vous pouvez obtenir les adresses MAC en entrant ifconfig sur l'hôte respectif. Redémarrez ensuite votre routeur (Mac Pro).


Implications en matière de sécurité :

En utilisant votre Mac Pro comme routeur, il est exposé à l'Internet et vulnérable en tant que tel. Pf tel qu'il fonctionne après avoir activé le partage d'Internet a absolument aucune règle de blocage . Vous devez ajouter tout un tas de règles supplémentaires pour le rendre plus sûr (et plus fonctionnel).


L'IP que vous avez publiée appartient à 152.1.0.0/16 - un bloc d'IP attribué à l'Université d'État de Caroline du Nord (NCSU). Votre université a peut-être appliqué des mesures de sécurité dans ce réseau qui empêcheront l'accès à partir d'autres réseaux (ou de l'Internet "entier").

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