Death OF Freebsd

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
galaxer
рядовой
Сообщения: 29
Зарегистрирован: 2008-06-21 18:43:13
Откуда: Moscow
Контактная информация:

Re: Death OF Freebsd

Непрочитанное сообщение galaxer » 2008-10-08 12:58:24

Я попробую с IPF, но не знаю, у кого еще предложения? чтоб не использовать 35 фаерволов
galaxer

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

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Death OF Freebsd

Непрочитанное сообщение paradox » 2008-10-08 13:01:14

net.link.bridge.ipfw: 0 -> 1

galaxer
рядовой
Сообщения: 29
Зарегистрирован: 2008-06-21 18:43:13
Откуда: Moscow
Контактная информация:

Re: Death OF Freebsd

Непрочитанное сообщение galaxer » 2008-10-08 13:09:04

Я поробовал, но ниче не изменилось.

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

galaxer# sysctl net.link.bridge.ipfw=1
net.link.bridge.ipfw: 0 -> 1
galaxer

galaxer
рядовой
Сообщения: 29
Зарегистрирован: 2008-06-21 18:43:13
Откуда: Moscow
Контактная информация:

Re: Death OF Freebsd

Непрочитанное сообщение galaxer » 2008-10-08 16:45:46

Я попробовал IPFilter, но получается вот такая веселуха:

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

galaxer# cat /etc/ipfmine
#block in quick from 192.168.5.55 to any
#block in quick proto icmp from any to any
block in quick proto tcp/udp from 192.168.5.55 to any port = 23
#rdr rl2 0.0.0.0/0 port 80 -> 127.0.0.1 port 3128
#rdr rl0 0.0.0.0/0 port 21 -> 127.0.0.1 port 21
rdr rl0 0.0.0.0/0 port ftp -> 127.0.0.1 port ftp
pass in all
pass out all

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

galaxer# sh ipfilter restart
Saving firewall state tables
Disabling ipfilter.
Enabling ipfilter.
syntax error error at "rl0", line 6
galaxer#
galaxer

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Death OF Freebsd

Непрочитанное сообщение paradox » 2008-10-08 16:53:06

ipf -V

galaxer
рядовой
Сообщения: 29
Зарегистрирован: 2008-06-21 18:43:13
Откуда: Moscow
Контактная информация:

Re: Death OF Freebsd

Непрочитанное сообщение galaxer » 2008-10-08 17:00:03

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

stat@gw:/home/stat# ipf -V
ipf: IP Filter: v4.1.28 (404)
Kernel: IP Filter: v4.1.28              
Running: yes
Log Flags: 0 = none set
Default: pass all, Logging: available
Active list: 0
Feature mask: 0x10a
galaxer

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Death OF Freebsd

Непрочитанное сообщение paradox » 2008-10-08 21:03:26

осталься езе PF )))

galaxer
рядовой
Сообщения: 29
Зарегистрирован: 2008-06-21 18:43:13
Откуда: Moscow
Контактная информация:

Re: Death OF Freebsd

Непрочитанное сообщение galaxer » 2008-10-09 14:45:17

PF :

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

galaxer# cat /etc/pfmine
scrub in all
#rdr on $ext_if_expensive proto { tcp, udp } from $untrusted_lan to $ext_if_expensive port $game_ports -> $game_server port $game_ports
#block all
#pass out on $ext_if_cheap from $ext_if_cheap to any keep state
set skip on lo0 #otrubaet faervolling na interfejse lo0
#nat on 192.168.5.0/24 from rl0 to any -> rl1
rdr proto tcp from 192.168.5.55 to any port 80 -> 127.0.0.1 port 3128
block in quick proto tcp from any to any port 23
pass  in all
pass out all
Запрос вроде как на форворд идут, но на интерфейсе или на локалхосте тисипидамп ниче не слышит, только запросы на входящем интерфейсе. Браузер тупо ждет загрузки и ничего не дает. :st:
galaxer

galaxer
рядовой
Сообщения: 29
Зарегистрирован: 2008-06-21 18:43:13
Откуда: Moscow
Контактная информация:

Re: Death OF Freebsd

Непрочитанное сообщение galaxer » 2008-10-09 15:09:37

Нашел вот это:
http://osdir.com/ml/freebsd.devel.ipfw/ ... 00083.html
Quantcast
[PATCH FOR REVIEW] layer2 ipfw 'fwd' support: msg#00083
Subject: [PATCH FOR REVIEW] layer2 ipfw 'fwd' support

