Hallo zusammen,
ich habe folgendes Problem:
Auf unserem alten Gateway konnte man den internen Webserver z.B. auf Port 8080 von außen über Port 20200 erreichen.
Internet <-> Name.dyndns.org:20200 <-> Port Forwarding <-> 192.168.0.23:8080
Das ganze wurde mit rinted realisiert und klappte bis dato ganz gut.
Der neue Server läuft auch als Gateway, aber mit Iptables.
Internet <-> ppp0 <-> IPTables Firewall und Routing <-> eth1 <-> internes Netz 192.168.0.0/24
Wenn ich rinetd wieder in Betrieb nehme, tut sich nichts, da Iptables den Zugriff verhindert. All meine Versuche das Port Forwarding mit Iptables zu machen, sind bisher fehlgeschlagen.
Hat jemand ne Idee, wie ich das realisieren kann?
Habe folgendes zusätzlich zum unten angegebenen Skript versucht:
/sbin/iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport <QUELLPORT> -j DNAT --to 192.168.202.23:<ZIELPORT>
/sbin/iptables -A FORWARD -p tcp -i ppp0 -d 192.168.202.23 --dport <ZIELPORT> -j ACCEPT
Hoffentlich hat hier jemand ne Idee dazu.Code:#!/bin/bash echo "Starting firewall" LOGLIMIT=20 IPTABLES=/sbin/iptables LAN_IFACE="eth1" INET_IFACE="ppp0" case "$1" in start) # alle alten Regeln entfernen echo "Loesche alte Regeln" $IPTABLES -F $IPTABLES -X $IPTABLES -t nat -F # Routing echo 1 > /proc/sys/net/ipv4/ip_forward $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT $IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE ### ERSTELLE NEUE KETTEN ### # Chain to log and reject a port by ICMP port unreachable $IPTABLES -N LOGREJECT $IPTABLES -A LOGREJECT -m limit --limit $LOGLIMIT/minute -j LOG \ --log-prefix "FIREWALL REJECT " --log-level notice --log-ip-options --log-tcp-options $IPTABLES -A LOGREJECT -j REJECT --reject-with icmp-port-unreachable ### PROC MANIPULATION ### # auf Broadcast-Pings nicht antworten echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # halt die Klappe bei komischen ICMP Nachrichten echo 0 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses # Kicke den ganzen IP Spoofing Shit # (Source-Validierung anschalten) echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter # Setze Default-TTL auf 61 (Default fuer Linux ist 64) echo 61 > /proc/sys/net/ipv4/ip_default_ttl # warte max. 30 secs auf ein FIN/ACK echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout # unterbreche Verbindungsaufbau nach 3 SYN-Paketen # Default ist 6 echo 3 > /proc/sys/net/ipv4/tcp_syn_retries # unterbreche Verbindungsaufbau nach 3 SYN/ACK-Paketen # Default ist 6 echo 3 > /proc/sys/net/ipv4/tcp_synack_retries ### MAIN PART ### # SSH auf den Server erlauben $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 2121 -j ACCEPT # OpenVPN durchlassen / erlauben $IPTABLES -A INPUT -m state --state NEW -p udp --dport 15555 -j ACCEPT $IPTABLES -P INPUT DROP $IPTABLES -P FORWARD DROP $IPTABLES -P OUTPUT ACCEPT $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # im Loopback koennen wir jedem trauen $IPTABLES -A INPUT -i lo -j ACCEPT # ebenso im LAN $IPTABLES -A INPUT -i $LAN_IFACE -j ACCEPT # erlaube Pings $IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT # Alle TCP Packete, die bis hier hin kommen, werden # geloggt und rejected # Der Rest wird eh per Default Policy gedroppt... $IPTABLES -A INPUT -p tcp -j LOGREJECT $IPTABLES -A FORWARD -p tcp -j LOGREJECT ;; *) echo "Usage: `basename $0` {start}" >&2 exit 64 ;; esac exit 0
Das Skript wurde übrigens von hier entnommen.
Gruß
Matthias


Zitieren


Lesezeichen