Два интернета + домашняя сеть (Вопрос маршрутизации...)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
unixboy
Сообщения: 33
ОС: Arch Linux

Два интернета + домашняя сеть

Сообщение unixboy »

Привет друзья! :)
Мне нужна ваша помощь.

Есть два интернет-аккаунта у провайдера Rinet, есть сервер Debian.
На сервере 3 сетевушки.

eth0 - Rinet 1gbit (195.91.175.197, шлюз 195.91.175.193)
eth1 - Rinet 10mbit (195.91.175.196, шлюз 195.91.175.193)
eth2 - Домашняя сетка (192.168.0.1)

К домашней сетке подсоединено 3 компьютера (сам сервер 192.168.0.1, десктоп 192.168.0.2, ноут 192.168.0.3), и инет идет к десктопу и ноуту через сервер.

Для основного интернета должен использоваться eth1, для всего, в т.ч. инет по дом. сетке должен именно через eth1 идти.

А вот для определенных диапазонов IP ВСЕГДА (и с ноута, и с сервера, и с чего угодно) данные должны отправляться и приниматься строго через eth0. И чтобы через eth0 ни один пакет инетный не прошел (на eth0 трафик ограничен), а только для определенных диапазонов..

Вот такая вот задачка. Кто поможет организовать?

Честно уже запарился, месяц не могу решить этот вопрос :(

С route бился бился, бился бился, нифига нормально работать не хочет.
Linux unixboy-pc 2.6.30-ARCH #1 SMP PREEMPT Mon Jul 20 11:20:32 UTC 2009 i686 Intel® Celeron® CPU 1.70GHz GenuineIntel GNU/Linux
Спасибо сказали:
andrews239
Сообщения: 11

Re: Два интернета + домашняя сеть

Сообщение andrews239 »

unixboy писал(а):
08.12.2008 22:19
eth0 - Rinet 1gbit (195.91.175.197, шлюз 195.91.175.193)
eth1 - Rinet 10mbit (195.91.175.196, шлюз 195.91.175.193)
eth2 - Домашняя сетка (192.168.0.1)

К домашней сетке подсоединено 3 компьютера (сам сервер 192.168.0.1, десктоп 192.168.0.2, ноут 192.168.0.3), и инет идет к десктопу и ноуту через сервер.


Подозреваю, что "для определенных диапазонов IP" подразумевает диапазоны адресов гдето в интернете,
а не у тебя дома.

Во первых если на чистой машине без default GW сделать ping 195.91.175.193, то я не угадаю,
через какой интерфейс это выскочит... Просто потому, что сетки на eth0 и eth1 не отличимы.
Понятно, что какой роут первый, тот и сработает, но если это будет eth0... То с этим что-то нужно
сделать. Ни когда не ставил себе таких задач, но я бы попробовал поменять порядок загрузки ethX,
или если это не получится сделать (Пути udev не исповедимы) то переткнул бы провода, и поменял
eth0/eth1 в конфигах.

Это ВАЖНО сделать, т.к. иначе при обращении к любому из 195.91.175.Х пойдешь по гигабиту, что
не очень хорошо.


fastnets="1.0.0.0/24 2.0.0.0/24"
fastif=eth0
slowif=eth1

ip route add default via 195.91.175.193 dev $slowif
for net in $fastnets; do
ip route add $net via 195.91.175.193 dev $fastif
done

iptables -t nat -A PREROUTING -j SNAT -o $fastif --to-source=195.91.175.197
iptables -t nat -A PREROUTING -j SNAT -o $slowif --to-source=195.91.175.196

Вобщемто и все...

О мелких ньюансах:
1) Для меня это скорее теоретическое решение, т.к. в точно таких ситуациях я не
был, однако у меня есть основания пологать, что это заработает.

2) при обращении из вне на адрес 195.91.175.197 ответ на запрос уйдет через
медленный интерфейс, а не через быстый, что может быть превратно понято
провайдером. Возможно стоит поставить затычку в iptables на такой случай...

3) Если что-то не получится, хотелось бы знать, что именно...
Спасибо сказали:
Аватара пользователя
blackst0ne
Сообщения: 528
Статус:
ОС: Ubuntu 9.04

Re: Два интернета + домашняя сеть

Сообщение blackst0ne »

Если я правильно понял, то на сервере делаем маршрут по умолчанию 195.91.175.196 (eth1), а потом необходимые ip, с которыми нужно контактировать через eth0, пускаем так:

Код: Выделить всё

