Hi Leutz,
ich versuche seit einiger Zeit durch meinen Debianserver auf dem bisher alles funktioniert hat (Webserver, FTP Server, Client-FTP, Masquerading, usw.) ein Portforwarding auf einen im lokalen Netz liegenden Rechner zu machen.
Leider will mir das irgendwie nicht gelingen. Es soll der Port 8888 auf einen im lokalen Netz liegenden Windows-Apache auf Port 80 geforwarded werden.
Vielleicht kann mal jemand mein Script durchschauen.
############
#! /bin/sh
IPTABLES=/sbin/iptables
DEFAULTPOLICY="DROP"
DEVINT1="eth0"
DEVEXT="ppp0"
LOCALNET100="192.168.0.0/24"
FlushFilterRules()
{
#Setzt die Filterregeln zurueck
TABLE="filter"
$IPTABLES -t $TABLE -F
$IPTABLES -t $TABLE -X
$IPTABLES -t $TABLE -P INPUT $DEFAULTPOLICY
$IPTABLES -t $TABLE -P OUTPUT $DEFAULTPOLICY
$IPTABLES -t $TABLE -P FORWARD $DEFAULTPOLICY
}
FlushNATRules()
{
#Setzt die NAT (Masquerading) zurueck
OLD=$DEFAULTPOLICY
DEFAULTPOLICY="ACCEPT"
TABLE="nat"
$IPTABLES -t $TABLE -F
$IPTABLES -t $TABLE -X
$IPTABLES -t $TABLE -P PREROUTING $DEFAULTPOLICY
$IPTABLES -t $TABLE -P POSTROUTING $DEFAULTPOLICY
$IPTABLES -t $TABLE -P OUTPUT $DEFAULTPOLICY
DEFAULTPOLICY=$OLD
}
BuildFilterRules()
{
#INPUT
#Port 113 (identd) rejecten fuer FTP
$IPTABLES -I INPUT -i $DEVEXT -p tcp --destination-port 113 -j REJECT
#Port 22 fuer SSH oeffnen
$IPTABLES -I INPUT -i $DEVEXT -p tcp --destination-port 22 -j ACCEPT
#Port 8888 TCP fuer TEST oeffnen
$IPTABLES -I INPUT -i $DEVEXT -p tcp --destination-port 8888 -j ACCEPT
$IPTABLES -I FORWARD -i $DEVEXT -p tcp --destination-port 8888 -j ACCEPT
#Port 21 fuer FTP oeffnen
$IPTABLES -I INPUT -i $DEVEXT -p tcp --destination-port 21 -j ACCEPT
#Port 80 fuer WWW oeffnen
$IPTABLES -I INPUT -i $DEVEXT -p tcp --destination-port 80 -j ACCEPT
#ICMP Anfragen reinlassen
$IPTABLES -I INPUT -i $DEVEXT -p icmp -j ACCEPT
#Laesst bestehenden
#Verbindungen rein, mit Connection Tracking
BLOCKEXT="block-ext"
$IPTABLES -N $BLOCKEXT
#Akzeptiere alle bereits bestehenden Verbindungen (CT)
$IPTABLES -A $BLOCKEXT -m state --state ESTABLISHED,RELATED -j ACCEPT
#Akzeptiere alle intern neu aufgebauten Verbindungen
$IPTABLES -A $BLOCKEXT ! -i $DEVEXT -m state --state NEW -j ACCEPT
#Wende block-ext auf die Input Chain an
$IPTABLES -A INPUT -j $BLOCKEXT
#FORWARD
$IPTABLES -A FORWARD -j $BLOCKEXT
#Verwerde alle von außen aufgebauten Verbindungen durch FORWARD
#WILL ICH ERST EINMAL NICHT!
#$IPTABLES -A FORWARD -i $DEVEXT -m state --state NEW -j DROP
#Erlaube alle von außen aufgebauten Verbindungen durch FORWARD
$IPTABLES -A FORWARD -i $DEVEXT -j ACCEPT
#Es werden nur gueltige Adressen weitergeleitet
$IPTABLES -A FORWARD -i $DEVINT1 -o $DEVEXT -j ACCEPT
#Anpassen der Paketgroessen fuer PPPoE
$IPTABLES -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
#OUTPUT
#Der Rest kann rausgelassen werden
$IPTABLES -A OUTPUT -j ACCEPT
}
BuildNATRules()
{
TABLE="nat"
$IPTABLES -t $TABLE -A POSTROUTING -o $DEVEXT -j MASQUERADE
#Port 8888 fuer TEST weiterleiten an Laptop
#HIER SOLL PORT 8888 am Server auf Port 80 an einen netzinternen Rechner weitergeleitet werden
$IPTABLES -t $TABLE -A PREROUTING -i $DEVEXT -p tcp --dport 8888 -j DNAT --to 192.168.0.4:80
}
#--Start-----------------------
#IP-Forward aktivieren
echo 1 > /proc/sys/net/ipv4/ip_forward
#Alle Regeln zuruecksetzen
FlushFilterRules
FlushNATRules
#Filterregeln setzen
BuildFilterRules
#Masqueradingregeln setzten
BuildNATRules
exit 0
Vielen vielen Dank
Bis denne
Grumbler
Probleme mit dem Portforwarding bei IPTABLES
Re: Probleme mit dem Portforwarding bei IPTABLES
soweit ich iptables noob sehen kann, ist die prerouting rule ok.
vielleicht fehlt dir noch etwas à la
# Linux 2.4
iptables -A OUTPUT -t nat -p tcp -d 1.2.3.4 --dport 8080 \
-j DNAT --to 192.168.1.1:80
wenn die pakete lokal generiert werden?
wenns das auch nicht ist, dann schau dir das mal an:
Umadressierung (Redirection)
Es gibt einen speziellen Fall von Destination NAT, der Redirection genannt wird: Es ist eine einfache
Bequemlichkeit, die genau das gleiche tut wie NAT auf der eingehenden Schnittstelle.
## Eingehenden Webtraffic an Port 80 an unseren (transparenten) Squid-
# Proxy weiterleiten
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 \
-j REDIRECT --to-port 3128
ratte
vielleicht fehlt dir noch etwas à la
# Linux 2.4
iptables -A OUTPUT -t nat -p tcp -d 1.2.3.4 --dport 8080 \
-j DNAT --to 192.168.1.1:80
wenn die pakete lokal generiert werden?
wenns das auch nicht ist, dann schau dir das mal an:
Umadressierung (Redirection)
Es gibt einen speziellen Fall von Destination NAT, der Redirection genannt wird: Es ist eine einfache
Bequemlichkeit, die genau das gleiche tut wie NAT auf der eingehenden Schnittstelle.
## Eingehenden Webtraffic an Port 80 an unseren (transparenten) Squid-
# Proxy weiterleiten
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 \
-j REDIRECT --to-port 3128
ratte