Vielleicht eher eine exotische Installation aber ich benötige in meinem Büro Zugriff auf zwei komplett getrennte Netzwerke zweier Firmen.
Praktischerweise im selben Gebäude untergebracht und beide Netzwerke lassen sich zu der Netzwerkdose in meinem Büro patchen, der Mac hat auch zwei Ethernet-Ports...prima!

Nur wie und wo kann man einstellen, welcher Ethernet-Port für welche Verbindung genutzt wird?

Der Dienst, der in Systemeinstellungen > Netzwerk oben steht, hat Priotität. Sämtlicher Netzwerkverkehr wird hierüber abgewickelt.
Über das Zahnradmenü unten am Fenster lässt sich die Reihenfolge festlegen.

Sollte man sich nicht damit zufrieden geben, an dieser Stelle immer zwischen den Netzwerken hin und herzuschalten, hier noch ein kleiner Kommandozeilen-Tipp:

Sämtlicher Netzwerkverkehr soll bei mir über "Ethernet 1" abgewickelt werden.
Hinter "Ethernet 2" steckt ein kleineres Netzwerk einer FritzBox. Alle Geräte haben dort eine IP des Schemas 192.168.7.XXX

Habe ich in den Systemeinstellungen "Ethernet 1" an erster Stelle, kann ich mit dem Befehl

route add -host 192.168.7.1/24 -interface en1

allen Netzwerkverkehr, der an eine Adresse der IP 192.168.7.XXX geht, über den Port "Ethernet 2" abwickeln lassen.

Welcher Ethernet-Port welches Kürzel trägt (in diesem Beispiel en1), lässt sich über den Befehl networksetup -listallhardwareports in Erfahrung bringen.

Nun wird für jeglichen Netzwerkvekehr "Ethernet 1" verwendet, für Netzwerkverkehr in den Netzbereich 192.168.7.XXX wird "Ethernet 2" verwendet.
Dies reicht für mich aus, um auf bestimmte Netzwerkgeräte, wie etwa einen Drucker, zugreifen zu können.

Diese Einstellung bleibt über Neustarts hinweg erhalten. Will man sie wieder entfernen, so genügt der Befehl route delete -host 192.168.7.1/24

Am Rande: Das Netzwerk "Ethernet 1" hat einen Proxy-Server, über welchen ich auf das Internet zugreife, "Ethernet 2" nicht.
Zwar habe ich im Browser Firefox eingestellt, dass der Proxy das Systems verwendet werden soll, aber irgendwie funktioniert es nicht wie erwartet, auf Adressen im Bereich 192.168.7.XXX zuzugreifen. Es scheint trotzdem die Verbinung "Ethernet 1" samt Proxy verwendet zu werden.
Andererseits auch wieder klar, da jede Anfrage erstmal an den Proxy gerichtet wird, der nicht im Bereich 192.168.7.XXX sitzt.

Um dem entgegen zu wirken, habe ich 192.168.7.0/24 als Proxy-Ausnahme in den Browser-Einstellung hinzugefügt, so kann ich zum Beispiel auf das Fritz!Box-Web-UI zugreifen.

Route mit networksetup

Das Netzwerk 192.168.7.0/24 kann eine VPN-Verbindung zu mir nach Hause 192.168.8.0/24 aufbauen.
Leider bin ich daran gescheitert, Anfragen an 192.168.8.x ebenfalls mit route add an den richtigen Netzwerkport zu richten, da bei

route add -host 192.168.8.1/24 -interface en1

die IP 192.168.8.1 als Gateway-Adresse verwendet wird...welche aber nicht existiert. Das Gateway ist eigentlich 192.168.7.1

Wie ich das Gateway hier mitgeben kann, habe ich nicht rausgefunden, obwohl im man-Eintrag davon die Rede ist.

Stattdessen konnte ich networksetup verwenden. Erst alle Anschlüsse auflisten: networksetup -listallnetworkservices
Was bei route add en0 und en1 sind, ist hier nun "Ethernet 1" und "Ethernet 2".

Nun Route setzen:

networksetup -setadditionalroutes "Ethernet 2" 192.168.8.0 255.255.255.0 192.168.7.1

Hierbei ist zu beachten, dass networksetup -setadditionalroutes bei jeder Verwendung bereits vorhandene Routen überschreibt.
Möchte man mehrere Routen setzen, sind jene in einem Abwasch einzutragen:

networksetup -setadditionalroutes "Ethernet 2" 192.168.8.0 255.255.255.0 192.168.7.1 192.168.9.0 255.255.255.0 192.168.7.1

Gibt man keine Routen an, werden die vorhandenen gelöscht

networksetup -setadditionalroutes "Ethernet 2"

Und wenn man nun doch mal was hinzufügen möchte?
Erst mit networksetup -getadditionalroutes "Ethernet 2" die vorhandenen Routen in Erfahrung bringen und jene wieder dazu schreiben, wenn man networksetup -setadditionalroutes verwendet.
Mehrere Einträge sind bei -getadditionalroutes schön übersichtlich untereinander gelistet, müssen dann für -setadditionalroutes hintereinander geschrieben werden: <dest1> <mask1> <gateway1> <dest2> <mask2> <gateway2> ...