route add IP_ADDRESS_1 -net 195.91.175.197
route add IP_ADDRESS_2 -net 195.91.175.197
route add IP_ADDRESS_3 -net 195.91.175.197
route add IP_ADDRESS_4 -net 195.91.175.197
...
Администрация! Пожалуйста, добавьте птичку "решено", а также соответствующую кнопку на ajax'е в теме (подробнее здесь).
Спасибо сказали:
Аватара пользователя
unixboy
Сообщения: 33
ОС: Arch Linux

Re: Два интернета + домашняя сеть

Сообщение unixboy »

Подозреваю, что "для определенных диапазонов IP" подразумевает диапазоны адресов гдето в интернете,
а не у тебя дома.

Для определенных диапазонов IP, это для диапазонов локальной сети Rinet.

Во первых если на чистой машине без default GW сделать ping 195.91.175.193, то я не угадаю,
через какой интерфейс это выскочит... Просто потому, что сетки на eth0 и eth1 не отличимы.
Понятно, что какой роут первый, тот и сработает, но если это будет eth0... То с этим что-то нужно
сделать. Ни когда не ставил себе таких задач, но я бы попробовал поменять порядок загрузки ethX,
или если это не получится сделать (Пути udev не исповедимы) то переткнул бы провода, и поменял
eth0/eth1 в конфигах.

Поменять провода не получится, одна сетевуха гигабитная на 195.91.175.197, а другая 100мбитная 195.91.175.196, сейчас пока eth0 вообще отключен, а обычно, я думаю ставлю default gw 195.91.175.193 dev eth1 , а остальное делать для диапазонов только и dev eth0 я предполагаю.

fastnets="1.0.0.0/24 2.0.0.0/24"
fastif=eth0
slowif=eth1

ip route add default via 195.91.175.193 dev $slowif
for net in $fastnets; do
ip route add $net via 195.91.175.193 dev $fastif
done

iptables -t nat -A PREROUTING -j SNAT -o $fastif --to-source=195.91.175.197
iptables -t nat -A PREROUTING -j SNAT -o $slowif --to-source=195.91.175.196

Вобщемто и все...

А в переменной fastnets что мы указываем?
И что-то потом идет запрос параметра $net, а у нас его нет.
И что вообще это дает, про ip route что-то я не понял...
Вообщем мне надо это все в консоли ввести, и тем самым весь трафик как я понимаю пойдет через eth1?

О мелких ньюансах:
1) Для меня это скорее теоретическое решение, т.к. в точно таких ситуациях я не
был, однако у меня есть основания пологать, что это заработает.

2) при обращении из вне на адрес 195.91.175.197 ответ на запрос уйдет через
медленный интерфейс, а не через быстый, что может быть превратно понято
провайдером. Возможно стоит поставить затычку в iptables на такой случай...

3) Если что-то не получится, хотелось бы знать, что именно...


Да пока я собственно ничего и не понял :-/ Я думал это все делается через обычный Route, например:

route add default gw 195.91.175.193 dev eth1
далее создаем роутинг для определенного диапазона (непомню сейчас, add -net чтоли) gw 195.91.175.193 dev eth0
не так?

Если я правильно понял, то на сервере делаем маршрут по умолчанию 195.91.175.196 (eth1), а потом необходимые ip, с которыми нужно контактировать через eth0, пускаем так:

route add IP_ADDRESS_1 -net 195.91.175.197
route add IP_ADDRESS_2 -net 195.91.175.197
route add IP_ADDRESS_3 -net 195.91.175.197
route add IP_ADDRESS_4 -net 195.91.175.197
...

А тогда нам надо еще задать gateway для eth0, как это сделать, я собственно так и предполагал, но что-то у меня такая схема не получалась...
Linux unixboy-pc 2.6.30-ARCH #1 SMP PREEMPT Mon Jul 20 11:20:32 UTC 2009 i686 Intel® Celeron® CPU 1.70GHz GenuineIntel GNU/Linux
Спасибо сказали:
Аватара пользователя
blackst0ne
Сообщения: 528
Статус:
ОС: Ubuntu 9.04

Re: Два интернета + домашняя сеть

Сообщение blackst0ne »

unixboy писал(а):
09.12.2008 15:01
А тогда нам надо еще задать gateway для eth0, как это сделать, я собственно так и предполагал, но что-то у меня такая схема не получалась...

