PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables, TFTP und NAT



romeofox
21.11.05, 13:38
Hallo.

Ich habe folgendes Problem: ein Rechner aus dem internen Netz startet einen TFTP-Download auf einem Rechner im externen Netz. Allerdings wird der interne Rechner Maskiert. Wie muss ich die Regeln einrichten, dass das Ganze funktioniert?
Im Moment bleiben die Antwort-Pakete des externen Rechnerns in der INPUT-Chain hängen. In /proc/net/ip_conntrack sehe ich, dass die ausgehende Verbindung dort eingetragen ist, allerdings noch mit der richtigen Absender-Adresse. Daher findet iptables vermutlich nicht den Match.

Hier die gegenwärtigen Regeln (nur die relevanten Sachen):


#Module laden:
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ipt_state
modprobe iptable_nat
modprobe ipt_MASQUERADE
# Policies setzen
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Das intene Netz
INTIF=eth2
INTNET=10.1.1.0/24
# Eigene IP-Adresse auf der internen Seite:
INTIP=10.1.1.130

# Das externe Netz
EXTIF=eth0
EXTIP=192.168.216.102
# Transport-Netz
EXTTN=192.168.216.100/30
# Ziel-Netz
EXTNET=192.168.169.0/24

# Masquerading
iptables -t nat -A POSTROUTING -s $INTNET -o $EXTIF -d $EXTNET -j SNAT --to $EXTIP
# Port-Forwarding für SNMP-Traps
iptables -t nat -A PREROUTING -p udp --dport 162 -i $EXTIF -d $EXTIP -j DNAT --to 10.1.1.201:162


# FORWARD-Chain-Rules

# TFTP zulassen
iptables -A FORWARD -p UDP --dport tftp -m state --state NEW -j LOG --log-prefix "TFTP Forward: "
iptables -A FORWARD -p UDP --dport tftp -m state --state NEW -j ACCEPT
# Akzeptiere alle Pakete, die eine neue Verbindung aufbauen und
# aus dem Internen LAN kommen
iptables -A FORWARD -m state --state NEW -i $INTIF -s $INTNET -j ACCEPT

# Akzeptiere alle Pakete, die zu einer bestehenden Verbindung gehoeren (alle
# Richtungen)
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# testweise alles von außen zulassen
iptables -A FORWARD -i $EXTIF -s 0/0 -j ACCEPT

# Alles andere loggen und dann verwerfen (durch Policy):
iptables -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-prefix "Plonk (FORWARD): "


# INPUT-Chain-Rules

# bestehende UDP-Verbindungen zulassen
iptables -A INPUT -p UDP -s $EXTNET -m state --state ESTABLISHED,RELATED -j ACCEPT

# Alles andere loggen und dann verwerfen (durch Policy):
iptables -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-prefix "Plonk (INPUT): "


Im Log sehe ich dann sowas:


Nov 21 13:42:10 fw02 kernel: TFTP Forward: IN=eth2 OUT=eth0 SRC=10.1.1.201 DST=192.168.169.105 LEN=43 TOS=0x00 PREC=0x00 TTL=63 ID=43602 DF PROTO=UDP SPT=49164 DPT=69 LEN=23
Nov 21 13:42:10 fw02 kernel: Plonk (INPUT): IN=eth0 OUT= MAC=00:02:b3:c1:b2:c0:00:90:d0:f7:70:ed:08:00 SRC=192.168.169.105 DST=192.168.216.102 LEN=544 TOS=0x00 PREC=0x00 TTL=62 ID=34712 PROTO=UDP SPT=1144 DPT=49164 LEN=524


Kann/muss man da was mit MARK machen? Ober habe ich nur irgendwas übersehen (Die Sache mit den Wald und den Bäumen :confused: )?

Ciao, Rene