The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"nftables или iproute2 (перенаправление трафика) "
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT / Linux)
Изначальное сообщение [ Отслеживать ]

"nftables или iproute2 (перенаправление трафика) "  +/
Сообщение от MrAnonymouys (?), 10-Окт-19, 09:57 
Пытаюсь решить задачу. При себе: ubuntu 18.04, nginx 1.14 с php-fpm 7.2, nftables 0.8.2/iproute2.

О проблеме:

имеется две виртуальные сетевые карты реализованные средствами proxmox 5.2 с разными айпи адресами (серый и белый с лупбеком), php скриптом опрашивается удалённый сервер по UDP, запросы посылаются с серого адреса в ожидании ответа. Ответ от удалённого сервера не приходит (особенность сети, придёт если отправить с белого (наверно)).

netstat -anoptu 

udp        0      0 192.168.1.200:51442     176.12.33.34:7066      ESTABLISHED 821/php              off (0.00/0/0)
udp        0      0 192.168.1.200:42282     176.12.33.34:7066      ESTABLISHED 821/php              off (0.00/0/0) 

ip a

2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether ce:f9:8c:4e:46:48 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.200/24 brd 192.168.1.255 scope global ens18
       valid_lft forever preferred_lft forever
    inet6 fe80::ccf9:8cff:fe4e:4648/64 scope link
       valid_lft forever preferred_lft forever
3: ens19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether c6:b2:8f:4b:fb:ac brd ff:ff:ff:ff:ff:ff
    inet 176.12.33.33/32 scope global ens19
       valid_lft forever preferred_lft forever
    inet6 fe80::c4b2:8fff:fe4b:fbac/64 scope link
       valid_lft forever preferred_lft forever 

ip route

default via 192.168.1.1 dev ens18 proto static
192.168.1.0/24 dev ens18 proto kernel scope link src 192.168.1.200 

О задаче:

с помощью nftables или iproute2 перенаправить трафик определённого пользователя (от которого запускается php-fpm) с серого адреса на белый.

Как достигнуть результата?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "nftables или iproute2 (перенаправление трафика) "  +/
Сообщение от BarS (ok), 10-Окт-19, 12:41 
Ничего не понял
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "nftables или iproute2 (перенаправление трафика) "  +/
Сообщение от Омномним (?), 10-Окт-19, 14:10 
> Ничего не понял

Держите нас в курсе!

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "nftables или iproute2 (перенаправление трафика) "  +/
Сообщение от aaa (??), 10-Окт-19, 17:48 
> О задаче:
> с помощью nftables или iproute2 перенаправить трафик определённого пользователя (от которого
> запускается php-fpm) с серого адреса на белый.
> Как достигнуть результата?

У iptables был модуль owner:

-m owner --uid-owner 500

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "nftables или iproute2 (перенаправление трафика) "  +/
Сообщение от StreSS.temail (ok), 11-Окт-19, 14:48 
Начнем с того что сеть белая всего /32
Все решается простым роутингом без шаманств с iptables/nftables
Может вы маску не правильную задали, потому что при /30 искомый 176.12.33.34 и 176.12.33.33 оказываются в одной сети.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "nftables или iproute2 (перенаправление трафика) "  +/
Сообщение от MrAnonymouys (?), 13-Окт-19, 14:09 
> Начнем с того что сеть белая всего /32
> Все решается простым роутингом без шаманств с iptables/nftables
> Может вы маску не правильную задали, потому что при /30 искомый 176.12.33.34
> и 176.12.33.33 оказываются в одной сети.

Верно. В моём случае опечатка. Спасибо (поправить не могу, сеть заканчивается на 34).

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "nftables или iproute2 (перенаправление трафика) "  +/
Сообщение от MrAnonymouys (?), 13-Окт-19, 14:13 
>> Начнем с того что сеть белая всего /32
>> Все решается простым роутингом без шаманств с iptables/nftables
>> Может вы маску не правильную задали, потому что при /30 искомый 176.12.33.34
>> и 176.12.33.33 оказываются в одной сети.
> Верно. В моём случае опечатка. Спасибо (поправить не могу, сеть заканчивается на
> 34).

Роутингом не могу решить. У меня маршруты выдаёт Bird и в таблице роута они не отображаются.
По факту я пытаюсь добавить дефолтный маршрут с белым гетвеем, также пытался переадресовать с серого на белый. В общем-то ни в какую, тк белый гетвей висит на уровне бёрда.
p.s. В роутинге тоже в овнера можно.

