Двухпровайдерный роутинг: никак не совладаю (Проблемы с одним из провайдеров)

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

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

Аватара пользователя
Frank
Сообщения: 1059
ОС: Ubuntu, Debian

Двухпровайдерный роутинг: никак не совладаю

Сообщение Frank »

Отправная точка: схема сети, без подробностей:
Изображение
Словесное описание: есть два провайдера, каждый через свой кабель подключены к сетевухам. Один из них (wildpark) подключен к не показанной eth3, так как раздаёт сеть и интернет через PPPoE. Другой провайдер "прямой". Бирюзовым цветом показаны гейты провайдеров, жёлтым мои (оба белые ) айпишники.
У каждого провайдера есть кучка сегментов с локальной скоростью много бОльшей, чем предоставляемый ими интернет-канал.
Клиенты провайдера wildpark все поголовно с белыми (в основном динамическими, но это не важно) айпишниками.
Клиенты провайдера amron имеют либо статичный белый айпи, либо не менее статичный серый, который провайдер NAT'тит для выхода в инет.

Постановка задачи:
1) мой личный трафик, не относящийся к запросам клиентов (т.е., фактически, с не показанного моего второго компа, подключенного через eth2 к указанному на картинке серверу) разруливать по принципу: если есть прямой канал на цель (т.е. если цель использует провайдеров amron либо wildpark) то идём через интерфейс соответствующего провайдера, если нет прямого (чужие интернеты), то идём через wildpark
2) сделать доступным любой мой айпи с любого клиента

Применённое решение:
1) тут просто был убран шлюз провайдера amron в /etc/network/interfaces, в результате чего ppp при "прозвоне" назначает айпи, подымает шлюз по дефолту на 192.168.13.1 через ppp0, прописывает DNSы (получает всё от сервера). Для рабочей машины, подключенной к eth2, нарулены DNAT'ы, но это не важно.
2) использован материал LARTC. А конкретно:
  • в /etc/iproute2/rt_tables внесены две таблицы, 100 amron и 200 wildpark
  • в /etc/rc.local внесены следующие правила роутинга (показано настройки по одному из сегментов каждого провайдера для экономии места и мозгов):

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

    ip route add 194.145.198.0/24 dev eth0 src 194.145.199.132 table amron
    ip route add default via 194.145.199.129 table amron
    
    ip route add 80.252.240.0/20 dev ppp0 src 217.77.220.48 table wildpark
    ip route add default via 192.168.13.1 table wildpark
    
    ip route add 194.145.198.0/24 dev eth0 src 194.145.199.132 via 194.145.199.129
    
    ip route add 80.252.240.0/20 dev ppp0 src 217.77.220.48 via 192.168.13.1
    
    ip rule add from 194.145.199.132 table amron
    ip rule add from 217.77.220.48 table wildpark
    
    ip route flush cache


Результат:
Со стороны чужих интернетов и со стороны провайдера wildpark всё нормально работает;
Со стороны провайдера amron не отвечает интерфейс этого же провайдера (194.145.199.132), отвечает только интерфейс другого провайдера.

Диагностика проблемы:
tcpdump показывает, что при ответах на входящие запросы от клиентов провайдера amron, пришедших на eth0, или при исходящих запросах на клиентов этого провайдера, сервер посылает arp-запросы, пытаясь выяснить mac-адрес клиента и передать ему пакеты напрямую, т.е. игнорирует шлюз провайдера.

Что я сделал не так?
Изображение
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение sash-kan »

Frank писал(а):
21.06.2010 17:01
от клиентов провайдера amron
ip-адреса эти в какие рамки укладываются? в 194.145.198.0/24?

$ ip a sh dev eth0
?
$ ip r sh dev eth0
?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение sash-kan »

Frank писал(а):
21.06.2010 17:01
ip route add 194.145.198.0/24 dev eth0 src 194.145.199.132 table amron
адрес источника не укладывается в сеть. думаю, это не очень правильно. по крайней мере во всех (насколько помню) пособиях (и в моих экспериментах) src всегда входит в маршрут.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение sash-kan »

Frank писал(а):
21.06.2010 17:01
ip rule add from 194.145.199.132 table amron
надо ещё и параллельный to сделать.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Frank
Сообщения: 1059
ОС: Ubuntu, Debian

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение Frank »

