Страница 1 из 2

проблема с PF

Добавлено: Ср июл 22, 2009 9:17 pm
lasik
Значит так, есть такая проблема, есть сервер, под управлением freebsd 6.3.

Я пытаюсь сделать распределение трафика на 2 сетевые, что бы была привязка по пулам (один пул только через одну сетевуху ходит, второй только через вторую).

Проблема следующего характера:

Используя любой из конфигов pf, которые есть на этом форуме, или тот, который на моем сервере, "работает" только "один интернет", только тот, который указан для машины в rc.conf в строке defaultrouter= и в resolv.conf как nameserver.

и хоть ты тресни, уже все перерыл, нихотит он работать так мне нужно, и все тут

вот мой конфиг

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

ext_if_a = "rl0"

ext_if_b = "rl2"

#limit
ext_gw_a = "192.168.72.1"

ext_ip_a = "192.168.72.234"

#unlim
ext_gw_b = "192.168.50.1"

ext_ip_b = "192.168.50.107"


nat on $ext_if_a inet from { 10.1.0.0/16 } to any -> $ext_ip_a:0

nat on $ext_if_b inet from { 10.2.0.0/16 } to any -> $ext_ip_b:0

pass quick on lo0 all

pass out route-to ($ext_if_a $ext_gw_a) inet from ($ext_if_a) to !(self:network) keep state

pass out route-to ($ext_if_b $ext_gw_b) inet from ($ext_if_b) to !(self:network) keep state


pass in on $ext_if_a reply-to ($ext_if_a $ext_gw_a) inet proto tcp to any keep state

pass in on $ext_if_a inet proto tcp from ($ext_if_a:network) to any keep state


pass in on $ext_if_b reply-to ($ext_if_b $ext_gw_b) inet proto tcp to any keep state

pass in on $ext_if_b inet proto tcp from ($ext_if_b:network) to any keep state
кто сто скажет по этому поводу


pfctl -sn говорит

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

nat on rl0 inet from 10.1.0.0/16 to any -> 192.168.72.234
nat on rl2 inet from 10.2.0.0/16 to any -> 192.168.50.107

Re: проблема с PF

Добавлено: Чт июл 23, 2009 6:49 am
~AsmodeuS~
pfctl -sr

покажите

Re: проблема с PF

Добавлено: Чт июл 23, 2009 6:54 am
lasik

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

pass quick on lo0 all
pass out route-to (rl0 192.168.72.1) inet from (rl0) to ! (self:network) keep state
pass out route-to (rl2 192.168.50.1) inet from (rl2) to ! (self:network) keep state
pass in on rl0 reply-to (rl0 192.168.72.1) inet proto tcp all keep state
pass in on rl0 inet proto tcp from (rl0:network) to any keep state
pass in on rl2 reply-to (rl2 192.168.50.1) inet proto tcp all keep state
pass in on rl2 inet proto tcp from (rl2:network) to any keep state

Re: проблема с PF

Добавлено: Чт июл 23, 2009 8:57 am
mr_gfd
Я вышел из этой ситуации следующим способом - поднялся на 7.2 версию и использовал множественные таблицы маршрутизации (fib). Разные пулы адресов ходят по разным маршрутам, и все.

Re: проблема с PF

Добавлено: Чт июл 23, 2009 9:51 am
lasik
я пробовал конфиг с коммерчемкой версии, результат такой же, так что, кажется где то в недрах самой системы собака зарыта

Re: проблема с PF

Добавлено: Пт июл 24, 2009 4:55 pm
sopov
Вот тюненый рабочий конфиг с одного из насов
/etc/rc.conf

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

ifconfig_fxp0="inet 192.168.2.2  netmask 255.255.255.0"
ifconfig_fxp1="inet 192.168.1.2  netmask 255.255.255.0"
defaultrouter="192.168.2.1"
cat /etc/pf.conf

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

set optimization aggressive

set limit states 100000
set limit src-nodes 100000
# Указываем используемые сетевые интерфейсы:

ext_if_a = "fxp0"

ext_if_b = "fxp1"

# Для каждого из каналов задаем IP-адрес шлюза:

ext_gw_a = "192.168.2.1"

ext_gw_b = "192.168.1.1"

ext_ip_a = "192.168.2.2"

ext_ip_b = "192.168.1.2"

scrub in all fragment reassemble

nat on $ext_if_a inet from { 10.17.0.0/16 } to any -> $ext_ip_a

nat on $ext_if_a inet from { 10.16.0.0/16 } to any -> $ext_ip_b

pass in all
pass out all

#pass from { 10.17.0.0/16, 10.16.0.0/16 } to any keep state (source-track rule, max-src-states 200)

pass out route-to ($ext_if_b $ext_gw_b) inet from ($ext_if_b) to !(self:network) modulate state
В системе 2 пула 10.17.0.0/16 и 10.16.0.0/16

Re: проблема с PF

Добавлено: Пт июл 24, 2009 7:06 pm
lasik
попробывал твой конфиг. та же песня

интернет только от 1 ифейса, и только того, который по умолчанию (

Re: проблема с PF

Добавлено: Сб июл 25, 2009 6:38 am
sopov
Тогда нужно смотреть в сторону ядра - может чегото нехватает. Или ipfw гдето блокирует...

Re: проблема с PF

Добавлено: Сб июл 25, 2009 8:58 am
lasik
за основу взято GENERIC, и добавлено это

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

options         IPFIREWALL
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         DUMMYNET

options         NETGRAPH
options         NETGRAPH_PPPOE
options         IPFILTER
options         IPFILTER_LOG
options         IPDIVERT

device          pf
device          pflog
device          pfsync
options         ALTQ

Re: проблема с PF

Добавлено: Сб июл 25, 2009 4:56 pm
sopov
Ну с ядром вроде все гуд... Может всетаки в ipfw какоето правило блокирует?

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

ipfw -a list
покажи до пайпов, ну или сам глянь :) . Еще в pf есть странная особенность - он иногда нехочет нормально перечитывать конфиг, т.е. вродебы перечитывает, но изменения не принемает. Помогает сброс всех правил - команду на память не помню, а bsd сейчас рядом нету... А потом

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

pfctl -d & pfctl -e & pfctl -f /etc/pf.conf

Re: проблема с PF

Добавлено: Сб июл 25, 2009 5:50 pm
lasik
ipfw -a list

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

65535 689835 436553678 allow ip from any to any
а ниже написаное я юзаю для рестарта, правда чуток подругому
pfctl -F all
pfctl -f /etc/pf.conf

Re: проблема с PF

Добавлено: Чт июл 30, 2009 10:38 am
sopov
Ну тогда наверное место заколдованое :D - переставь по фэншую.

Re: проблема с PF

Добавлено: Вт авг 11, 2009 10:58 pm
mr_gfd
pfctl -srv
pfctl -ssv

А еще заметил IPFILTER.
ipfstat -on
ipfstat -in

Ну и
netstat -nr

Re: проблема с PF

Добавлено: Ср авг 12, 2009 8:35 am
lasik
дело не в этом, я нешел трабл.

проблема в dns.

буду решать

Re: проблема с PF

Добавлено: Ср авг 12, 2009 3:56 pm
sopov
А dns на этой машине? Если да, то вешаете alias на loopback - например 128.0.0.1, поднимаете на нем dns и отдаете клиенту.