The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Маршрутизация ответа на проброшеные пакеты через интефейс входа, !*! phantom74rus, 21-Янв-08, 23:04  [смотреть все]
Добрый день, искал решение своей проблемы по форуму, но или плохо искал или не нашел, поэтому прошу помочь в решении следующей проблемы:

Имеется шлюз (Linux) с тремя реальными адресами и внутр. сервер HTTP (Mail и т.д).
На шлюзе маршрут по умолчанию выбирается в зависимости от условий т.е. не постоянно смотрит на какой-то один интерфейс. В днс прописаны все три адреса, для отказоустойчивости. Доступ к внутр веб-серверу реалезован с помощью Prerouting. (проброс запросов с помошью проксирования через апач отработан на основе таблиц и правил маршрутизации, но не совсем устраивает. да и нужно еще открыть доступ к почтовому серверу и т.п.)
Вот тут возникает проблема - запросы, которые пришли с "недефолтового" интерфейса пробрасываются внутрь, обрабатываются веб-сервером и выплевываются наружу, но уже через дефолтовый маршрут... как итог - клиент не получает ответа с того интерфейса. на который послан запрос и ничего не видит.
Как я понял - правила на основе источника запроса не проходят, т.к. €работают только в пределах самого шлюза(запрос покидает сам шлюз и шлюз забывает о том, откуда приходил запрос, хотя запросто могу ошибаться)
Подскажите - как можно проброшеные запросы отправлять обратно через тот же интерфей, через который они пришли ?

  • Маршрутизация ответа на проброшеные пакеты через интефейс вх..., !*! PavelR, 06:04 , 22-Янв-08 (1)
    • Маршрутизация ответа на проброшеные пакеты через интефейс вх..., !*! phantom74rus, 08:49 , 22-Янв-08 (2)
      >читай LARTC - linux advanced routing  how-to
      >
      >http://gazette.linux.ru.net/rus/articles/lartc/x348.html
      >
      >
      >запросы, которые приходят на твои внешние адреса _должны_ уходить с того же
      >адреса и через тот же самый интерфейс, не зависимо от того,
      >есть у тебя проброс в локалку или нет.

      Эту статью читал...
      Как я понял - на голой системе ничего само ходить не будет, нужны правила для маршрутизации. Правила есть и они работают, но только для самого шлюза.
      А вот т.н. форвард пакеты отправлять обратно через интерфейс - это у меня не получается.

      192.168.1.0 dev eth3  scope link  src 192.168.1.4
      192.168.0.0 dev eth0  scope link  src 192.168.0.5
      83.167.2.0 dev eth2  scope link  src 83.167.2.120
      83.142.164.160/29 dev eth1  proto kernel  scope link  src 83.142.164.162
      83.167.2.0/24 dev eth2  proto kernel  scope link  src 83.167.2.120
      192.168.1.0/24 dev eth3  proto kernel  scope link  src 192.168.1.4
      192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.5
      default via 83.167.2.1 dev eth2

      32763:  from 192.168.1.4 lookup ertelecom
      32764:  from 83.167.2.120 lookup InSYS
      32765:  from 83.142.164.162 lookup is74
      32766:  from all lookup main
      32767:  from all lookup default

      83.142.164.160/29 dev eth1  scope link  src 83.142.164.162
      default via 83.142.164.161 dev eth1
      Для остальных таблиц правила подобные...

      • Маршрутизация ответа на проброшеные пакеты через интефейс вх..., !*! PavelR, 09:23 , 22-Янв-08 (3)
        • Маршрутизация ответа на проброшеные пакеты через интефейс вх..., !*! phantom74rus, 09:40 , 22-Янв-08 (4)
          >Для успешного лечения выведите пожалуйста результат команд:
          >
          >ip ro sh table InSYS
          >ip ro sh table is74
          >
          >iptables -t nat -nvL --line
          >
          >iptables -nvL --line

          ip ro sh table InSYS
          83.167.2.0 dev eth2  scope link  src 83.167.2.120
          default via 83.167.2.1 dev eth2

          ip ro sh table is74
          83.142.164.160/29 dev eth1  scope link  src 83.142.164.162
          default via 83.142.164.161 dev eth1

          iptables -t nat -nvL --line
          Chain PREROUTING (policy ACCEPT 24 packets, 2612 bytes)
          num   pkts bytes target     prot opt in     out     source               destination
          1        0     0 DNAT       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:25 to:192.168.0.2
          2        0     0 DNAT       tcp  --  eth2   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:25 to:192.168.0.2
          3        0     0 DNAT       tcp  --  eth3   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:25 to:192.168.0.2
          4        0     0 DNAT       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:110 to:192.168.0.2
          5        0     0 DNAT       tcp  --  eth2   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:110 to:192.168.0.2
          6        0     0 DNAT       tcp  --  eth3   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:110 to:192.168.0.2
          7        0     0 DNAT       tcp  --  *      *       91.144.135.65        0.0.0.0/0           tcp dpt:1723 to:192.168.0.1
          8        0     0 DNAT       47   --  *      *       91.144.135.65        0.0.0.0/0           to:192.168.0.1
          9        0     0 DNAT       tcp  --  eth1   *       91.144.135.65        0.0.0.0/0           tcp dpt:3389 to:192.168.0.1
          10       0     0 DNAT       tcp  --  eth2   *       91.144.135.65        0.0.0.0/0           tcp dpt:3389 to:192.168.0.1
          11       0     0 DNAT       tcp  --  eth3   *       91.144.135.65        0.0.0.0/0           tcp dpt:3389 to:192.168.0.1

          Chain POSTROUTING (policy ACCEPT 1 packets, 60 bytes)
          num   pkts bytes target     prot opt in     out     source               destination
          1        2   150 MASQUERADE  0    --  *      *       192.168.0.0/24       0.0.0.0/0

          Chain OUTPUT (policy ACCEPT 3 packets, 210 bytes)
          num   pkts bytes target     prot opt in     out     source               destination

          iptables -nvL --line
          Chain INPUT (policy ACCEPT 168 packets, 17140 bytes)
          num   pkts bytes target     prot opt in     out     source               destination
          1       16  2082 ULOG       0    --  eth2   *       0.0.0.0/0            83.167.2.120        ULOG copy_range 0 nlgroup 2 queue_threshold 1
          2        0     0 ULOG       0    --  eth1   *       0.0.0.0/0            83.142.164.162      ULOG copy_range 0 nlgroup 1 queue_threshold 1
          3        0     0 ULOG       0    --  eth3   *       0.0.0.0/0            91.144.135.77       ULOG copy_range 0 nlgroup 3 queue_threshold 1
          4        0     0 REJECT     0    --  *      *       91.76.119.128        0.0.0.0/0           reject-with icmp-port-unreachable
          5        0     0 REJECT     0    --  *      *       200.88.104.71        0.0.0.0/0           reject-with icmp-port-unreachable
          6        0     0 REJECT     0    --  *      *       85.141.218.1         0.0.0.0/0           reject-with icmp-port-unreachable
          7        0     0 REJECT     0    --  *      *       81.181.81.114        0.0.0.0/0           reject-with icmp-port-unreachable
          8        0     0 REJECT     0    --  *      *       216.144.192.118      0.0.0.0/0           reject-with icmp-port-unreachable
          9        0     0 REJECT     0    --  *      *       216.144.192.118      0.0.0.0/0           reject-with icmp-port-unreachable
          10       0     0 REJECT     0    --  *      *       67.19.82.114         0.0.0.0/0           reject-with icmp-port-unreachable
          11       0     0 REJECT     0    --  *      *       66.207.47.66         0.0.0.0/0           reject-with icmp-port-unreachable
          12       0     0 REJECT     0    --  *      *       219.243.24.6         0.0.0.0/0           reject-with icmp-port-unreachable
          13       0     0 REJECT     0    --  *      *       202.130.106.89       0.0.0.0/0           reject-with icmp-port-unreachable
          14       0     0 REJECT     0    --  *      *       61.47.210.106        0.0.0.0/0           reject-with icmp-port-unreachable
          15       0     0 REJECT     0    --  *      *       208.73.226.254       0.0.0.0/0           reject-with icmp-port-unreachable
          16       0     0 REJECT     0    --  *      *       190.24.131.35        0.0.0.0/0           reject-with icmp-port-unreachable
          17       0     0 REJECT     0    --  *      *       80.93.212.74         0.0.0.0/0           reject-with icmp-port-unreachable
          18       0     0 REJECT     0    --  *      *       65.79.193.35         0.0.0.0/0           reject-with icmp-port-unreachable
          19       0     0 REJECT     0    --  *      *       210.51.173.105       0.0.0.0/0           reject-with icmp-port-unreachable
          20     836  458K ACCEPT     0    --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
          21       0     0 ACCEPT     0    --  *      *       0.0.0.0/0            0.0.0.0/0           ctstate RELATED,ESTABLISHED
          22       0     0 ACCEPT     47   --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
          23       0     0 ACCEPT     0    --  *      *       127.0.0.1            0.0.0.0/0
          24       0     0 ACCEPT     47   --  *      *       0.0.0.0/0            0.0.0.0/0
          25       0     0 ACCEPT     0    --  *      *       91.144.135.65        0.0.0.0/0
          26       2   120 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
          27       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:10000
          28       2    96 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:3128
          29       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:21
          30       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:20
          31       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:20 state RELATED,ESTABLISHED
          32       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:20 state RELATED,ESTABLISHED
          33       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:21 state NEW,ESTABLISHED
          34       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:21 state RELATED,ESTABLISHED
          35       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 state RELATED,ESTABLISHED
          36       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpts:1024:65535 state RELATED,ESTABLISHED
          37       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:22
          38      45  2172 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80
          39       0     0 ACCEPT     tcp  --  *      *       192.168.0.8          0.0.0.0/0           tcp dpt:5901
          40       0     0 ACCEPT     tcp  --  *      *       192.168.0.242        0.0.0.0/0           tcp dpt:5901
          41       0     0 ACCEPT     tcp  --  *      *       192.168.0.243        0.0.0.0/0           tcp dpt:5901
          42      11   528 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x17/0x02 reject-with icmp-port-unreachable

          Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
          num   pkts bytes target     prot opt in     out     source               destination
          1       16  1611 ULOG       0    --  eth2   eth0   !83.167.2.120         0.0.0.0/0           ULOG copy_range 0 nlgroup 2 queue_threshold 1
          2       16   768 ULOG       0    --  eth0   eth2    0.0.0.0/0           !83.167.2.120        ULOG copy_range 0 nlgroup 2 queue_threshold 1
          3        6   363 ULOG       0    --  eth3   eth0   !192.168.1.4          0.0.0.0/0           ULOG copy_range 0 nlgroup 3 queue_threshold 1
          4        5   412 ULOG       0    --  eth0   eth3    0.0.0.0/0           !192.168.1.4         ULOG copy_range 0 nlgroup 3 queue_threshold 1
          5        0     0 ULOG       0    --  eth1   eth0   !83.142.164.162       0.0.0.0/0           ULOG copy_range 0 nlgroup 1 queue_threshold 1
          6        0     0 ULOG       0    --  eth0   eth1    0.0.0.0/0           !83.142.164.162      ULOG copy_range 0 nlgroup 1 queue_threshold 1
          7       41  3002 ACCEPT     0    --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
          8        0     0 ACCEPT     0    --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
          9        0     0 ACCEPT     47   --  *      *       0.0.0.0/0            0.0.0.0/0
          10       0     0 ACCEPT     0    --  *      gre     0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
          11       0     0 REJECT     tcp  --  *      *       192.168.0.2          0.0.0.0/0           tcp dpt:135 reject-with icmp-port-unreachable
          12       0     0 REJECT     udp  --  *      *       192.168.0.2          0.0.0.0/0           udp dpt:135 reject-with icmp-port-unreachable
          13       0     0 REJECT     tcp  --  *      *       192.168.0.2          0.0.0.0/0           tcp dpts:6666:6669 reject-with icmp-port-unreachable
          14       0     0 ACCEPT     0    --  *      *       192.168.0.9          0.0.0.0/0
          15       0     0 ACCEPT     0    --  *      *       192.168.0.3          0.0.0.0/0
          16       0     0 ACCEPT     0    --  *      *       192.168.0.2          0.0.0.0/0
          17       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.0.2         tcp dpt:110
          18       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.0.2         tcp dpt:25
          19       0     0 ACCEPT     0    --  *      *       192.168.0.1          0.0.0.0/0
          20       0     0 ACCEPT     0    --  *      *       0.0.0.0/0            192.168.0.6
          21       0     0 ACCEPT     0    --  *      *       192.168.0.6          0.0.0.0/0
          22       0     0 ACCEPT     0    --  *      *       192.168.0.242        0.0.0.0/0
          23       0     0 ACCEPT     0    --  *      *       192.168.0.243        0.0.0.0/0
          24       0     0 ACCEPT     tcp  --  *      *       192.168.0.8          0.0.0.0/0           tcp dpt:5190
          25       0     0 ACCEPT     tcp  --  *      *       192.168.0.242        0.0.0.0/0           tcp dpt:5190
          26       0     0 ACCEPT     tcp  --  *      *       192.168.0.243        0.0.0.0/0           tcp dpt:5190
          27       0     0 ACCEPT     tcp  --  *      *       192.168.0.92         0.0.0.0/0           tcp dpt:5190
          28       0     0 ACCEPT     tcp  --  *      *       192.168.0.99         0.0.0.0/0           tcp dpt:5190
          29       0     0 ACCEPT     tcp  --  *      *       192.168.0.101        0.0.0.0/0           tcp dpt:5190
          30       0     0 ACCEPT     tcp  --  *      *       192.168.0.179        0.0.0.0/0           tcp dpt:5190
          31       0     0 ACCEPT     tcp  --  *      *       192.168.0.37         0.0.0.0/0           tcp dpt:5190
          32       0     0 ACCEPT     tcp  --  *      *       192.168.0.110        0.0.0.0/0           tcp dpt:5190
          33       0     0 ACCEPT     tcp  --  *      *       192.168.0.52         0.0.0.0/0           tcp dpt:5190
          34       0     0 ACCEPT     tcp  --  *      *       192.168.0.172        0.0.0.0/0           tcp dpt:5190
          35       0     0 ACCEPT     tcp  --  *      *       192.168.0.29         0.0.0.0/0           tcp dpt:5190
          36       0     0 ACCEPT     tcp  --  *      *       192.168.0.61         0.0.0.0/0           tcp dpt:5190
          37       0     0 ACCEPT     tcp  --  *      *       192.168.0.173        0.0.0.0/0           tcp dpt:5190
          38       0     0 ACCEPT     tcp  --  *      *       192.168.0.66         0.0.0.0/0           tcp dpt:5190
          39       0     0 ACCEPT     tcp  --  *      *       192.168.0.141        0.0.0.0/0           tcp dpt:5190
          40       0     0 ACCEPT     tcp  --  *      *       192.168.0.8          0.0.0.0/0           tcp dpt:25
          41       0     0 ACCEPT     tcp  --  *      *       192.168.0.99         0.0.0.0/0           tcp dpt:25
          42       0     0 ACCEPT     tcp  --  *      *       192.168.0.37         0.0.0.0/0           tcp dpt:25
          43       0     0 ACCEPT     tcp  --  *      *       192.168.0.8          0.0.0.0/0           tcp dpt:110
          44       0     0 ACCEPT     tcp  --  *      *       192.168.0.99         0.0.0.0/0           tcp dpt:110
          45       0     0 ACCEPT     tcp  --  *      *       192.168.0.37         0.0.0.0/0           tcp dpt:110
          46       0     0 ACCEPT     icmp --  *      *       192.168.0.8          0.0.0.0/0
          47       0     0 ACCEPT     tcp  --  *      *       192.168.0.37         0.0.0.0/0           tcp dpt:5280
          48       0     0 ACCEPT     tcp  --  *      *       192.168.0.37         0.0.0.0/0           tcp dpt:4444
          49       0     0 ACCEPT     tcp  --  *      *       192.168.0.37         0.0.0.0/0           tcp dpt:443
          50       0     0 ACCEPT     tcp  --  *      *       192.168.0.79         0.0.0.0/0           tcp dpt:4444
          51       0     0 ACCEPT     tcp  --  *      *       192.168.0.79         0.0.0.0/0           tcp dpt:443
          52       0     0 ACCEPT     tcp  --  *      *       192.168.0.42         0.0.0.0/0           tcp dpt:4444
          53       0     0 ACCEPT     tcp  --  *      *       192.168.0.42         0.0.0.0/0           tcp dpt:443
          54       0     0 ACCEPT     tcp  --  *      *       192.168.0.40         0.0.0.0/0           tcp dpt:4444
          55       0     0 ACCEPT     tcp  --  *      *       192.168.0.40         0.0.0.0/0           tcp dpt:443
          56       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.0.1         tcp dpt:1723
          57       0     0 ACCEPT     47   --  *      *       0.0.0.0/0            192.168.0.1
          58       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.0.1         tcp dpt:80
          59       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.0.2         tcp dpt:80
          60       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.0.6         tcp dpt:80
          61       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.0.2         tcp dpt:25
          62       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.0.2         tcp dpt:21
          63       0     0 ACCEPT     tcp  --  *      *       192.168.0.8          0.0.0.0/0           tcp dpts:20:21
          64       0     0 ACCEPT     tcp  --  *      *       192.168.0.24         0.0.0.0/0           tcp dpts:20:21
          65       2   152 REJECT     0    --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable

          Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
          num   pkts bytes target     prot opt in     out     source               destination
          1       19  2166 ULOG       0    --  *      eth2    83.167.2.120         0.0.0.0/0           ULOG copy_range 0 nlgroup 2 queue_threshold 1
          2        0     0 ULOG       0    --  *      eth1    83.142.164.162       0.0.0.0/0           ULOG copy_range 0 nlgroup 1 queue_threshold 1
          3        0     0 ULOG       0    --  *      eth3    192.168.1.4        0.0.0.0/0           ULOG copy_range 0 nlgroup 3 queue_threshold 1
          4      925  505K ACCEPT     0    --  *      *       0.0.0.0/0            0.0.0.0/0
          5        0     0 ACCEPT     0    --  *      *       127.0.0.1            0.0.0.0/0

          Прероутинг для веб-сервера сейчас отключен, но приводился в действие с помошью
          -A PREROUTING -d 83.142.164.162 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.6
          и т.д.

          • Маршрутизация ответа на проброшеные пакеты через интефейс вх..., !*! PavelR, 15:59 , 22-Янв-08 (5)
            • Маршрутизация ответа на проброшеные пакеты через интефейс вх..., !*! phantom74rus, 17:13 , 22-Янв-08 (6)
              Может я просто не до конца еще разобрался (совсем недавно взялся за это)?

              Вот мои размышления:
              Есть 3 интерфейса торчащие в инет eth1, eth2, eth3 и локальный eth0. (на шлюзе)
              Есть три таблици для сетей на этих интерфейсах и три правила from для сопоставления с этими таблицами, в зависимости откуда пришел запрос. (выше они приведены)

              дефолтовый маршрут смотрит на один из интерфейсов, допустим на eth1. Клиент цепляется к eth3, запрашивая ресурс, шлюз (по прероутингу) его пробрасывает через eth0 на внутр сервер, сервер отсылает ответ, который возвращается шлюзу, но шлюз не находит в правилах "from" этого источника (т.к. тут уже не from, а to (клиент из интернет и не относится ни к одной из трех внешних сетей))и направляет ответ на eth1... итог - клиент ничего не видит.

              А правила у меня создаются следующие, но работают-то они только для самого шлюза (т.е. пакет пришел, обработался шлюзом, который отправил ответ обратно клиенту):
              ip route add to $P1_NET dev $P1_IF src $P1_IP
              ip route add $P1_NET dev $P1_IF src $P1_IP table $P1_TBL
              ip route add default via $P1_GW table $P1_TBL

              ip route add to $P2_NET dev $P2_IF src $P2_IP
              ip route add $P2_NET dev $P2_IF src $P2_IP table $P2_TBL
              ip route add default via $P2_GW table $P2_TBL

              ip route add to $P3_NET dev $P3_IF src $P3_IP
              ip route add $P3_NET dev $P3_IF src $P3_IP table $P3_TBL
              ip route add default via $P3_GW table $P3_TBL

              # трафик, исходящий с ip интерфейса будет уходить соответствующему провайдеру
              ip rule add from $P1_IP table $P1_TBL
              ip rule add from $P2_IP table $P2_TBL
              ip rule add from $P3_IP table $P3_TBL
              # маршрут по-умолчанию
              ip route add default via $P1_GW

  • Маршрутизация ответа на проброшеные пакеты через интефейс вх..., !*! PavelR, 06:47 , 25-Апр-08 (13)



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

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