Доброй ночи.В FreeBSD я могу сделать так:
add 150 fwd GATE_IP ip from HOST_IP to any
и т.д.при этом входящие пакеты, маршрутизация и локальные сервисы работают правильно.
Теперь в linux... Мучался, я мучался и домучался до следующего:
#!/bin/shIF1="eth0"
P1="gw_ip_1"
P1_NET="gw_net_1"
IP1="ip1"
IF2="eth1"
P2="gw_ip_2"
P2_NET="gw_net_2"
IP2="ip2"ip route add $P1_NET dev $IF1 src $IP1 table T0
ip route add default via $P1 table T0
ip route add $P2_NET dev $IF2 src $IP2 table T1
ip route add default via $P2 table T1ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2ip route add default via $P1
ip rule add from $IP1 table T0
ip rule add from $IP2 table T1route add -host 10.0.0.0/16 gw $P2 dev eth1
#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разумеется таблицы созадны в rt_tables. Это чудо вцелом работает как предполагается, но установленый bind, который должен форвардить одну зону на сервер, расположенный в сети 10. Почему-то он этого не делает, хотя если я делаю с консоли host name 10.x.x.x, то все работает отлично. Такое ощущение, что он вообще не дает ядру маршрутизировать трафик.
Посоветуйте, как разрешается такая проблема.
Вариант с iptables - мне не очень понравился, переходить на обратно freebsd - не есть решение, делать по 2 севрера на одну туже задачу, но с разными default gw - мне, кажется, не очень тоже.Спасибо.
PS:Если необходимы какие-то ещё данные,я с радостью предоставлю их...
>[оверквотинг удален]
> сети 10. Почему-то он этого не делает, хотя если я делаю
> с консоли host name 10.x.x.x, то все работает отлично. Такое ощущение,
> что он вообще не дает ядру маршрутизировать трафик.
> Посоветуйте, как разрешается такая проблема.
> Вариант с iptables - мне не очень понравился, переходить на обратно freebsd
> - не есть решение, делать по 2 севрера на одну туже
> задачу, но с разными default gw - мне, кажется, не очень
> тоже.
> Спасибо.
> PS:Если необходимы какие-то ещё данные,я с радостью предоставлю их...про то что yаписал что сделал это конечно правильно , забыл только написать чего добиться нужно и что при этом не работает.
не понимаю зачем для двух сетей использовать policy routing , и при чём тут bind
> про то что yаписал что сделал это конечно правильно , забыл только
> написать чего добиться нужно и что при этом не работает.
> не понимаю зачем для двух сетей использовать policy routing , и при
> чём тут bindЦитирую: "... но установленый bind, который должен форвардить одну зону на сервер, расположенный в сети 10. Почему-то он этого не делает, хотя если я делаю с консоли host name 10.x.x.x, то все работает отлично." Можно понять, что у сервера белый ип, с дефолт гейтвеем в глобальную сеть, и серый ип с гейтом в серую сеть, где расположен некий днс, на который надо форвардить некоторые зоны. Очевидно, что при этом необходимо использовать полиси роутинг, чтобы можно было получать и отправлять трафик по соответвующим гейтам.
named - это сервис, который не отрабатывает как необходимо. При данной конфигурации все отрабатывает отлично ssh, ping (как с консоли, так и с сетей, которые сервер обслуживает), кроме бинд, который шлет пакеты в гейт по умолчанию.
Собственно, вопрос и был задан почему же оно так.
> Очевидно, что
> при этом необходимо использовать полиси роутинг, чтобы можно было получать и
> отправлять трафик по соответвующим гейтам.ниразу не очевидно и не необходимо
есть дефолт gw
есть серая сеть,для неё написан маршрутip r g ip_из_серой_сети говорит что шлюз именно тот что необходим
при этом ^^^^ bind не ходит туда куда нужно?
если так - то нужно смотреть именyо настрjйки bind'а а не крутить policy route'инг
> named - это сервис, который не отрабатывает как необходимо. При данной конфигурации
> все отрабатывает отлично ssh, ping (как с консоли, так и с
> сетей, которые сервер обслуживает), кроме бинд, который шлет пакеты в гейт
> по умолчанию.
> Собственно, вопрос и был задан почему же оно так.
> Доброй ночи.откройте для себя команду "ip ru sh" и переосмыслите, как это всё работает.
Тезисно:
- предполагаю, что исходящие бинда привязаны к определенному айпи
- ip ru add без указания pref добавили правила ухода в T0/T1 выше, чем проверка в table main
- пакет уходит не в ту таблицу.Читаем http://opennet.ru/tips/2009_policy_route_linux.shtml для просветления.
>[оверквотинг удален]
> сети 10. Почему-то он этого не делает, хотя если я делаю
> с консоли host name 10.x.x.x, то все работает отлично. Такое ощущение,
> что он вообще не дает ядру маршрутизировать трафик.
> Посоветуйте, как разрешается такая проблема.
> Вариант с iptables - мне не очень понравился, переходить на обратно freebsd
> - не есть решение, делать по 2 севрера на одну туже
> задачу, но с разными default gw - мне, кажется, не очень
> тоже.
> Спасибо.
> PS:Если необходимы какие-то ещё данные,я с радостью предоставлю их...
> откройте для себя команду "ip ru sh" и переосмыслите, как это всё
> работает.Да я открыл, только оно не открывается пока что =)
> Тезисно:
> - предполагаю, что исходящие бинда привязаны к определенному айпиАга, тоже так думаю, но не очень понимаю как это возможно. Ведь программа должна отправлять трафик в ядро, грубо говоря, которое уже определяет куда отправлять этот трафик.
> - ip ru add без указания pref добавили правила ухода в T0/T1
> выше, чем проверка в table mainДа, наверное, попробую это проверить. Скорее всего в этом моя проблема.
> - пакет уходит не в ту таблицу.
Очевидно.
> Читаем http://opennet.ru/tips/2009_policy_route_linux.shtml для просветления.
Большое спасибо, этого я не смог найти.
>> Тезисно:
>> - предполагаю, что исходящие бинда привязаны к определенному айпи
> Ага, тоже так думаю, но не очень понимаю как это возможно.Ну как - в конфигах написано может быть, а код бинда работает в соответствии с конфигом.
> Ведь программа должна отправлять трафик в ядро, грубо говоря, которое уже определяет
> куда отправлять этот трафик.Именно так.
> Ну как - в конфигах написано может быть, а код бинда работает
> в соответствии с конфигом.Он слушает определенные адреса, которые указаны в конфигах, но никак не принимает решение "куда отправить трафик", этим занимается ядро, как уже обсудили выше. Другой вопрос: почему он не форвардит запрос в днс, который описан как форвард-зона.
Но это видимо разрешится, когда я в указанном вами документе разберусь достаточно хорошо...
> Он слушает определенные адреса, которые указаны в конфигах, но никак не принимает
> решение "куда отправить трафик", этим занимается ядро, как уже обсудили выше.Если вы прекратите читать по диагонали, вы заметите, что я писал:
>> - предполагаю, что исходящие бинда привязаны к определенному айпи
Таким образом, если рассмотреть настройки в целом (а именно так их и следует рассматривать), можно (наверное) увидеть, что исходящие запросы бинд-а пойдут "туда-то" а не "туда-то".
У меня все получилось. Проблема была в сервере имен: я прикрыл некоторые сети на обслуживание и серые сети тоже, а в разрешенных указать забыл. Таким образом тот самый отдельный днс оказался "вне закона". Так что зря я писал в форум, у меня все работало "как надо" с самого начала. Хотя я получил ссылку на интересную заметку и перечитал массу важного о маршрутизации в linux..Спасибо большое за помощь.