The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Интернет-шлюз с использованием PF"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Интернет-шлюз с использованием PF"  +/
Сообщение от auto_tips (??) on 10-Дек-08, 09:50 
O пакетном фильтре (PF) написано довольно много статей. Вот и я хочу предложить свою реализацию Интернет-шлюза с
использованием  PF. Раздача Интернета для локальной сети происходит через NAT и основана на Packet Tagging. Плюсом этого
метода является то что упрощается настройка правил для FTP (ftp-proxy не используется), как для клиентов за шлюзом, так и для
возможной публикации "внутреннего" ftp-сервера в мир.

Для простоты приведу пример с 1 внешним и 1 внутренним интерфейсом. На шлюзе также запущен DNS-сервер. Пользователям
локальной сети разрешен доступ на все порты без исключений по протоколам TCP, UDP, из ICMP разрешен только ping. В качестве
ОС выступает FreeBSD7.0

Для начала определим интерфейсы с помощью макросов

   ext_if="rl0"
   int_if="sk1"

   dns="ААА.ААА.ААА.ААА"
   lan="192.168.1.0/24"

   table <no_if> {BBB.BBB.BBB.BBB, 192.168.1.1, 127.0.0.1} persist

   set skip on lo
   set loginterface rl0
   set ruleset-optimization basic
   set block-policy return
   scrub in all no-df random-id

   ##### INET FOR LAN

   nat on $ext_if tag LAN_INET_NAT_TCP_UDP tagged LAN_INET_TCP_UDP -> $ext_if:0
   nat on $ext_if tag LAN_INET_NAT_ICMP tagged LAN_INET_ICMP -> $ext_if:0

   ######

   block in
   block out
   antispoof quick for { lo $int_if }

   ##############       EXT_IF_OUT

   pass out quick on $ext_if inet tagged LAN_INET_NAT_TCP_UDP
   pass out quick on $ext_if inet tagged LAN_INET_NAT_ICMP
  
   pass out quick on $ext_if inet proto {tcp udp} from $ext_if to $dns port = dns

   pass out quick on $ext_if inet proto icmp from $ext_if to any icmp-type echoreq

   ##############         EXT_IF_IN

   pass in quick on $ext_if inet proto tcp from any to $ext_if port = ssh synproxy state (max 10)
   pass in quick on $ext_if inet proto icmp from any to $ext_if icmp-type echoreq

   ##############   INT_IF_IN

   pass in quick on $int_if inet proto {tcp udp} from $lan to !<no_if> tag LAN_INET_TCP_UDP
   pass in quick on $int_if inet from $lan to $int_if

   pass in quick on $int_if inet proto icmp from $lan to !<no_if>  icmp-type echoreq tag LAN_INET_ICMP
   pass in quick on $int_if inet proto icmp from $lan to $int_if icmp-type echoreq

Пояснения.

Пришедшие на внутр. интерфейс пакеты "метятся". Метятся только те пакеты, у которых dst addr любой, кроме всех внутренних и
внешних интерфейсов. Это необходимо, если есть несколько подсетей и вы не хотите, что бы кто-либо из одной сети мог
подключится к висящему сервису на другом интерфейсе.

Впринципе здесь можно  вместо  !<no_if> указать any.
Весь исходящий трафик с сервера в "мир" (кроме ДНС) и локальную сеть блокируется.

ААА.ААА.ААА.ААА - IP DNS-сервера провайдера.

