Freesco, NND, CDN, EOS
http://forum.freesco.pl./

iptables, iproute2, 2 łącza i problem z przekierowaniem port
http://forum.freesco.pl./viewtopic.php?f=34&t=17716
Strona 1 z 1

Autor:  obi-wan [ poniedziałek, 1 czerwca 2009, 18:12 ]
Tytuł:  iptables, iproute2, 2 łącza i problem z przekierowaniem port

Witam.

Mam problem z konfiguracją przekierowania portów przez iptables. Router ma 3 sieciówki, eth0 podpięte do LANu, eth1 i eth2 podpięte do dwóch niezależnych łącz internetowych. Problem polega na tym, że chcę przekierować port na obydwu łączach na jeden z kompów wewnątrz LANu. Stosując zwykłe przekierowanie z użyciem DNAT (bez podawania parametru -i, albo podając oba interfejsy w tym parametrze) działa na jednym łączu (tym które jest jako default w ip route) a na drugim już nie. nmap pokazuje że port jest "filtered". Przypuszczam że problem polega na tym, że pakiety wchodzą powiedzmy przez eth2, trafiają do hosta wewnątrz LANu, a ten odpowiadając, wysyła pakiety z IP docelowym ustawionym na adres z którego pakiet przyszedł, a przechodząc przez router wychodzą one łączem defaultowym, czyli w moim przypadki przez eth1. Dlatego eth1 przekierowanie działa ok, a na eth2 już nie. Nie wiem czy dobrze myślę, ale chyba musiałbym zrobić coś w rodzaju maskarady, tylko działającej jakby w drugą stronę, żeby pakiety opuszczały router tym interfejsem z którego nadeszły. Tylko jak to zrobić?

Autor:  -MW- [ poniedziałek, 1 czerwca 2009, 20:39 ]
Tytuł: 

Cytuj:
# droga powrotna z routera do netu
ip rule add prio 499 from $IPL2 table LACZE2
# droga powrotna z routera do netu
ip rule add prio 500 from $IPL1 table LACZE1


kiedys mialem podobny problem i takie wpisy rozwiazaly wszystko.
(traktowac jako przyklad a nie lekarstwo)

Autor:  obi-wan [ poniedziałek, 1 czerwca 2009, 22:40 ]
Tytuł: 

OK. sprawdze na routerze i dam znać co i jak.

edit:

Wyskakuje błąd:

Error: an inet prefix is expected rather than "table".

Autor:  -MW- [ wtorek, 2 czerwca 2009, 14:43 ]
Tytuł: 

Cytuj:
(traktowac jako przyklad a nie lekarstwo)


dopasuj do swoich regul, nr, nazwy tabel i ip.

Autor:  obi-wan [ wtorek, 2 czerwca 2009, 18:46 ]
Tytuł: 

Rozumiem, że $IPL1 i $IPL2 to adresy IP łącz 1 i 2 (nie ich bram), a LACZE1 i LACZE2 to tabele dot. łącza 1 i łacza2. Jeśli tak, to po wprowadzeniu tego (nie wyskakują już żadne błędy) nic się nie zmienia. Dalej przekierowanie działa na jednym łączu a na drugim już nie :/. Poza tym wyświetlając ip rule widzę że już tam są regułki takie jak po wprowadzeniu tych Twoich pod nr 499 i 500, ale pod innymi numerami.

Autor:  -MW- [ wtorek, 2 czerwca 2009, 19:44 ]
Tytuł: 

zakladam ze przekierowane do hosta na obu laczach masz prawidlowo dopisane ?

Cytuj:
iptables -I PREROUTING -t nat -i $ETH_L1 -d $IPL1 -p $Prot --dport $Pwej -j DNAT --to $IP_hosta:$Port_wyjscia
iptables -I FORWARD -t filter -p $Prot -d $IP_hosta --dport $Pwyjscia -j ACCEPT


i klient korzysta z MASQUERADE.

oraz reguly routingu z niejszymi numerami nie lapia ruchu hosta wczesniej niz wspomniane wyzej.

Autor:  obi-wan [ wtorek, 2 czerwca 2009, 20:55 ]
Tytuł: 

Myślę, że tak. Generalnie cały mój iptables wygląda następująco:

Cytuj:
iptables -I FORWARD -p tcp -d 10.0.0.56 --dport 5900 -j ACCEPT
iptables -I FORWARD -p udp -d 10.0.0.56 --dport 5900 -j ACCEPT

iptables -t nat -A PREROUTING --protocol tcp --destination-port 5900 -j DNAT --to-destination 10.0.0.56:5900
iptables -t nat -A PREROUTING --protocol udp --destination-port 5900 -j DNAT --to-destination 10.0.0.56:5900

iptables -t nat -A POSTROUTING -o eth2 -d 0/0 -j SNAT --to $IP1
iptables -t nat -A POSTROUTING -o eth3 -d 0/0 -j SNAT --to $IP2


a iproute następująco:
Cytuj:
echo "Etap 1"
ip route replace $P1_NET dev $IF1 src $IP1 table T1
ip route replace default via $P1 table T1
ip route replace $P2_NET dev $IF2 src $IP2 table T2
ip route replace default via $P2 table T2
ip route replace $P3_NET dev $IF3 src $IP3 table T3
ip route replace default via $P3 table T3

echo "Etap 2"
ip route replace $P1_NET dev $IF1 src $IP1
ip route replace $P2_NET dev $IF2 src $IP2
ip route replace $P3_NET dev $IF3 src $IP3

ip route replace default via $P3

echo "Etap 3"
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
ip rule add from $IP3 table T3
#load balancing, parametrem weight mozemy ustawic ktore z laczy ma byc bardziej obciazone.

echo "Etap 4"
ip route replace default scope global nexthop via $P2 dev $IF2 weight 1 nexthop via $P3 dev $IF3 weight 1

#routing poloczen lokalnych serwera
echo "Etap 5"
ip route replace $P0_NET dev $IF0 table T1
ip route replace $P2_NET dev $IF2 table T1
ip route replace 127.0.0.0/8 dev lo table T1

ip route replace $P0_NET dev $IF0 table T2
ip route replace $P1_NET dev $IF1 table T2
ip route replace 127.0.0.0/8 dev lo table T2

ip route replace $P0_NET dev $IF0 table T3
ip route replace $P1_NET dev $IF1 table T3
ip route replace 127.0.0.0/8 dev lo table T3

#Odswiezanie tablicy routingu
ip route flush cache
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 > $f; done


Gdzie eth2 i 3 to łącza do internetu a eth0 to lan (eth1 i jest niepodpięty).

Strona 1 z 1 Strefa czasowa UTC+2godz.
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/