iptables prerouting - przekierowanie portów pakietów przychodz

Masz problemy z siecią bądź internetem? Zapytaj tu
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

iptables prerouting - przekierowanie portów pakietów przychodzących

Post autor: sethiel »

eth0 ma adres 10.0.0.2
Chciałem zrobić przekierowanie portu 10001 z pakietów przychodzących na port 10001 na 10.102.0.101
10.0.0.2 może dostać się na port odbiorcy, telnet 10.102.0.101 na port 10001 działa.

Niestety po uruchomieniu przekierowania nie da się połączyć
sprawdzam z IP 10.0.0.3

Kod: Zaznacz cały

telnet 10.0.0.2 10001
Łączenie z 10.0.0.2...Nie można nawiązać połączenia z hostem na porcie 10001:
 Połączenie nie powiodło się
Dlaczego poniższe nie działa? Co jest nie tak?.
Listing 100% firewalla

Kod: Zaznacz cały

#!/bin/sh
  if [ "$1" = "start" ]; then
  echo "Startowanie Firewall..."
echo "1" > /proc/sys/net/ipv4/ip_forward

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 10001 -j DNAT --to 10.102.0.101:10001
iptables -A FORWARD -p tcp -d 10.102.0.101 --dport 10001 -j ACCEPT
fi

if [ "$1" = "stop" ]; then
    echo "Zatrzymanie Firewalla..."
    iptables -F
    iptables -X
    iptables -t nat -F
    iptables -t nat -X
    iptables -t mangle -F
    iptables -t mangle -X
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT
fi

Kod: Zaznacz cały

iptables --list PREROUTING -t nat -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:10001 to:10.102.0.101:10001

Kod: Zaznacz cały

iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             10.102.0.101        tcp dpt:10001

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Awatar użytkownika
grzesiek
Junior Member
Posty: 932
Rejestracja: 06 stycznia 2008, 10:41
Lokalizacja: Białystok

Post autor: grzesiek »

A możesz w ogóle się z nim połączyć?
Czy na adresie 10.102.0.101 coś słucha na porcie 10001?
Jak sieć 10.0.0.0 łączy się z 10.102.0.0 - gdzie masz od tego reguły?
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

Post autor: sethiel »

&quot pisze:Czy na adresie 10.102.0.101 coś słucha na porcie 10001?

tak

Zadam pytanie inaczej.

fw - 10.0.0.1
urz1 - 10.0.0.101
urz2 - 10.0.0.102
Jak można zrobić: wszystko co wpadnie na fw na port 10001 przekieruj na urz1, (włącznie z ramkami idącymi z urz2)?

Komunikacja w takim wypadku idzie mi w jedną stronę, czyli ramka wychodzi z urz2 wpada do fw następnie wchodzi na urz1 i tyle, cisza.

Poprawna komunikacja:

Kod: Zaznacz cały

urz1:~# tcpdump port 10001
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
19:58:16.446689 IP 10.0.0.102.32879 > 10.0.0.101.10001: P 2259301811:2259301818(7) ack 1314302127 win 92 <nop,nop,timestamp 237223677 237246807>
19:58:16.446766 IP 10.0.0.101.10001 > 10.0.0.102.32879: . ack 7 win 91 <nop,nop,timestamp 237248179 237223677>
19:58:18.407542 IP 10.0.0.102.32879 > 10.0.0.101.10001: P 7:14(7) ack 1 win 92 <nop,nop,timestamp 237224167 237248179>
19:58:18.407603 IP 10.0.0.101.10001 > 10.0.0.102.32879: . ack 14 win 91 <nop,nop,timestamp 237248670 237224167>
19:58:21.006258 IP 10.0.0.102.32879 > 10.0.0.101.10001: P 14:19(5) ack 1 win 92 <nop,nop,timestamp 237224817 237248670>
19:58:21.006294 IP 10.0.0.101.10001 > 10.0.0.102.32879: . ack 19 win 91 <nop,nop,timestamp 237249319 237224817>
19:58:22.730329 IP 10.0.0.102.32879 > 10.0.0.101.10001: P 19:21(2) ack 1 win 92 <nop,nop,timestamp 237225248 237249319>
19:58:22.730364 IP 10.0.0.101.10001 > 10.0.0.102.32879: . ack 21 win 91 <nop,nop,timestamp 237249750 237225248>
19:58:25.366749 IP 10.0.0.102.32879 > 10.0.0.101.10001: P 21:24(3) ack 1 win 92 <nop,nop,timestamp 237225907 237249750>
19:58:25.366787 IP 10.0.0.101.10001 > 10.0.0.102.32879: . ack 24 win 91 <nop,nop,timestamp 237250409 237225907>
19:58:25.959427 IP 10.0.0.101.10001 > 10.0.0.102.32879: P 1:3(2) ack 24 win 91 <nop,nop,timestamp 237250557 237225907>
19:58:25.959600 IP 10.0.0.102.32879 > 10.0.0.101.10001: . ack 3 win 92 <nop,nop,timestamp 237226056 237250557>
19:58:29.472972 IP 10.0.0.102.32879 > 10.0.0.101.10001: F 24:24(0) ack 3 win 92 <nop,nop,timestamp 237226934 237250557>
19:58:29.473186 IP 10.0.0.101.10001 > 10.0.0.102.32879: F 3:3(0) ack 25 win 91 <nop,nop,timestamp 237251436 237226934>
19:58:29.473502 IP 10.0.0.102.32879 > 10.0.0.101.10001: . ack 4 win 92 <nop,nop,timestamp 237226934 237251436>

Kod: Zaznacz cały

urz2:~# telnet 10.0.0.101 10001
Trying 10.0.0.101...
Connected to 10.0.0.101.
Escape character is '^]'.
 aaaaa