p.s2. Могу говорить глупости, в сетях очень слаб. Средствами iptables не удалось решить, про овнера знал (спасибо).
Есть обладающие временем и желанием подсобить с правилом для iptables?

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "nftables или iproute2 (перенаправление трафика) "  +/
Сообщение от Павел Отредиезemail (?), 14-Окт-19, 15:56 
>[оверквотинг удален]
>        valid_lft forever preferred_lft forever
>     inet6 fe80::c4b2:8fff:fe4b:fbac/64 scope link
>        valid_lft forever preferred_lft forever 
> ip route
> default via 192.168.1.1 dev ens18 proto static
> 192.168.1.0/24 dev ens18 proto kernel scope link src 192.168.1.200 
> О задаче:
> с помощью nftables или iproute2 перенаправить трафик определённого пользователя (от которого
> запускается php-fpm) с серого адреса на белый.
> Как достигнуть результата?

iptables -A POSTROUTING -t nat -d 176.12.33.34 -j SNAT --to-source 176.12.33.33
Или я что то не понял. 176.12.33.33 маршрутизируем обратно? Нет ли ещё ната между. Мне кажется ты просто ляпнул на интерфейс белый адрес, а он извне и недоступен.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "nftables или iproute2 (перенаправление трафика) "  +/
Сообщение от MrAnonymouys (?), 14-Окт-19, 20:31 
>[оверквотинг удален]
>> default via 192.168.1.1 dev ens18 proto static
>> 192.168.1.0/24 dev ens18 proto kernel scope link src 192.168.1.200 
>> О задаче:
>> с помощью nftables или iproute2 перенаправить трафик определённого пользователя (от которого
>> запускается php-fpm) с серого адреса на белый.
>> Как достигнуть результата?
> iptables -A POSTROUTING -t nat -d 176.12.33.34 -j SNAT --to-source 176.12.33.33
> Или я что то не понял. 176.12.33.33 маршрутизируем обратно? Нет ли ещё
> ната между. Мне кажется ты просто ляпнул на интерфейс белый адрес,
> а он извне и недоступен.

Имею виртуальную машину, с двумя виртуальными сетевыми интерфейсами.
На первом интерфейсе у меня серая сеть - 192.168.1.200.
На втором интерфейсе у меня белая сеть - 176.12.33.34.

PHPшный скрипт у меня выполняется по дефолтному маршруту серой сети, мне нужно пускать по белой.
С маршрутами для белой сети есть некоторые сложности, поэтому ищу альтернативный вариант.

Рассматривал такой вариант:
iptables -t mangle -A OUTPUT -m owner --uid-owner "www-data" -j MARK --set-xmark 100
iptables -t nat -A POSTROUTING -m mark --mark 100 -j SNAT --to-source 176.12.33.34

В данном случае любой трафик, а именно выполнение .php скриптов блокируется.

В общем-то да, есть NAT - juniper srx (100h).

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "nftables или iproute2 (перенаправление трафика) "  +/
Сообщение от Licha Morada (?), 17-Окт-19, 04:57 
Разбейте проблему на 2 части.

1. Пусть решение о маршрутизации принимается в зависимости от src addr отправляемого пакета. Для этого можно воспользоваться механизмом Policy Based Routing, что, в принципе, полезно в общем случае наличя сетевых интерфейсов в разных сетях.
Это во многих местах описанно, есть разные методы, зависит от конкретной конфигурации и предпочтений. Например:
https://serverfault.com/questions/524054/simple-multihomed-l...
https://www.linuxjournal.com/article/7291
И вообще, Policy Based Routing и его понимание вещи полезные, не только для приминения но и просто чтобы знать чего ожидать в разных ситуациях.
https://en.wikipedia.org/wiki/Policy-based_routing
https://blog.scottlowe.org/2013/05/29/a-quick-introduction-t.../
https://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.simp...
https://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.mult...

2. Пусть ваш сервер применяет првильную таблицу маршрутизации в каждом случае. Есть разные варианты, например:
- Непосредственно из клиентского софта указать, с какого локального адреса отправлять пакеты, тогда правило "ip rule src ..." из предыдущей части просто сработает. Некоторые программы так умеют, некоторые нет.
- Через команду "ip rule", указать напрямую какую таблицу надо использовать, если известен адрес получателя (фильтр to), или порт (фильтры ipproto, sport, dport).
- Промаркировать пакет из netfilter (там выше вам примеры давали), например на основе uid-owner, и указать таблицу с помощю "ip rule" по фильтру fwmark.

Много документации уже написанно, как сделать то или другое, посмотрите.

Удачи.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру