Toon posts:

[iptables/forwarding] external:2080 -> internal:80

Pagina: 1
Acties:

Verwijderd

Topicstarter
het verhaal:

ik wil dat mijn interne webserver voor de buitenwereld te bereiken is via mijnip:2080. Na het lezen van de FAQ en de nodige docs is het me bijna gelukt.

Het probleem hierbij is nu dat het alleen werkt, als de policy voor INPUT op ACCEPT staat. Zodra die op DROP staat, werkt het niet meer.

Nu denk je, oh die heeft vast port 2080 dichtzetten... Jammer, was dat maar zo.

root@darthsys:~# iptables -L -v
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Chain INPUT (policy ACCEPT 35 packets, 2774 bytes)
 pkts bytes target     prot opt in     out     source               destination
49757 3657K ACCEPT     all  --  eth1   any     anywhere             anywhere
   16   800 ACCEPT     icmp --  any    any     anywhere             anywhere           icmp echo-request
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere           tcp dpt:2080
  249 15738 ACCEPT     tcp  --  eth0   any     anywhere             anywhere           tcp dpt:ssh

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
17888 7153K ACCEPT     all  --  eth0   eth1    anywhere             anywhere           state RELATED,ESTABLISHED
17175 3010K ACCEPT     all  --  eth1   eth0    anywhere             anywhere
    0     0 LOG        all  --  any    any     anywhere             anywhere           LOG level warning

Chain OUTPUT (policy ACCEPT 72651 packets, 85M bytes)
 pkts bytes target     prot opt in     out     source               destination


root@darthsys:~# iptables -L -v -t nat
code:
1
2
3
4
5
6
7
8
9
10
Chain PREROUTING (policy ACCEPT 3956 packets, 207K bytes)
 pkts bytes target     prot opt in     out     source               destination
    2   120 DNAT       tcp  --  any    any     anywhere             anywhere           tcp dpt:2080 to:192.168.1.5:80

Chain POSTROUTING (policy ACCEPT 4100 packets, 173K bytes)
 pkts bytes target     prot opt in     out     source               destination
 2821  147K MASQUERADE  all  --  any    eth0    anywhere             anywhere

Chain OUTPUT (policy ACCEPT 4209 packets, 187K bytes)
 pkts bytes target     prot opt in     out     source               destination


zoals t hierboven staat, werkt het prima. Ik heb graag dat de policy van INPUT op DROP staat, maar dan werkt het voor geen meter meer. Ik denk zelf dat ik iets stoms over het hoofd zie, maar wat??

code:
1
2
eth0   netwerkkaart voor de buitenwereld
eth1   netwerkkaart voor intern (192.168.1.5)


Linux 2.4.18. Iptables 1.2.7a

  • active2
  • Registratie: Juni 2001
  • Laatst online: 26-10-2024

active2

Google is your friend

Hoe is de tweede regel van je INPUT opgebouwd ?

Dus de regel:
/sbin/iptables -A INPUT ...

Google, Het mirakel van de 21e eeuw!!!!


Verwijderd

Topicstarter
active2 schreef op 04 oktober 2002 @ 17:44:
Hoe is de tweede regel van je INPUT opgebouwd ?

Dus de regel:
/sbin/iptables -A INPUT ...
code:
1
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT


ik wil namelijk wel mn machine kunnen blijven pingen.

  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 19-05 22:40

odysseus

Debian GNU/Linux Sid

Gokje:
code:
1
2
3
4
5
6
7
8
9
[internet]
  |    /|\
\|/    |
(1)   (4)
[NAT-box]
  |    /|\
\|/    |
(2)   (3)
[webserver]

De pijlen geven even de verschillende stappen in de verbinding weer. Je accepteert nu verkeer dat via 1 aankomt en verkeer dat via 2 vertrekt. Ook verkeer dat via 4 vertrekt is geen probleem. Verkeer dat via 3 aankomt wordt echter mogelijk geblokt, waardoor alles wel goed aankomt en verwerkt wordt, maar niet goed teruggestuurd kan worden. Je kunt dit testen door eens op de webserver een programma als 'tcpdump' te draaien, waarmee je kunt zien of er daar packets op je pc arriveren. Ook het draaien van tcpdump of ethereal op de NAT-box zou je extra informatie kunnen geven.

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


Verwijderd

Jij wil port mapping naar interne netwerk?
Zoja , dan heb je alleen FORWARD rules nodig , geen input!

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
        internet
          |
    [router webserver]
          |
         /  \
    [pc1]  [pc2]


