Zweiwege-Weiterleitung wie Bridge mit iptables

Zweiwege-Weiterleitung wie Bridge mit iptables

Ich habe eine Linux-Box und sie hat zwei Schnittstellen (eth0, eth1).

eth0 ist die Aufwärtsverbindung und eth1 die Abwärtsverbindung.

eth0, eth1 ist mit jedem Switch (s/w0, s/w1) verbunden.

s/w0 geht ins Internet und s/w1 ist mit einem Laptop verbunden.

Und ich möchte eine bidirektionale Weiterleitung von eth0 und eth1 wie eine Bridge.

Aber nicht mit brctl, sondern nur mit iptables.

Wenn der iptables-Regelsatz also korrekt ist, sollte der Laptop über einen Internetzugang verfügen.

Ich habe diese Regeln ausprobiert, aber sie haben nicht funktioniert.

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Ich wäre für jede Hilfe dankbar.

BEARBEITEN.

mein Netzwerk ist wie unten.

internet - router - switch0 - eth0:linuxBox:eth1 - switch1 - laptop 

Wenn Sie eine Brücke mit brctl wie unten erstellen, kann der Laptop das Internet nutzen

brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
brctl stp br0 off
ifconfig br0 up

Mein Ziel besteht darin, iptables-Regeln zu erstellen, die brctl ersetzen.

Antwort1

Sie sollten angeben, was Sie möchten. Eine Bridge macht kein NAT und das Internet funktioniert nicht wie Ethernet, wo eine Bridge funktioniert.
Wenn Sie ein Internet-Gateway mit NAT haben und Ihre Pakete entsprechend den IP-Routingtabellen Ihrer Linux-Box weiterleiten möchten, sehen Ihre iptables-Routen ganz gut aus. Sie müssen nur sicherstellen, dass die IP-Weiterleitung auf dieser Box aktiviert ist und das Standard-Gateway des Laptops auf die Adresse eth1 der Linux-Box eingestellt ist.


Nach Ihren Updates gilt also: Sie brauchen keine Bridge. Gateway ist ausreichend.
1. Stellen Sie sicher, dass sich die Schnittstellen der Linux-Box in unterschiedlichen Subnetzen befinden. Oder stellen Sie alternativ in den Routing-Tabellen sicher, dass die Standardroute über den Gateway-Internet-Router auf eth0 liegt und der übrige Datenverkehr für das lokale Netzwerk (in dem sich beispielsweise Ihr Laptop befindet) über eth1 gesendet wird.
2. Richten Sie auf Ihrem Laptop eine statische IP-Konfiguration mit einer IP im selben Netzwerk wie eth1 ein und stellen Sie den Standardrouter auf die Schnittstellenadresse von eth1 ein. Oder konfigurieren Sie dafür einen DHCP-Server auf der Linux-Box.
3. Stellen Sie sicher, dass die IP-Weiterleitung auf Ihrer Linux-Box aktiviert ist.

Antwort2

Du kannst es versuchen

iptables –t nat –A POSTROUTING –o eth0 –j MASQUERADE
iptables –A FORWARD –i eth0 –o eth1 –m state  --state RELATED,ESTABLISHED –j ACCEPT
iptables –A FORWARD –i eth1 –o eth0 –j ACCEPT

dann speichern Sie die IP-Tabellen-Regeln

iptables-save
iptables-save > /etc/sysconfig/iptables
systemctl restart iptables.service

Öffnen Sie dann die iptables-Datei und bearbeiten Sie die Regeln. Verschieben Sie diese Regeln über die Ablehnungsregeln

iptables –A FORWARD –i eth0 –o eth1 –m state  --state RELATED,ESTABLISHED –j ACCEPT
iptables –A FORWARD –i eth1 –o eth0 –j ACCEPT
A FORWARD -o vibr0 -j REJECT --reject-with icmp-port-unreachable
A FORWARD -i vibr0 -j REJECT --reject-with icmp-port-unreachable

verwandte Informationen