Routing von WIFI und LAN für bestimmten Datenverkehr

12

Ich habe zwei Netzwerkgeräte an Bord meines MacBook Pro:

  1. WIFI (en1): Wird für den allgemeinen Verkehr verwendet. Stellt über DHCP eine Verbindung mit einer IP-Adresse von 192.168.19. * Her
  2. LAN (en0): Wird für bestimmten Datenverkehr verwendet. Verbindet sich mit einer IP von 192.168.2.10 als statische IP. Verbindet sich nicht mit einem Router, sondern nur mit einem Switch für die direkte Routing- Verbindung.

Ich habe 4 IP-Adressen, auf die ich im LAN zugreifen muss:

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

Der Rest des Verkehrs muss zum WIFI gehen. Ich habe versucht, eine Routing-Tabelle für die spezifischen IP-Adressen einzurichten, aber es ist mir nur gelungen, mein Netzwerk durcheinander zu bringen. Ich wage mich nicht allzu oft in die Welt des Networking, aber dies war der letzte Befehl, den ich ausprobiert habe:

sudo route add -host 192.168.2.30 -interface en0

Dieser Befehl hat meine Fähigkeit, Ping zu verwenden, zerstört. Es hat mir gesagt, dass Ping keinen Speicher zuordnen kann (ist das überhaupt möglich)? Es hat auch meinen WLAN-Zugang zerstört. Das Abmelden und erneutes Anmelden hat das Problem behoben. Es macht mir wirklich nichts aus, diese Lösung dauerhaft zu machen, daher kann ich ein temporäres Routing gut gebrauchen.

BEARBEITEN:

Wenn ich es gerade versucht habe:

sudo route flush
sudo route add default 192.168.19.1

Dies lässt alles für ungefähr eine Minute funktionieren. Aber nach einer solchen Minute "vergisst" es das Routing zu WiFi, während es das Routing von LAN (en0) beibehält. Wenn ich mein LAN (en0) -Kabel ausziehe und wieder einstecke, funktioniert der Vorgang noch eine Minute.

EDIT 2:

Dies waren einige Befehle, die von d34dh0r53 als Anforderung eingegeben wurden.

$ 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
quelle
Das Betriebssystem übernimmt das Routing, nicht die Hardware.
Ignacio Vazquez-Abrams
Ist alles 192.168.2.X im LAN? Wenn dies der Fall ist, wird die Lösung viel einfacher.
LawrenceC
@ultrasawblade Ja, alles in diesem Netzwerk ist 192.168.2. *
jakebird451

Antworten:

11

Sie müssen für diese Konfiguration keine Routing-Regeln manuell erstellen, vorausgesetzt, alle 192.168.2.x-Adressen, mit denen Sie kommunizieren möchten, befinden sich in der Schnittstelle mit der 192.168.2.x-Adresse.

  1. Gehen Sie zu Systemeinstellungen -> Netzwerk
  2. Wählen Sie Ihr Ethernet-Gerät aus, stellen Sie sicher, dass "IPv4 konfigurieren" auf "Manuell" eingestellt ist, dass Ihre Subnetzmaske auf 255.255.255.0 eingestellt ist und dass die Router-Box leer ist.

Sobald dies erledigt ist, netstat -rnsollten weiterhin die Routen für beide Subnetze angezeigt werden, jedoch nur eine "Link # 4" -Route anstelle der Standardroute durch 192.168.2.1.

Wenn Sie keine Standardroute möchten, lassen Sie das Feld "Router" leer. Der Wert in der Router-Box wird nur verwendet, um eine Standardroute über diese Netzwerkschnittstelle einzurichten, und wird nicht für andere Zwecke verwendet.

Rakslice
quelle
Vielen Dank! Das war's! Ich hatte bis auf das im Router-Bereich alles richtig eingestellt. Ich habe die IP-Adresse 192.168.2.1in das Feld "Router" eingegeben, damit sie mit einem "Router" auf der LAN-Seite übereinstimmt. Ich dachte, dass es erforderlich war, aber ich sehe jetzt, dass es die Standardroute für den allgemeinen Verkehr übernahm.
Jakebird451
Danke dafür! Hatte das gleiche Problem und hat bei mir einwandfrei funktioniert.
BaronVonKaneHoffen
4

Das Problem ist, dass Ihre en0Schnittstelle eine Standardroute hinzufügt, die Vorrang vor der von der 802.11-Schnittstelle festgelegten Standardroute hat. Ich weiß nicht genau warum, aber es ist entweder die Tatsache, dass BSD eine verdrahtete Schnittstelle einer drahtlosen vorzieht, oder es ist eine statisch konfigurierte Schnittstelle einer dynamisch konfigurierten vorzuziehen. Sie können feststellen, dass die en0Standardroute von der RefsSpalte verwendet wird. Refsist eine Metrik, die die aktuelle Anzahl der aktiven Nutzungen der Route angibt, sodass wir sehen können, dass der gesamte Datenverkehr erfasst wird.