sash-kan писал(а):
21.06.2010 17:50
Frank писал(а):
21.06.2010 17:01
от клиентов провайдера amron
ip-адреса эти в какие рамки укладываются? в 194.145.198.0/24?

Ну, в частном случае. Сегментов в пол дюжины у каждого провайдера, отличаются только адресацией, поэтому условно считаем, что по одному.
sash-kan писал(а):
21.06.2010 17:50
$ ip a sh dev eth0

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

5: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:c0:26:2d:87:04 brd ff:ff:ff:ff:ff:ff
    inet 194.145.199.132/27 brd 194.145.199.159 scope global eth0
    inet6 fe80::2c0:26ff:fe2d:8704/64 scope link
       valid_lft forever preferred_lft forever

sash-kan писал(а):
21.06.2010 17:50
$ ip r sh dev eth0

Э... Там 27 похожих как братья строк будет :) Фильтруя "лишние" сегменты, останется:

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

194.145.199.128/27  proto kernel  scope link  src 194.145.199.132
194.145.198.0/24 via 194.145.199.129  src 194.145.199.132

sash-kan писал(а):
21.06.2010 18:12
Frank писал(а):
21.06.2010 17:01
ip route add 194.145.198.0/24 dev eth0 src 194.145.199.132 table amron
адрес источника не укладывается в сеть. думаю, это не очень правильно. по крайней мере во всех (насколько помню) пособиях (и в моих экспериментах) src всегда входит в маршрут.

Какая разница, укладывается или нет? Все сегменты этого провайдера доступны (теоретически, т.к. практически есть клиенты со мною на одном свиче, доступные напрямую) через шлюз провайдера.
sash-kan писал(а):
21.06.2010 18:28
Frank писал(а):
21.06.2010 17:01
ip rule add from 194.145.199.132 table amron
надо ещё и параллельный to сделать.

А это не помешает отвечать на тот интерфейс, через который пришёл начальный запрос клиента? И можно пример параметров, которые параметры нужно указать в этом правиле?
Изображение
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение sash-kan »

Frank писал(а):
21.06.2010 23:57
И можно пример параметров, которые параметры нужно указать в этом правиле?
тоже самое, только s/from/to/
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение sash-kan »

Frank писал(а):
21.06.2010 23:57
Там 27 похожих как братья строк будет
огласите уже весь список. а то криминала пока не улавливается.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение KiWi »

eth0 -- local (10.0.0.1/24)
eth1 -- inet1 (10.1.0.254/24, gw 10.1.0.1)
eth2 -- inet2 (10.2.0.254/24, gw 10.2.0.1)

Правила iptables:

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

# inet1 mark
# новые входящие соединения
iptables -t mangle -A PREROUTING -i eth1 -m conntrack --ctstate NEW -j CONNMARK --set-mark 0x100
# новые исходящие соединения
iptables -t mangle -A POSTROUTING -o eth1 -m conntrack --ctstate NEW -j CONNMARK --set-mark 0x100
# не помню зачем, но без этого не работало
iptables -t mangle -A FORWARD -i eth1 -m conntrack --ctstate NEW -j CONNMARK --set-mark 0x100

# inet2 mark
iptables -t mangle -A PREROUTING -i eth2 -m conntrack --ctstate NEW -j CONNMARK --set-mark 0x200
iptables -t mangle -A POSTROUTING -o eth2 -m conntrack --ctstate NEW -j CONNMARK --set-mark 0x200
iptables -t mangle -A FORWARD -i eth2 -m conntrack --ctstate NEW -j CONNMARK --set-mark 0x200

# restore mark
# восстанавливаем маркировки для установленных соединений
iptables -t mangle -A PREROUTING -m conntrack --ctstate ESTABLISHED,RELATED -j CONNMARK --restore-mark
iptables -t mangle -A POSTROUTING -m conntrack --ctstate ESTABLISHED,RELATED -j CONNMARK --restore-mark
iptables -t mangle -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j CONNMARK --restore-mark


Правила маршрутизации:

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

# отправляем локальный трафик с IP от inet1 в inet1
100:    from 10.1.0.254 lookup inet1
# отправляем маркированный трафик от inet1 в inet1
101:    from all fwmark 0x100 lookup inet1

