Имеется 2 канала от разных провов, и стоит цель чтобы каналы работали одновременно (один для почтовика и второй для сёрфинга в инет)
проблема в том что 2 дефолтовых шлюза быть неможет как прописать таблицу маршрутизации чтоб каналы не конфликтовали м\у собойвот таблица маршрутизации для одно канала
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.3.0.6 * 255.255.255.255 UH 0 0 0 tun0
ХХХ01-L4.ov * 255.255.255.255 UH 0 0 0 ppp0
195.ххх.ххх.120 * 255.255.255.252 U 0 0 0 eth2
192.168.2.0 * 255.255.255.0 U 0 0 0 eth0
192.168.0.0 10.3.0.6 255.255.255.0 UG 0 0 0 tun0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth2
default ХХХ01-L4.ov 0.0.0.0 UG 0 0 0 ppp0второй канал висит на интерфейсе eth2
Здесь , раздел документации, LARTC (можно смотреть в переводе Киселева)
копай файрвол
ipfw add fwd ИП_Шлюз_ed2 from any to any 80
только не забудь пронатировать
Короче настроил маршрутизацию подобным образом:
Раздельный доступПервый вопрос заключается в том, как организовать маршрутизацию таким образом, чтобы ответы на запросы, приходящие через определенного провайдера, скажем ровайдера 1, уходили через того же провайдера.
Давайте определим некоторые переменные. Пусть $IF1 будет именем первого интерфейса (if1 на рисунке), а $IF2 -- именем второго. Тогда $IP1 будет IP адресом $IF1 , а $IP2 -- IP адресом $IF2 . Далее, $P1 это IP-адрес шлюза провайдера 1, а $P2 -- IP адрес шлюза провайдера 2. Наконец, $P1_NET это IP сеть, к которой принадлежит $P1 , а $P2_NET -- сеть, к которой принадлежит $P2 .
Создадим две дополнительные таблицы маршрутизации, скажем T1 и T2. Добавим их в файл /etc/iproute2/rt_tables. Теперь можно настроить эти таблицы следующими командами:
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
Ничего особо эффектного, маршрут к шлюзу и маршрут по-умолчанию через этот шлюз. Точно так же, как и в случае одного провайдера, но по таблице на каждого провайдера. Заметьте, что маршрута к сети, в которой находится шлюз достаточно, потому что он определяет как найти все хосты в этой сети, включая сам шлюз.Теперь нужно настроить главную таблицу маршрутизации. Хорошо бы маршрутизировать пакеты для сетей провайдеров через соответствующие интерфейсы. Обратите внимание на аргумент `src', который обеспечивает правильный выбор исходного IP-адреса.
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2
Теперь задаем маршрут по умолчанию:
ip route add default via $P1
Зададим правила маршрутизации. Они будут отвечать за то, какая таблица будет использоваться при маршрутизации. Вы хотите, чтобы пакет с определенным адресом источника маршрутизировался через соответствующий интерфейс:
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
Этот набор команд обеспечивает маршрутизацию ответов через интерфейс, на котором был получен запрос.
Заметка читателя Рода Роака (Rod Roark): ' если $P0_NET это локальная сеть, а $IF0 -- соответствующий ей интерфейс, желательно задать следующие команды:
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
Итак, мы рассмотрели очень простой пример. Он будет работать для всех процессов, выполняющихся на маршрутизаторе и для локальной сети, если настроено преобразование адресов (NAT/masquerading). В противном случае, вам будет необходим диапазон IP адресов обоих провайдеров, или выполнять маскирование для одного из провайдеров. В любом случае, вы можете задать правила выбора провайдера для каждого конкретного адреса вашей локальной сети.
пометил пакеты при помощи iptables
создал правило:
ip rule add fwmark 2 table T2
пакеты помеченные 2 попадают в таблицу 2 и отправляются через шлюз для этой таблицы
теперь косяк: пакеты отправляются с нужного интерфеса, но в заголовке у них стоит IP сетевухи с дефолтовым шлюзом и соответственно возвращатся всё пытается на него, подскажите где копать??
А не проще будет почтовик посадить на прямую на отдельный канал, остальное на другой? - и отказоустойчивость повышается и гемороя с файером меньше. файер конечно нужен, но в такой конфигурации получится все гораздо проще :)
>А не проще будет почтовик посадить на прямую на отдельный канал, остальное
>на другой? - и отказоустойчивость повышается и гемороя с файером меньше.
>файер конечно нужен, но в такой конфигурации получится все гораздо проще
>:)
Проблема в том что разделить нужно гораздо больше не только почту и впн
>Итак, мы рассмотрели очень простой пример. Он будет работать для всех процессов,
>выполняющихся на маршрутизаторе и для локальной сети, если настроено преобразование адресов
>(NAT/masquerading).
Вот это выполнни
>>Итак, мы рассмотрели очень простой пример. Он будет работать для всех процессов,
>>выполняющихся на маршрутизаторе и для локальной сети, если настроено преобразование адресов
>>(NAT/masquerading).
>Вот это выполннивсё сделано косяк теперь в том что те пакеты которые идут с компов в локальной сети рулятся нормально, а то что с локального интерфейса на раутере нивкакую.
например:
помечаю: iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 80 -j MARK --set-mark 180
и всё помеченное идёт через нужный шлюз
а проблема в том что мне нужно рулить например трафик openvpn
делаю: iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 180
пакеты метятся но идут по старому
Дык _внимательно_ посмотри Iptables Tutorial, рисунок структуры фильтра - ты метишь пакеты _после_ маршрутизации.
Здесь в конференции проскакивали примеры как работать с этим