
ich verwende Kerenl 3.14.18 und iptables 1.4.21, erstellt mit den Optionen --static-enable --disable-shared. Wenn ich den folgenden Befehl ausführe: /sbin/iptables -A PREROUTING -m -d 127.3.0.2/24 -j DNAT --to-destination 10.0.0.1 -p udp -dport 69 erhalte ich die folgende Fehlermeldung: iptables v1.4.21: Übereinstimmung „-d“ konnte nicht geladen werden: Keine solche Datei oder kein solches Verzeichnis
kann mir irgendjemand erklären, was ich übersehe? Danke im Voraus.
Antwort1
hallo, ich habe ein Hostsystem mit 2 Schnittstellen, eth0 und eth1. eth0 empfängt Pakete mit der IP 127.3.xx. Ich möchte diese Pakete weiterleiten, sodass sie von eth1 an einen Server (10.0.1) gehen. eth1 hat die IP 192.168.0.100. Der Server muss die Pakete so sehen, als kämen sie vom Host (192.168.0.100). Ich glaube, ich kann das Flag -m entfernen, aber wenn ich das tue, erhalte ich diesen Fehler: iptables v1.4.21: mehrere Flags -d nicht zulässig
Um dies zu erreichen, verwenden Sie die folgenden iptables-Regeln:
iptables -t nat -A PREROUTING -d 127.3.0.2/24 -p udp --dport 69 -j DNAT --to-destination 10.0.0.1 iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.0.100
Sie sollten 127.3.0.2/24 jedoch entweder durch eine einzelne IP (also 127.3.0.2) oder einen gültigen CIDR-Bereich (z. B. 127.3.0.0/24) ersetzen. 127.3.0.2/24 ist kein gültiger CIDR-Bereich, da /24 127.3.0.0-127.3.0.254 abdecken würde. Dadurch würde auch jeglicher Datenverkehr zu jeder IP in diesem Bereich auf Port 69 auf 10.0.0.1 umgeleitet.
Da es sich bei Port 69 außerdem um TFTP handelt, muss ich Folgendes erwähnen: Wenn Sie versuchen, diesen für einen PXE-Boot oder eine andere DHCP-basierte Lösung zu verwenden, wird er höchstwahrscheinlich nicht funktionieren, da die meisten Anbieter Probleme beim Durchqueren von Subnetzen mit PXE haben.