Перейти к содержанию

два канала в интернет


handler

Рекомендуемые сообщения

Здравствуйте

Имеем два канала интернета xlo и xl1

один внутренний интерфейс

defaultroute показывает на xl0

весь трафик идет туда

шейпим каналами

pipe 1 config bw 256Kbit/s

pipe 1 allow ip from x.x.x.x to any

теперь надо разгрузить один канал направив часть адресов внутренней сети в другой канал

pipe 2 config bw 256Kbit/s (тут надо указать явно интерфейс)

pipe 2 allow ip from y.y.y.y to any

такая модель не работает

читал статьи по настройке второго шлюза по умолчанию но по-моему это не то

какие будут соображения?

Ссылка на комментарий
Поделиться на другие сайты

sockstat | grep natd

natd 8668

что нам дает следующая команда?

natd -n interface -p 8669

sockstat|grep natd

natd 8669

natd 8668

что изменилось в сисетме?

Ссылка на комментарий
Поделиться на другие сайты

Два NAT'а - это хорошо. Но нужны ещё маршруты. А с этим уже сложнее. В Linux можно использовать iproute2 для создания разных таблиц маршрутизации и распределения по ним трафика. Во Фряхе я аналогичных пакетов не знаю. Однако знаю, что это возможно.

Ссылка на комментарий
Поделиться на другие сайты

у меня не линукс а фря

и почему когда я явно указываю интерфейс пакеты все равно не ходят?

ipfw allow ip from x.x.x.x to any via interface

пробоввал также

ipfw add fwd x.x.x.x ip from y.y.y.y to any

ipfwd: getsockopt(IP_FW_ADD): Invalid argument

Ссылка на комментарий
Поделиться на другие сайты

Цитата:

и почему когда я явно указываю интерфейс пакеты все равно не ходят?

Потому что вы пытаетесь фаерволл заставить делать то, что делается таблицами маршрутизации. Вашим правилом вы разрешили проходить пакетам с определённого адреса на интерфейс. Но ведь маршрут у этого пакета идёт через другой интерфейс, что можно посмотреть при помощи route.

Я не зря рассказал вам про то, как это делается в linux. В разных системах инструменты разные, но принцип в данном случае один.

Ссылка на комментарий
Поделиться на другие сайты

ссылка не то

делаю так

1 два ната

natd -n xl0 -p 8668

natd -n xl1 -p 8669

2 divert в /etc/rc.firewall

add divert 8669 ip4 from x.x.x.x to any (сюда часть адресов)

add divert 8668 ip4 from any to any (сюда остальные)

3 forward

add fwd x.x.x.x ip from y.y.y.y to any (x - gateway y - ip address)

счетчик показывает что пакеты уходят но все равно не работает

Ссылка на комментарий
Поделиться на другие сайты

Вы упорно не хотите слушать.

С этим всё отлично.

Цитата:

делаю так

1 два ната

natd -n xl0 -p 8668

natd -n xl1 -p 8669

2 divert в /etc/rc.firewall

add divert 8669 ip4 from x.x.x.x to any (сюда часть адресов)

add divert 8668 ip4 from any to any (сюда остальные)

Но пакеты должны знать маршрут, по которому им двигаться.

форвардом вы просто переслали всё, что пришло с y.y.y.y на x.x.x.x

Откуда роутер x.x.x.x знает, куда отвечать? Откуда настраиваемый вами роутер знает, что делать с пакетами, которые к нему приходят(если придут)?

В вашей схеме всё будет натиться, но никто не будет знать, куда идти, потому что после ната пакеты уходят в default gateway, т.е. к основному провайдеру...

P.S. Команду route вы игнорируете?

Ссылка на комментарий
Поделиться на другие сайты

вас понял теперь объясните как задать второй маршрут

делаю так

route add 1.0.0.0/1 ip_gateway

маршрут добавляет но половина адресов не резольвится т е некоторые сайты открывает некоторые нет и аська вылетает сразу да и второй нат не удалось при загрузке создать

natd2_enable="yes"

natd2_interface="xl1"

natd2_flags="-p 8669"

cp /etc/rc.d/natd natd2

но

sockstat | grep natd

выдает только один екземпляр ната а в ручную все работает

natd -n xl1 -p 8669

Ссылка на комментарий
Поделиться на другие сайты

Цитата:

маршрут добавляет но половина адресов не резольвится т е некоторые сайты открывает некоторые нет и аська вылетает сразу

Попробуйте посмотреть трассу на внешние ip из маршрутизируемой сети. Если пакеты уходят на второй шлюз, значит с маршрутами всё ок и можно идти дальше.

Что касается резолвинга, тут зависит от того, каким dns'ом вы пользуетесь. Если провайдерским, надо соответственно на клиентах прописывать адреса тех провайдеров, через которых они завёрнуты.

Что касается ната при старте системы, тут нужны спецы по фряхе. Единственное, что я бы попробовал, это прописать команды в /etc/rc.local, или посмотреть, что именно делает скрипт в /etc/rc.d Возможно там есть какие-то ньюансы, которые, в случае двух натов, надо переписывать руками. Кстати, в логах по этому поводу ничего нет?

И ещё, в прошлый раз пропустил, диверты на NAT наружу вы сделали. А назад для обоих натов есть?