aaaaa
^C
}
^]
telnet> quit
Connection closed.
urz2:~#
I komunikacja z pośrednictwem fw:

Kod: Zaznacz cały

fw:~# tcpdump -i eth1.102 port 10001
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1.102, link-type EN10MB (Ethernet), capture size 96 bytes
20:02:31.695699 IP sas000vm.34955 > 10.0.0.1.10001: S 526497272:526497272(0) win 5840 <mss 1460,sackOK,timestamp 237327722 0,nop,wscale 6>
20:02:31.695752 IP sas000vm.34955 > sas001vm.10001: S 526497272:526497272(0) win 5840 <mss 1460,sackOK,timestamp 237327722 0,nop,wscale 6>
20:02:34.694084 IP sas000vm.34955 > 10.0.0.1.10001: S 526497272:526497272(0) win 5840 <mss 1460,sackOK,timestamp 237328472 0,nop,wscale 6>
20:02:34.694113 IP sas000vm.34955 > sas001vm.10001: S 526497272:526497272(0) win 5840 <mss 1460,sackOK,timestamp 237328472 0,nop,wscale 6>
20:02:40.693047 IP sas000vm.34955 > 10.0.0.1.10001: S 526497272:526497272(0) win 5840 <mss 1460,sackOK,timestamp 237329972 0,nop,wscale 6>
20:02:40.693073 IP sas000vm.34955 > sas001vm.10001: S 526497272:526497272(0) win 5840 <mss 1460,sackOK,timestamp 237329972 0,nop,wscale 6>
^C
6 packets captured
6 packets received by filter
0 packets dropped by kernel

Kod: Zaznacz cały

urz1:~# tcpdump port 10001
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
20:05:12.615042 IP 10.0.0.102.34955 > 10.0.0.101.10001: S 526497272:526497272(0) win 5840 <mss 1460,sackOK,timestamp 237327722 0,nop,wscale 6>
20:05:12.615108 IP 10.0.0.101.10001 > 10.0.0.102.34955: S 3860442477:3860442477(0) ack 526497273 win 5792 <mss 1460,sackOK,timestamp 237352221 237327722,nop,wscale 6>
20:05:12.621814 IP 10.0.0.102.34955 > 10.0.0.101.10001: R 526497273:526497273(0) win 0
20:05:15.613883 IP 10.0.0.102.34955 > 10.0.0.101.10001: S 526497272:526497272(0) win 5840 <mss 1460,sackOK,timestamp 237328472 0,nop,wscale 6>
20:05:15.613908 IP 10.0.0.101.10001 > 10.0.0.102.34955: S 3907298748:3907298748(0) ack 526497273 win 5792 <mss 1460,sackOK,timestamp 237352971 237328472,nop,wscale 6>
20:05:15.614061 IP 10.0.0.102.34955 > 10.0.0.101.10001: R 526497273:526497273(0) win 0
20:05:21.613853 IP 10.0.0.102.34955 > 10.0.0.101.10001: S 526497272:526497272(0) win 5840 <mss 1460,sackOK,timestamp 237329972 0,nop,wscale 6>
20:05:21.613871 IP 10.0.0.101.10001 > 10.0.0.102.34955: S 4001048220:4001048220(0) ack 526497273 win 5792 <mss 1460,sackOK,timestamp 237354471 237329972,nop,wscale 6>
20:05:21.613994 IP 10.0.0.102.34955 > 10.0.0.101.10001: R 526497273:526497273(0) win 0
^C
9 packets captured
9 packets received by filter
0 packets dropped by kernel

Kod: Zaznacz cały

urz2:~# telnet 10.0.0.1 10001
Trying 10.0.0.1...
^C
urz2:~#
Awatar użytkownika
grzesiek
Junior Member
Posty: 932
Rejestracja: 06 stycznia 2008, 10:41
Lokalizacja: Białystok

Post autor: grzesiek »

sethiel pisze: komunikacja w takim wypadku idzie mi w jedną stronę, czyli ramka wychodzi z urz2 wpada do fw nastepnie wchodzi na urz1 i tyle... cisza:
Czyli co? Co nie odpowiada - jaka usługa - z urz1?
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

Post autor: sethiel »

A co za różnica jaka usługa?
Może to być www, ftp ssh, cokolwiek tam sobie umieszczę, generalnie nie odpowiada.

Edycja:
M
yśląc że wpisuje bzdury w iptables zainstalowałem shorewalla, dodałem jeszcze jeden interfejs sieciowy i nic:

Kod: Zaznacz cały

"Linux fw 2.6.18-6-686-bigmem #1 SMP Tue May 5 02:00:57 UTC 2009 i686"
debian_version 4.0

Kod: Zaznacz cały

#test ssh, plik /shorewall/rules
DNAT            wan            lan:10.0.0.101:22          tcp     10001      -       10.0.0.1
A najgorsze w tym to, że na innym Debianie mi działa. I już kompletnie nie wiem gdzie szukać błędu.
Awatar użytkownika
grzesiek
Junior Member
Posty: 932
Rejestracja: 06 stycznia 2008, 10:41
Lokalizacja: Białystok

Post autor: grzesiek »

sethiel pisze:A co za różnica jaka usługa?
Bo może tam nie ma jeszcze żadnej usługi i co ma Ci wtedy odpowiadać - nic.
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

Post autor: sethiel »

cytuję drugiego posta:

Kod: Zaznacz cały

urz2:~# telnet 10.0.0.101 10001
Trying 10.0.0.101...
Connected to 10.0.0.101.
Escape character is '^]'.
 aaaaa
aaaaa
^C
}
^]
telnet> quit
Connection closed.
urz2:~#
tam jest usługa. Connected to...
ODPOWIEDZ