bigsnakeye
Goto Top

Iptables port soll weitergeleitet werden, das klappt aber nicht

Bei Ubuntu 1404 lts will ich den Port 32199 nutzen. Frage - wie kann ich dafür sorgen, dass der Port 32199 freigegeben/weitergeleitet wird?

Geöffnet habe ich es so:
iptables -A INPUT -p tcp --dport 32199 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 32199 -j ACCEPT

Ich habe nun folgende Rückmeldung von iptables über dmesg:
iptables denied: IN=venet0 OUT= MAC= SRC=xxx.xx.xxx.xxx DST=xxx.xxx.xxx.xxx LEN=60 TOS=0x00 PREC=0x00 TTL=58 ID=13706 DF PROTO=TCP SPT=60374 DPT=25 WINDOW=14600 RES=0x00 SYN URGP=0

Also klappt das offenbar nicht. was mache ich denn falsch?

Content-Key: 296953

Url: https://administrator.de/contentid/296953

Printed on: April 25, 2024 at 00:04 o'clock

Member: BigSnakeye
BigSnakeye Feb 21, 2016 at 17:06:28 (UTC)
Goto Top
Hier sind die chains

iptables -t filter -L
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
REJECT     tcp  --  anywhere             anywhere             tcp flags:!FIN,SYN,RST,ACK/SYN reject-with tcp-reset
DROP       all  --  anywhere             anywhere             state INVALID
ACCEPT     all  --  anywhere             anywhere
LOG        all  --  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "  
LOG        all  --  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "  
LOG        all  --  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "  
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:smtp
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:urd
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:pop3
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:pop3s
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:imap2
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:imaps
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:poppassd
DROP       udp  --  anywhere             anywhere             udp dpt:domain
DROP       tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     icmp --  anywhere             anywhere             icmptype 8 code 0
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:32199

Chain FORWARD (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
REJECT     tcp  --  anywhere             anywhere             tcp flags:!FIN,SYN,RST,ACK/SYN reject-with tcp-reset
DROP       all  --  anywhere             anywhere             state INVALID
ACCEPT     all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere

Chain OUTPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
REJECT     tcp  --  anywhere             anywhere             tcp flags:!FIN,SYN,RST,ACK/SYN reject-with tcp-reset
DROP       all  --  anywhere             anywhere             state INVALID
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:32199
Mitglied: 114757
114757 Feb 21, 2016 updated at 17:13:58 (UTC)
Goto Top
Wenn du Ports an andere Rechner weiterleiten willst machst du das nicht mit einer Regel im INPUT sondern über einen DST-NAT Eintrag in der Prerouting-Tabelle!

Aber das sagst du uns ja wieder nicht face-sad was nun der Fall ist ...

Beispiel um z.B Pakete die an der Firewall auf Port 80 am Interface eth0 einlaufen an einen Rechner im internen Netz an Port 8080 weiterzuleiten
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 123.123.123.123:8080

Außerdem muss man in der Forwarding-Chain ebenfalls den Traffic freischalten, da hier die Default-Policy ebenfalls auf DROP steht

Steht alles hier
http://www.karlrupp.net/de/computer/nat_tutorial

Man muss es nur mal lesen!
Member: BigSnakeye
BigSnakeye Feb 21, 2016 updated at 17:21:40 (UTC)
Goto Top
Nein, das soll auf dem gleichen Rechner passieren. Da möchte ich auf einen Webdienst zugreifen, allerdings über andere ports. Damit es nicht mit einer evlt. Webseite kollidiert. Es gibt keine untergeordnenten Rechner im Netz.

Demnach müsste das so lauten:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 32199 -j DNAT --to-destination 127.0.0.1:32199

???
Mitglied: 114757
114757 Feb 21, 2016 updated at 17:21:53 (UTC)
Goto Top
Die passende Regel hast du vorhin schon von mir bekommen:
iptables -I INPUT 1 -p tcp --dport 32199 -j ACCEPT
Das muss laufen ansonsten lauscht dein Dienst nicht auf dem Port, oder du hast ein ganz anderes Problem.
Mitglied: 114757
114757 Feb 21, 2016 updated at 17:27:37 (UTC)
Goto Top
Zitat von @BigSnakeye:

Nein, das soll auf dem gleichen Rechner passieren. Da möchte ich auf einen Webdienst zugreifen, allerdings über andere ports. Damit es nicht mit einer evlt. Webseite kollidiert. Es gibt keine untergeordnenten Rechner im Netz.

Demnach müsste das so lauten:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 32199 -j DNAT --to-destination 127.0.0.1:32199

???
Nein! Liest du überhaupt meine Kommentare? Das gilt nur wenn du an einen anderen Rechner weiterleitest, hatte ich doch extra deswegen fett gemacht !! Sie mein vorherigen Kommentar.

Bitte liest doch erst mal die einschlägigen Tutorials bevor du an Firewalls herumfrickelst. Danke.
Member: BigSnakeye
BigSnakeye Feb 21, 2016 updated at 17:28:54 (UTC)
Goto Top
Ok, ich hatte das übersehen. Sorry.

Jetzt sehe ich, dass es auch andere Anfragen gibt. Meine habe ich jetzt gefunden:
iptables denied: IN=venet0 OUT= MAC= SRC=xxx.xx.xxx.xxx DST=xxx.xxx.xxx.xxx LEN=60 TOS=0x00 PREC=0x00 TTL=58 ID=13706 DF PROTO=TCP SPT=60374 DPT=80 WINDOW=14600 RES=0x00 SYN URGP=0

Der Port 80 wird also unterbunden (ich komme nicht lokal rein, sondern übers internet). Was ich vorhin postete (oben) war wohl ein anderen Zugriffsversuch. Nicht von mir.
Mitglied: 114757
114757 Feb 21, 2016 updated at 17:41:43 (UTC)
Goto Top
Dann musst du Port 80 auch für das Interface freischalten das zum Internet zeigt. Das wird zwar hier laut deiner Config freigeschaltet:
ACCEPT tcp -- anywhere anywhere tcp dpt:http
Aber leider hast du keine Verbose-Log deiner Regeln gepostet wo drin steht für welche Interfaces deine Regeln überhaupt gelten (ob für alle oder nur bestimmte). Parameter -v (Verbose)

Du siehst hier gibt es einiges zu beachten. Und wie immer gilt hier bei den Regeln first match wins, dann werden nachfolgende Regeln nicht mehr abgearbeitet.