iptables i przekierowywanie portów

Masz problemy z siecią bądź internetem? Zapytaj tu
Awatar użytkownika
ShinnRa
Beginner
Posty: 457
Rejestracja: 05 marca 2007, 23:05
Lokalizacja: Gdynia

iptables i przekierowywanie portów

Post autor: ShinnRa »

Mam taki mały problem (^__^) chce przekierować port 3333 w routerze na 10.0.0.100 na port 222 a port 4444 w routerze na 10.0.0.101 na port 222 tak jak na rysunku poniżej:

Kod: Zaznacz cały

                                                                                            +--------------+
                                                                                             |                  |
                                                                                 +--- eth0     HOST 1   |
połączenie z                                                               /           |                   |
internetu na                                                              /            +--------------+
port 3333                                                                /              eth0: 10.0.0.100
    \                                                                       /               PORT: 222
     \                                                                     /
      \         |                                                         /
       \        |          eth1: 10.0.0.254                      /
        +-----|          +-----------+            +----------+
                |          |                |           |               |
                +--- eth0  ROUTER  eth1 --- |  SWITCH  |
                |          |                |           |               |
        +-----|          +-----------+            +----------+
       /        |         eth0: DHCP                               \
      /         |                                                         \
     /                                                                     \
    /                                                                       \
połączenie z                                                            \
internetu na                                                             \            +--------------+
port 4444                                                                  \           |                   |
                                                                                +--- eth0     HOST 2    |
                                                                                           |                    |
                                                                                           +--------------+
                                                                                           eth0: 10.0.0.101
                                                                                           PORT: 222

i na podstawie tego co znalazłem w sieci udało mi się napisać takie coś:

Kod: Zaznacz cały

$IPT -A FORWARD -p TCP -i eth0 --destination-port 3333 \
     --destination 10.0.0.100 -j ACCEPT
$IPT -A FORWARD -p TCP -i eth0 --destination-port 4444 \
     --destination 10.0.0.101 -j ACCEPT

$IPT -t nat -A PREROUTING -p TCP -i eth0 --destination-port 3333 \
     -j DNAT --to-destination 10.0.0.100:3333
$IPT -t nat -A PREROUTING -p TCP -i eth0 --destination-port 4444 \
     -j DNAT --to-destination 10.0.0.101:4444
tylko, że to przekieruje port 3333 na 10.0.0.100:3333 a port 4444 na 10.0.0.101:4444 i teraz moje pytanie jak powinny wyglądać te regułki.
Ister
Junior Member
Posty: 566
Rejestracja: 05 marca 2009, 12:42

Post autor: Ister »

po

Kod: Zaznacz cały

--destination-point
wpisujesz port z którego przekierowujesz,
natomiast w

Kod: Zaznacz cały

--to-destination
po dwukropku wpisujesz na jaki port ma być przekierowane. Czyli takie ustawienia:

Kod: Zaznacz cały

$IPT -A FORWARD -p TCP -i eth0 --destination-port 3333 \
     --destination 10.0.0.100 -j ACCEPT 

$IPT -t nat -A PREROUTING -p TCP -i eth0 --destination-port 3333 \
     -j DNAT --to-destination 10.0.0.100:222 
przekieruje (jedno z połączeń) tak jak chcesz.
Awatar użytkownika
ShinnRa
Beginner
Posty: 457
Rejestracja: 05 marca 2007, 23:05
Lokalizacja: Gdynia

Post autor: ShinnRa »

Kod: Zaznacz cały

# Port Forwarding is enabled, so accept forwarded traffic
$IPT -A FORWARD -p TCP -i eth0 --destination-port 3333 \
     --destination 10.0.0.100 -j ACCEPT
$IPT -A FORWARD -p TCP -i eth0 --destination-port 4444 \
     --destination 10.0.0.101 -j ACCEPT

# Log packets that still don't match
$IPT -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG \
     --log-prefix "ipt# msg=FORWARD packet died "

$IPT -t nat -A PREROUTING -p TCP -i eth0 --destination-port 3333 \
     -j DNAT --to-destination 10.0.0.100:222

$IPT -t nat -A PREROUTING -p TCP -i eth0 --destination-port 4444 \
     -j DNAT --to-destination 10.0.0.101:222
napisałem sobie teraz takie regułki ale to dalej nie działa i mam takie logi:
Dec 17 20:20:29 kagami kernel: [ 4615.753244] ipt# msg=FORWARD packet died IN=eth0 OUT=eth1 SRC=192.168.17.1 DST=10.0.0.100 LEN=52 TOS=0x00 PREC=0x00 TTL=127 ID=2368 DF PROTO=TCP SPT=5240 DPT=222 WINDOW=8192 RES=0x00 SYN URGP=0
Dec 17 20:20:35 kagami kernel: [ 4621.753422] ipt# msg=FORWARD packet died IN=eth0 OUT=eth1 SRC=192.168.17.1 DST=10.0.0.100 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=2369 DF PROTO=TCP SPT=5240 DPT=222 WINDOW=8192 RES=0x00 SYN URGP=0
Dec 17 20:21:20 kagami kernel: [ 4666.748798] ipt# msg=FORWARD packet died IN=eth0 OUT=eth1 SRC=192.168.17.1 DST=10.0.0.100 LEN=52 TOS=0x00 PREC=0x00 TTL=127 ID=2651 DF PROTO=TCP SPT=5251 DPT=222 WINDOW=8192 RES=0x00 SYN URGP=0
Dec 17 20:21:23 kagami kernel: [ 4669.748707] ipt# msg=FORWARD packet died IN=eth0 OUT=eth1 SRC=192.168.17.1 DST=10.0.0.100 LEN=52 TOS=0x00 PREC=0x00 TTL=127 ID=2652 DF PROTO=TCP SPT=5251 DPT=222 WINDOW=8192 RES=0x00 SYN URGP=0
Dec 17 20:21:29 kagami kernel: [ 4675.749899] ipt# msg=FORWARD packet died IN=eth0 OUT=eth1 SRC=192.168.17.1 DST=10.0.0.100 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=2653 DF PROTO=TCP SPT=5251 DPT=222 WINDOW=8192 RES=0x00 SYN URGP=0


[ Dodano: |20 Gru 2009|, 2009 16:20 ]
zmieniłem regułki w FORWARD na zasadzie prób i błędów i teraz mam takie:
# Port Forwarding is enabled, so accept forwarded traffic
$IPT -A FORWARD -p TCP -i eth0 --destination-port 222 \
--destination 10.0.0.100 -j ACCEPT
$IPT -A FORWARD -p TCP -i eth0 --destination-port 222 \
--destination 10.0.0.101 -j ACCEPT

# Log packets that still don't match
$IPT -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-prefix "ipt# msg=FORWARD packet died "

$IPT -t nat -A PREROUTING -p TCP -i eth0 --destination-port 3333 \
-j DNAT --to-destination 10.0.0.100:222

$IPT -t nat -A PREROUTING -p TCP -i eth0 --destination-port 4444 \
-j DNAT --to-destination 10.0.0.101:222
i działa. Ale nie rozumiem dlaczego, gdyż w forward mam wpisy kierujące port 222 na dwa różne IP.
ODPOWIEDZ