200:    from 10.2.0.254 lookup inet2
201:    from all fwmark 0x200 lookup inet2


Таблица маршрутизации для inet1:

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


10.0.0.0/24 dev eth0  scope link
10.1.0.0/24 dev eth1  scope link
default via 10.1.0.1 dev eth1


Аналогично, для inet2:

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

10.0.0.0/24 dev eth0  scope link
10.2.0.0/24 dev eth2  scope link
default via 10.2.0.1 dev eth2


Основная таблица будет использоваться соединениями изнутри сети.
Соответственно, добавляем туда маршруты до локальных сетей провайдера.
И ставим шлюзом по умолчанию -- шлюз от wildpark.

На что стоит обратить внимание:
- в правилах маршрутизации указывается СВОЙ IP
- в таблицах маршрутизации указывается подсеть провайдера

В случае ppp0 соединения, например, вторая таблица должна выглядеть так:

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

# локальная подсеть
10.0.0.0/24 dev eth0  scope link
# адрес КОНЦА туннеля
10.2.0.1 dev ppp0  scope link
default via 10.2.0.1 dev eth2


Это так, на память, чтобы потом было где искать)

Касательно данной ситуации.
Вот это:

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

ip route add 80.252.240.0/20 dev ppp0 src 217.77.220.48 table wildpark
ip route add default via 192.168.13.1 table wildpark


Должно выглядеть вот так:

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

ip route add 192.168.13.1 dev ppp0 src 217.77.220.48 table wildpark
ip route add default via 192.168.13.1 table wildpark


И вот это:

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

ip route add 194.145.198.0/24 dev eth0 src 194.145.199.132 table amron
ip route add default via 194.145.199.129 table amron


Вот так:

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

ip route add 194.145.199.0/24 dev eth0 src 194.145.199.132 table amron
ip route add default via 194.145.199.129 table amron


То есть сначала добавляем с таблицу маршрутизации сеть(в случае ppp -- адрес конечной точки), которая есть непосредственно на самом интерфейсе и работает на уровне arpов, потом добавляем шлюз по умолчанию.

P.S.: если кто-то захочет поспорить, то хочу напомнить 2 вещи:
- данный конфиг брался с УЖЕ работающего примера, в котором использовался один провайдер и туннель
- мне решение проблемы не нужно -- у меня проблем нет и всё работает :-)
- более того, оно работает ещё и с кучей проброшенных в локальную сеть портов
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение sash-kan »

Frank писал(а):
21.06.2010 17:01
ip route add 194.145.198.0/24 dev eth0 src 194.145.199.132 via 194.145.199.129
стоп. а почему этот маршрут в таблице main оказывается?
не должен ли он через rule выражаться?
ip rule add to 194.145.198.0/24 table amron
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение KiWi »

sash-kan писал(а):
22.06.2010 02:20
ip rule add to 194.145.198.0/24 table amron

На самом деле, ip rule to something, ИМХО, лучше не использовать.
По крайней мере, я не могу сказать как оно поведёт себя:
- при DNAT'е
- при обращении с внутреннего интерфейса на этот адрес
- возможно, ещё какие-то хитрые ситуации, которых не могу сходу представить

connmark'и ведут себя более предсказуемо -- маркировка происходит по интерфейсу. И всегда можно сказать какой трафик как должен маркироваться.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение sash-kan »

KiWi писал(а):
22.06.2010 02:36
По крайней мере, я не могу сказать как оно поведёт себя
ну, как поведёт себя
default via <что-то> dev <такое-то>
ты можешь представить?
а теперь представь, что этот маршрут «сработает» лишь при некотором условии. to <туда-то>.
никакой магии.

upd.
KiWi писал(а):
22.06.2010 02:36
connmark'и ведут себя более предсказуемо
imho, рулить маршрутизацией с помощью правил netfilter-а — чересчур громоздко выходит.
примерно как совочком самосвал разгружать.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Frank
Сообщения: 1059
ОС: Ubuntu, Debian

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение Frank »

