PBR с помощью PF

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
aristos
рядовой
Сообщения: 22
Зарегистрирован: 2007-01-27 20:41:32
Контактная информация:

PBR с помощью PF

Непрочитанное сообщение aristos » 2007-03-22 3:14:22

Есть сетка 192.168.0.0/24, она сидит в инете через шлюз 192.168.0.2.
Снаружи в шлюз входят ext_if_87 = "vlan1" - ISP1 и ext_if_172 = "vlan3" - ISP2. ext_gw_87 = "87.87.87.225"-default GW.
Необходимо сделать, чтоб часть юзеров сетки (table <na_ISP2> ) ходила в инет через ISP2 и имела доступ в локалку ISP1. Вся остальная сеть (my_net = "192.168.0.0/24") ходила через ISP1 и имела доступ в локалку ISP2.

Вот сам конфиг:

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

ext_if_87 = "vlan1" 
ext_if_172 = "vlan3"
ext_if_89 = "vr0" 
int_if = "xl0" #Local
media = "192.168.0.3"
dcc = "192.168.0.6"
my_net = "192.168.0.0/24"

ext_gw_87 = "87.87.87.225"
ext_gw_172 = "172.17.48.1"

##############
#Таблицы
##############

#Таблица внешних интерфейсов
table <ext_if> { vlan1 vlan3 vr0 }

### те, кто сидит на ISP2
table <na_ISP2> { 192.168.0.22 .......}

### локалка ISP1
table <ISP1> { 10.0.0.0/8 .......}
### локалка ISP2
table <ISP2> { 10.1.2.0/24..........}



# Нормализация трафика
scrub in
scrub in on { $ext_if_87 $ext_if_172 $ext_if_89 } no-df random-id

##########################
################ Нат
##########################
nat pass on $ext_if_87 from <na_ISP2> to <ISP1> -> ($ext_if_87) 
nat pass on $ext_if_172 from <na_ISP2> to any -> ($ext_if_172)
nat pass on $ext_if_172 from $my_net to <ISP2> -> ($ext_if_172) 
nat pass on $ext_if_87 from $my_net to any -> ($ext_if_87) 


#####################################
################ RDR 87.87.87.87
#####################################

#Редиректы к Медиаархиву через http
rdr pass on $ext_if_87 proto tcp from any to $ext_if_87 port 80 -> $media

#Редирект к Медиасерверу по https
rdr pass on $ext_if_87 proto tcp from any to $ext_if_87 port 555 -> $media

#Редирект ssh к Медиасерверу
rdr pass on $ext_if_87 proto tcp from any to $ext_if_87 port 23 -> $media port 22

#Редирект к Радио
rdr pass on $ext_if_87 proto tcp from any to $ext_if_87 port 8000 -> 192.168.0.20
rdr pass on $ext_if_87 proto tcp from any to $ext_if_87 port 8001 -> 192.168.0.59


#Редирект к DCC хабу
rdr pass on $ext_if_87 proto tcp from any to $ext_if_87 port 411 -> $dcc
rdr pass on $ext_if_87 proto tcp from any to $ext_if_87 port 1209 -> $dcc
rdr pass on $ext_if_87 proto udp from any to $ext_if_87 port 1209 -> $dcc


##Редиректы к медиа архиву через FTP
rdr on $ext_if_87 proto tcp from any to $ext_if_87 port 660 -> $media

#Редиректы пассивных портов
rdr pass on $ext_if_87 proto tcp from any to $ext_if_87 port 50051:50091 -> $media 


############################################
#################### RDR 172.172.172.172
############################################

#Редиректы к Медиаархиву через http
rdr pass on $ext_if_172 proto tcp from any to $ext_if_172 port 80 -> $media

#Редирект к DCC хабу
rdr pass on $ext_if_172 proto tcp from any to $ext_if_172 port 411 -> $dcc
rdr pass on $ext_if_172 proto tcp from any to $ext_if_172 port 1209 -> $dcc
rdr pass on $ext_if_172 proto udp from any to $ext_if_172 port 1209 -> $dcc

##Редиректы к медиа архиву через FTP
rdr pass on $ext_if_172 proto tcp from any to $ext_if_172 port 669 -> $media 

rdr pass on $ext_if_172 proto tcp from any to $ext_if_172 port 50051:50091 -> $media 

#####################################
################ PASS 87.87.87.87
#####################################


## Игнорируем петлевой интерфейс
pass quick on {lo0}

## Запрещаем все входящие соединения на интерфейсе одного из провайдеров(ext_if_87 = vlan1)
block in on $ext_if_87

# Разрешение на VPN
pass in on $ext_if_87 inet proto tcp from any to $ext_if_87 port 1723 keep state
pass in on $ext_if_87 inet proto gre from any to $ext_if_87 keep state


#Разрегение на вход для пассивных портов ftp к 606
pass in on $ext_if_87 proto tcp from any to $ext_if_87 port 606
pass in on $ext_if_87 proto tcp from any to $ext_if_87 port 50045><50050 


## И еще разок пинги.
pass in on $ext_if_87 inet proto icmp from any to $ext_if_87 keep state

## Разрешаем все исходящие пакеты
pass out on $ext_if_87 keep state


#####################################
################ PASS 172.172.172.172
#####################################


## Запрещаем все входящие соединения на интерфейсе одного из провайдеров($ext_if_172= vlan3)
block in on $ext_if_172

# Разрешение на VPN
pass in on $ext_if_172 inet proto tcp from any to $ext_if_172 port 1723 keep state
pass in on $ext_if_172 inet proto gre from any to $ext_if_172 keep state


## И еще разок пинги.
pass in on $ext_if_172 inet proto icmp from any to $ext_if_172 keep state

