Routage WIFI et LAN pour un trafic spécifique

12

J'ai deux périphériques réseau à bord de mon macbook pro:

  1. WIFI (en1): utilisé pour le trafic général. Se connecte à une adresse IP de 192.168.19. * Via DHCP
  2. LAN (en0): utilisé pour un trafic spécifique. Se connecte à une adresse IP 192.168.2.10 en tant qu'IP statique. Ne se connecte pas à un routeur, seulement un commutateur pour une connexion de routage directe .

J'ai 4 adresses IP auxquelles j'ai besoin d'accéder sur le LAN:

  1. 192.168.2.1
  2. 192.168.2.21
  3. 192.168.2.20
  4. 192.168.2.30

Le reste du trafic doit aller au WIFI. J'ai essayé de mettre en place une table de routage pour les adresses IP spécifiques, mais j'ai seulement réussi à gâcher mon réseau. Je ne m'aventure pas trop souvent dans le monde du réseautage, mais c'était la dernière commande que j'essayais:

sudo route add -host 192.168.2.30 -interface en0

Cette commande a tué ma capacité à utiliser ping. Il m'a dit que ping ne pouvait pas allouer de mémoire (est-ce même possible)? Cela a également tué mon accès wifi. La déconnexion et la reconnexion ont résolu le problème. Cela ne me dérange vraiment pas de rendre cette solution permanente, donc je suis d'accord avec un routage temporaire.

ÉDITER:

Si j'essaye actuellement:

sudo route flush
sudo route add default 192.168.19.1

Cela fait tout fonctionner pendant environ une minute. Mais après une telle minute, il "oublie" le routage vers le WiFi tout en conservant le routage du LAN (en0). Si je débranche et rebranche mon câble LAN (en0), le processus fonctionne pendant encore une minute.

EDIT 2:

Ce sont quelques-unes des commandes entrées en tant que demande par d34dh0r53.

$ netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.2.1        UGSc            4        0     en0
default            192.168.19.1       UGScI           0        0     en1
127                127.0.0.1          UCS             0        1     lo0
127.0.0.1          127.0.0.1          UH              5  1429023     lo0
169.254            link#4             UCS             0        0     en0
192.168.2          link#4             UCS             4        0     en0
192.168.2.1        0:27:22:2e:5f:1a   UHLWIi          2        0     en0   1199
192.168.2.10       127.0.0.1          UHS             0        0     lo0
192.168.2.30       90:a2:da:0:f5:63   UHLWIi          1     1433     en0   1191
192.168.2.255      ff:ff:ff:ff:ff:ff  UHLWbI          0        7     en0
192.168.19         link#5             UCS             2        0     en1
192.168.19.1       3e:d0:f8:aa:28:56  UHLWIi          0        2     en1   1192
192.168.19.3       127.0.0.1          UHS             1        0     lo0
192.168.19.255     ff:ff:ff:ff:ff:ff  UHLWbI          0        5     en1

Internet6:
Destination                             Gateway                         Flags         Netif Expire
::1                                     link#1                          UHL             lo0
fe80::%lo0/64                           fe80::1%lo0                     UcI             lo0
fe80::1%lo0                             link#1                          UHLI            lo0
fe80::%en0/64                           link#4                          UCI             en0
fe80::226:4aff:fe00:b68a%en0            0:26:4a:0:b6:8a                 UHLI            lo0
fe80::%en1/64                           link#5                          UCI             en1
fe80::226:bbff:fe03:cbd%en1             0:26:bb:3:c:bd                  UHLI            lo0
ff01::%lo0/32                           fe80::1%lo0                     UmCI            lo0
ff01::%en0/32                           link#4                          UmCI            en0
ff01::%en1/32                           link#5                          UmCI            en1
ff02::%lo0/32                           fe80::1%lo0                     UmCI            lo0
ff02::%en0/32                           link#4                          UmCI            en0
ff02::%en1/32                           link#5                          UmCI            en1
$ traceroute -n 192.168.2.1
traceroute to 192.168.2.1 (192.168.2.1), 64 hops max, 52 byte packets
 1  192.168.2.1  2.499 ms  3.392 ms  3.829 ms
$ traceroute -n google.com
traceroute: unknown host google.com
jakebird451
la source
Le système d'exploitation gère le routage, pas le matériel.
Ignacio Vazquez-Abrams
Est-ce que tout 192.168.2.X est sur le LAN? Si c'est le cas, cela rend la solution beaucoup plus simple.
LawrenceC
@ultrasawblade Oui, tout sur ce réseau est 192.168.2. *
jakebird451

Réponses:

11

Vous ne devriez pas avoir besoin de créer à la main des règles de routage pour cette configuration, à condition que toutes les adresses 192.168.2.x avec lesquelles vous souhaitez communiquer soient en bas de l'interface avec l'adresse 192.168.2.x.

  1. Allez dans Préférences Système -> Réseau
  2. Sélectionnez votre périphérique Ethernet, assurez-vous que "Configurer IPv4" est défini sur "Manuellement", que votre masque de sous-réseau est défini sur 255.255.255.0 et que la zone du routeur est vide.

Une fois cela fait, netstat -rndevrait toujours montrer les routes pour les deux sous-réseaux, mais seulement une route "link # 4" à la place de la route par défaut via 192.168.2.1.