sash-kan писал(а):
22.06.2010 02:20
Frank писал(а):
21.06.2010 17:01
ip route add 194.145.198.0/24 dev eth0 src 194.145.199.132 via 194.145.199.129
стоп. а почему этот маршрут в таблице main оказывается?
не должен ли он через rule выражаться?

Без этого роута у меня, насколько я помню, даже пинги на amron не проходили, кажется потому, что пакеты на этого провайдера пытались отсылаться с интерфейса другого провайдера, т.е. с src 217.77.220.48. Да и вообще айпи 194.145.199.132 был недоступен ни откуда по этой причине. Возможно я несколько неверно интерпретирую это правило словами "пакеты на адреса 194.145.198.0/24, оправляемые через фейс eth0, с исходящим 194.145.199.132, слать через шлюз 194.145.199.129"?
sash-kan писал(а):
22.06.2010 02:20
ip rule add to 194.145.198.0/24 table amron

Что-то с таким правилом вообще глохнет.
Кстати, похоже я что-то не понимаю в этой жизни :)

man ping

-I interface address Set source address to specified interface address. Argument may be numeric IP address or name of device. When pinging IPv6 link-local address this option is required.

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

# ping -qc1 -I eth0 194.145.199.200
PING 194.145.199.200 (194.145.199.200) from 194.145.199.132 eth0: 56(84) bytes of data.

--- 194.145.199.200 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms

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

# ping -qc1 -I 194.145.199.132 194.145.199.200
PING 194.145.199.200 (194.145.199.200) from 194.145.199.132 : 56(84) bytes of data.

--- 194.145.199.200 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

Кто меня обманывает? :)
sash-kan писал(а):
22.06.2010 03:16
[imho, рулить маршрутизацией с помощью правил netfilter-а — черезчур громоздко выходит.
примерно как совочком самосвал разргружать.

И что мне делать (что почитать)?
Изображение
Спасибо сказали:
Аватара пользователя
Frank
Сообщения: 1059
ОС: Ubuntu, Debian

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение Frank »

Так, убрал "стрёмное" правило роутинга по src. Возможно, что оно действительно просто дублирует в некоторой степени логику работы табличного правила.
Итак, сейчас картина такая же: со стороны провайдера wildpark и из интернетов отвечают оба мои айпи.
Со стороны amron только айпи провайдера wildpark.
Правила (на примере одного сегмента):

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

ip route add 194.145.199.0/24 dev eth0 src 194.145.199.132 table amron
ip route add default via 194.145.199.129 table amron

ip route add 80.252.240.0/20 dev ppp0 src 217.77.220.48 table wildpark
ip route add default via 192.168.13.1 table wildpark

ip rule add from 194.145.199.132 table amron
ip rule add from 217.77.220.48 table wildpark

Запустил tcpdump host bars.pp.ua (это белый айпи 194.145.199.200 из сетки провайдера amron, "listening on eth0") с одной консоли и ping -I eth0 bars.pp.ua с другой. В консоли с пингом вижу "From fqc.org.ua (194.145.199.132) icmp_seq=1 Destination Host Unreachable", в консоли с дампом вижу "08:31:37.291815 arp who-has 194.145.199.200 tell fqc.org.ua". То есть, сервак думает, что туда ходить надо минуя гейт. Мне не понятно, почему он так думает.
Изображение
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение sash-kan »

Frank
так можно до бесконечности разбираться.
предлагаю снести всё про таблицу amron и про интерфейс eth0. и маршруты и правила, и адреса. полностью. оставить только запись в rt_tables.
затем выполнить команды:
$ sudo ip a a 194.145.199.132/27 dev eth0
$ sudo ip r a default via 194.145.199.129 table amron
$ sudo ip ru a to 194.145.190.0/24 table amron
$ sudo ip r flush cache
и пропинговать узлы в 194.145.198.0/24. нормально пойдёт трафик? тогда с этого места и продолжайте. пошагово.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Frank
Сообщения: 1059
ОС: Ubuntu, Debian

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение Frank »

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

fqc:/home/frank# ip route del 194.145.199.0/24 dev eth0 src 194.145.199.132 table amron
fqc:/home/frank# ip route del default via 194.145.199.129 table amron
fqc:/home/frank# ip rule del from 194.145.199.132 table amron
fqc:/home/frank# ip a a 194.145.199.132/27 dev eth0
RTNETLINK answers: File exists
fqc:/home/frank# ip r a default via 194.145.199.129 table amron
fqc:/home/frank# ip ru a to 194.145.199.0/24 table amron
fqc:/home/frank# ip r flush cache
fqc:/home/frank# ping -I eth0 -c1 bars.pp.ua
PING bars.pp.ua (194.145.199.200) from 194.145.199.132 eth0: 56(84) bytes of data.
64 bytes from 194.145.199.200: icmp_seq=1 ttl=62 time=2.04 ms

--- bars.pp.ua ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 2.043/2.043/2.043/0.000 ms

Пингуется, правда как-то долго :) (большие паузы перед каждым пингом, около 5 сек). Зашёл телнетом на 80-й порт - 5 сек ожидания соединения. Послал GET / - ещё 5 сек ожидания, потом ответ и закрытие соединения.
И тут обнаруживается проблема - при таком раскладе становится недоступным для amron мой айпи из wildpark:

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