hi,
for those interested in using ipfw 'fwd' instructions in a bridge
(e.g. to create a transparent proxy with a bridge) here is a patch
to try for ip_fw2.c (and a trivial one-line change in ip_input.c)

The change to ip_input.c matches more closely what the comment says:
if the packet is tagged by the firewall as 'PACKET_TAG_IPFORWARD'
than you skip the pass through the firewall, but still check to see
where the packet goes.

The ip_fw2.c change does the following: when the bridge detects a
layer2 packet, it passes it to ip_input() [!!!layering violation!!!]
with a proper tag so that the packet is subject to the same processing
it would have in a router.

[BTW i believe the same approach could be used to implement 'divert'
within a bridge if we only care for IP packets -- i.e. we tag the
packet and pass it to the upper layer]


The usual restrictions apply -- if you 'forward' to another box
then it must be on the same subnet as one of the interfaces of the
middlebox, because IP addresses are unchanged. Also, despite the
fact you are doing the forwarding on a bridge, if the packet must
go out you need to set net.inet.ip.forwarding=1 because the forwarding
is done at layer 3.

-------------------------------
So, QUICK USAGE INSTRUCTIONS:

sample topology:

rl0 rl1
[clients]------[bridge]--+----[rest of the world]]
|
+----[proxy]

on clients:
no configuration necessary, as the proxy is transparent!

on bridge:

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

   sysctl net.link.ether.bridge_cfg="rl0 rl1"
   sysctl net.link.ether.bridge_ipfw=1
   sysctl net.link.ether.bridge=1
   sysctl net.inet.ip.forwarding=1
   ipfw add forward proxy proto tcp from any to any 80
on proxy:

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

  ipfw add forward localhost,8080 tcp from not me to any 80
-------------------------------

cheers
luigi

Index: ip_fw2.c

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

===================================================================
RCS file: /home/ncvs/src/sys/netinet/ip_fw2.c,v
retrieving revision 1.6.2.16
diff -u -r1.6.2.16 ip_fw2.c
--- ip_fw2.c    17 Jul 2003 06:03:39 -0000      1.6.2.16
+++ ip_fw2.c    22 Sep 2003 22:21:38 -0000
@@ -1977,12 +2022,33 @@
                                goto done;
 
                        case O_FORWARD_IP:
+#if 0
                                if (args->eh)   /* not valid on layer2 pkts */
                                        break;
+#endif
                                if (!q || dyn_dir == MATCH_FORWARD)
                                        args->next_hop =
                                            &((ipfw_insn_sa *)cmd)->sa;
                                retval = 0;
+                               if (args->eh) {
+                                   struct m_hdr tag;
+
+                                   if (hlen == 0)      /* non IP */
+                                       break;
+                                   /*
+                                    * tag with PACKET_TAG_IPFORWARD
+                                    * call ip_input() (need ip_forwarding=1
+                                    * if this has to go out)
+                                    * mark packet as comsumed by the firewall
+                                    */
+                                   tag.mh_type = MT_TAG;
+                                   tag.mh_flags = PACKET_TAG_IPFORWARD;
+                                   tag.mh_data = (caddr_t)args->next_hop;
+                                   tag.mh_next = m;
+                                   args->m = NULL;
+                                   retval = IP_FW_PORT_DENY_FLAG;
+                                   ip_input((struct mbuf *)&tag);
+                               }
                                goto done;
 
                        default:
Index: ip_input.c
===================================================================

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

RCS file: /home/ncvs/src/sys/netinet/ip_input.c,v
retrieving revision 1.130.2.53
diff -u -r1.130.2.53 ip_input.c
--- ip_input.c  23 Jun 2003 17:53:50 -0000      1.130.2.53
+++ ip_input.c  22 Sep 2003 22:23:23 -0000
@@ -462,7 +462,7 @@
                 * skip the firewall a second time
                 */
                if (args.next_hop)
-                       goto ours;
+                       goto pass;      /* XXX was 'ours' */
 
                args.m = m;
                i = ip_fw_chk_ptr(&args);
_______________________________________________
freebsd-ipfw@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ipfw
To unsubscribe, send any mail to "freebsd-ipfw-unsubscribe@xxxxxxxxxxx"
galaxer

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Death OF Freebsd

