Часть I I I . Настройка сети и Интернета
#!/bin/sh
ISPl="/etc/iproute2/ISPl.txt"
# Локальная сеть
local_eth=ethl
# Интерфейс
local_ip=192.168.1. 1 # IP-адрес
local_net=192.168.1.0/24
# Подсеть
# Сеть локального провайдера
li_net=10.0.0.0/8
# Параметры ISP1
il_eth=ethO
il_ip=l.2.3.104
il_net=1.2.3.0/24
il_gw=l.2.3.1
# Параметры ISP2
i2_eth=eth2
i2_ip=2.2.2.222
i2_net=2.2.2.0/16
i2_gw=2.2.0.1
#
Таблицы маршрутизации iproute2 (нужно указать номера, которые указаны
# в файле /etc/iproute2/rt_tables)
# Не изменяйте эти значения
255 local
254 main
253 default
0
unspec
#
# local
#
#1
inr.ruhep
# Таблицы интернет-провайдеров
1 ISP1
2 ISP2
Затем создайте файл
/etc/iproute2/ISP1.txt
и перечислите в нем IP-адреса, путь к кото-
рым должен проходить строго через провайдера ISP1 (по одному адресу в строке).
Далее создайте сценарий
/etc/iproute2/balance.sh
(листинг 11.2). Ясное дело, IP-адреса
и другие переменные в нем нужно соответственно исправить.
Глава 11. Объединение интернет-каналов
233
tablel=l
table2=2
# Сбрасываем iptables
iptables -t mangle -F NEW_OUT_CONN
iptables -t mangle -F PREROUTING
iptables -t mangle -F OUTPUT
iptables -t mangle -X NEW_OUT_CONN
ip route flush table $table2
ip rule del table $table2
ip route flush table $tablel
ip rule del table $tablel
ip route flush cache
# Установка новых правил
iptables -t mangle -N NEW_OUT_CONN
iptables -t mangle -A NEW_OUT_CONN -j CONNMARK -set-mark 1
iptables -t mangle -A NEW_OUT_CONN -m statistic —mode random —probability
0.50 -j RETURN
iptables -t mangle -A NEW_OUT_CONN -j CONNMARK -set-mark 2
# Обработка адресов из файла ISPl.txt
for file in $ISP1; do
if [ -f "$file" ]; then
{ cat "$file" ; echo ; } I while read ip_addr; do
if [ "$ip_addr" !=
,,n
]; then
echo "Static routing for $ip_addr"
iptables -t mangle -A NEW_OUT_CONN -d $ip_addr -j CONNMARK -set-mark 1
fi
done
fi
done
iptables -t mangle -A PREROUTING -d $local_net -j RETURN
iptables -t mangle -A PREROUTING -d $li_net -j RETURN
iptables -t mangle -A PREROUTING -s $local_net -m state —state new,related -j
NEW_OUT_CONN
iptables -t mangle -A PREROUTING -s $local_net -j CONNMARK —restore-mark
iptables -t mangle -A OUTPUT -d $local_net -j RETURN
iptables -t mangle -A OUTPUT -d $li_net -j RETURN
iptables -t mangle -A OUTPUT -s $local_net -m state —state new,related -j
NEW_OUT_CONN
iptables -t mangle -A OUTPUT -s $li_net -j CONNMARK —restore-mark
234
Do'stlaringiz bilan baham: |