The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Не работает маршрутизация по дополнительным таблицам маршрутиза"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT / Linux)
Изначальное сообщение [ Отслеживать ]

"Не работает маршрутизация по дополнительным таблицам маршрутиза"  +/
Сообщение от kassy_k email(ok) on 04-Янв-11, 13:48 
Не работает маршрутизация по дополнительным таблицам маршрутизации.

Дело в следующем:

Есть шлюз:
  операционка Linux Fedora Core v.14 (v.13)
    (NetworkManager из системы удален; avahi daemon остановлен (на всякий случай));
  пять сетевых плат:
    eth0: (смотрит в сторону первого (GW: 80.254.7.193) провайдера)
      IP: 80.254.7.206
    eth1: (смотрит в сторону второго (GW: 192.168.64.128) провайдера)
      IP: 192.168.64.1/24
    eth2: (смотрит в сторону третьего (GW: 192.168.128.129) и четвертого (GW: 192.168.128.130) провайдеров)
      IP: 192.168.128.1/24
    eth3: (смотрит на малую локальную сеть 'net_a')
      IP: 192.168.192.128/24
    eth4: (смотрит на локальную сеть 'net_b')
      IP: 172.16.31.128/16

Задача:
  для малой локальной сети 'net_a':
    четные сетевые адреса (192.168.192.0/255.255.255.1) вывести через третьего провайдера (т.е. через 192.168.128.129);
    нечетные сетевые адреса (192.168.192.1/255.255.255.1) вывести в нет через четвертого провайдера (т.е. через 192.168.128.130);
  для локальной сети 'net_b':
    выборочные адреса (допустим 172.16.31.129 и 172.16.31.130) вывести через первого провайдера (т.е. через 80.254.7.193);
    остальных через второго провайдера (т.е. через 192.168.64.128).

Проблема:
  ...при пробросе I'netа для малой локальной сети.

==>

> cat /etc/iproute2/rt_tables

#
# reserved values
#
255    local
254    main
253    default
0    unspec
#
# local
#
#1    inr.ruhep
5    tbl_a
10    tbl_b
15    tbl_c
20    tbl_d

> ip rule list

0:    from all lookup local
32762:    from all fwmark 0xc lookup tbl_d
32763:    from all fwmark 0xd lookup tbl_c
32764:    from all fwmark 0xe lookup tbl_b
32765:    from all fwmark 0xf lookup tbl_a
32766:    from all lookup main
32767:    from all lookup default

> ip route list

80.254.7.192/26 dev eth0  proto kernel  scope link  src 80.254.7.206
192.168.192.0/24 dev eth3  proto kernel  scope link  src 192.168.192.128
192.168.128.0/24 dev eth2  proto kernel  scope link  src 192.168.128.1
192.168.64.0/24 dev eth1  proto kernel  scope link  src 192.168.64.1
172.16.0.0/16 dev eth4  proto kernel  scope link  src 172.16.31.128

> ip route list table tbl_c

192.168.192.0/24 dev eth3  scope link  src 192.168.192.128
192.168.128.0/24 dev eth2  scope link  src 192.168.128.1
127.0.0.0/8 dev lo  scope link
default via 192.168.128.129 dev eth2

> ip route list table tbl_d

192.168.192.0/24 dev eth3  scope link  src 192.168.192.128
192.168.128.0/24 dev eth2  scope link  src 192.168.128.1
127.0.0.0/8 dev lo  scope link
default via 192.168.128.130 dev eth2

<==

  На интерфейсе eth2 поднят NAT.

  В таком варианте правил маршрутизации компьютера малой локальной сети не получают ответ из I'netа.
  Если добавить команду:
> ip route add default via 192.168.129.130 dev eth2

  все работает.

Вопрос:
  в чем баг? Почему без правила добавленного в таблицу main не приходит ответ по правлам таблиц tbl_c и tbl_d?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Не работает маршрутизация по дополнительным таблицам маршрутиза"  +/
Сообщение от Aquarius (ok) on 04-Янв-11, 13:52 
>[оверквотинг удален]
> <==
>   На интерфейсе eth2 поднят NAT.
>   В таком варианте правил маршрутизации компьютера малой локальной сети не
> получают ответ из I'netа.
>   Если добавить команду:
>> ip route add default via 192.168.129.130 dev eth2
>   все работает.
> Вопрос:
>   в чем баг? Почему без правила добавленного в таблицу main
> не приходит ответ по правлам таблиц tbl_c и tbl_d?

а где пакеты метятся?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Не работает маршрутизация по дополнительным таблицам маршрутиза"  +/
Сообщение от kassy_k (ok) on 04-Янв-11, 14:17 
> а где пакеты метятся?