# ping -I ppp0 -c1 bars.pp.ua
PING bars.pp.ua (194.145.199.200) from 217.77.220.48 ppp0: 56(84) bytes of data.

--- bars.pp.ua ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

Вероятно потому что игнорируется с какого интерфейса было соединение.
И вообще, 194.145.199.132 стал после этого не доступен снаружи.
Изображение
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение KiWi »

sash-kan писал(а):
22.06.2010 03:16
KiWi писал(а):
22.06.2010 02:36
По крайней мере, я не могу сказать как оно поведёт себя
ну, как поведёт себя
default via <что-то> dev <такое-то>
ты можешь представить?
а теперь представь, что этот маршрут «сработает» лишь при некотором условии. to <туда-то>.
никакой магии.

Есть DNAT.
Какой to будет? Локальный IP сервера? Или IP, на который сделан DNAT?

upd.
KiWi писал(а):
22.06.2010 02:36
connmark'и ведут себя более предсказуемо
imho, рулить маршрутизацией с помощью правил netfilter-а — чересчур громоздко выходит.
примерно как совочком самосвал разгружать.

Ничуть.
Правила, по идее, можно сократить.
Плюс -- полная свобода в том, какой трафик куда посылать -- ip rule по портам трафик не разрулит.
Спасибо сказали:
Аватара пользователя
Frank
Сообщения: 1059
ОС: Ubuntu, Debian

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение Frank »

Определил: без правил вида
ip route add 194.145.199.0/24 dev eth0 src 194.145.199.132 via 194.145.199.129
сервак при моих исходящих ломится на 194.145.199.0/24 через дефолтный шлюз (который 192.168.13.1). То есть, это не то же самое что
ip route add 194.145.199.0/24 dev eth0 src 194.145.199.132 table amron
как ни странно. Почему? Ведь
ip route add default via 194.145.199.129 table amron
Изображение
Спасибо сказали:
Аватара пользователя
Frank
Сообщения: 1059
ОС: Ubuntu, Debian

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение Frank »

sash-kan писал(а):
22.06.2010 02:10
Frank писал(а):
21.06.2010 23:57
Там 27 похожих как братья строк будет
огласите уже весь список. а то криминала пока не улавливается.

Ну... раз вы настаиваете :) Привожу полный rc.local касательно сети

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