Ну конечно. На каждом интерфейсе указываем нужный маршрут по умолчанию. Вам они известны.
Затем определяем, на какой интерфейс по умолчанию посылать трафик.
Потом создаем исключения из ip-адресов, трафик к которым нужно послать через другой интерфейс, отличный от дефолтного.
Администрация! Пожалуйста, добавьте птичку "решено", а также соответствующую кнопку на ajax'е в теме (подробнее здесь).
Спасибо сказали:
Аватара пользователя
unixboy
Сообщения: 33
ОС: Arch Linux

Re: Два интернета + домашняя сеть

Сообщение unixboy »

А вы не могли бы мне помочь со списком команд, какие надо вводить, а то я в этом не очень...
На каждом интерфейсе указываем нужный маршрут по умолчанию

Это, как я понимаю:
route add default gw 195.91.175.193 dev eth0
route add default gw 195.91.175.193 dev eth1
Затем определяем, на какой интерфейс по умолчанию посылать трафик.

Это как?
Потом создаем исключения из ip-адресов, трафик к которым нужно послать через другой интерфейс, отличный от дефолтного.

И это как?
Linux unixboy-pc 2.6.30-ARCH #1 SMP PREEMPT Mon Jul 20 11:20:32 UTC 2009 i686 Intel® Celeron® CPU 1.70GHz GenuineIntel GNU/Linux
Спасибо сказали:
andrews239
Сообщения: 11

Re: Два интернета + домашняя сеть

Сообщение andrews239 »

Оооо... Второй помошник оказался еще большим теоретиком :-)

Т.к. синтаксических конструкций шела Вы к сожалению не знаете, разверну предложеный цикл
в отдельные команды...

Код: Выделить всё

# Добавляем главный роут
ip route add default via 195.91.175.193 dev eth1
# Добавляем роуты для быстых сетей
ip route add FASTIP_1 via 195.91.175.193 dev eth0
ip route add FASTIP_2 via 195.91.175.193 dev eth0
ip route add FASTIP_N via 195.91.175.193 dev eth0

# заботимся о правильном маскарадинге
iptables -t nat -A PREROUTING -j SNAT -o eth0 --to-source=195.91.175.197
iptables -t nat -A PREROUTING -j SNAT -o eth1 --to-source=195.91.175.196


Вместо "ip route" может пойдет "route", но я этой утилитой давно не пользовался.

Код: Выделить всё

# Добавляем главный роут
route add default gw 195.91.175.193 dev eth1
# Добавляем роуты для быстых сетей
route add FASTIP_1 gw 195.91.175.193 dev eth0
route add FASTIP_2 gw 195.91.175.193 dev eth0
route add -net FASTNET/MASK gw 195.91.175.193 dev eth0

# заботимся о правильном маскарадинге
iptables -t nat -A PREROUTING -j SNAT -o eth0 --to-source=195.91.175.197
iptables -t nat -A PREROUTING -j SNAT -o eth1 --to-source=195.91.175.196
Спасибо сказали:
skor
Сообщения: 419
ОС: RTFM-OS v127.0.0.1

Re: Два интернета + домашняя сеть

Сообщение skor »

http://netfilter.org/documentation/HOWTO//...TO-4.html#ss4.5
The ROUTE target lets you route a received packet through an interface or towards a host, even if the regular destination of the packet is the router itself. The ROUTE target is also able to change the incoming interface of a packet. Packets are directly put on the wire and do not traverse any other table.


http://lartc.org/howto/lartc.rpdb.multiple-links.html
Спасибо сказали:
Аватара пользователя
unixboy
Сообщения: 33
ОС: Arch Linux

Re: Два интернета + домашняя сеть

Сообщение unixboy »

Спасибо andrews239, в ближайшее время попробую и отпишусь!
Linux unixboy-pc 2.6.30-ARCH #1 SMP PREEMPT Mon Jul 20 11:20:32 UTC 2009 i686 Intel® Celeron® CPU 1.70GHz GenuineIntel GNU/Linux
Спасибо сказали:
stvorl
Сообщения: 6

Re: Два интернета + домашняя сеть

Сообщение stvorl »

ИМХО, в первой строке надо метрику выше ставить, а иначе все пакеты для eth0 пойдут через eth1
(а что им может помешать?), и выигрыша в скорости не получится.

Код: Выделить всё

# Добавляем главный роут
route add default gw 195.91.175.193 dev eth1
# Добавляем роуты для быстых сетей
route add FASTIP_1 gw 195.91.175.193 dev eth0
route add FASTIP_2 gw 195.91.175.193 dev eth0
route add -net FASTNET/MASK gw 195.91.175.193 dev eth0


Код: Выделить всё

# Добавляем главный роут
route add default gw 195.91.175.193 dev eth1 metric 10
Спасибо сказали: