PF Редирект из абонентской сети на внутреннюю страницу.

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
RedzZz
проходил мимо
Сообщения: 4
Зарегистрирован: 2013-06-20 16:53:45
Откуда: Донецк
Контактная информация:

PF Редирект из абонентской сети на внутреннюю страницу.

Непрочитанное сообщение RedzZz » 2013-06-20 17:25:49

Вообще задача стоит следующего плана, мне нужно написать информационную страницу для абонентов в сети, скрипт берет из биллнга ипы и заносит их в файл, я этот файл просто цепляю в pf.conf и он отрабатывает редирект всего трафика, с 80 порта абонентов, на нас с 81. И тем самым пользователь читает новость затем нажимает кнопку ознакомлен, тут уже выполняется скрипт на удаление из файла с правила. И его перенаправляет на тот сайт куда он шел.
сами страницы готовы и могут работать, а вот правила не срабатывают.
и пользователь как шел на ya.ru так туда и заходит.

Проблема именно в правилах кто что может посоветовать? То ли я что-то не понимаю.

Сразу говорю конфиги не я настраивал, поэтому кидаться тухлыми яйцами не надо.

Техническая часть:
NAS FreeBSD 9.0 он же сервер биллинга mikbill
Используется связка MPD+PF+Radius.
Скрипт работает на php.

2 интерфейса:

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

em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=2198<VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC>
        ether 68:05:ca:02:c9:46
        inet6 fe80::6a05:caff:fe02:c946%em0 prefixlen 64 scopeid 0x1
        inet 5.153.128.66 netmask 0xfffffff8 broadcast 5.153.128.71
        inet 5.153.128.67 netmask 0xfffffff8 broadcast 5.153.128.71
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active

bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=c0198<VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,VLAN_HWTSO,LINKSTATE>
        ether 00:22:64:cc:39:fb
        inet6 fe80::222:64ff:fecc:39fb%bge0 prefixlen 64 scopeid 0x6
        inet 10.0.50.254 netmask 0xfffffc00 broadcast 10.0.51.255
        inet 10.0.17.254 netmask 0xfffffe00 broadcast 10.0.17.255
        inet 10.0.70.254 netmask 0xffffff00 broadcast 10.0.70.255
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
Соединение абонов происходит по ng* интерфейсам.

mpd5.conf

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

startup:
      2 # configure mpd users
      3     set user admin admin admin
      4 # configure the console
      5     set radsrv peer 127.0.0.1 testing123
      6     set radsrv self 127.0.0.1 3799
      7     set radsrv open
      8     set console self 127.0.0.1 5005
      9     set console open
     10 # configure the web server
     11     set web self 0.0.0.0 5006
     12     set web open
     13
     14 default:
     15     load pppoe_server
     16 #    load pptp_server
     17
     18 pptp_server:
     19     create bundle template C
     20     set iface idle 0
     21     set iface enable tcpmssfix
     22     set ipcp yes vjcomp
     23     set ipcp ranges 172.28.0.1/32 ippool pool1
     24 #    set ipcp dns 10.1.2.3 194.44.58.85
     25     set ipcp dns 212.66.32.194 212.66.32.202
     26 #    set ipcp dns 8.8.8.8 8.8.4.4
     27     set bundle enable compression
     28     set iface enable nat
     29     create link template L  pptp
     30     set link action bundle C
     31     set link enable multilink
     32     set link yes acfcomp protocomp
     33     set link no eap
     34     set link no chap-msv1
     35     set link no chap-msv2
     36     set link no chap-md5
     37     set link enable chap pap
     38     set link enable
     39     set link keep-alive 30 120
     40     set link mtu 1480
     41     set link mru 1480
     42     set link enable peer-as-calling
     43 set pptp self 10.2.0.1
     44     load server_common
     45
     46 pppoe_server:
     47
     48     create bundle template B
     49     set iface idle 0
     50     set iface enable tcpmssfix
     51     set ipcp no vjcomp
     52     set ipcp ranges 172.28.0.1/32 ippool pool1
     53 #    set ipcp dns 10.1.2.3 194.44.58.85
     54 #    set ipcp dns 212.66.32.202 212.66.32.194
     55     set ipcp dns 8.8.8.8 8.8.4.4
     56     set bundle enable compression
     57     create link template common pppoe
     58     set link mtu 1460
     59     set link mru 1460
     60     set link enable multilink
     61     set link action bundle B
     62     set link no eap
     63     set link no chap-msv1
     64     set link no chap-msv2
     65     set link no chap-md5
     66     set link enable chap pap
     67     set link enable
     68 ....
     69     set link yes acfcomp protocomp
     70     set link enable report-mac
     71     set link enable multilink
     72     load server_common
     73     set pppoe service "*"
     74
     75     create link template bge0 common
     76     set pppoe iface bge0
     77     set link enable incoming
     78
     79
     80 server_common:
     81     set link no eap
     82     set link yes chap-md5
     83     set link keep-alive 30 120
     84     set link enable incoming
     85     set link no acfcomp protocomp
     86     load radius
     87
     88 radius:
     89     set radius config /usr/local/etc/mpd5/radius.conf
     90     set radius retries 3
     91     set radius timeout 3
     92     set radius me 127.0.0.1
     93     set radius identifier NAS
     94     set auth acct-update 300
     95     set auth enable radius-auth
     96     set auth enable radius-acct
     97     set radius enable message-authentic