iptables -A FORWARD -i eth0 -o eth2 -s 192.168.0.2/32 -m state --state NEW -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth2 -s 192.168.0.2/32 -m state --state NEW -j ACCEPT
iptables -A FORWARD -i eth0 -o wlan0 -s 192.168.2.2/32 -m state --state NEW -j ACCEPT
iptables -A FORWARD -i ppp0 -o wlan0 -s 192.168.2.2/32 -m state --state NEW -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 217.77.208.0/20 -j SNAT --to-source 217.77.220.48
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 80.252.240.0/20 -j SNAT --to-source 217.77.220.48
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 80.252.246.0/23 -j SNAT --to-source 217.77.220.48
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 80.252.248.0/21 -j SNAT --to-source 217.77.220.48
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 77.247.16.0/20 -j SNAT --to-source 217.77.220.48
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 217.77.208.131 -j SNAT --to-source 217.77.220.48
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 217.77.208.40 -j SNAT --to-source 217.77.220.48
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 217.77.208.178 -j SNAT --to-source 217.77.220.48
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 217.77.208.179 -j SNAT --to-source 217.77.220.48
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 217.77.208.180 -j SNAT --to-source 217.77.220.48
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 217.77.208.181 -j SNAT --to-source 217.77.220.48
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 217.77.208.182 -j SNAT --to-source 217.77.220.48
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 217.77.208.183 -j SNAT --to-source 217.77.220.48
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 192.168.5.0/24 -j SNAT --to-source 194.145.199.132
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 192.168.6.0/24 -j SNAT --to-source 194.145.199.132
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 192.168.7.0/24 -j SNAT --to-source 194.145.199.132
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 192.168.8.0/24 -j SNAT --to-source 194.145.199.132
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 192.168.9.0/24 -j SNAT --to-source 194.145.199.132
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 192.168.10.0/24 -j SNAT --to-source 194.145.199.132
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 192.168.11.0/24 -j SNAT --to-source 194.145.199.132
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 192.168.12.0/24 -j SNAT --to-source 194.145.199.132
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 192.168.13.0/24 -j SNAT --to-source 217.77.220.48
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 192.168.14.0/23 -j SNAT --to-source 194.145.199.132
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 192.168.16.0/20 -j SNAT --to-source 194.145.199.132
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 192.168.32.0/19 -j SNAT --to-source 194.145.199.132
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 192.168.64.0/18 -j SNAT --to-source 194.145.199.132
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 192.168.128.0/17 -j SNAT --to-source 194.145.199.132
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 194.145.198.0/24 -j SNAT --to-source 194.145.199.132
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 194.145.199.0/24 -j SNAT --to-source 194.145.199.132
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 194.145.200.0/24 -j SNAT --to-source 194.145.199.132
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 194.145.201.0/24 -j SNAT --to-source 194.145.199.132
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 194.145.202.0/24 -j SNAT --to-source 194.145.199.132
iptables -A POSTROUTING -t nat -s 192.168.0.2 -d 194.145.203.0/24 -j SNAT --to-source 194.145.199.132
iptables -A POSTROUTING -t nat -s 192.168.0.2 -j SNAT --to-source 217.77.220.48
iptables -A POSTROUTING -t nat -s 192.168.2.2 -j SNAT --to-source 194.145.199.132
iptables -A FORWARD -m conntrack --ctstate NEW -i eth0 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate NEW -i ppp0 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate DNAT -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3333 -j DNAT --to-destination 192.168.0.2:3333
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 4444 -j DNAT --to-destination 192.168.2.2:4444

ip route add 192.168.5.0/24 dev eth0 src 194.145.199.132 table amron
ip route add 192.168.6.0/24 dev eth0 src 194.145.199.132 table amron
ip route add 192.168.7.0/24 dev eth0 src 194.145.199.132 table amron
ip route add 192.168.8.0/24 dev eth0 src 194.145.199.132 table amron
ip route add 192.168.9.0/24 dev eth0 src 194.145.199.132 table amron
ip route add 192.168.10.0/24 dev eth0 src 194.145.199.132 table amron
ip route add 192.168.11.0/24 dev eth0 src 194.145.199.132 table amron
ip route add 192.168.12.0/24 dev eth0 src 194.145.199.132 table amron
ip route add 192.168.13.2/31 dev eth0 src 194.145.199.132 table amron
ip route add 192.168.13.4/30 dev eth0 src 194.145.199.132 table amron
ip route add 192.168.13.8/29 dev eth0 src 194.145.199.132 table amron
ip route add 192.168.13.16/28 dev eth0 src 194.145.199.132 table amron
ip route add 192.168.13.32/27 dev eth0 src 194.145.199.132 table amron
ip route add 192.168.13.64/26 dev eth0 src 194.145.199.132 table amron
ip route add 192.168.13.128/25 dev eth0 src 194.145.199.132 table amron
ip route add 192.168.14.0/23 dev eth0 src 194.145.199.132 table amron
ip route add 192.168.16.0/20 dev eth0 src 194.145.199.132 table amron
ip route add 192.168.32.0/19 dev eth0 src 194.145.199.132 table amron
ip route add 192.168.64.0/18 dev eth0 src 194.145.199.132 table amron
ip route add 192.168.128.0/17 dev eth0 src 194.145.199.132 table amron
ip route add 194.145.198.0/24 dev eth0 src 194.145.199.132 table amron
ip route add 194.145.199.0/24 dev eth0 src 194.145.199.132 table amron
ip route add 91.200.200.0/24 dev eth0 src 194.145.199.132 table amron
ip route add 91.200.201.0/24 dev eth0 src 194.145.199.132 table amron
ip route add 91.200.202.0/24 dev eth0 src 194.145.199.132 table amron
ip route add 91.200.203.0/24 dev eth0 src 194.145.199.132 table amron
ip route add default via 194.145.199.129 table amron