URL:
Обсуждается: http://www.opennet.dev/tips/info/1867.shtml

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Интернет-шлюз с использованием PF"  +/
Сообщение от skif (??) on 10-Дек-08, 09:50 
мда ну и пояснения у вас :) что пояснил что не пояснил :)
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "Интернет-шлюз с использованием PF"  +/
Сообщение от artemrts email(ok) on 10-Дек-08, 10:23 
А что не понятно-то?
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "Интернет-шлюз с использованием PF"  +/
Сообщение от skif (??) on 10-Дек-08, 11:11 
да я не об этом, ну просто я не вижу смысла например выкладывания конфига просто так, ну вот сами посудите, те кто опытные и так все знают и видят и простые правила сами пишут :)
я так полагаю все же сей конфиг расчитан как раз для молодых, а раз для молодых то трудитесь объяснять ибо смысла нет в нем:)
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "Интернет-шлюз с использованием PF"  +/
Сообщение от abigor email on 10-Дек-08, 10:42 
что-то ни чего нового я для себя тут не нашел
кажется лучше всего не городить такие вот рецеплы (статьи) а почитать либо man pf.conf ну а если туго с en то обратиться по ссылке http://house.hcn-strela.ru/BSDCert/BSDA-course/apcs02.html и написать правила для себя.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "Интернет-шлюз с использованием PF"  +/
Сообщение от abigor email on 10-Дек-08, 10:43 
это я именно в виду не для автора, а для молодых админов которые первый раз с данным вопросом сталкнулись
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "Интернет-шлюз с использованием PF"  +/
Сообщение от muaddib (??) on 10-Дек-08, 12:11 
"Интернет шлюз" ну веб и аська с игрушками работать так будут, а ftp, DC++ в активном режиме, IP-TV (IGMP-multicast) ?
Лучше было назвать статью "Простой пример тэгирования пакетов на BSD PF" - в этом ключе хорошая статья, спасибо :)
А если поподробнее и для полноценного шлюза - то нет лучше доки по PF чем выше указанный раздел из курса подготовки к BSDA - все разъяснено практически, есть примеры, есть переведенный вариант :-) P.S. отличный пакетный фиьтр, жаль на линукс его не портировали ещё.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "Интернет-шлюз с использованием PF"  +/
Сообщение от artemrts email(ok) on 10-Дек-08, 12:22 
>"Интернет шлюз" ну веб и аська с игрушками работать так будут, а
>ftp, DC++ в активном режиме, IP-TV (IGMP-multicast) ?
>Лучше было назвать статью "Простой пример тэгирования пакетов на BSD PF" -
>в этом ключе хорошая статья, спасибо :)
>А если поподробнее и для полноценного шлюза - то нет лучше доки
>по PF чем выше указанный раздел из курса подготовки к BSDA
>- все разъяснено практически, есть примеры, есть переведенный вариант :-) P.S.
>отличный пакетный фиьтр, жаль на линукс его не портировали ещё.

  FTP работает отлично.
  Я привел лишь небольшую часть, что использую сам на своих серверах. Ничто не мешает добавить правила для того же IGMP. Здесь просто изложил один из способов раздачи инета, используя теггирование в PF.


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

8. "Интернет-шлюз с использованием PF"  +/
Сообщение от muaddib (??) on 10-Дек-08, 12:58 
Было бы здорово если бы вторым вашим примером использования тэгирования было их применение на практике например в т.н. траффик-шейпинге c ALTQ. Обычные задачи можно и без тегирования сделать, а хорошо бы было показать где тэгирование вне конкуренции.
P.S.
про IP-TV вопрос был с подвохом, имхо просто правил не достаточно будет (и вообще просто PF) -  но это решабельно, если кому известен способ кроме самопальной переделки линуксового igmpproxy - поделитесь ссылкой если не затруднит.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

13. "Интернет-шлюз с использованием PF"  +/
Сообщение от linked (ok) on 10-Дек-08, 23:05 
Мне так и не удалсь победить мультикаст. Пытался через mrouted.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

18. "Интернет-шлюз с использованием PF"  +/
Сообщение от muaddib (??) on 11-Дек-08, 16:43 
IP-TV на IGMP multicast я нашел только способ описанный на форуме корбины
http://homenet.corbina.net/index.php?showtopic=86926&pid=106...
мне повторить удалось (хотя и другой провайдер) на 7.0. Жалко что автор там не облек в форму порта freebsd вариант igmpproxy.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

20. "Интернет-шлюз с использованием PF"  +/
Сообщение от pepelac on 13-Дек-08, 00:25 
Аналогично - воевал очень долго. pf+mrouted+multicast!=friendship. ipfw+mrouted работает замечательно, а с pf ни в какую.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