pf.conf

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

 1#MACRO
      2 ext_if="em0"
      3 me="5.153.128.67"
      4
      5 set limit states 120000
      6
      7 rdr on em0 proto tcp from 172.28.50.17 to any port 80 -> 5.153.128.67 port 81 //Мое правило для теста которое неработает.
      8 nat on em0 from 172.28.0.0/16 to any -> 5.153.128.67
      9 #nat on vlan41 from 172.16.5.0/24 to any -> 5.153.128.67
Заранее благодарен. Если решим проблему, могу потом скриптом поделится.
Последний раз редактировалось f_andrey 2013-06-20 19:34:42, всего редактировалось 1 раз.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума.

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

rmn
старшина
Сообщения: 427
Зарегистрирован: 2008-10-03 18:52:02

Re: PF Редирект из абонентской сети на внутреннюю страницу.

Непрочитанное сообщение rmn » 2013-06-20 22:44:10

RedzZz писал(а): 7 rdr on em0 proto tcp from 172.28.50.17 to any port 80 -> 5.153.128.67 port 81
на внешнем интерфейсе, пакеты from - это те, что пришли из инета. Так что from 172.28.0.0/16 там никогда не будет.
Надо что-то вроде:

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

rdr on $int_if proto tcp from 172.28.50.17 to $ext_if port 80 -> 127.0.0.1 port 81 

RedzZz
проходил мимо
Сообщения: 4
Зарегистрирован: 2013-06-20 16:53:45
Откуда: Донецк
Контактная информация:

Re: PF Редирект из абонентской сети на внутреннюю страницу.

Непрочитанное сообщение RedzZz » 2013-06-21 13:09:39

rmn писал(а):
RedzZz писал(а): 7 rdr on em0 proto tcp from 172.28.50.17 to any port 80 -> 5.153.128.67 port 81
на внешнем интерфейсе, пакеты from - это те, что пришли из инета. Так что from 172.28.0.0/16 там никогда не будет.
Надо что-то вроде:

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

rdr on $int_if proto tcp from 172.28.50.17 to $ext_if port 80 -> 127.0.0.1 port 81 
Вот в этом и проблема, но я пытался подставлять другие интерфейсы, bge0 - и было тоже самое. С ng* проблемы т.к никогда не знаешь какой им будет присвоен номер интерфейса, хотя где-то читал, что можно поставить просто ng0 или ng и должно работать, но так и не завелось.

mikie
мл. сержант
Сообщения: 84
Зарегистрирован: 2012-11-21 18:33:03

