The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
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) с серого адреса на белый.

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

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

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

    -m owner --uid-owner 500

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

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

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

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

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

  • nftables или iproute2 (перенаправление трафика) , !*! Павел Отредиез, 15:56 , 14-Окт-19 (7)
    >[оверквотинг удален]
    >        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 маршрутизируем обратно? Нет ли ещё ната между. Мне кажется ты просто ляпнул на интерфейс белый адрес, а он извне и недоступен.

    • nftables или iproute2 (перенаправление трафика) , !*! MrAnonymouys, 20:31 , 14-Окт-19 (8)
      >[оверквотинг удален]
      >> 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).

  • nftables или iproute2 (перенаправление трафика) , !*! Licha Morada, 04:57 , 17-Окт-19 (9)
    Разбейте проблему на 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.

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

    Удачи.




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

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