PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables forwarding



Mathew
21.05.03, 16:21
Hallo,

habe mich schon blöd gelesen und habe keine Ahnung warum ich kein Portforwarding hinbekomme. Ich lese immer nur die eine Zeile, aber bei mir klapps nicht *grrrr* Der interne Rechner hat die 192.168.1.1 auf Port 80. Hier lieber mal mein ganzen Skript, mich interessiert aber nur das Portforwarding. Die anderen Sachen wie -state kommen später *ggg*.

Vielleicht kann man schon ein Schritt weitergehen und jemand hat Citrix laufen ???
UDP 1604, TCP 1494, sprich wenn ich das 80er Problem gelöst habe, sollte ich einfach nur die Citrixports freigeben und das läuft auch.

Danke für Eure Hilfe.

Gruß

Mathew


EXT_IP=217.7.102.102
INT_IP=192.168.1.254
EXT_NIC=eth0
INT_NIC=eth1

case "$1" in
start)
echo "Starte IP-Paketfilter"

# IPTABLES MODULE
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp
modprobe iptable_nat
modprobe ipt_MASQUERADE
modprobe ipt_REJECT

# ROUTING AKTIVIEREN
echo 1 > /proc/sys/net/ipv4/ip_forward 2> /dev/null

# MASQUERADING AKTIVIEREN
iptables -t nat -A POSTROUTING -o $EXT_NIC -j MASQUERADE

# SYN-COOKIES AKTIVIEREN
echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null

# ALLE VORHANDENEN REGELN LÖSCHEN
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

# CHAIN LOGFILE ERSTELLEN
iptables -N TCP_INPUT_BLOCK
iptables -A TCP_INPUT_BLOCK -j LOG --log-prefix "TCP INPUT GEBLOCKT "
iptables -A TCP_INPUT_BLOCK -j DROP

iptables -N UDP_INPUT_BLOCK
iptables -A UDP_INPUT_BLOCK -j LOG --log-prefix "UDP INPUT GEBLOCKT "
iptables -A UDP_INPUT_BLOCK -j DROP

iptables -N ICMP_INPUT_BLOCK
iptables -A ICMP_INPUT_BLOCK -j LOG --log-prefix "ICMP INPUT GEBLOCKT "
iptables -A ICMP_INPUT_BLOCK -j DROP

iptables -N TCP_OUTPUT_BLOCK
iptables -A TCP_OUTPUT_BLOCK -j LOG --log-prefix "TCP OUTPUT GEBLOCKT "
iptables -A TCP_OUTPUT_BLOCK -j DROP

iptables -N UDP_OUTPUT_BLOCK
iptables -A UDP_OUTPUT_BLOCK -j LOG --log-prefix "UDP OUTPUT GEBLOCKT "
iptables -A UDP_OUTPUT_BLOCK -j DROP

iptables -N ICMP_OUTPUT_BLOCK
iptables -A ICMP_OUTPUT_BLOCK -j LOG --log-prefix "ICMP OUTPUT GEBLOCKT "
iptables -A ICMP_OUTPUT_BLOCK -j DROP

iptables -N PRIVAT_INPUT_BLOCK
iptables -A PRIVAT_INPUT_BLOCK -j LOG --log-prefix "PRIVATIP EXTERN GEBLOCKT "
iptables -A PRIVAT_INPUT_BLOCK -j DROP

iptables -N INVALID_BLOCK
iptables -A INVALID_BLOCK -j LOG --log-prefix "DEFEKTE PAKETE GEBLOCKT "
iptables -A INVALID_BLOCK -j DROP