ip route add 80.252.240.0/20 dev ppp0 src 217.77.220.48 table wildpark
ip route add 217.77.208.0/20 dev ppp0 src 217.77.220.48 table wildpark
ip route add 80.252.246.0/23 dev ppp0 src 217.77.220.48 table wildpark
ip route add 80.252.248.0/21 dev ppp0 src 217.77.220.48 table wildpark
ip route add 77.247.16.0/20 dev ppp0 src 217.77.220.48 table wildpark
ip route add 217.77.208.131 dev ppp0 src 217.77.220.48 table wildpark
ip route add 217.77.208.178 dev ppp0 src 217.77.220.48 table wildpark
ip route add 217.77.208.179 dev ppp0 src 217.77.220.48 table wildpark
ip route add 217.77.208.180 dev ppp0 src 217.77.220.48 table wildpark
ip route add 217.77.208.181 dev ppp0 src 217.77.220.48 table wildpark
ip route add 217.77.208.40  dev ppp0 src 217.77.220.48 table wildpark
ip route add 217.77.208.183 dev ppp0 src 217.77.220.48 table wildpark
ip route add default via 192.168.13.1 table wildpark

#ip route add 192.168.5.0/24 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 192.168.6.0/24 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 192.168.7.0/24 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 192.168.8.0/24 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 192.168.9.0/24 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 192.168.10.0/24 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 192.168.11.0/24 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 192.168.12.0/24 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 192.168.13.2/31 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 192.168.13.4/30 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 192.168.13.8/29 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 192.168.13.16/28 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 192.168.13.32/27 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 192.168.13.64/26 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 192.168.13.128/25 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 192.168.14.0/23 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 192.168.16.0/20 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 192.168.32.0/19 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 192.168.64.0/18 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 192.168.128.0/17 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 194.145.198.0/24 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 194.145.199.0/24 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 91.200.200.0/24 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 91.200.201.0/24 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 91.200.202.0/24 dev eth0 src 194.145.199.132 via 194.145.199.129
#ip route add 91.200.203.0/24 dev eth0 src 194.145.199.132 via 194.145.199.129
#
#ip route add 80.252.240.0/20 dev ppp0 src 217.77.220.48 via 192.168.13.1
#ip route add 217.77.208.0/20 dev ppp0 src 217.77.220.48 via 192.168.13.1
#ip route add 80.252.246.0/23 dev ppp0 src 217.77.220.48 via 192.168.13.1
#ip route add 80.252.248.0/21 dev ppp0 src 217.77.220.48 via 192.168.13.1
#ip route add 77.247.16.0/20 dev ppp0 src 217.77.220.48 via 192.168.13.1
#ip route add 217.77.208.131 dev ppp0 src 217.77.220.48 via 192.168.13.1
#ip route add 217.77.208.178 dev ppp0 src 217.77.220.48 via 192.168.13.1
#ip route add 217.77.208.179 dev ppp0 src 217.77.220.48 via 192.168.13.1
#ip route add 217.77.208.180 dev ppp0 src 217.77.220.48 via 192.168.13.1
#ip route add 217.77.208.181 dev ppp0 src 217.77.220.48 via 192.168.13.1
#ip route add 217.77.208.40  dev ppp0 src 217.77.220.48 via 192.168.13.1
#ip route add 217.77.208.183 dev ppp0 src 217.77.220.48 via 192.168.13.1

ip rule add from 194.145.199.132 table amron
ip rule add from 217.77.220.48 table wildpark