Die Lösung besteht darin, diese Route dauerhaft aus der Routing-Tabelle zu entfernen, damit der Datenverkehr, der für andere Hosts als die in Ihren lokalen Netzwerken bestimmt ist, das von DHCP eingerichtete Standard-Gateway überquert en1. Das erste, was ich überprüfen würde, ist im Konfigurationsfenster, en0um sicherzustellen, dass Sie nichts in das routerFeld eingegeben haben . Die Informationen in diesem Feld werden als Standardgateway hinzugefügt. Wenn dies nicht funktioniert, müssen wir die Route manuell löschen. Der Grund dafür route flushist meiner Meinung nach, dass OS X aufgefordert wird, die Routing-Informationen aus den Schnittstellenkonfigurationsdateien neu zu laden, sodass Ihre Änderung nach kurzer Zeit zurückgesetzt wird. Der folgende Befehl sollte die Standardroute für das entfernenen0 Schnittstelle, bis entweder das Netzwerk neu gestartet wird oder das System IPL-fähig ist:

sudo route delete -net 0.0.0.0 192.168.2.1

Wenn Sie diese Änderung dauerhaft machen möchten, können Sie entweder a) einen Dienst erstellen /Library/StartupItems, der mir zu arbeitsintensiv erscheint, oder b) diese Zeile /etc/rc.localmit einem Befehl wie dem folgenden hinzufügen :

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

Möglicherweise müssen Sie sleep <number_of_seconds>vor dieser Zeile einen Befehl hinzufügen /etc/rc.local, um zu vermeiden, dass der Befehl ausgeführt wird, bevor die Schnittstellen voll funktionsfähig sind und die Routing-Tabelle erstellt wurde.

Hoffe das hilft und viel Glück!

d34dh0r53
quelle
Vielen Dank für Ihre lange Antwort. Die Standardroute zu 192.168.2.1war das Problem, aber @rakslice stellte fest, dass ich einen Fehler gemacht hatte, als ich meine Routing-Informationen für die en0-Verbindung eingab. Ich habe die IP-Adresse 192.168.2.1in das Feld "Router" eingegeben, da ich glaube, dass sie erforderlich ist. Nachdem ich die Standardrouter-IP entfernt hatte, entfernte ich auch die fehlerhafte Standardroute zu 192.168.2.1. Nochmals vielen Dank für Ihre Hilfe.
Jakebird451
1
Irgendwie durchgeknallt habe ich das Kopfgeld nicht bekommen: "Das erste, was ich überprüfen würde, ist im Konfigurationsfenster für en0, dass Sie nichts in das Feld Router eingegeben haben. Die Informationen in diesem Feld werden als Standardgateway hinzugefügt. " Aber am Ende ist alles gut, ich bin froh, dass du es geschafft hast.
d34dh0r53
0

Sie möchten Ihre Wifi-IP-Adresse als Standard-Gateway festlegen und alle mit dem LAN oder 192.168.2.0/24 verbundenen Standard-Gateways (oder Routen zu 0.0.0.0) entfernen.

Dies ist natürlich einfacher, wenn Sie Ihr en1 auf eine feste IP-Adresse einstellen können, die mit dem WLAN funktioniert.

Möglicherweise müssen Sie 192.168.2.10 als Route zum Netzwerk 192.168.2.0/24 hinzufügen. Dies sollte jedoch automatisch erfolgen, da dies erkennen lässt, dass 192.168.2.0/24 direkt virtuell mit dem verbunden ist, was Sie der Schnittstelle zugewiesen haben.

Der Datenverkehr zu 192.168.2.X wird von 192.168.2.10 ausgehen, und der Datenverkehr zu anderen Orten wird von der IP-Adresse Ihres en1 ausgehen.

LawrenceC
quelle
Ich setze meine WiFi-Bestellung über die Einstellungen des Netzwerksystems nach oben. Ich bin mir aber nicht sicher, wie remove any default gateway connected to the LAN.
Jakebird451
vielleicht sudo route del default 192.168.2.10?, nicht genau sicher, wie es auf freebsd / mac osx zu tun ist, aber es sollte ähnlich sein.
LawrenceC
Der Befehl auf dem Mac ist sudo route delete default 192.168.2.10. Ping ist noch aktiv. Es wird jedoch der Zugriff auf den WLAN-Datenverkehr ohne die IP-Adresse des Routers beendet.
Jakebird451
Sie erhalten das Internet über Ihr WLAN, richtig, dh wenn Sie keine Verbindung über LAN und nur über WLAN herstellen, können Sie externe Websites wie Google usw. erreichen?
LawrenceC
Ja, WiFi ist für den allgemeinen Verkehr wie google.com (hauptsächlich für die Google Maps API)
Jakebird451