Миграция из ipfw на pf

Обсуждаем OS FreeBSD и сервисы на ней.

Re: Миграция из ipfw на pf

Сообщение root » 03 мар 2011, 21:28

mlevel писал(а):так как советовали полностью все перенести на ipfw, и pf не юзать.

в таких вещах это сложно назвать советом, кому как удобнее
я лишь подметил что ipfw kernel nat по производительности не хуже чем PF nat

mlevel писал(а):Натить 1000 человек через 1 белый ІР-адрес?

дуршsnoe писал(а):Почему через один-то? Я же грил, что натим в один адрес серую подсеть /24, а это 256 адреса в максимуме. Соотв., в твоем примере мы бы натили 1000 серых IP в четыре реальника.

+1
просто ты сказал round-robin получается мы друг друга не поняли, round-robin это когда "по кругу"
если у тя просто задача натить всех больше чем в один IP, то наверняка эта твоя 1000 человек не в одной подсети живет (я на это надеюсь)
вот и нать их по подсетям, каждую в свой реальник
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1888
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: Миграция из ipfw на pf

Сообщение mlevel » 04 мар 2011, 01:02

беда..

PF:
Код: Выделить всё
rdr inet proto tcp from <deny_clients> to any port = http -> xxx.xxx.xxx.x port 80

где:
1)xxx.xxx.xxx.x - веб сервер с HTML заглушкой.
2) <deny_clients> - IP - адреса заблоченых юзверей.

пробую перенести на ipfw:
Код: Выделить всё
${fwcmd} add 500 allow ip from table\(8\) to xxx.xxx.xxx.x 80,443,53
${fwcmd} add 505 allow ip from xxx.xxx.xxx.x 80,443,53 to table\(8\)

${fwcmd} nat 20 config if em1 log reset same_ports redirect_port tcp xxx.xxx.xxx.x:80 80
${fwcmd} add 507 nat 20 log ip from table\(8\) to any 80

${fwcmd} add 510 deny ip from table\(8\) to any in recv \*
${fwcmd} add 515 deny ip from any to table\(8\) out xmit \*

где:
1) table(8) = <deny_clients>
2) xxx.xxx.xxx.x - веб сервер с HTML заглушкой.

em1 - внешний интерфейс,
на em0 - нет интерфейсов, только куча VLAN, выступает как parent
Код: Выделить всё
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
        ether 00:1b:21:92:ba:36
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active


tail -f /var/log/security
Код: Выделить всё
Mar  3 21:22:06 router kernel: ipfw: 507 Nat TCP 10.100.0.1:4750 173.89.136.168:80 in via vlan68


tcpdump -ni em1 host 10.100.0.1 - пусто..
tcpdump -ni em0 host 10.100.0.1 - есть трафик, но без NAT..
mlevel
новичок
 
Сообщения: 24
Зарегистрирован: 26 фев 2011, 22:57

Re: Миграция из ipfw на pf

Сообщение lehisnoe » 04 мар 2011, 09:50

Аналогом PF'ного rdr в ipfw является fwd:
Код: Выделить всё
ipfw add 500 fwd xxx.xxx.xxx.x tcp from table\(8\) to any 80,443
ipfw add 501 allow tcp from xxx.xxx.xxx.x 80,443 to table\(8\)


Код: Выделить всё
     fwd | forward ipaddr | tablearg[,port]
             Change the next-hop on matching packets to ipaddr, which can be
             an IP address or a host name.  The next hop can also be supplied
             by the last table looked up for the packet by using the tablearg
             keyword instead of an explicit address.  The search terminates if
             this rule matches.

             If ipaddr is a local address, then matching packets will be for-
             warded to port (or the port number in the packet if one is not
             specified in the rule) on the local machine.
             If ipaddr is not a local address, then the port number (if speci-
             fied) is ignored, and the packet will be forwarded to the remote
             address, using the route as found in the local routing table for
             that IP.
             A fwd rule will not match layer-2 packets (those received on
             ether_input, ether_output, or bridged).
             The fwd action does not change the contents of the packet at all.
             In particular, the destination address remains unmodified, so
             packets forwarded to another system will usually be rejected by
             that system unless there is a matching rule on that system to
             capture them.  For packets forwarded locally, the local address
             of the socket will be set to the original destination address of
             the packet.  This makes the netstat(1) entry look rather weird
             but is intended for use with transparent proxy servers.

             To enable fwd a custom kernel needs to be compiled with the
             option options IPFIREWALL_FORWARD.
