URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 3212
[ Назад ]

Исходное сообщение
"pf как пометить пакеты"

Отправлено Kvantos , 19-Мрт-07 00:19 
Вопрос собственно в том как пометить с помощью pf пакеты, а затем на ДРУГОМ роутере с помощью pf их идентифицировать и применить к ним правила фильтрации.
Заранее благодарен за помощь...

Содержание

Сообщения в этом обсуждении
"pf как пометить пакеты"
Отправлено idle , 19-Мрт-07 11:44 
>Вопрос собственно в том как пометить с помощью pf пакеты, а затем
>на ДРУГОМ роутере с помощью pf их идентифицировать и применить к
>ним правила фильтрации.
>Заранее благодарен за помощь...
На другом никак. pf может пометить только для себя самого. Ну разве что завернуть поток в какой-нибудь экзотичсеский порт.
А зачем это нужно вообще?


"pf как пометить пакеты"
Отправлено Kvantos , 19-Мрт-07 17:43 
>А зачем это нужно вообще?

Сейчас постараюсь обьяснить суть моей проблемы, может быть существует более изящное ее решение...

В упрощенном виде это все выглядит так:
Есть роутер
zeus# ifconfig
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet совсем.белый.ип netmask 0xffffffe0 broadcast х.х.х.х
        inet 192.168.4.111 netmask 0xffffff00 broadcast 192.168.4.255
        ether 00:30:4f:3b:7a:2e
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
xl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        options=9<RXCSUM,VLAN_MTU>
        inet 10.240.80.1 netmask 0xffffff00 broadcast 10.240.80.255
        inet 192.168.80.1 netmask 0xffffff00 broadcast 192.168.80.255
        ether 00:50:da:35:f3:3e
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        ether 00:c1:26:05:4c:25
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33208
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet 127.0.0.1 netmask 0xff000000
pfsync0: flags=0<> mtu 2020
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492
        inet 91.124.209.28 --> 195.5.5.19 netmask 0xffffffff
        Opened by PID 737

zeus# netstat -rn
Routing tables
Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            195.5.5.19         UGS         0  3820209   tun0


rl0       смотрит на провайдера инета
rl1-tun0  pppoe укртелеком (тоже иногда инет беру)
xl0       смотрит в локальную сеть

здесь же поднят NAS exppp
с помощью PF разруливаю маршруты для users0 пользователей (или rl0 или rl1-tun0)
что то типа
pass in log on tun route-to ($if0 $gw_1) from <user_to_f> to !(self:network) flags S/SA keep state

и все были бы счасливы если бы в сети не появился еще один NAS
astra# ifconfig
rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        options=48<VLAN_MTU,POLLING>
        inet 10.240.80.200 netmask 0xffffff00 broadcast 10.240.80.255
        inet 192.168.80.200 netmask 0xffffff00 broadcast 192.168.80.255
        ether 00:e0:4c:7b:00:a2
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=48<VLAN_MTU,POLLING>
        inet 10.240.81.200 netmask 0xc0000000 broadcast 63.255.255.255
        inet 192.168.81.200 netmask 0xffffff00 broadcast 192.168.81.255
        ether 00:e0:4c:7a:00:d2
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
rl2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=48<VLAN_MTU,POLLING>
        inet 10.240.82.200 netmask 0xffffff00 broadcast 10.240.82.255
        inet 192.168.82.200 netmask 0xffffff00 broadcast 192.168.82.255
        ether 00:e0:4c:7a:00:d6
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
rl3: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        ether 00:e0:4c:63:00:fe
        media: Ethernet autoselect (10baseT/UTP)
        status: no carrier
pflog0: flags=0<> mtu 33208
pfsync0: flags=0<> mtu 2020
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet 127.0.0.1 netmask 0xff000000

astra# netstat -rn
Routing tables
Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            10.240.80.1        UGS         0   461880    rl0

prov   ukrtelekom
  |     |
  |     |
rl0   rl1
---------
zeus     |
---------
   xl0
    |---------pppoe users0 (NAS zeus)
    |
   rl0
---------
astra    |
---------
rl1   rl2
  |     |
pppoe  pppoe
users1 users2 (NAS astra)

После авторизации users1 users2 получают произвольные туны и динамические ИП из пула

Задача:
маршрутизировать некоторых пользователей из users1 и users2 через zeus:rl0,
а оставшихся через zeus:rl1

Моя идея заключалась в том чтобы на astra пометить пакеты предназначенные для "prov",
а на zeus их идентифицировать и маршрутизировать.

Примечание:
Направление маршрутизации передается из билинга (abills) через фильтры радиуса, а затем отрабатываются exppp

ls /etc/ppp/ppp.linkup
-------
MYADDR:
  !bg /usr/abills/libexec/linkupdown up INTERFACE USER HISADDR
ROUTE:
  !bg /etc/ppp/setroute up INTERFACE HISADDR
--------
т.е. непосредственно на шлюзе zeus установить роутинг для users1 users2 невозможно т.к
users1 users2 принадлежат astra:NAS

Заранее благодарен за помощь всем кто откликнется...