Непрочитанное сообщение paradox » 2008-10-09 19:01:26

я этот патч видел
он 2003 года
посему хочеться верить что уже как то внесли тот код


насчет pf
нужно опять в sysctl смотреть
там тоже есть флаги на включение фильтрации на бридже по PF

galaxer
рядовой
Сообщения: 29
Зарегистрирован: 2008-06-21 18:43:13
Откуда: Moscow
Контактная информация:

Re: Death OF Freebsd

Непрочитанное сообщение galaxer » 2008-10-09 19:51:07

Я еще поиграюсь с PF
Но смутно верится уже. Создателю патча я письмо написал уже.
Я уже собрался что-то сам вот делать. Жость. Коды там по 6000 строк
И еще: Если патч не включили, значит была причина, значит нат переставал работать, или еще что-нибудь, или бридж становился не как бридж
galaxer

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Death OF Freebsd

Непрочитанное сообщение paradox » 2008-10-09 20:02:23

ну если надумаешь патчить то вот место где надо патчить

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

                        case O_FORWARD_IP: {
                                struct sockaddr_in *sa;
                                sa = &(((ipfw_insn_sa *)cmd)->sa);
                                if (args->eh)   /* not valid on layer2 pkts */
                                        break;
                                if (!q || dyn_dir == MATCH_FORWARD) {
                                        if (sa->sin_addr.s_addr == INADDR_ANY) {
                                                bcopy(sa, &args->hopstore,
                                                        sizeof(*sa));
                                                args->hopstore.sin_addr.s_addr =
                                                    htonl(tablearg);
                                                args->next_hop =
                                                    &args->hopstore;
                                        } else {
                                                args->next_hop = sa;
                                        }
                                }
                                retval = IP_FW_PASS;
                            }
                            goto done;

                        case O_NETGRAPH:
а вообще
попробуй в ipfw вместо fwd
divert

ну и насчет pf думаю он помощнее
искать надо его опции

galaxer
рядовой
Сообщения: 29
Зарегистрирован: 2008-06-21 18:43:13
Откуда: Moscow
Контактная информация:

Re: Death OF Freebsd

Непрочитанное сообщение galaxer » 2008-10-09 20:32:25

forward дописывает в заголовок дестинайшн, например 127.0.0.1
а диверт не прописывает ничего и посылает пакеты в неизмененном виде в порт или куда там (низкоуровневая хрень)
А рерирект там ваще кучу всяких таблиц пишет
Это 3 разные вещи
galaxer

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Death OF Freebsd

Непрочитанное сообщение paradox » 2008-10-09 20:36:30

вобщем то да
диверт переписывает пакет полностью

насчет редиректа я ничего не говорил)

galaxer
рядовой
Сообщения: 29
Зарегистрирован: 2008-06-21 18:43:13
Откуда: Moscow
Контактная информация:

Re: Death OF Freebsd

Непрочитанное сообщение galaxer » 2008-10-09 20:38:39

диверт ниче не переписывает а отправляет его тупо в том же виде, например в нат, а нат уже сам разбирается с ним
galaxer

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Death OF Freebsd

Непрочитанное сообщение paradox » 2008-10-09 20:40:05

судя по этой части кода
if (args->eh) /* not valid on layer2 pkts */
break;
в 7 стаибл так точно
с ipfw + fwd на бридже можно не играться
а только патчить

насчет pf еще можно думать
в код лень к нему лезть

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Death OF Freebsd

Непрочитанное сообщение paradox » 2008-10-09 20:42:20

galaxer писал(а):диверт ниче не переписывает а отправляет его тупо в том же виде, например в нат, а нат уже сам разбирается с ним
я это и имел ввиду
токо это в моем понимании что переписывает - перенаправляет
а тупо копирует это tee
а вот fwd дописывает и перенаправляет

galaxer
рядовой
Сообщения: 29
Зарегистрирован: 2008-06-21 18:43:13
Откуда: Moscow
Контактная информация:

Re: Death OF Freebsd

Непрочитанное сообщение galaxer » 2008-10-09 20:52:32

по сути ты предлагаешь рубить только PF?
redirect мне не подойдет точно, Это прерогатива ната
galaxer

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Death OF Freebsd

Непрочитанное сообщение paradox » 2008-10-09 20:55:12

я предлагаю попробовать патч
место куда поставить я показал
если не сработает
значит крутить PF - тоесть разбираться в нем
неверится мне что то то он этого не умеет
ipfw точно неумеет
коммент ятебе показал))

