DHCP + port forwarding - czy da sie to zrobic?

Masz problemy z siecią bądź internetem? Zapytaj tu
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

DHCP + port forwarding - czy da sie to zrobic?

Post autor: giaur »

Witam,

Problem opisze krotko: mam sobie serwer dhcp, mam rowniez zdefioniowane przekierowanie kilku portów.

Co jest nie tak: jezeli skonfiguruje polaczenie jako adres przypisany recznie (Statyczny) - forwarding portow dziala. Natomiast jezeli bedzie to adres przypisany przez dhcp - nie dziala (nigdy!)

Wiem, ze dhcp moze przypisac za kazdym razem inny adres, ale nie o to mi chodzi. Przykladowo, mam zdefiniowany zakres w dhcp: 192.168.1.1 - 192.168.1.5. Definiuje przekierowanie portów dla KA¯DEGO z tych adresów. Mimo to, wystarczy zeby adres byl przypisany przez dhcp, a forwarding portów i tak nie działa.

Jest na to jakas rada?
Wyrzym
Posty: 4
Rejestracja: 20 lipca 2007, 02:05

Post autor: Wyrzym »

Wklej tu:
iptables -t nat -L
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

Post autor: giaur »

Odkryłem problem. Okazuje się, że nie leży on w DHCP, jak przedtem myslelem ale w czyms innym, ale i tak nie wiem jak sobie poradzic.

Porty mam forwardowane w nastepujacy sposob.

Dla jedngo adresu IP miałem tak:

Kod: Zaznacz cały

iptables -t nat -A PREROUTING -i $WAN_INTERFACE -p tcp --dport $FORWARD_PORT_TCP -j DNAT --to "$REV_CLIENT_IP:$REV_CLIENT_PORT_TCP";
iptables -t nat -A PREROUTING -i $WAN_INTERFACE -p udp --dport $FORWARD_PORT_UDP -j DNAT --to "$REV_CLIENT_IP:$REV_CLIENT_PORT_UDP";
if [ "$WAN_INTERFACE" = "$LAN_INTERFACE" ]; then
   iptables -A FORWARD -p tcp --dport $FORWARD_PORT_TCP -j ACCEPT;
   iptables -A FORWARD -p udp --dport $FORWARD_PORT_UDP -j ACCEPT;
else
   iptables -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -p tcp --dport $FORWARD_PORT_TCP -j ACCEPT;
   iptables -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -p udp --dport $FORWARD_PORT_UDP -j ACCEPT;
fi 
Działało to świetnie - zarówno tcp jak i udp z przypisanym numerem portu było otwarte. Jednak po tym jak postawilem dhcp, chce miec forwardowanie dla kilku adresow IP, wiec dodalem petle:

Kod: Zaznacz cały

for REV_CLIENT_IP in 192.168.1.5 192.168.1.101 192.168.1.2 192.168.1.3 192.168.1.4

do
iptables -t nat -A PREROUTING -i $WAN_INTERFACE -p tcp --dport $FORWARD_PORT_TCP -j DNAT --to "$REV_CLIENT_IP:$REV_CLIENT_PORT_TCP";
iptables -t nat -A PREROUTING -i $WAN_INTERFACE -p udp --dport $FORWARD_PORT_UDP -j DNAT --to "$REV_CLIENT_IP:$REV_CLIENT_PORT_UDP";
if [ "$WAN_INTERFACE" = "$LAN_INTERFACE" ]; then
   iptables -A FORWARD -p tcp --dport $FORWARD_PORT_TCP -j ACCEPT;
   iptables -A FORWARD -p udp --dport $FORWARD_PORT_UDP -j ACCEPT;
else
   iptables -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -p tcp --dport $FORWARD_PORT_TCP -j ACCEPT;
   iptables -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -p udp --dport $FORWARD_PORT_UDP -j ACCEPT;
fi
done 
I co sie okazuje: port jest otwarty prawidlowo tylko dla pierwszego adresu: 192.168.1.5. Niewazne czy jest on przypisany przez DHCP czy recznie - tu jest prawidlowo. Natomiast dla pozostalych otwarty jest tylko tcp albo tylko udp. Dlaczego tak sie dzieje?
Wyrzym
Posty: 4
Rejestracja: 20 lipca 2007, 02:05

Post autor: Wyrzym »

albo tcp albo udp? hymm to ja juz nie wiem, wydaje mi sie ze cos z ta pentla namieszales, ale co to juz nie wiem :] wiem ze to nie rozwiazanie ale moze sprobuj statycznie dla poszczegolnych adresow dopisac, ja u siebie tak zrobilem bo mi sie nie chialo kombinowac jak to zrobic ^^
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

Post autor: giaur »

Ogolnie idea jest dobra, bo dla pojedynczego adresu dziala. Ale jezeli chce w taki sam sposob zrobic to dla kilku adresow, to dziala tylko dla pierwszego.

Niewazne, czy przypisuje adres przez dhcp czy statycznie i na sztywno - tak dobrze jest tylko dla pierwszego adresu.

Jak wiec zrobic przekierowanie dla kilku adresow?

P.S. mozesz pokazac jak masz u siebie?
Wyrzym
Posty: 4
Rejestracja: 20 lipca 2007, 02:05

Post autor: Wyrzym »

tak ^^

Kod: Zaznacz cały

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  anywhere             IP           tcp dpt:ftp to:xx
DNAT       tcp  --  anywhere             IP           tcp dpt:www to:xx
DNAT       tcp  --  anywhere             IP           tcp dpt:ssh to:xx
//edit
używaj tagów code
mlyczek
ODPOWIEDZ