Od dłuższego czasu szukam w internecie i pytam znajomych informatyków ale dotychczas nie udało mi się rozwiązać następującego problemu.
Do mojej sieci doprowadzono dwa łącz (a nawet trzy ale wkrótce z jednego będziemy rezygnowali). Chciałem więc obsłużyć oba łącza za pomocą iproute2, problem w tym, że prawdopodobnie nie działa obsługa tablic w iproute2.
Z obserwacji wynika, że sygnał wchodzi i dochodzi no maszyny wewnątrz sieci lokalnej ale wychodzi losowo raz jednym raz drugim łączem. Natomiast ja potrzebuję tak skonfigurować routing aby sygnał wchodził np. eth1 i tym samym interfejsem wychodził.
Inny problem to taki, że gdy chce połączyć się prze VNC to mogę się podpiąć tylko przez jedno łącze na raz (np eth2, eth3 już mnie nie wpuszcza ), a po pewnym czasie jest na odwrót (tzn eth3 mogę się połączyć, a eth2 mnie nie wpuszcza).
Czy do pełnej funkcjonalności iproute2 wymagana jest instalacja jakiś dodatkowych modułów?
Gdzie mam szukać? Wszystko co dotychczas znajdowałem to konfiguracja podobna do mojej.
Poniżej podaję moją konfigurację.
Oto część mojego iptables:
Kod: Zaznacz cały
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
Kod: Zaznacz cały
IF0="eth0" #interfejs lokalny
IF1="eth1" #interfejs zewnętrzny X OBECNIE ODPIÊTY!!
IF2="eth2" #interfejs zewnętrzny Y
IF3="eth3" #interfejs zewnętrzny Z
IP0="10.0.0.31" #Adres sieci lokalnej
IP1="XXX.XXX.XXX.XXX" #Adres sieci zewnętrznej X
IP2="YYY.YYY.YYY.YYY" #Adres sieci zewnętrznej Y
IP3="ZZZ.ZZZ.ZZZ.ZZZ" #Adres sieci zewnętrznej Z
P1="XXX.XXX.XXX.XXA" #Brama[adres routera] dla X
P2="YYY.YYY.YYY.YYB" #Brama[adres routera] dla Y
P3="ZZZ.ZZZ.ZZZ.ZZC" #Brama[adres routera] dla Z
P0_NET="10.0.0.0/25" #Adres sieci lokalnej
P1_NET="XXX.XXX.XXX.XXE/30" #Adres sieci zewnętrznej X
P2_NET="YYY.YYY.YYY.YYF/30" #Adres sieci zewnętrznej Y
P3_NET="ZZZ.ZZZ.ZZZ.ZZG/29" #Adres sieci zewnętrznej Z
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