galaxer
рядовой
Сообщения: 29
Зарегистрирован: 2008-06-21 18:43:13
Откуда: Moscow
Контактная информация:

Re: Death OF Freebsd

Непрочитанное сообщение galaxer » 2008-10-09 20:55:44

Там тоже только rdr
galaxer

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Death OF Freebsd

Непрочитанное сообщение paradox » 2008-10-09 20:58:33

ты хочешь сказать что pf неумеет заворачивать пакет на прокси - когда тот в режиме транспарент?
умеет
точно также как это делает Ipfw+fwd
просто это возможно не rdr делаеться
почитать надо
на openbsd.org
хорошо о нем рассписано

Аватара пользователя
Grishun_U_S
сержант
Сообщения: 221
Зарегистрирован: 2008-04-12 18:26:54
Откуда: Samara
Контактная информация:

Re: Death OF Freebsd

Непрочитанное сообщение Grishun_U_S » 2008-10-12 8:37:09

paradox писал(а):ты хочешь сказать что pf неумеет заворачивать пакет на прокси - когда тот в режиме транспарент?
умеет
точно также как это делает Ipfw+fwd
просто это возможно не rdr делаеться
почитать надо
на openbsd.org
хорошо о нем рассписано
делается это именно с помощью rdr
например :

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

rdr on 192.168.0.1 proto { tcp, udp } from 192.168.0.0/24 to 192.168.0.1 port 80 -> $192.168.0.1 port 3128
192.168.0.1 -- наш шлюз. Перенаправили весь трафик идущий к нашему шлюзу по 80-му порту на вход squid'а.
Изображение

galaxer
рядовой
Сообщения: 29
Зарегистрирован: 2008-06-21 18:43:13
Откуда: Moscow
Контактная информация:

Re: Death OF Freebsd

Непрочитанное сообщение galaxer » 2008-10-13 11:29:56

У меня БРИДЖ!!!
Нету шлюзов

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

galaxer# cat /etc/pfmine 
scrub in all
#rdr on $ext_if_expensive proto { tcp, udp } from $untrusted_lan to $ext_if_expensive port $game_ports -> $game_server port $game_ports
#block all
#pass out on $ext_if_cheap from $ext_if_cheap to any keep state
set skip on lo0
#rdr on 192.168.5.25 proto tcp from 192.168.5.55 to any port 80 -> 192.168.2.2 port 3128
#rdr proto tcp from 192.168.5.55 to any port 80 -> 192.168.5.25 port 3128
#nat on 192.168.5.0/24 from rl0 to any -> rl1
#rdr proto tcp from 192.168.5.55 to any port 80 -> 192.168.2.2 port 80
#block in quick proto tcp from any to any port 23
pass  in all
pass out all
:st:
galaxer

galaxer
рядовой
Сообщения: 29
Зарегистрирован: 2008-06-21 18:43:13
Откуда: Moscow
Контактная информация:

Re: Death OF Freebsd

Непрочитанное сообщение galaxer » 2008-10-13 11:30:24

Все перепробовал
galaxer

Аватара пользователя
Grishun_U_S
сержант
Сообщения: 221
Зарегистрирован: 2008-04-12 18:26:54
Откуда: Samara
Контактная информация:

Re: Death OF Freebsd

Непрочитанное сообщение Grishun_U_S » 2008-10-13 11:58:32

galaxer писал(а):У меня БРИДЖ!!!
Нету шлюзов

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

galaxer# cat /etc/pfmine 
scrub in all
#rdr on $ext_if_expensive proto { tcp, udp } from $untrusted_lan to $ext_if_expensive port $game_ports -> $game_server port $game_ports
#block all
#pass out on $ext_if_cheap from $ext_if_cheap to any keep state
set skip on lo0
#rdr on 192.168.5.25 proto tcp from 192.168.5.55 to any port 80 -> 192.168.2.2 port 3128
#rdr proto tcp from 192.168.5.55 to any port 80 -> 192.168.5.25 port 3128
#nat on 192.168.5.0/24 from rl0 to any -> rl1
#rdr proto tcp from 192.168.5.55 to any port 80 -> 192.168.2.2 port 80
#block in quick proto tcp from any to any port 23
pass  in all
pass out all
:st:
и что ты вывалил список закомменченных правил?
Изображение