23. "Интернет-шлюз с использованием PF"  +/
Сообщение от muaddib (??) on 13-Дек-08, 14:53 
2 pepelac: pf+igmpproxy=IP-TV/friendship - работает, если сделать так как написано по указанной мной ссылке
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

9. "Интернет-шлюз с использованием PF"  +/
Сообщение от abigor email on 10-Дек-08, 13:31 
При таком подходе, да клиенты внутри сети смогут ходить на ftp в инете, а вот публиковать внутренней ftp придется все же с использованием proxy-ftp иначе для нормальной работы ни как.
----------------------------------
P.S. но если я ошибаюсь то покажите пальцем примером или линком
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

10. "Интернет-шлюз с использованием PF"  +/
Сообщение от artemrts email(ok) on 10-Дек-08, 13:46 
>При таком подходе, да клиенты внутри сети смогут ходить на ftp в
>инете, а вот публиковать внутренней ftp придется все же с использованием
>proxy-ftp иначе для нормальной работы ни как.
>----------------------------------
>P.S. но если я ошибаюсь то покажите пальцем примером или линком

Ошибаетесь. необходимо просто добавить правило редиректа для внешнего интерфейса + разрешить исходящий траффик для внутреннего на сервер, на котором запущена служба ftp.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

14. "Интернет-шлюз с использованием PF"  +/
Сообщение от abigor email on 11-Дек-08, 05:19 
Да? а мы говорим по активный или пассивные режимы?
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

15. "Интернет-шлюз с использованием PF"  +/
Сообщение от muaddib (??) on 11-Дек-08, 12:56 
Просто rdr aka порт-маппинг даст только пассивный режим, делал, уперся в это, переделал на ftp-proxy с помощью anchor как учат в доках. Вы не ответили про шейпинг - у меня есть гипотеза что с помощью тегирования можно приоритеты для входящего трафика сделать на основании тегов в зависимости от того на какие порты порты/службы хотел клиент из внутренней сети обратиться (маркируем пришедшее на внутренний интерфейс, шейпим то маркерам на внешнем интерфейсе) но я сомневаюсь.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

16. "Интернет-шлюз с использованием PF"  +/
Сообщение от artemrts email(ok) on 11-Дек-08, 13:04 
>Просто rdr aka порт-маппинг даст только пассивный режим, делал, уперся в это,
>переделал на ftp-proxy с помощью anchor как учат в доках. Вы
>не ответили про шейпинг - у меня есть гипотеза что с
>помощью тегирования можно приоритеты для входящего трафика сделать на основании тегов
>в зависимости от того на какие порты порты/службы хотел клиент из
>внутренней сети обратиться (маркируем пришедшее на внутренний интерфейс, шейпим то маркерам
>на внешнем интерфейсе) но я сомневаюсь.

Чесно сказать, шейпить таким образом не пробовал. В тех случаях где нужно ограничение, использую думминет.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

17. "Интернет-шлюз с использованием PF"  +/
Сообщение от abigor email on 11-Дек-08, 16:34 
Мой вопрос был больше адресован для пользователя artemrts, но оно так и есть, если хочется оба режима, хочешь не хочешь придется пользовать якоря и proxy-ftp
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

11. "Интернет-шлюз с использованием PF"  +/
Сообщение от slepnoga email(??) on 10-Дек-08, 16:15 
PPtP,IPsec,PnP kak sdelat ?
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

12. "Интернет-шлюз с использованием PF"  +/
Сообщение от iZEN (ok) on 10-Дек-08, 19:05 
http://www.opennet.dev/base/net/mpd_pptp_vpn.txt.html
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

19. "Интернет-шлюз с использованием PF"  +/
Сообщение от Добрый Дохтур on 12-Дек-08, 12:31 
и где там про pf, точнее, про пропуск pptp из "серой"  сети силами pf?
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

