Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  начальная настройка
  Установка FreeBSD
  DUMMYNET
  Сборка ядра
  IPFW
  обновление
  portsnap
  CP1251 на FreeBSD
  loader.conf
  defaults/rc.conf
  jail
  Ntpdate/Ntpd
  diskless
  Обновление мира ("world")
  PBR & PF
  bsnmpd
  newsyslog
  if_bridge
  make.conf
  PBR & IPFW
  Работа с HDD
  sshd & AD
  Удаленное разбиение HDD
  Заметки об IPFW
  FreeBSD на VDS
  CVSUP и софт через Proxy
  i386=>amd64
  ALTQ в IPFW
  Виртуальный свитч
  VPN сервер по средствам mpd5.
  NTP
  sysupdate
  mpd5 L2TP
  freebsd + webcamera
  IPFW policy (PBR)
  RAID1 via LAN
  зеркальный RAID1 на ОС FreeBSD
  4.x => 7.x
  portdowngrade
  Быстрое обновление портов
  ipfw nat
  Использование csup
  UTF-8 console
  dump/restore
  hast carp zfs ucarp cluster
  ng_nat
  Wi-FI роутер + DHCP + DNS
  backup/restore & ZFS
  Обновление ОС и портов через SVN.
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> настройка —> IPFW policy (PBR)

Policy-based routing & FreeBSD

Автор: bekhterev.


Как то давно у меня зашел спор с одним администратором о возможностях ipfw. Он мне долго доказывал, что фаервол туповатый и вообщем-то совсем не кошерный. Переубеждать я его не стал и как-то об этом позабылось. Я пользовался ipfw а он ipf.
Но теперь вернемся к теме. На написание статьи меня побудила одна интересная и простая с первого взгляда задача.
Имеем:
FreeBSD 7.0 release, инет от прова (замечу в данном случае одного), сеть адресов 1.1.1.192/29, естесно шлюз в этой же сети :-)
Надо:
В силу того, что сервер выполняет функции фаервола, прокси и почтосервера, захотелось разделить трафик по назначению и выделить для почтовика отдельный апишник, с заполненой обратной зоной PTR.
Решение:
Как могло показаться на первый взгляд, то что может быть проще, чем взять и использовать ipforward2, включив его в ядро? Но данное решение, естественно, моглобы существовать в разных VLSM, что в данном случае неприемлемо, ввиду сходимости сети.
Для сервера прокси выделен ip: 1.1.1.195/29, для почты ip: 1.1.1.197/29, шлюз соответственно ip: 1.1.1.193.
Листинг ifconfig:

fxp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=b<RXCSUM,TXCSUM,VLAN_MTU>
	ether 00:02:b3:b0:xx:xx
	inet 1.1.1.195 netmask 0xfffffff8 broadcast 1.1.1.199
	inet 1.1.1.197 netmask 0xfffffff8 broadcast 1.1.1.199
	media: Ethernet autoselect (10baseT/UTP)
	status: active

Первое, что пришло в голову, это разделить входящий трафик, что и было сделано:

00050  allow ip from any to 1.1.1.195 dst-port 22,53,80,433,1024-65535 in via fxp1
00055  allow ip from any to 1.1.1.197 dst-port 25,110 in via fxp1
00060  allow ip from 1.1.1.195 22,53,80,433,1024-65535 to any out via fxp1
00065  allow ip from 1.1.1.197 25,110 to any out via fxp1
00090  allow ip from any to any via lo0
65535  deny ip from any to any

Входящий трафик разрешен на 1.1.1.197 только на 25 и 110 порты, т.е. почта, на 1.1.1.195 - ssh, dns, www, https, непревилегия. Исходящий же трафик прописываем соответственно.
Далее возникает логичная стенка, из-за того, что у нас одна подсеть. И независимо от того, что мы напишем в фаерволе, исходящий трафик будет идти с интерфейса, ближайшего к шлюзу, в данном случае это 1.1.1.195. ipforward вообще не помощьник, т.к. шлюз у нас один. Пришлось извращаться. Итак. Поднимаем NAT(PAT - точнее) на адресе 1.1.1.197.

/sbin/natd -a 1.1.1.197 -p 8669

Поднимается сокет 8669, может 8668 нам еще пригодится :-)
Далее конфигурим фаервол (обращайте внимание на номер правил):

00030  skipto 900 ip from me to any dst-port 25 out
00040  skipto 900 ip from any 25 to me in
00100  skipto 20000 ip from any to any
00900  divert 8669 ip from any to any via fxp1
00910  allow ip from any to any

Итого, получается нечто общее:

00030  skipto 900 ip from me to any dst-port 25 out
00040  skipto 900 ip from any 25 to me in
00050  allow ip from any to 1.1.1.195 dst-port 22,53,80,433,1024-65535 in via fxp1
00055  allow ip from any to 1.1.1.197 dst-port 25,110 in via fxp1
00060  allow ip from 1.1.1.195 22,53,80,433,1024-65535 to any out via fxp1
00065  allow ip from 1.1.1.197 25,110 to any out via fxp1
00070  allow ip from any to 192.168.1.2 in via fxp0 (LAN)
00080  allow ip from 192.168.1.2 to any out via fxp0 (LAN)
00090  allow ip from any to any via lo0
00100  skipto 20000 ip from any to any
00900  divert 8669 ip from any to any via fxp1
00910  allow ip from any to any
65535  deny ip from any to anу

В общем то имеем полное разделение трафика (входящего и исходящего), исключая тем самым попадания ip в black list.



Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?f=8&t=16222.

размещено: 2009-03-09,
последнее обновление: 2009-03-30,
автор: bekhterev

оценить статью:

andr, 2009-03-29 в 19:35:36

Листинг ifconfig:
broadcast поправить c 79.175.18.199 на 1.1.1.199

На РАТ завернут SSH
00010  skipto 900 ip from me to any dst-port 22 out
00020  skipto 900 ip from any 22 to me in
а по идее заворачивать надо было POP...
мож я не прав?

bekhterev, 2009-03-29 в 23:15:15

79.175.18.199 - бродкаст остался с реальным айпи (забыл потереть, сорри). В реальности у меня еще и ssh завернут через этот интерфейс. поп заворачивать сысла нет, т.к. закрыт извне.
Спасибо за указания. Вообще все взято с реальной машины. Каюсь в невнимательности.

nikll, 2009-04-10 в 10:33:04

у ipfw своя ниша у pf своя, часто они заменяют друг друга без проблем, а ipf (на мой сугубо личный взгляд) это нечто напоминающщее недоделанный pf


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 26 чел.
За последние 30 мин было: 82 человек
За сегодня было
13595 показов,
1453 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1421 секунд
Из них PHP: 51%; SQL: 49%; Число SQL-запросов: 77 шт.
Исходный размер: 96853; Сжатая: 16124