Re: PF Редирект из абонентской сети на внутреннюю страницу.

Непрочитанное сообщение mikie » 2013-06-22 14:37:05

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

rdr on $ext_if proto tcp from any to 172.28.50.17 port 80 -> 5.153.128.67 port 81
но на 5.153.128.67 port 81 должны быть настроены правила которые либа завернут пользователя в инфо либа выпустят в инет

RedzZz
проходил мимо
Сообщения: 4
Зарегистрирован: 2013-06-20 16:53:45
Откуда: Донецк
Контактная информация:

Re: PF Редирект из абонентской сети на внутреннюю страницу.

Непрочитанное сообщение RedzZz » 2013-07-01 1:06:54

rmn писал(а):
RedzZz писал(а): 7 rdr on em0 proto tcp from 172.28.50.17 to any port 80 -> 5.153.128.67 port 81
на внешнем интерфейсе, пакеты from - это те, что пришли из инета. Так что from 172.28.0.0/16 там никогда не будет.
Надо что-то вроде:

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

rdr on $int_if proto tcp from 172.28.50.17 to $ext_if port 80 -> 127.0.0.1 port 81 
Спасибо тебе rmn, благодаря тебе понял логику. Уже у 2х клиентов реализовал. Если кому-то будет интересно, выложу в ближайшее время с подробным маном по установке.

Правило было следующего вида для ng:

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

rdr on ng0 proto tcp from 172.28.50.17 to any port 80 -> 127.0.0.1 port 81

Dmitriy_3206
проходил мимо

Re: PF Редирект из абонентской сети на внутреннюю страницу.

Непрочитанное сообщение Dmitriy_3206 » 2013-07-01 13:46:03

А зачем используете ip в явном виде - это ж конфиг разрастется. Таблицы тут явно напрашиваются

Dmitriy_3206
проходил мимо

Re: PF Редирект из абонентской сети на внутреннюю страницу.

Непрочитанное сообщение Dmitriy_3206 » 2013-07-01 13:52:24

Дополнение в правиле RDR Вам обязательно надо использовать quick
иначе пакет продолжит проходить цепочку правил, а ниже у Вас правило нат применяется. (на сколько я понял для себя логику PF то применяется последнее - т.е. применяться только nat)

RedzZz
проходил мимо
Сообщения: 4
Зарегистрирован: 2013-06-20 16:53:45
Откуда: Донецк
Контактная информация:

Re: PF Редирект из абонентской сети на внутреннюю страницу.

Непрочитанное сообщение RedzZz » 2013-07-05 14:14:22

Это для теста одного пользователя, а так да, я использую таблицу с ипами. Есть вопрос по поводу интерфейса, как узнавать какой интерфейс ng* у пользователя в данный момент. Или можно ли им, каким нибудь способом присвоить одинаковые названия? Или шаблон?

grey_airman
проходил мимо
Сообщения: 1
Зарегистрирован: 2013-07-24 8:40:31

Re: PF Редирект из абонентской сети на внутреннюю страницу.

Непрочитанное сообщение grey_airman » 2013-07-24 8:47:25

RedzZz писал(а):
rmn писал(а):
RedzZz писал(а): 7 rdr on em0 proto tcp from 172.28.50.17 to any port 80 -> 5.153.128.67 port 81
на внешнем интерфейсе, пакеты from - это те, что пришли из инета. Так что from 172.28.0.0/16 там никогда не будет.
Надо что-то вроде:

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

rdr on $int_if proto tcp from 172.28.50.17 to $ext_if port 80 -> 127.0.0.1 port 81 
Спасибо тебе rmn, благодаря тебе понял логику. Уже у 2х клиентов реализовал. Если кому-то будет интересно, выложу в ближайшее время с подробным маном по установке.

Правило было следующего вида для ng:

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

rdr on ng0 proto tcp from 172.28.50.17 to any port 80 -> 127.0.0.1 port 81
Очень интересуюсь, а будет МАН :good: ?