wie man einen Host im LAN dazu bringt, den Datenverkehr zwischen anderen Hosts im selben LAN in Linux weiterzuleiten

469
Archaj

Ich setze eine Testtopologie in Mininet wie folgt:

sudo mn --mac --topo linear,3 --switch ovsk --controller=remote,ip=10.0.2.15,port=6653 

so: Ich möchte, dass der Verkehr von H1 nach H3 zu H2 geht, bevor er zu H3 weitergeleitet wird. Ich habe dafür Flussregeln auf meinen Switches (Open vSwitch) festgelegt. Wenn jedoch der Verkehr nach H2 geht, wird er dort fallen gelassen.
einfache Topologie

Welche Konfigurationen sollte ich zu H2 (Ubuntu 14.04) hinzufügen, damit H2 einen Verkehr weiterleiten kann, der nicht dazu bestimmt ist oder von ihm stammt?

0
Was verwenden Sie, um das LAN zu erstellen? Mininet? Getrennte VMs zusammen mit einem Switch? Bitte sag. Es hilft. ytpillai vor 6 Jahren 0
Ich verwende Mininet mit Floodlight-SDN-Controller wie folgt: sudo mn --mac --topo linear, 3 - switch ovsk --controller = remote, ip = 10.0.2.15, port = 6653 Archaj vor 6 Jahren 0
Ich verwende Mininet- und Flutlicht-Controller. Hier ist meine Topologie: Sudo mn --mac --topo linear, 3 - switch ovsk --controller = remote, ip = 10.0.2.15, port = 6653 Archaj vor 6 Jahren 0

2 Antworten auf die Frage

0
Nevin Williams

Die Funktion, die Sie aktivieren müssen, ist die IP-Weiterleitung .

Dies kann mit dem sysctlDienstprogramm erreicht werden:

sysctl -a | grep forwarding produziert (auf meinem Mac):

net.inet.ip.forwarding: 0 net.inet6.ip6.forwarding: 0 

Es kann auf Ubuntu etwas anders aussehen. Der 0Wert bedeutet, dass die IP-Weiterleitung deaktiviert ist.

Um IP Forwarding (v4) zu aktivieren, würde ich als root:

[nevin-mac-mini:~] root# sysctl net.inet.ip.forwarding=1 net.inet.ip.forwarding: 0 -> 1 

Dies sollte sofort wirksam werden, bleibt jedoch nach einem Neustart nicht bestehen. Um es so zu machen, würde ich platzieren

net.inet.ip.forwarding=1in /etc/sysctl.conf.

Vielen Dank Nevin für Ihre Antwort, ich habe die Weiterleitung mit diesem Befehl auf Ubuntu 14.04 aktiviert: sysctl -w net.ipv4.ip_forward = 1 Allerdings ist der Datenverkehr im Host 2 immer noch gesunken. Ich habe Tcpdump verwendet, um den eingehenden Datenverkehr zu sehen ist kein ausgehender Datenverkehr von der Schnittstelle des Hosts 2. Archaj vor 6 Jahren 0
Befinden sich alle Hosts im selben IP-Netzwerk? Wenn dies der Fall ist, würde H2 erwarten, dass H1 und H3 direkt miteinander sprechen, und wird daher nicht am Routing teilnehmen: Andernfalls würden doppelte Daten in das Netzwerk eingefügt. Bitte fügen Sie die Routing-Tabellen jedes Hosts mit `netstat -rn` oder einem ähnlichen Befehl bei. Nevin Williams vor 6 Jahren 0
Danke Williams, ich könnte es endlich tun, indem ich die Ziel-Mac-Adresse in den Switch umschreibe. Das Problem war, dass der Host 2 Pakete ablegt, die nicht für ihn bestimmt sind (andere Mac-Zieladresse). Durch das Umschreiben der Ziel-Mac-Adresse in die Mac-Adresse von Host2 in Schalter 2 und durch Aktivieren der IP-Weiterleitung in Host 2 wird der Verkehr erfolgreich umgeleitet. Archaj vor 6 Jahren 0
Wenn Sie den "Promiscuous" -Modus der NIC aktivieren, bleibt das Paket möglicherweise lange genug in der Nähe, um es erneut weiterzuleiten. Nevin Williams vor 6 Jahren 0
Proxy-ARP könnte auch ein anderer Weg sein. Nevin Williams vor 6 Jahren 0
Danke Williams, wie kann ich Proxy-ARp zum Zweck der Umleitung verwenden? Können Sie etwas zum Lesen vorschlagen? Archaj vor 6 Jahren 0
Ich suchte bei Google nach "Aktivieren von Proxy-Arp auf Ubuntu" und erhielt dieses Ergebnis: http://www.linuxproblem.org/art_8.html Nevin Williams vor 6 Jahren 0
0
Archaj

Vielen Dank für Ihre Antworten, ich könnte es endlich tun, indem ich die Ziel-Mac-Adresse der Pakete im Switch umschreibe. Das Problem war, dass der Host 2 Pakete ablegt, die nicht für ihn bestimmt sind (andere Mac-Zieladresse). Durch das Umschreiben der Ziel-Mac-Adresse in die Mac-Adresse von Host2 in Schalter 2 und durch Aktivieren der IP-Weiterleitung in Host 2 wird der Verkehr erfolgreich umgeleitet. Der erste Schritt besteht darin, S2 mitzuteilen, dass der Datenverkehr an den Host 2 mit dem Ziel-Mac des Hosts 2 gesendet werden soll. In Schritt 2 wird S2 aufgefordert, die Mac-Adresse des von Host 2 zur Host 3-Mac-Adresse zurückkommenden Datenverkehrs neu zu schreiben die ursprüngliche MAC-Adresse).