pf и 2 канала в интернет

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
psj
ефрейтор
Сообщения: 66
Зарегистрирован: 2007-10-29 13:44:50

pf и 2 канала в интернет

Непрочитанное сообщение psj » 2010-04-27 18:52:40

Задача: Есть два канала в интернет, необходимо по ip-адресам машин выпускать их в инет через разные каналы.
Пытаюсь сделать это при помощи pf. Есть вот такая машина:

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

19:31 Sergey.Poleckiy@sunrt [/etc]cat /etc/rc.conf 

# -- sysinstall generated deltas -- # Tue Apr 20 20:36:34 2010
# Created: Tue Apr 20 20:36:34 2010
# Enable network daemons for user convenience.
# Please make all changes to this file, not to /etc/defaults/rc.conf.
# This file now contains just the overrides from /etc/defaults/rc.conf.

hostname="sunrt.dinp.local"

ifconfig_em0="inet 192.168.125.11  netmask 255.255.255.0"  # внутренний интерфейс 
ifconfig_igb0="inet 192.168.1.2  netmask 255.255.255.0"  # внешний интерфейс 1
ifconfig_igb1="inet 192.168.2.2  netmask 255.255.255.0"  # внешний интерфейс 1

defaultrouter="192.168.2.1"

gateway_enable="YES"

router_enable="YES"
router="/sbin/routed"
router_flags="-q"

sshd_enable="YES"

mousechar_start="3"
font8x8="cp866-8x8"
font8x14="cp866-8x14"
font8x16="cp866b-8x16"
scrnmap="koi8-r2cp866"
keyrate="fast"
keymap="ru.koi8-r"

pf_enable="YES"                 # Включить PF (Подгрузить модуль, если требуется)
pf_rules="/etc/pf.conf"         # Откуда подгружать правила для pf
pf_flags=""                     # дополнительные флаги для управляющей программы pfctl(8)
pflog_enable="YES"              # запуск pflogd(8) (система журналирования)
pflog_logfile="/var/log/pflog"  # где pflogd должен хранить журнал
pflog_flags=""                  # дополнительные флаги для pflogd
При помощи данного сайта, http://house.hcn-strela.ru/BSDCert/BSDA ... l#pf-queue и http://www.samag.ru/art/02.2007/02.2007_09.html был нарисован следующий конфиг:

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

19:37 Sergey.Poleckiy@sunrt [/etc]cat /etc/pf.conf
#/etc/pf.conf
#
ext_if_a	= "igb0"		# Внешний интерфейс 2Мбита
ext_gw_a	= "192.168.1.1"		# Шлюз в инет на 2 Ьбита
#
ext_if_b	= "igb1"		# Внешний интерфейс 512 Кбит
ext_gw_b	= "192.168.2.1"		# Шлюз в инет 512 Кбит
#
int_if		= "em0"			# Внутренний интерфейс
#
# Table для выхода в инет
table <inet2000>	persist file "/usr/local/etc/pf.table/inet2000"		# ip-адреса пользователей канала 2Мбита
table <servers>		persist file "/usr/local/etc/pf.table/servers"		# ip-адреса серверов
table <inet512>		persist file "/usr/local/etc/pf.table/inet512"		# ip-адреса пользователей канала 512Кбит
#
# Списки для выхода в инет
list_out_2000	= "{ <inet2000> <servers> }"
list_out_512	= "{ <inet512> }"
#----------------------------------------------------------------------------------------
# Нормализация трафика
scrub in
#----------------------------------------------------------------------------------------
set skip on { lo0, $int_if }
#
# NAT на 2 канала
# Переписываем шлюз по умолчанию на внешних интерфейсах
nat on $ext_if_a inet from $list_out_2000 to any -> ( $ext_if_a )
nat on $ext_if_b inet from $list_out_512 to any -> ( $ext_if_b )
#----------------------------------------------------------------------------------------
pass out route-to ( $ext_if_a $ext_gw_a) from ($ext_if_a) to any
pass out route-to ( $ext_if_b $ext_gw_b) from ($ext_if_b) to any
#----------------------------------------------------------------------------------------
pass quick on $ext_if_a inet proto icmp from any to any keep state
pass quick on $ext_if_b inet proto icmp from any to any keep state

pass all
Ну а дальше лыжи не едут. Т.е. выйти в инет можно всё равно ТОЛЬКО через шлюз по умолчанию. Я понимаю, что данный вопрос уже поднимался, НО огромная просьба - ткните меня носом где я не правильно делаю :(
Заранее благодарен!
В правильно заданном вопросе 80% ответа

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

Re: pf и 2 канала в интернет

Непрочитанное сообщение BlackCat » 2010-04-27 22:09:58

Описание от разработчиков: http://openbsd.org/faq/pf/pools.html#outgoing.
Хинт: определение маршрута для транзитных пакетов осуществляется на входе внутреннего интерфейса.

Аватара пользователя
baton4eg
сержант
Сообщения: 274
Зарегистрирован: 2009-10-11 14:36:35
Контактная информация:

Re: pf и 2 канала в интернет

Непрочитанное сообщение baton4eg » 2010-04-27 22:19:24

с ipfw и setfib решается довольно просто
"Все говорят, что у меня /dev/hands криво и я всё делаю через /dev/ass. А у меня этих файлов вообще нет!" (c)
"Я ем руками, она вилкой и ножом, я бью вилкой и ножом, она руками" (с)

Al
ст. прапорщик
Сообщения: 501
Зарегистрирован: 2007-10-18 13:42:48
Откуда: Тверь
Контактная информация:

Re: pf и 2 канала в интернет

Непрочитанное сообщение Al » 2010-04-28 7:38:50

BlackCat писал(а):Описание от разработчиков: http://openbsd.org/faq/pf/pools.html#outgoing.
Хинт: определение маршрута для транзитных пакетов осуществляется на входе внутреннего интерфейса.
Ссылка заезженна донельзя.
Топикстартер. Учитесь пользоваться поиском. Интернет и так завален всяким хламом.

Аватара пользователя
psj
ефрейтор
Сообщения: 66
Зарегистрирован: 2007-10-29 13:44:50

Re: pf и 2 канала в интернет

Непрочитанное сообщение psj » 2010-04-28 7:43:37

BlackCat писал(а):Описание от разработчиков: http://openbsd.org/faq/pf/pools.html#outgoing.
Хинт: определение маршрута для транзитных пакетов осуществляется на входе внутреннего интерфейса.
Дай бог тебе здоровья!!!
Спасибо огромное!!!
Всё заработало!
В правильно заданном вопросе 80% ответа