Перенаправление трафика пользователя.

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
novik
ефрейтор
Сообщения: 50
Зарегистрирован: 2018-07-26 23:52:57

Перенаправление трафика пользователя.

Непрочитанное сообщение novik » 2019-06-09 15:00:26

Как с помощью PF реализовать такой функционал?
Как в iptables перенаправить трафика нужного пользователя в другой интерфейс?

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

iptables -t mangle -N markrt
iptables -t mangle -F markrt

#в локальную сеть не маркируем
iptables -t mangle -A markrt -d 172.16.0.0/24 -j RETURN
iptables -t mangle -A markrt -m connmark ! --mark 0 -j RETURN
iptables -t mangle -A markrt -j MARK --set-mark 10

iptables -t mangle -A OUTPUT -m owner --uid-owner 1001  -j markrt

#если приложение не прибито к интерфейсу eth1, то адрес будет кривым. исправляем
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

#делаем default маршрут, поменять на свое, table 10 - оставить
ip route add default dev eth1 via 172.16.0.1 table 10
#пакеты, промаркированные 0xa должны маршрутизироваться по правилу
ip rule add fwmark 10 lookup 10
«О сколько нам открытий чудных готовит просвещения дух...»™

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

Аватара пользователя
skeletor
майор
Сообщения: 2479
Зарегистрирован: 2007-11-16 18:22:04
Откуда: Kiev
Контактная информация:

Перенаправление трафика пользователя.

Непрочитанное сообщение skeletor » 2019-06-10 10:50:49

в pf'e нет возможности фильтровать по uid.
"Винда съела дрова и резет здесь не фурычит."
"Все говорят, что у меня /dev/hands криво и я всё делаю через /dev/ass. А у меня этих фалов вообще нет!"

Аватара пользователя
novik
ефрейтор
Сообщения: 50
Зарегистрирован: 2018-07-26 23:52:57

Перенаправление трафика пользователя.

Непрочитанное сообщение novik » 2019-06-10 19:22:37

skeletor писал(а):
2019-06-10 10:50:49
нет возможности фильтровать по uid
А что-то другое, не PF, из арсенала FreeBSD может?
«О сколько нам открытий чудных готовит просвещения дух...»™

Аватара пользователя
novik
ефрейтор
Сообщения: 50
Зарегистрирован: 2018-07-26 23:52:57

Перенаправление трафика пользователя.

Непрочитанное сообщение novik » 2019-06-10 22:36:43

skeletor писал(а):
2019-06-10 10:50:49
в pf'e нет возможности фильтровать по uid.
После долгих поисков, в man pf.conf я кажется нашёл то, что нужно?
group <group>
Similar to user, this rule only applies to packets of sockets owned
by the specified group.

user <user>
This rule only applies to packets of sockets owned by the specified
user. For outgoing connections initiated from the firewall, this
is the user that opened the connection. For incoming connections
to the firewall itself, this is the user that listens on the
destination port. For forwarded connections, where the firewall is
not a connection endpoint, the user and group are unknown.

All packets, both outgoing and incoming, of one connection are
associated with the same user and group. Only TCP and UDP packets
can be associated with users; for other protocols these parameters
are ignored.

User and group refer to the effective (as opposed to the real) IDs,
in case the socket is created by a setuid/setgid process. User and
group IDs are stored when a socket is created; when a process
creates a listening socket as root (for instance, by binding to a
privileged port) and subsequently changes to another user ID (to
drop privileges), the credentials will remain root.

User and group IDs can be specified as either numbers or names.
The syntax is similar to the one for ports. The value unknown
matches packets of forwarded connections. unknown can only be used
with the operators = and !=. Other constructs like user >= unknown
are invalid. Forwarded packets with unknown user and group ID
match only rules that explicitly compare against unknown with the
operators = or !=. For instance user >= 0 does not match forwarded
packets. The following example allows only selected users to open
outgoing connections:

block out proto { tcp, udp } all
pass out proto { tcp, udp } all user { < 1000, dhartmei }
«О сколько нам открытий чудных готовит просвещения дух...»™

Аватара пользователя
skeletor
майор
Сообщения: 2479
Зарегистрирован: 2007-11-16 18:22:04
Откуда: Kiev
Контактная информация:

Перенаправление трафика пользователя.

Непрочитанное сообщение skeletor » 2019-06-12 11:48:25

Судя по man'y, то да. Попробуйте, расскажите. Возможно я был не прав ))
"Винда съела дрова и резет здесь не фурычит."
"Все говорят, что у меня /dev/hands криво и я всё делаю через /dev/ass. А у меня этих фалов вообще нет!"