Discussion:
iptables-forward
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
brafik
2006-12-20 17:18:34 UTC
Permalink
witam,
chce puscic forward tylko okreslonych portow, robie tak:

#!/bin/bash
serwisy="http pop3 smtp ssh"
iptables -P FORWARD DROP

for x in ${serwisy}
do
iptables -A FORWARD -i eth1 -o eth0 -s 10.138.0.0/255.255.255.0 -d 0/0 -p
tcp --dport ${x} -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -s 0/0 -d 10.138.0.0/255.255.255.0 -p
tcp --dport ${x} -j ACCEPT
done
iptables -t nat -A POSTROUTING -s 10.138.0.0/24 -j MASQUERADE

wydaje mi sie ze powinno dzialac, ale cos jest nie tak, np. nie laduje stron
www
probowalem tez tak:

iptables -A FORWARD -s 10.138.0.0/24 -p tcp --dport ${x} -j ACCEPT

inny moja mysl to w petli:
iptables -A FORWARD -p tcp --dport ${x} -j ACCEPT
a za petla dodatkowo:
iptables -A FORWARD -i eth1 -o eth0 -s 10.138.0.0/255.255.255.0 -d 0/0 -j
ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -s 0/0 -d 10.138.0.0/255.255.255.0 -j
ACCEPT

ale wtedy puszcza po wszystkich portach (tzn. kasuje w 'serwisy' http a
strony sie laduja)
prosze o pomoc
--
/jk
s_wilk
2006-12-21 06:49:51 UTC
Permalink
Witam!
Post by brafik
witam,
#!/bin/bash
serwisy="http pop3 smtp ssh"
iptables -P FORWARD DROP
for x in ${serwisy}
do
iptables -A FORWARD -i eth1 -o eth0 -s 10.138.0.0/255.255.255.0 -d 0/0
-p tcp --dport ${x} -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -s 0/0 -d 10.138.0.0/255.255.255.0
-p tcp --dport ${x} -j ACCEPT
done
iptables -t nat -A POSTROUTING -s 10.138.0.0/24 -j MASQUERADE
wydaje mi sie ze powinno dzialac, ale cos jest nie tak, np. nie laduje
stron www
Musisz zrozumieć działanie tcp oraz parametrów iptables...

Przy każdym połączeniu, np. http na port 80 maszyna lokalna wybiera
sobie pierwszy wolny port z zakresu tzw wysokich, tzn >1024.

Czyli połączenie do stronki będzie działąło np. na takich portach
10.138.0.123:10653 ---> 1.2.3.4:80
To Twoja reguła dopuszcza (sprawdzasz ardres źródła i port docelowy,
które się zgadzają),
ale już odpowiedzi serwera http do kompa lokalnego nie przepuszczasz, bo
wybrany tu port lokalny nie należy do Twojej listy (--dport $x).

Nie masz wpływu na to, który to port zostanie wybrany, więc powinienneś
przepuszczać _połączenia_ _nawiązane_ , zamiast wszystkich pakietów
wracających na poszczególne. Jeśli już ma to być robione według portów,
to mógłbyś użyć --sport jako port źródła, ale polecam raczej reguły
bazujące na stanie połączenia (patrz niżej).
Post by brafik
iptables -A FORWARD -s 10.138.0.0/24 -p tcp --dport ${x} -j ACCEPT
Akceptujesz tu ruch wychodzący, ale polityka odrzuca ruch przychodzący,
więc serwer nie może odpowiedzieć.
Post by brafik
iptables -A FORWARD -p tcp --dport ${x} -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -s 10.138.0.0/255.255.255.0 -d 0/0
-j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -s 0/0 -d 10.138.0.0/255.255.255.0
-j ACCEPT
ale wtedy puszcza po wszystkich portach (tzn. kasuje w 'serwisy' http a
strony sie laduja)
prosze o pomoc
właściwe podejście w najprostszym wykonaniu powinno być takie:


# !/bin/bash
# serwisy="http pop3 smtp ssh"
#
# #przepuszczamy połączenia nawiązane, w dowolnym kierunku
# iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# #zezwalamy na nawiązywanie połączeń na dozwolone porty porty
# for x in $serwisy
# do
# iptables -A FORWARD -s 10.138.0.0/24 -p tcp --dport $x -m state\
# --state NEW -j ACCEPT
# done
#
# #no i maskarada....
# iptables -t nat -A POSTROUTING -s 10.138.0.0/24 -j MASQUERADE
--
Pozdrawiam,
Szymon Wilkołazki
brafik
2006-12-22 13:12:51 UTC
Permalink
wielkie dzieki,
Wesolych Swiat
--
/jk
Loading...