# DEFAULT AUF BLOCKEN
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# PRIVATADRESSEN VON EXTERN VERWERFEN
iptables -A INPUT -i $EXT_NIC -s 10.0.0.0/8 -j PRIVAT_INPUT_BLOCK
iptables -A INPUT -i $EXT_NIC -s 172.16.0.0/12 -j PRIVAT_INPUT_BLOCK
iptables -A INPUT -i $EXT_NIC -s 192.168.0.0/16 -j PRIVAT_INPUT_BLOCK
iptables -A INPUT -i $EXT_NIC -s 224.0.0.0/4 -j PRIVAT_INPUT_BLOCK
iptables -A INPUT -i $EXT_NIC -s 240.0.0.0/5 -j PRIVAT_INPUT_BLOCK

# DEFEKTE PAKETE VERWERFEN
iptables -A INPUT -m state --state INVALID -j INVALID_BLOCK
iptables -A OUTPUT -m state --state INVALID -j INVALID_BLOCK
iptables -A FORWARD -m state --state INVALID -j INVALID_BLOCK

# LOCALHOST ALLES ERLAUBEN
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# INTERNES LAN ALLES ERLAUBEN
iptables -A INPUT -i $INT_NIC -j ACCEPT
iptables -A OUTPUT -o $INT_NIC -j ACCEPT

# INTERNE PAKETE INS INET FORWARDEN
iptables -A FORWARD -i $INT_NIC -o $EXT_NIC -j ACCEPT

# SMTP PORT 25 EINGEHEND ERLAUBEN
iptables -A INPUT -i $EXT_NIC -d $EXT_IP -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -o $EXT_NIC -s $EXT_IP -p tcp --sport 25 -j ACCEPT

# SMTP PORT 25 AUSGEHEND ERLAUBEN
iptables -A OUTPUT -o $EXT_NIC -s $EXT_IP -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -i $EXT_NIC -d $EXT_IP -p tcp --sport 25 -j ACCEPT

# DNS PORT 53 AUSGEHEND ERLAUBEN
iptables -A OUTPUT -o $EXT_NIC -s $EXT_IP -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -i $EXT_NIC -d $EXT_IP -p tcp --sport 53 -j ACCEPT
iptables -A OUTPUT -o $EXT_NIC -s $EXT_IP -p udp --dport 53 -j ACCEPT
iptables -A INPUT -i $EXT_NIC -d $EXT_IP -p udp --sport 53 -j ACCEPT

# HTTP PORT 80 AUSGEHEND ERLAUBEN
iptables -A OUTPUT -o $EXT_NIC -s $EXT_IP -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i $EXT_NIC -d $EXT_IP -p tcp --sport 80 -j ACCEPT

# SSH PORT 22 EINGEHEND ERLAUBEN
iptables -A INPUT -i $EXT_NIC -d $EXT_IP -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o $EXT_NIC -s $EXT_IP -p tcp --sport 22 -j ACCEPT

# SSL
iptables -A INPUT -i $EXT_NIC -d $EXT_IP -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -o $EXT_NIC -s $EXT_IP -p tcp --sport 443 -j ACCEPT

# NAT fuer HTTP
iptables -t nat -A PREROUTING -p tcp -i $EXT_NIC --dport 80 -j DNAT --to-destination 192.168.1.1:80


# REST INS LOGFILE UND BLOCKEN
iptables -A INPUT -p tcp -i $EXT_NIC -j TCP_INPUT_BLOCK
iptables -A INPUT -p udp -i $EXT_NIC -j UDP_INPUT_BLOCK
iptables -A INPUT -p icmp -i $EXT_NIC -j ICMP_INPUT_BLOCK
iptables -A OUTPUT -o $EXT_NIC -j TCP_OUTPUT_BLOCK
iptables -A OUTPUT -o $EXT_NIC -j UDP_OUTPUT_BLOCK
iptables -A OUTPUT -o $EXT_NIC -j ICMP_OUTPUT_BLOCK

;;

stop)
echo "Stoppe IP-Paketfilter"
# Tabelle flushen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
echo "Deaktiviere IP-Routing"
echo 0 > /proc/sys/net/ipv4/ip_forward

# Default-Policies setzen
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
;;

status)
echo "Tabelle filter"
iptables -L -vn
echo "Tabelle nat"
iptables -t nat -L -vn
echo "Tabelle mangle"
iptables -t mangle -L -vn
;;