Ссылка на комментарий
Поделиться на другие сайты

как посмотреть трассу на наличие маршрута?

днс у мя свой а гейт и днс прова прописаны на самих роутерах

а у клиентов гейты уже на роутер

и как диверт обратный реализуется?

Ссылка на комментарий
Поделиться на другие сайты

Цитата:

как посмотреть трассу на наличие маршрута?

В *nix-системах утилита traceroute в оффтопике tracert

Цитата:

и как диверт обратный реализуется?

Примерно так:

ipfw add 100 divert natd ip from x.x.x.x/x to any
ipfw add 110 divert natd ip from any to y.y.y.y

где x.x.x.x/x - локальная сеть, которую надо занатить, а y.y.y.y - внешний ip.

В вашем случае надо будет прописывать для обоих провайдеров и вместо natd использовать порты, соответствующие первому и второму нату.

Ссылка на комментарий
Поделиться на другие сайты

все не то

есть локальная сеть есть маршрут и он единственный второй мне добавить не удалось и нужно из этой сети отдельно взятый адрес отправить на другой роутер

как это сделать

появилась опция RADIX_MPATH в ядре но 6.2 не поддерживает ее pf и iproute2 в freebsd не реализованы

неужели невозможно конкретный адрес запихнуть в конкретный GW?

Ссылка на комментарий
Поделиться на другие сайты

Цитата:

нужно из этой сети отдельно взятый адрес отправить на другой роутер

route add -host x.x.x.x y.y.y.y не работает?

Иксы - адрес, пакеты с которого надо перенаправить? y.y.y.y - шлюз.

Только в любом случае оно должно работать в связке с натом.

Ссылка на комментарий
Поделиться на другие сайты

конструкция которую вы мне предлагаете создаст маршрут к данному узлу и пакеты вообще перестанут ходить а мне надо часть адресов на один модем а часть на другой неужели это невозможно и неужели никто не юзал больше одного канала?

Ссылка на комментарий
Поделиться на другие сайты

Цитата:

конструкция которую вы мне предлагаете создаст маршрут к данному узлу и пакеты вообще перестанут ходить

Это почему?

Перечитайте внимательно всю тему. Вкратце:

Есть дефаулт маршрут на один шлюз, куда уходят все пакеты, не описанные отдельно.

Есть отдельный маршрут для определённого хоста(или сети, как удобнее) на другой шлюз.

Есть один нат для общего маршрута и первого провайдера.

Есть второй нат для отдельного маршрута ко второму провайдеру.

Что именно неясно в такой схеме?

И вроде бы даже определились с инструментами, с помощью которых это всё делается.

Я бы сам попробовал, но у меня фряхи свободной для экспериментов под рукой не установлено. :)

Ссылка на комментарий
Поделиться на другие сайты

route add x.x.x.x/x y.y.y.y

добавляет маршрут к этому узлу и после этого узел не может выйти в мир хоть нат поднят хоть нет пока не удалишь маршрут не работает и ходит по дефолту

I'm so tired Crying or Very Sad

Ссылка на комментарий
Поделиться на другие сайты

А. Точно. Давненько я не работал с route. Извиняюсь. Smile

Даже не знаю, как именно это делается в нём. Ну тогда могу посоветовать только поискать доки, как завернуть маршруты от адреса на шлюз. Вот ещё подумалось, может вам в этом поможет zebra.

Ссылка на комментарий
Поделиться на другие сайты

хорошо допустим

2 ната

первый системный по-дефолту порт 8668 привязан к первому интерфейсу

второй мы добавили ручками порт 8669 привязан ко второму интерфейсу

маршрут я так понимаю напрямую связан с натом значит у нас должно быть как минимум 2 маршрута

появился патч который поддерживает два маршрута www.opennet.ru/opennews/art.shtml?num=15356

но у меня ядро такую опцию не компилит

как же мне разрулить каналы неужели никто не работал с несколькими каналами?

Ссылка на комментарий
Поделиться на другие сайты

есть два ната по одному на каждый интерфейс

natd -n myk0 -p 8668

natd -n xl1 -p 8669

есть правила ipfw

divert 8669 ip from x.x.x.x to any via xl1

fwd y.y.y.y ip from x.x.x.x to any

tcpdump показывает что пакеты уходят ч|з указанный интерфейс но не возвращаются и счетчик у правила диверт равен нулю

если в правиле диверт убрать via xl1 то счетчик начинает работать но пакеы уже не ходят

я так понимаю мне не хватает правил для обратного форвардинга

Ссылка на комментарий
Поделиться на другие сайты

  • 5 месяцев спустя...

Тема не справедливо умерла, у меня таже проблема.

По логам в дивертах видно, что он кидает трафик на интерфейс который соответствует дефаултному шлюзу.

Как это решается ??

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Мне добавить к вышесказанному больше нечего. Как я и писал, в Linux это довольно простая задача при использовании iproute2. А FreeBSD уже почти не использую, поэтому сложно сказать. Слышал, что какие-то умельцы переносили iproute2 во фряху, но с уверенностью утверждать не стану. Попробуйте копнуть в эту сторону, если из вышеприведённых примеров ничего не выходит.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...