het is dus zelfs zo, dat port 2080 geforward moet worden naar dezelfde machine, maar dan port 80.

tcpdump uitkomst

code:
1
2
3
4
root@darthsys:~# tcpdump -i eth0 port 2080
19:25:56.766714 xxx.xxx.xxx.xx.3171 > d4xxxx.upc-d.chello.nl.2080: S 1808214885:1808214885(0) win 32120 <mss 1460,sackOK,timestamp 2678805028[|tcp]> (DF)
19:25:59.765834 xxx.xxx.xxx.xxx.3171 > d4xxxx.upc-d.chello.nl.2080: S 1808214885:1808214885(0) win 32120 <mss 1460,sackOK,timestamp 2678805328[|tcp]> (DF)
19:26:05.765117 xxx.xxx.xxx.xxx.3171 > d4xxxx.upc-d.chello.nl.2080: S 1808214885:1808214885(0) win 32120 <mss 1460,sackOK,timestamp 2678805928[|tcp]> (DF)


code:
1
2
tcpdump -i eth1 port 80
# niks dus


en dat blijft ie doen

Verwijderd

Topicstarter
ik ben inmiddels weer wat wijzer. Met behulp van tcpdump (thx odysseus) ben ik erachter gekomen dat de request wel aankomt bij eth0:2080 en netjes verwerkt wordt.

illustratie:

code:
1
2
3
4
1. request -> eth0:2080
2. eth0:2080 -> webserver request
3. webserver response -> eth0:2080
4. eth0:2080 -> request


maar 4, en misschien ook 3, wordt gefilterd/geblokt en er komt dus nooit een response op de eerste request. En dat vat ik niet, want de OUTPUT policy staat op ACCEPT :?

Verwijderd

Nogmaals , je hebt geen input/output rules nodig voor port forwarding!

probeer eens iets als:

$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 --dport 2080 -j DNAT --to-destination 192.168.1.5:80
$IPTABLES -A FORWARD -p TCP -i eth0 -o eth1 -d 192.168.1.5 --dport www -j ACCEPT

ergens anders in ruleset laat je al established/related verbindingen door , dus terugweg gaat automatisch

  • Buffy
  • Registratie: April 2002
  • Laatst online: 26-12-2024

Buffy

Fire bad, Tree pretty

Verwijderd schreef op 05 oktober 2002 @ 12:19:
Nogmaals , je hebt geen input/output rules nodig voor port forwarding!

probeer eens iets als:

$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 --dport 2080 -j DNAT --to-destination 192.168.1.5:80
$IPTABLES -A FORWARD -p TCP -i eth0 -o eth1 -d 192.168.1.5 --dport www -j ACCEPT

ergens anders in ruleset laat je al established/related verbindingen door , dus terugweg gaat automatisch
Bijna goed, hij draait de webserver op de zelfde machine als waar de firewall op draait. Dus ipv van FORWARD moet het INPUT zijn.

Dus de derde regel in de INPUT chain moet niet:
code:
1
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere           tcp dpt:2080

zijn maar:
code:
1
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere           tcp dpt:80

De DNAT rule zet namelijk de destination port om van 2080 naar 80 zodat de INPUT chain op destination port 80 (www) moet filteren.

That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)


Verwijderd

Dawns_sister schreef op 05 oktober 2002 @ 12:58:
[...]
Bijna goed, hij draait de webserver op de zelfde machine als waar de firewall op draait. Dus ipv van FORWARD moet het INPUT zijn.
Waarom zit ie dan met tcpdump verkeer op beide ethernet interfaces te tracen??

  • Buffy
  • Registratie: April 2002
  • Laatst online: 26-12-2024

Buffy

Fire bad, Tree pretty

Geen idee, ik heb informatica gestudeerd en geen psychologie :)

Hij geeft echter zal aan dat port 2080 naar port 80 op de zelfde machine moet worden geredirect:
DarthRaider schreef op 04 oktober 2002 @ 18:12:
code:
1
2
3
4
5
6
        internet
          |
    [router webserver]
          |
         /  \
    [pc1]  [pc2]


het is dus zelfs zo, dat port 2080 geforward moet worden naar dezelfde machine, maar dan port 80.

That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)


  • PolarWolf
  • Registratie: November 2001
  • Laatst online: 19-05 08:01

PolarWolf

Debian, of course.

dus:

iptables -t nat -I prerouting -p tcp -s 0/0 --dport 2080 -j REDIRECT --to-ports 80

Was dat nou zo moeilijk uit de manpage te vissen? Staat er gewoon in, hoor.

Undernet #linux, Undernet #ipsec

Pagina: 1