LINUX.ORG.RU
ФорумAdmin

Балансировка канала и роутинг


0

0

Уже много где спросил, пока никто не ответил. Есть запасной вариант решения - чисто iptables, но хочется попробовать этот.

Дано:
Раздавалка интернета выделила Шлюзам N1 и N2 полосы 512/128 для доступа в инет. Между собой шлюзы и раздавалка включены на скорости 6МБит.
Шлюз N1 - 192.168.155.1(через данный шлюз видно Шлюз N2 и раздавалку интернета)
Шлюз N2 - 192.168.180.34
Рутер с тремя сетевухами
eth0 - 192.168.155.101
eth1 + eth2(мост с именем isab) - 10.0.0.1
Поверх всего этого поднимается VPN при помощи tinc
интерфейс - mvpn
адрес - 172.16.10.1

Далее. Мост isab включен в свитч, к которому подключен мой комп - 10.0.0.10 и 172.16.10.10(VPN адрес).

Задача: Пользуясь полосами выделеными для Шлюза 1 и Шлюза 2 увеличить комфортность пребывание в интернете на моем компе.
Что было сделано
Старый файл с правилами для iptables
#########################################
#!/bin/sh

#setup vpn
/sbin/modprobe tun
/usr/sbin/tincd -n mvpn

# Interface to Internet
EXTETH=eth0
EXTIP="192.168.155.101"
INTBR="isab"
ANYWHERE="0.0.0.0/0"
#ports
TCP_DC1="37175"
TCP_DC2="48380"
UDP_DC1="33379"
#hosts
HOST10="10.0.0.10"
#nets
ANYWHERE="0.0.0.0/0"
LOCNET="10.0.0.0/24"
VNET="172.16.10.0/24"
VIP="172.16.10.1"
#khome
KHOMEIP="192.168.180.34"

iptables -X
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

iptables -F -t nat
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

#########################################
# INPUT #
#########################################
iptables -A INPUT -i lo -j ACCEPT
#icmp
iptables -A INPUT -p icmp -j ACCEPT
#localnet
iptables -A INPUT -s $LOCNET -i $INTBR -j ACCEPT
#vnet
iptables -A INPUT -i mvpn -j ACCEPT
#vpn
iptables -A INPUT -p tcp -s $KHOMEIP -d $EXTIP --dport 655 -j ACCEPT
iptables -A INPUT -p udp -s $KHOMEIP -d $EXTIP --dport 655 -j ACCEPT
#squid
iptables -A INPUT -p tcp -s $KHOMEIP -d $EXTIP --dport 23128 -j ACCEPT
#state
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#########################################
# NAT #
#########################################
iptables -t nat -A POSTROUTING -s $LOCNET -o $EXTETH -j SNAT --to-source $EXTIP
#########################################

а также подсмотреный в книжке скрипт для ip
#########################################
#!/bin/bash
IF0=isab
IF1=eth0
IF2=mvpn

IP1=192.168.155.101
IP2=172.16.10.1

P1=192.168.155.1
P2=172.16.10.88

P0_NET=10.0.0.0/24
P1_NET=192.168.155.0/24
P2_NET=172.16.10.0/24

ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2

ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2

ip rule add from $IP1 table T1
ip rule add from $IP2 table T2

ip route add $P0_NET dev $IF0 table T1
ip route add $P2_NET dev $IF2 table T1
ip route add 127.0.0.0/8 dev lo table T1
ip route add $P0_NET dev $IF0 table T2
ip route add $P1_NET dev $IF1 table T2
ip route add 127.0.0.0/8 dev lo table T2

ip route del default
ip route add default scope global nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1
#########################################

Что неработает: когда рутер решает доставить пакет через Шлюз 2, то пакет не может быть доставлен, тк доставить его можно только через Шлюз 1.
Вот как теперь решить сложившуюся ситуацию?

Add: схема сети
http://sysadmins.ru/files/lan_523.png

Вашу конфигурацию с "раздавалкой инета" не осилить без расширялки сознания.

Но, думаю, что вам просто не хватает SNAT правила для пакетов, уходящих через IF2=mvpn. При этом подразумевается, что оба шлюза будут NAT'ить пакеты от своих ip-адресов, а "раздавалка" ещё раз NAT'ить.

>Что неработает: когда рутер решает доставить пакет через Шлюз 2, то пакет не может быть доставлен, тк доставить его можно только через Шлюз 1.

Эта фраза вызвала сбой синтаксического анализатора, поясните на примере.

>ip route add 127.0.0.0/8 dev lo table T1

>ip route add 127.0.0.0/8 dev lo table T2

Зачем эти маршруты? Вы удалили правило (rule)

"0: from all lookup local" ?

mky ★★★★★
()
Ответ на: комментарий от mky

>>Что неработает: когда рутер решает доставить пакет через Шлюз 2, то >>пакет не может быть доставлен, тк доставить его можно только через >>Шлюз 1.

>Эта фраза вызвала сбой синтаксического анализатора, поясните на >примере.

Тут все очень просто. К примеру в очереди стоит два пакета, выбирается первый пакет, согласно чередованию шлюзов - выбирается Шлюз N1 и на него отправляется пакет. Для следующему пакета выбирается Шлюз N2 и на него отправляется пакет, но пакет этот в никуда, тк до второго шлюза можно достучаца только через первый

>>Зачем эти маршруты? Вы удалили правило (rule)
несут скорее всего избыточно запасливый характер

smalcom
() автор топика
Ответ на: комментарий от smalcom

>Для следующему пакета выбирается Шлюз N2 и на него отправляется пакет, но пакет этот в никуда, тк до второго шлюза можно достучаца только через первый

У вас же до шлюза N2 поднят VPN, поэтому пакеты должны завернуться в этот тунель и дойдут до него. Маршрут ведь прописался без использования страшных слов "scope link", значит ядро считает, что Шлюз N2 доступен напрямую. У вас вобще не работает ваша схема (в том числе ping) или только tcp? Может проблемы с MTU.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.