No users
No troubles
No money
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
lehisnoe
Site Admin
 
Сообщения: 539
Зарегистрирован: 11 июн 2008, 14:09
Откуда: Moscow

Re: Миграция из ipfw на pf

Сообщение root » 04 мар 2011, 10:39

lehisnoe писал(а):Аналогом PF'ного rdr в ipfw является fwd:

+1
непонятно зачем ты пытался в этом случае поднять NAT.
добавлю что fwd можно делать только на хост из одной IP подсети с сервером на котором выполняется fwd
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1888
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: Миграция из ipfw на pf

Сообщение mlevel » 04 мар 2011, 13:42

товарисчи, мне нуже http redirect, a fwd не меняет адрес назначения, работать не будет.
mlevel
новичок
 
Сообщения: 24
Зарегистрирован: 26 фев 2011, 22:57

Re: Миграция из ipfw на pf

Сообщение root » 04 мар 2011, 13:58

mlevel писал(а):мне нуже http redirect, a fwd не меняет адрес назначения, работать не будет.

это кто сказал ? :) будет работать
насколько мы видим ты пользуешь это для отображения какой то страницы отключенным пользователям.
мы тоже так делаем и работает это как раз на ipfw fwd + httpd(апач)

вот и меняй адрес назначения на IPшник на котором твой апач висит
вот тебе пример:
Код: Выделить всё
00080 fwd 10.0.0.2,80 tcp from table(126) to any dst-port 80,81,82,443,8080 limit src-addr 10
00081 allow icmp from table(126) to me
00082 allow tcp from table(126) to me dst-port 80
00083 allow udp from table(126) to me dst-port 53
00085 deny ip from table(126) to any

10.0.0.2 - IPшник апача
table(126) - таблица с отключенными ипами
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1888
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: Миграция из ipfw на pf

Сообщение mlevel » 04 мар 2011, 16:33

у меня апача на другом сервере!
mlevel
новичок
 
Сообщения: 24
Зарегистрирован: 26 фев 2011, 22:57

Re: Миграция из ipfw на pf

Сообщение root » 04 мар 2011, 17:17

mlevel писал(а):у меня апача на другом сервере!

и что ? но он находится в одной подсети с сервером с которого делается редирект ?
если ДА, то пропиши в fwd IPшник твоего сервера с апачем.
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1888
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: Миграция из ipfw на pf

Сообщение mlevel » 04 мар 2011, 18:25

Делал, так не работает.
Приходят пакет с другим dst ip.
mlevel
новичок
 
Сообщения: 24
Зарегистрирован: 26 фев 2011, 22:57

Re: Миграция из ipfw на pf

Сообщение root » 04 мар 2011, 19:53

mlevel писал(а):Приходят пакет с другим dst ip.

ну ессно, т.к. fwd изменяет next-hop, а не dst адрес.
ты вообще до этого пытался NAT поднять, а он заменяет src адрес, но опять же не dst адрес.

mlevel писал(а):так не работает.

изменяя на сервере доступа next-hop с помощью fwd ты просто добрасываешь пакет до своего сервера с апачем, а дальше то ты объясни этому серверу что делать с этим ;)
на сервере с апачем нужно тоже сделать fwd, как я привел пример выше (если апач на 127.0.0.1 слушает то мона вообще написать fwd 127.0.0.1,80)
т.е. перенаправляешь отключенных клиентов в свой апач, состоящий из одной страницы, которая должна отображаться при любом раскладе (ессно нуна и апач настроить)) тот обрабатывает запрос и отдает страницу клиенту "бла бла бла вы не заплатили"
а следующие правила разрешают DNS запрос и ессно 80 порт самого сервера, а последнее правило блочит весь трафик отключенных клиентов
у меня так работает без каких либо проблем.

Код: Выделить всё
# cd /usr/local/www2/
# ls -la
drwxr-xr-x   3 root  wheel   512 Jul 10  2010 .
drwxr-xr-x  16 root  wheel   512 Jul 19  2010 ..
-rw-r--r--   1 root  wheel    59 24 янв 16:42 .htaccess
drwxr-xr-x   3 root  wheel   512 Sep 16  2008 img
-rw-r--r--   1 root  wheel  9543 Jul 10  2010 index.html

# cat .htaccess
ErrorDocument 404 /index.html
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1888
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Пред.След.

Вернуться в FreeBSD

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5