Ich habe zwei Netzwerkgeräte an Bord meines MacBook Pro:
- WIFI (en1): Wird für den allgemeinen Verkehr verwendet. Stellt über DHCP eine Verbindung mit einer IP-Adresse von 192.168.19. * Her
- 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:
- 192.168.2.1
- 192.168.2.21
- 192.168.2.20
- 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
quelle
Antworten:
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.
Sobald dies erledigt ist,
netstat -rn
sollten 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.
quelle
192.168.2.1
in 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.Das Problem ist, dass Ihre
en0
Schnittstelle 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 dieen0
Standardroute von derRefs
Spalte verwendet wird.Refs
ist 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,en0
um sicherzustellen, dass Sie nichts in dasrouter
Feld 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ürroute flush
ist 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: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.local
mit einem Befehl wie dem folgenden hinzufügen :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!
quelle
192.168.2.1
war 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-Adresse192.168.2.1
in das Feld "Router" eingegeben, da ich glaube, dass sie erforderlich ist. Nachdem ich die Standardrouter-IP entfernt hatte, entfernte ich auch die fehlerhafte Standardroute zu192.168.2.1
. Nochmals vielen Dank für Ihre Hilfe.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.
quelle
remove any default gateway connected to the LAN
.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.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.