21. "Интернет-шлюз с использованием PF"  +/
Сообщение от q (??) on 13-Дек-08, 02:37 
Пропуск PPTP делается средствами какого-нибудь PPTP-прокси, а не файрвола. pf не лезет на прикладной уровень, в отличие от iptables.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

22. "Интернет-шлюз с использованием PF"  +/
Сообщение от Добрый Дохтур on 13-Дек-08, 03:10 
угу. а ещё в отличие от ipfilter, natd, ng_nat и ipfw nat.
Гонять данные из ядра в юзерспей и обратно - это очень полезно.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

27. "Интернет-шлюз с использованием PF"  +/
Сообщение от baradatiy on 15-Дек-08, 12:13 
А на чем споткнулись, когда pptp из серой сети хотели пропустить?
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

29. "Интернет-шлюз с использованием PF"  +/
Сообщение от slepnoga email(??) on 26-Дек-08, 18:02 
на трекинге соединеии (openBSD);
больше 1 коннекта не проходит;


Так как все таки  с UPnp ?

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

25. "Интернет-шлюз с использованием PF"  +/
Сообщение от iZEN (ok) on 14-Дек-08, 14:28 
http://ezine.daemonnews.org/200406/mpd.html

http://fiery-fenix.kiev.ua/archives/17-FreeBSD_i_GRE._Proksi...

оно?

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

33. "Интернет-шлюз с использованием PF"  +/
Сообщение от slepnoga (??) on 08-Июн-10, 01:52 
>http://ezine.daemonnews.org/200406/mpd.html
>
>http://fiery-fenix.kiev.ua/archives/17-FreeBSD_i_GRE._Proksi...
>
>оно?

я же написал - опенок.
где там ipfw в базе, покажи

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

24. "Интернет-шлюз с использованием PF"  +/
Сообщение от ugenk on 14-Дек-08, 01:37 
"из ICMP разрешен только ping"
Руки за такое отрывать
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

26. "Интернет-шлюз с использованием PF"  +/
Сообщение от vitalic email on 14-Дек-08, 17:56 
>"из ICMP разрешен только ping"
>Руки за такое отрывать

Да что ты говоришь.
Вот таких так ты, таким да отрывать нада))

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

28. "Интернет-шлюз с использованием PF"  +/
Сообщение от fank on 16-Дек-08, 11:33 
PMTU Discover
почитай, умник
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

31. "Интернет-шлюз с использованием PF"  +/
Сообщение от artemrts email(??) on 01-Авг-09, 17:27 
Это ты читай, умник...
http://en.wikipedia.org/wiki/Path_MTU_discovery
Там же четко написано
Path MTU discovery works by setting the DF (Don't Fragment) option bit in the IP headers of outgoing packets. Then, any device along the path whose MTU is smaller than the packet will drop it, and send back an ICMP "Fragmentation Needed" (Type 3, Code 4) message containing its MTU, allowing the source host to reduce its path MTU appropriately. The process repeats until the MTU is small enough to traverse the entire path without fragmentation.

Тут либо ты на en не понимаеш, либо не понимаеш принципы работы keep state в PF...

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

32. "Интернет-шлюз с использованием PF"  +/
Сообщение от Sem email(ok) on 03-Авг-09, 15:32 
>[оверквотинг удален]
>Path MTU discovery works by setting the DF (Don't Fragment) option bit
>in the IP headers of outgoing packets. Then, any device along
>the path whose MTU is smaller than the packet will drop
>it, and send back an ICMP "Fragmentation Needed" (Type 3, Code
>4) message containing its MTU, allowing the source host to reduce
>its path MTU appropriately. The process repeats until the MTU is
>small enough to traverse the entire path without fragmentation.
>
>Тут либо ты на en не понимаеш, либо не понимаеш принципы работы
>keep state в PF...

Ну и как это будет работать, если "из ICMP разрешен только ping"?

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

30. "Интернет-шлюз с использованием PF"  +/
Сообщение от Sem (??) on 06-Фев-09, 02:01 
Не вижу смысла делать два тега LAN_INET_TCP_UDP и LAN_INET_ICMP.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру