Hallo zusammen,
ich habe hier einen Raspberry Pi 4 mit dem aktuellsten Raspberry Pi OS sowie mit zwei Netzwerkschnittstellen: eth0 und eth1.
eth0 wurde mit einer statischen IP-Adresse (192.168.0.100/24) versehen.
eth1 wird über DHCP in ein weiteres Netz mit einem anderen IP-Adressbereich eingebunden (bspw. 192.168.128.100, IP-Adresse wird per DHCP zugewisen und ändert sich).
Ich möchte nun gerne über die IP-Adresse 192.168.0.100 und den Port 21 auf einen FTP-Server im Netz 192.168.128.0-254, ebenfalls über den Port 21, zugreifen (und anders herum). Hat einer von euch einen Tipp, welche Konfiguration ich mit iptables vornehmen muss? Ich finde haufenweise Beispiele für zwei statische IP-Adressen, jedoch keine für DHCP bzw. verschiedene Interfaces...
Update 1:
Ich habe nun die nachfolgende Konfiguration vorgenommen und kann mich jetzt zwar über eine IP in dem Netz von eth0 auf den FTP-Server im Netz von eth1 verbinden, jedoch kann ich weder Verzeichniss auflisten, noch sonstige Daten übertragen.
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
# general rules for forwarding traffic between external interface eth1 and internal interface eth0
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
# NAT for active/passive FTP
iptables -t nat -A PREROUTING -p tcp --dport 20 -j DNAT --to 192.168.128.195:20
iptables -t nat -A PREROUTING -p tcp --dport 21 -j DNAT --to 192.168.128.195:21
iptables -t nat -A PREROUTING -p tcp --dport 1024:65535 -j DNAT --to 192.168.128.195:1024-65535
iptables -A FORWARD -s 192.168.128.195 -p tcp --sport 20 -j ACCEPT
iptables -A FORWARD -s 192.168.128.195 -p tcp --sport 21 -j ACCEPT
iptables -A FORWARD -s 192.168.128.195 -p tcp --sport 1024:65535 -j ACCEPT
# allowing active/passive FTP
iptables -A OUTPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
Alles anzeigen
Update 2:
Ich habe die Ursache mittlerweile finden können: der FTP-Server muss bei Verwendung des passiven Modus die externe IP-Adresse eingestellt bekommen. So weit so gut, das hatte ich gestern auch bereits gemacht. Leider gibt es eine weitere Einstellmöglichkeit in dem von mir verwendeten FTP-Server, der bei Nutzung von internen IP-Adressen diese Funktion nicht verwendet. Diese Einstellung habe ich nun deaktiviert und siehe da: die obigen Regeln funktionieren (für mich) einwandfrei.
Die passive Kommunikation zu einem FTP-Server ist damit problemlos möglich!