Si vous ne voulez pas de route par défaut, laissez la case du routeur vide. La valeur dans la zone du routeur n'est utilisée que pour configurer une route par défaut via cette interface réseau, et elle n'est utilisée pour rien d'autre.

rakslice
la source
Je vous remercie! C'était ça! J'avais tout configuré correctement, sauf pour le domaine du routeur. J'ai mis l'adresse IP 192.168.2.1dans le champ du routeur pour correspondre à un "routeur" du côté LAN. Je pensais que c'était nécessaire, mais je vois maintenant qu'il a repris l'itinéraire par défaut pour le trafic général.
jakebird451
Merci pour cela! J'ai eu le même problème et a parfaitement fonctionné pour moi.
BaronVonKaneHoffen
4

Le problème est que votre en0interface ajoute une route par défaut qui a priorité sur la route par défaut établie par l'interface 802.11. Je ne sais pas exactement pourquoi, mais c'est soit le fait que BSD préfère une interface filaire à une interface sans fil, soit il préfère une interface configurée statiquement à une interface configurée dynamiquement. Vous pouvez dire que la en0route par défaut est utilisée par la Refscolonne; Refsest une métrique indiquant le nombre actuel d'utilisations actives de l'itinéraire, afin que nous puissions voir qu'il reçoit tout le trafic.

La solution consiste à supprimer cette route, de préférence de façon permanente de la table de routage afin que le trafic destiné à des hôtes autres que ceux de vos réseaux locaux traverse la passerelle par défaut établie par DHCP on en1. La première chose que je vérifierais est dans le panneau de configuration pour en0vous assurer que vous n'avez rien entré dans le routerchamp. Les informations de ce champ sont ajoutées en tant que passerelle par défaut. Si cela ne fonctionne pas, nous devons supprimer manuellement l'itinéraire, la raison pour laquelle cela route flushne fonctionne pas est que je pense qu'il indique à OS X de recharger ses informations de routage à partir des fichiers de configuration d'interface, annulant ainsi votre modification après un court laps de temps. La commande suivante doit supprimer la route par défaut pour leen0 jusqu'à ce que le réseau soit redémarré ou que le système soit IPLed:

sudo route delete -net 0.0.0.0 192.168.2.1

Si vous souhaitez rendre ce changement permanent, vous pouvez soit a) créer un service dans /Library/StartupItemslequel cela me semble trop de travail ou b) ajouter cette ligne à /etc/rc.localune commande telle que:

echo 'route delete -net 0.0.0.0 192.168.2.1' >> /etc/rc.local

Vous devrez peut-être ajouter une sleep <number_of_seconds>commande avant cette ligne /etc/rc.localpour éviter d'exécuter la commande avant que les interfaces ne soient complètement actives et que la table de routage ne soit établie.

J'espère que ça t'aide et bonne chance!

d34dh0r53
la source
Merci pour votre longue réponse. L'itinéraire par défaut 192.168.2.1était le problème, mais @rakslice a constaté que j'avais fait une erreur lors de la saisie de mes informations de routage pour la connexion en0. J'ai mis l'adresse IP 192.168.2.1dans le champ du routeur en pensant qu'elle était requise. Après avoir supprimé l'IP du routeur par défaut, j'ai également supprimé la mauvaise route par défaut vers 192.168.2.1. Encore une fois, merci pour votre aide.
jakebird451
1
Un peu déçu, je n'ai pas obtenu la prime: "La première chose que je vérifierais est dans le panneau de configuration pour en0 assurez-vous que vous n'avez rien entré dans le champ du routeur. Les informations dans ce champ sont ajoutées comme passerelle par défaut. " Mais tout va bien au final, content que vous ayez réussi à le faire fonctionner.
d34dh0r53
0

Vous souhaitez définir votre IP Wifi comme passerelle par défaut et supprimer toute passerelle par défaut (ou route vers 0.0.0.0) connectée au LAN ou 192.168.2.0/24.

C'est bien sûr plus facile si vous pouvez régler votre en1 sur une IP fixe qui fonctionnera avec le wifi.

Vous devrez peut-être ajouter 192.168.2.10 comme route vers le réseau 192.168.2.0/24. Cependant, cela devrait être automatique car il peut indiquer que 192.168.2.0/24 est directement connecté par virtuel à ce que vous avez attribué à l'interface.

Ainsi, le trafic allant vers n'importe quel 192.168.2.X sortira de 192.168.2.10, et le trafic allant n'importe où ailleurs sortira de l'adresse IP de votre en1.

LawrenceC
la source
J'ai mis ma commande wifi au sommet via les préférences du réseau. Mais je ne sais pas trop comment remove any default gateway connected to the LAN.
jakebird451
peut sudo route del default 192.168.2.10- être ?, je ne sais pas exactement comment le faire sur freebsd / mac osx mais cela devrait être similaire.
LawrenceC
La commande sur mac est sudo route delete default 192.168.2.10. Ping est toujours actif. Cependant, il coupe l'accès au trafic wifi à l'exclusion de l'ip du routeur.
jakebird451
Vous obtenez Internet via votre wifi, correct, c'est-à-dire que si vous ne vous connectez pas via le LAN et uniquement le Wifi, vous pouvez accéder à des sites externes comme Google, etc.?
LawrenceC
Oui, le WiFi est destiné au trafic général tel que google.com (principalement pour l'API Google Maps)
jakebird451