*)
echo "Fehlerhafter Aufruf"
echo "Syntax: $0 {start|stop|status}"
exit 1
;;

esac
mx01:~ #

geronet
21.05.03, 18:13
Huhu, wenn du meinst Portforwarding von einem internem Rechner testen zu können dann liegst du falsch. Dazu brauchst du einen zweiten Rechner mit extra Internet Anschluss oder einen Freund der selbiges hat, da Portforwarding nicht "um die Ecke" funktioniert.

Grüsse, Stefan

tomes
21.05.03, 18:32
Dir fehlt glaub ich, die forward Regel die die Pakete ins innere Netz forwardet.
iptables -A FORWARD -i eth0 -o eth0 -p tcp --dport 80 -m state --state NEW -j ACCEPT
Pakete durchlaufen in dem Fall nur FORWARD, nicht INPUT und OUTPUT

@Geronet
Um die Ecke ?
Wenn du meinst umbiegen aus dem inneren Netz ueber die aussere IP auf einen inneren Server, dann geht das wohl. Musste ich gerade erst heute machen ;)
iptables -t nat -A PREROUTING -i eth1 -p [ dasProtokoll ] -d [ dieAeusserIP ] --dport [ derPort ] -j DNAT --to-destination 192.168.0.250
Allerding wuerden in diesem Fall alle an [ derPort ]Pakete an den inneren Server weitergeleitet.
Macht aber fuer einen http Server wenig Sinn, aber es geht ;)

T;o)Mes

geronet
21.05.03, 18:44
Ja die Pakete zum internem Rechner kommen an, aber was ist mit den Paketen die vom Server wieder zum Router zurückkommen, was macht er mit diesen?
Für Portforwarding brauchst du eigentlich immer Masquerading in der anderen Richtung, und ich weiss ganz genau dass das nicht funktioniert hat (auch öfters gelesen).
Aber bin ja offen für neues ;)

Muss ich selber mal ausprobieren.

Grüsse, Stefan

tomes
21.05.03, 19:02
Original geschrieben von geronet
Ja die Pakete zum internem Rechner kommen an, aber was ist mit den Paketen die vom Server wieder zum Router zurückkommen, was macht er mit diesen?
Für Portforwarding brauchst du eigentlich immer Masquerading in der anderen Richtung, und ich weiss ganz genau dass das nicht funktioniert hat (auch öfters gelesen).
Aber bin ja offen für neues ;)

Muss ich selber mal ausprobieren.

Grüsse, Stefan
Na ja, vielleicht geht das nur in diesem speziellen Fall. Da wartet naehmlich ein spez. Proxy der die Anfragen handelt. Da hab ich mich wohl mal wieder zu frueh gefreut.
Bei einem Server duerfte es wirklich schwer werden, wegen dem Rueckweg.

T;o)Mes

Mathew
21.05.03, 20:18
geronet: sicher mache ich das über extern. Standleitung, Linux mit iptables und 2 NIC. Dafür ist auch die vorbereitung.

tomes: iptables -A FORWARD -i eth0 -o eth0 -p tcp --dport 80 -m state --state NEW -j ACCEPT.
Du meinst sicher -i ext -o int, aber wenn ich alles auf accept setzte, klappt das portforwarding trotzdem nicht *grrrr*

Mathew
22.05.03, 09:28
Hallo,

habe das Problem gelöst, trau mich es aber nicht zu schreiben *schäm*
Aber vielleicht hat ja noch jemand so ein Problem und versucht 6 Stunden an der Firewall rumzustricken.

Der Rechner der im internen Lan steht hatte als Default Gateway eine andere Adresse, sprich das Paket wurde zwar weitergeleitet, ist aber nie zurückgekommen da der interne Rechner dieses an seinem Default Gateway schicken wollte.

Gruß

Mathew (der sich immer noch Ärgert warum sein Account auf null gesetzt wurde)