Прошу помощи Гуру!У меня роутер на базе FreeBSD. К нему подключены три провайдера.
Весь интернет и роутинг по IP провайдеров работает и настроен.
Через ipfw делается управление доступом нужным компам (у меня интернет-клуб).Вопрос в том, как мне к примеру несколько компов из локалки (192.168.0.1; 0.15) послать не по default gateway, а на ms1.izhnt.ru образно.
и есть ли возможность сделать это правилами ipfw.
все дело в том, что программа управления клубом работает под виндой, управля шлюзом по ssh, тупо выполняя действия ipfw add xx или ipfw delete xx. Т.е. добавляя и удаляя правила разрешения/запрета доступа конкретному компу в нет.
так как используется несколько провайдеров, у каждого свои приемущества. По этому появилось желание сделать несколько тарифных планов на интернет, при включении которых данный компьютер должен попадать в инет либо по default gateway, либо по маршруту XXX, либо по YYY.
в терминалогии не шибко силен, но надеюсь пойму дельный совет.
>так как используется несколько провайдеров, у каждого свои приемущества. По этому появилось
>желание сделать несколько тарифных планов на интернет, при включении которых данный
>компьютер должен попадать в инет либо по default gateway, либо по
>маршруту XXX, либо по YYY.я так понимаю, что клиенты просто НАТятся в Интернет? Какой-то крутой биллинговой системы на роутере не стоит? Было бы неплохо немного поподробнее расписать структуру вашей сети.
>>так как используется несколько провайдеров, у каждого свои приемущества. По этому появилось
>>желание сделать несколько тарифных планов на интернет, при включении которых данный
>>компьютер должен попадать в инет либо по default gateway, либо по
>>маршруту XXX, либо по YYY.
>
>я так понимаю, что клиенты просто НАТятся в Интернет? Какой-то крутой биллинговой
>системы на роутере не стоит? Было бы неплохо немного поподробнее расписать
>структуру вашей сети.да, просто натятся и все. биллинга ни какого нет. этим занимается софт на винде, получая данные с ipfw count вроде так.
; Разрешаем траффик, который не надо натить - т.е. из локальных сетей в локальные сети
00100 allow all from <localnet> to any out xmit <Локальный интерфейс1>
00105 allow all from <localnet> to any out xmit <Локальный интерфейс2>; где-то тут надо бы добавить правила, чтобы локальная сеть видела внешние айпишники рутера
; может быть это "100 allow from any to any out xmit <локальный интерфейс>"
; но для начала и так пойдет. Проблема будет в том, что с внешнего айпи пакеты будут
;форвардиться во внешний интерфейс, даже если они должны были пойти в локалку.
#Заворачиваем на нат всё что пытается покинуть рутер через внешний интерфейс (внутрений трафик разрешен сотыми правилами)
;заворачиваем с разных айпи траффик на разный нат
00200 divert 8668 ip from 192.168.0.200 to any out
00205 divert 8667 ip from 192.168.0.100 to any out; тут можно вставить вырезание пакетов, идущих во внешние сети с приватным src-адресом
;разрешаем пакетам, которые идут куда надо идти куда они идут :)
00400 allow all from <айпи канал1> to <сеть интерфейс1> out xmit <Интерфейс1>
00405 allow all from <айпи канал2> to <сеть интерфейс2> out xmit <Интерфейс2>; меняем интерфейс назначения, если надо идти через шлюз
; форвардим даже если требуемый шлюз является шлюзом по умолчанию, для упрощения правил00500 fwd <айпи шлюза сеть1> ip from <айпи канал1> to any out
00505 fwd <айпи шлюза сеть2> ip from <айпи канал2> to any out
# Не забываем пронатить всё это дело обратно
00600 divert 8668 ip from any to any in recv <Интерфейс1>
00605 divert 8667 ip from any to any in recv <Интерфейс2># и разрешить обратное прохождение пакетов, например так
00610 allow from any to 192.168.0.0/24 in recv <Интерфейс1>
00615 allow from any to 192.168.0.0/24 in recv <Интерфейс2>ну и соответственно при запуске natd должно быть так, что:
natd -a <айпи канал1> -p 8668
natd -a <айпи канал2> -p 8667 (PS: на самом ли деле ключ -p я не помню)
В догонку (я небольшой спец. но мне кажется здравой такая мысля):
Свои локальные сети разбить на подсети:
192.168.0.0
192.168.1.0
192.168.2.0
и в соответствии с этим раздавать роутинг и nat'ить
Так будет прощее :)