ip route flush cache
Изображение
Спасибо сказали:
Аватара пользователя
Frank
Сообщения: 1059
ОС: Ubuntu, Debian

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение Frank »

KiWi писал(а):
22.06.2010 02:17
Касательно данной ситуации.
...
То есть сначала добавляем с таблицу маршрутизации сеть(в случае ppp -- адрес конечной точки), которая есть непосредственно на самом интерфейсе и работает на уровне arpов, потом добавляем шлюз по умолчанию.

Вобще-то, я и без этих правил вижу эти маршруты:

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

# ip ro show
192.168.13.1 dev ppp0  proto kernel  scope link  src 217.77.220.48 // полагаю сервак wildpark проталкивает при коннекте pppd
194.145.199.128/27 dev eth0  proto kernel  scope link  src 194.145.199.132 // честно говоря не знаю откуда это берётся, так как я не прописывал нигде и amron не даёт ничего мне на автомате
194.145.198.0/24 via 194.145.199.129 dev eth0  src 194.145.199.132 // добавлено чтобы транзитно ходить на сервак в амроне с рабочей машинки, см. причины в #17
192.168.0.0/24 dev eth2  proto kernel  scope link  src 192.168.0.1 // это моя рабочая машина там
192.168.8.0/24 via 194.145.199.129 dev eth0  src 194.145.199.132 // аналогично для транзитного хождения на сервак амрона
default dev ppp0  scope link // пропихивается серваком wildpark если не было указано default gw ранее
Изображение
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение sash-kan »

я же просил:
sash-kan писал(а):
22.06.2010 11:37
и пропинговать узлы в 194.145.198.0/24. нормально пойдёт трафик?

Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение sash-kan »

KiWi писал(а):
22.06.2010 16:31
Какой to будет?
какой напишешь, такой и будет. dnat-то тут при чём?
если тебе пакеты к такому-то ip-адресу надо заворачивать в такую-то таблицу, какая разница, где именно dst у этих пакетов образовался, у клиента или у тебя в netfilter-е?

KiWi писал(а):
22.06.2010 16:31
Плюс -- полная свобода в том, какой трафик куда посылать -- ip rule по портам трафик не разрулит.
это инструменты разного уровня. правила маршрутизации — как русло реки. поворачиваешь слегка, и вся река течёт в другом направлении. правила netfilter-а — это тонкий инструмент манипуляций с отдельными пакетами.
чем больше ты взвалишь на маршрутизацию, а не на netfilter — тем быстрее будет трафик у тебя в роутере обрабатываться. ведь на вычисление маршрута тратится значительно меньше тактов в пересчёте на пакет.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение sash-kan »

Frank писал(а):
22.06.2010 11:46
И тут обнаруживается проблема - при таком раскладе становится недоступным для amron мой айпи из wildpark
мы же ещё ничего не настроили. только начали. я всё жду ответа по пингам. только для теста этого конкретного пинга я и предложил те несколько команд.

буду исходить из предположения, что пинги пойдут нормально, через шлюз.
тогда следующим этапом нужно прописать rule from для этого интерфейса. чтобы пакеты, пришедшие с него, уходили в table amron:
$ ip ru a from 194.145.199.132 table amron

как теперь, на обращения от этого провайдера (к любому из трёх ваших интерфейсных адресов) нормально уходят ответы? через amron-овский интерфейс?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Frank
Сообщения: 1059
ОС: Ubuntu, Debian

Re: Двухпровайдерный роутинг: никак не совладаю

Сообщение Frank »

Простите что не писал, занят был...
Вернулся к этому вопросу. Убрал правила вида
ip route add 192.168.8.0/24 dev eth0 src 194.145.199.132 table amron
и добавил вместо них вида
ip ru a to 192.168.8.0/24 table amron
(если я правильно понимаю, полностью оно звучит как ip rule add to 192.168.8.0/24 table amron, поправьте, если не так)
Однако затем заметил, что предложенное в сообщении #22 правило уже присутствует в rc.local, опечалился - видимо, будет как в #15, с амрона не будет работать дикарский айпи... Тем не менее перезагрузился, и... вроде бы всё работает :)
Большое спасибо, sash-kan!
Изображение
Спасибо сказали: