Несколько провайдеров на одном сервере.

Наверняка многие сталкивались с задачей прикрутить на одну тачку 2 и более провайдеров за раз. По сути данная задача не сложная, поднимается несколько сетевых карт, назначаются параметры сети, если это ethernet или настраивается ppp, чтобы поднять PPPOE соединение. Но существует еще одна скрытая проблема - это пересечение IP адресов этих провайдеров. Обычно это внутренняя сеть 10.0.0.0/8, внешние сети не пересекаются и их можно разрулить обычными командами:

route add -net 217.66.16.0 netmask 255.255.240/0 dev eth1

route add -net 95.78.64.0 netmask 255.255.192.0 dev ppp0

route add -net 83.151.0.0 netmask 255.255.0.0 dev ppp1

А что же делать, если у всех трех провайдеров есть подсеть 10.0.0.0/8 - если мы простым route add попробуем прописать эту подсеть, то работать будет только у одного провайдера, абоненты двух других провайдеров попасть к вам на сервер не смогут.

Итак:
Дано: Железяка 1 Шт.
OS: Debian
Сеть: 4 интерфейса - 3 провайдера + 1 локалка.
     PPP0 - Пров1
     PPP1 - Пров2
     Eth1 - Пров3
     Eth2 - Lan
Задача: Заруливать на сервер абонентов трех провайдеров, при этом чтобы абоненты из одной подсети 10.0.0.0/8 могли одновременно каждый по своему интерфейсу заходить на сервер.


Карта сети:

Решение:

Берем в руки модуль conntrack. С помощью iptables маркируем все входящие пакеты на интерфейсе eth2 в зависимости от их оригинального адреса назначения:

iptables -t mangle -A PREROUTING -i eth2 -m conntrack --ctorigdst 217.23.xxx.xxx -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -i eth2 -m conntrack --ctorigdst 89.251.xxx.xxx -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -i eth2 -m conntrack --ctorigdst 91.144.xxx.xxx -j MARK --set-mark 3

Создаём три таблицы для iproute2

cat >> /etc/iproute2/rt_tables << EOF
100    ttk
101    tvt
102    dom
EOF

Заполняем таблицы маршрутами к провайдерам (в нашем случае это один маршрут через езернет и два через пэ-пэ-пэ)

ip route add 217.23.xxx.xxx/xx dev eth8  proto kernel  scope link  src 217.23.xxx.xxx  table ttk
ip route add default via 217.23.xxx.xxx dev eth8 table ttk
ip ro add default dev ppp1  scope link  ta tvt
ip ro add default dev ppp1  scope link  ta dom

Добавляем правила, для каждой марки

ip rule add fwmark 1 table ttk
ip ru add fwmark 2 ta tvt
ip ru add fwmark 3 ta dom

Сбрасывем кэш

ip route flush cache

Вот и все. Радуемся жизни.

 

В приложенных файлах вы найдете правила для iptables (firewall.txt) и файл с разруливанием сетей двух самых популярных в Челнах провайдеров Таттелеком, ТВТ, Дом.ру (route.txt)

P.S. Не забудьте исправить ХХ.ХХ в ip адерсах, на ваши параметры.

ВложениеРазмер
firewall.txt4.62 кб
route.txt1.43 кб

 Респект за статью!

 Респект за статью!

что будет, если в сетях

что будет, если в сетях нескольких провайдеров присутствуют одинаковые адреса?

Отправить комментарий

КАПЧА
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Enter the characters (without spaces) shown in the image.