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