## Разрешаем все исходящие пакеты
pass out on $ext_if_172 keep state

#####################################
################ PASS 192.168.0.2 - внутренний интерфейс
#####################################
pass out on $int_if keep state 
pass in on $int_if keep state


#######################################
########### Роутинг 
######################################

#Роутинг 
pass in on $int_if route-to ($ext_if_172 $ext_gw_172) from $my_net to <ISP2>
pass in on $int_if route-to ($ext_if_172 $ext_gw_172) from <na_ISP2> to any
pass in on $int_if route-to ($ext_if_87 $ext_gw_87) from <na_ISP2> to <ISP1>
pass in on $int_if from $my_net to (self) keep state
При всем при этом получается что люди из <na_ISP2> могут пинговать шлюз(192.168.0.2). Но инет не работает. При пинге любого хоста за пределами внутренней(с клиентской машины, принадлежащей <na_ISP2> ) сети проходит только один пинг, и тишина..... Tracert вообще показывает пустой экран =(
Все остальные компьютеры внутренней сети $my_net=192.168.0.2/24 нормально ходят в инет через ISP1, но при доступе к локалке второго провайдера (<ISP2>) проходит тот же самый один пинг и тишина..... Tracert снова показывает пустой экран =(
Как я уже написал дефолтный маршрут на GW ISP1 (87.87.87.225)

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

Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
0                  link#1             UC          0        0    em0 =>
default            87.87.87.225      UGS         0    14590  vlan1
87.87.87.224/28   link#7             UC          0        0  vlan1
87.87.87.225      00:16:9c:0d:9c:00  UHLW        2        0  vlan1    927
127.0.0.1          127.0.0.1          UH          0       67    lo0
172.17.48/22       link#8             UC          0        0  vlan3
172.17.48.1        00:20:ed:61:27:d4  UHLW        1        0  vlan3    136
192.168.0          link#2             UC          0        0    xl0
192.168.0.2        00:01:02:cc:bb:aa  UHLW        1       16    lo0
192.168.0.3        00:11:2f:bd:2d:52  UHLW        1      231    xl0    131
192.168.0.4        00:0c:42:03:0a:00  UHLW       13        3    xl0    464
192.168.0.20       00:01:02:cc:bd:15  UHLW        1     7387    xl0   1031
192.168.0.22       00:01:02:cc:bd:15  UHLW        1      211    xl0    988
192.168.0.23       00:e0:4c:21:a0:02  UHLW        1      186    xl0   1048
192.168.0.26       00:17:9a:47:9b:38  UHLW        1       19    xl0    974
192.168.0.47       00:0a:eb:ab:59:d9  UHLW        1       49    xl0   1193
192.168.0.50       00:05:1c:1e:5c:d2  UHLW        1       14    xl0   1146
192.168.0.75       00:0a:eb:ab:d5:6f  UHLW        1       18    xl0   1046
192.168.0.85       00:90:4b:48:ed:01  UHLW        1        4    xl0   1184
192.168.0.90       00:c0:0c:b0:8f:8f  UHLW        1     3273    xl0    932
192.168.0.154      00:c0:df:14:38:92  UHLW        1       44    xl0   1153
192.168.0.160      00:50:ba:73:57:4a  UHLW        1       42    xl0   1074

172.17.48.1 - GW - ISP2

Я бы понял если пакеты вообще не шли....
Но что означает если только один пинг проходит,а остальные нет ?

Предистория разбора полетов вот здесь

Хостинговая компания 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/

aristos
рядовой
Сообщения: 22
Зарегистрирован: 2007-01-27 20:41:32
Контактная информация:

Непрочитанное сообщение aristos » 2007-03-23 15:28:52

:lol: :lol:
Все разрешилось убиранием keep state вотв этих правилах

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

pass out on $int_if keep state 
pass in on $int_if keep state 

aristos
рядовой
Сообщения: 22
Зарегистрирован: 2007-01-27 20:41:32
Контактная информация:

Непрочитанное сообщение aristos » 2007-03-24 12:46:24

А ктонить юзал шейпер от IPFW и PF ?
просто при использовании вот такого шейпера

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

00100 allow ip from me to any
01200 pipe 8 ip from any to table(19)
01300 pipe 9 ip from table(19) to any 
01400 pipe 10 ip from any  to table(20)
01500 pipe 11 ip from table(20) to any 
01600 pipe 12 ip from any  to table(21)
01700 pipe 13 ip from table(21) to any 
01800 pipe 14 ip from any ) to table(22)
01900 pipe 15 ip from table(22) to any 
02000 pipe 18 ip from any  to table(24)
02100 pipe 19 ip from table(24) to any 
02200 pipe 22 ip from any  to table(26)
02300 pipe 23 ip from table(26) to any 
02400 allow ip from any to any
65535 deny ip from any to any
где каждая пара пайпов выглядит вот так:

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

########.................256-32..................#######
${FwCMD} pipe 18 config bw 266Kbit/s queue 200KBytes mask dst-ip 0xffffffff 
${FwCMD} pipe 19 config bw 266Kbit/s queue 200KBytes mask src-ip 0xffffffff 

${fwtable} 24 f

users5=" 192.168.0.19 192.168.0.22 192.168.0.25 192.168.0.58 192.168.0.59 192.168.0.63 192.168.0.64 192.168.0.66 192.168.0.67 192.168.0.71 192.168.0.86 "

for lan in ${users5}
    do
        ${fwtable} 24 add $lan
    done


${FwCMD} add pipe 18 all from any to table\(24\)
${FwCMD} add pipe 19 all from table\(24\) to any
У всех людей, которые зарезаются по скорости - пропадает инет вооще(без PF шейпер работает) =(
Меняется ли структура шейпера при использовании PF ?