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?
DHCP + port forwarding - czy da sie to zrobic?
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:
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:
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?
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
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
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?
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?
tak ^^
//edit
używaj tagów code
mlyczek
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
używaj tagów code
mlyczek