iptables -t mangle -A PREROUTING -i eth3 -s 192.168.192.0/255.255.255.1 -j MARK --set-mark 12

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Не работает маршрутизация по дополнительным таблицам маршрутиза"  +/
Сообщение от Aquarius (ok) on 04-Янв-11, 14:48 
>> а где пакеты метятся?
> iptables -t mangle -A PREROUTING -i eth3 -s 192.168.192.0/255.255.255.1 -j MARK --set-mark
> 12

а NAT как выглядит?

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Не работает маршрутизация по дополнительным таблицам маршрутиза"  +/
Сообщение от kassy_k email(ok) on 05-Янв-11, 10:36 
> а NAT как выглядит?

Сокращенно:

#!/bin/sh
FW="/sbin/iptables"
IF_LO="lo"
IF_0="eth0"
IF_1="eth1"
IF_2="eth2"
IF_3="eth3"
IF_4="eth4"
IP_0="80.254.7.206"
IP_1="192.168.64.1"
IP_2="192.168.128.1"
IP_3="192.168.192.1"
IP_4="172.16.31.128"
NETA="10.0.0.0/8"
NETB="172.16.0.0/12"
NETC="192.168.0.0/16"
NETL="172.16.0.0/16"

# Установка политики поведения по умолчанию
$FW -P INPUT DROP
$FW -P FORWARD DROP
$FW -P OUTPUT DROP
$FW -t nat -P PREROUTING ACCEPT
$FW -t nat -P OUTPUT ACCEPT
$FW -t nat -P POSTROUTING ACCEPT
$FW -t mangle -P PREROUTING ACCEPT
$FW -t mangle -P INPUT ACCEPT
$FW -t mangle -P FORWARD ACCEPT
$FW -t mangle -P OUTPUT ACCEPT
$FW -t mangle -P POSTROUTING ACCEPT
# Удаление всех правил
$FW -F
$FW -t nat -F
$FW -t mangle -F
# ...в том числе нестандартных
$FW -X
$FW -t nat -X
$FW -t mangle -X

# Прохождение пакетов по интерфейсу "петля"
$FW -A INPUT -p ALL -i $IF_LO -j ACCEPT
$FW -A OUTPUT -p ALL -o $IF_LO -j ACCEPT

# Для меня любимого открываю все!
$FW -A INPUT -p ALL -i $IF_2 -j ACCEPT
$FW -A OUTPUT -p ALL -o $IF_2 -j ACCEPT

# Разметка пакетов для маршрутизации
$FW -t mangle -A PREROUTING -i $IF_4 -s 192.168.192.0/255.255.0.1 ! -d 172.16.0.0/16 -j MARK --set-mark 12
$FW -t mangle -A PREROUTING -i $IF_4 -s 192.168.192.1/255.255.0.1 ! -d 172.16.0.0/16 -j MARK --set-mark 13

# NAT на интерфейсе eth2
$FW -t nat -A POSTROUTING -p ALL -o $IF_2 -j SNAT --to-source $IP_2

# Проход для малой подсети
$FW -A FORWARD -p ALL -i $IF_3 -j ACCEPT
$FW -A FORWARD -p ALL -o $IF_3 -j ACCEPT

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Не работает маршрутизация по дополнительным таблицам маршрутиза"  +/
Сообщение от kassy_k email(ok) on 06-Янв-11, 14:08 
В свете последних изысканий...

Если ввести:
> ip rule add from 192.168.192.0/24 table tbl_c

или
> ip rule add from 192.168.192.0/24 table tbl_d

малая подсеть начинает получать нормальный I'net.
Все остальные правила и скрипты оствил без изменений.

Из чего напрашивается малоутешительный вывод: не срабатывает либо маркировка пакетов в iptables, либо iproute2 плюет на правила:
32762:    from all fwmark 0xc lookup tbl_d
32763:    from all fwmark 0xd lookup tbl_c
32764:    from all fwmark 0xe lookup tbl_b
32765:    from all fwmark 0xf lookup tbl_a

Вопрос: как это можно выровнять?

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Не работает маршрутизация по дополнительным таблицам маршрутиза"  +/
Сообщение от kassy_k (??) on 11-Янв-11, 09:40 
В очередной раз сам спрашивал - сам отвечаю.

Решение проблемы оказалось как всегда простым:
> sysctl -w net.ipv4.conf.eth2.rp_filter=0

Более того, я лишний раз убедился, что в мануалах нужно внимательно читать не только основной текст, но и между строк. :-)

Всем спасибо.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру