The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Переадресация на другой компьютер при обращении на порт, !*! MakPol, 26-Июл-12, 00:02  [смотреть все]
Доброго времени суток!

Снова встала необходимость настраивать iptables. На этот раз надо настроить переадресацию. Пробовал найти, чтобы не создавать тему и не отвлекать форумчан, но ничего не вышло (находил варианты, настраивал, но результата не добивался). Расскажу что имею и что сделал, а дальше уже судите.

Есть 3 компьютера, все к счастью под управлением NIX:
Клиентский компьютер - Fedora 16 x86_64 - IP_клиента
Сервер рабочий - CentOS 6.3 x86_64 - IP_раб_серв
Сервер тестовый - Centos 6.2 x86_64 - IP_тест_серв

На тестовом сервере у меня установлена JIRA на порту 9090 и я хочу, чтобы обращаясь с клиента IP_раб_серв:9090 попадали на IP_тест_серв:9090. Вроде все просто, стал реализовывать. В первую очередь добавил "net.ipv4.ip_forward = 1" и перечитал /etc/sysctl.conf
далее стал изменять девственно чистую настройку iptables после установки CentOS 6.3 следующим образом:
# iptables -t nat -A PREROUTING -i eth0 -d IP_раб_серв -p tcp -m tcp --dport 9090 -j DNAT -to-destination IP_тест_серв:9090
# iptables        -A FORWARD    -i eth0 -d IP_тест_серв -p tcp -m tcp --dport 9090 -j ACCEPT

Но проверяя telnet'ом я увидел, что не работает. Стал читать дальше и нашел, что между PREROUTING и FORWARD надо добавить еще POSTROUTING и пробовал сделать вот так:
# iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 9090  -d IP_раб_серв -j SNAT to-source IP_тест_серв
но не понял не наоборот ли надо (если не сложно - поясните пожалуйста), т.е.
# iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 9090  -d IP_тест_серв -j SNAT to-source IP_раб_серв

В итоге сейчас пакеты не перенаправляются. Подскажите как правильно решить мою задачу. Все три компьютера находятся в локальной сети компании, где работаю. Заранее огромное спасибо!

  • Переадресация на другой компьютер при обращении на порт, !*! PavelR, 10:35 , 26-Июл-12 (1)

    > В итоге сейчас пакеты не перенаправляются. Подскажите как правильно решить мою задачу.
    > Все три компьютера находятся в локальной сети компании, где работаю.

    нужна схема сети, с указанием IP-адресов хостов и их шлюзов, на всех участвующих хостах.

    • Переадресация на другой компьютер при обращении на порт, !*! MakPol, 11:09 , 26-Июл-12 (2)
      > нужна схема сети, с указанием IP-адресов хостов и их шлюзов, на всех
      > участвующих хостах.

      Кажись немного разобрался...
      изначально конфиг у меня стандартный, прогоняю скрипт с содержимым:
      iptables -t nat -A PREROUTING --dst $IP_раб_серв -p tcp --dport 9090 -j DNAT --to-destination $IP_тест_серв
      iptables -t nat -A POSTROUTING --dst $IP_тест_серв -p tcp --dport 9090 -j SNAT --to-source $IP_раб_серв
      iptables -I FORWARD 1 -i eth0 -o eth0 -d $IP_тест_серв -p tcp -m tcp --dport 9090 -j ACCEPT
      и дальше приходится еще сделать вот что:
      iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited
      иначе работать не будет, но это не правильно в плане безопастности, подскажите как лучше быть в этом случае.

      Вот мой конфиг iptables, который подгружается после перезагрузки.включения и то что имеем до выполнения скрипта:
      *filter
      :INPUT ACCEPT [0:0]
      :FORWARD ACCEPT [1:10000]
      :OUTPUT ACCEPT [42026:9681910]
      -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      -A INPUT -p icmp -j ACCEPT
      -A INPUT -i lo -j ACCEPT
      -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
      -A INPUT -j REJECT --reject-with icmp-host-prohibited
      -A FORWARD -j REJECT --reject-with icmp-host-prohibited
      COMMIT

      • Переадресация на другой компьютер при обращении на порт, !*! reader, 11:20 , 26-Июл-12 (3)
        >> нужна схема сети, с указанием IP-адресов хостов и их шлюзов, на всех
        >> участвующих хостах.
        > Кажись немного разобрался...
        > изначально конфиг у меня стандартный, прогоняю скрипт с содержимым:
        > iptables -t nat -A PREROUTING --dst $IP_раб_серв -p tcp --dport 9090 -j
        > DNAT --to-destination $IP_тест_серв
        > iptables -t nat -A POSTROUTING --dst $IP_тест_серв -p tcp --dport 9090 -j
        > SNAT --to-source $IP_раб_серв
        > iptables -I FORWARD 1 -i eth0 -o eth0 -d $IP_тест_серв -p tcp
        > -m tcp --dport 9090 -j ACCEPT

        для ответных пакетов правило добавьте и тогда не нужно будет удалять
        >[оверквотинг удален]
        > :FORWARD ACCEPT [1:10000]
        > :OUTPUT ACCEPT [42026:9681910]
        > -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
        > -A INPUT -p icmp -j ACCEPT
        > -A INPUT -i lo -j ACCEPT
        > -A INPUT -m state --state NEW -m tcp -p tcp --dport 22
        > -j ACCEPT
        > -A INPUT -j REJECT --reject-with icmp-host-prohibited
        > -A FORWARD -j REJECT --reject-with icmp-host-prohibited
        > COMMIT

  • Переадресация на другой компьютер при обращении на порт, !*! ipmanyak, 11:44 , 26-Июл-12 (4)
    попробуй так:
    iptables -t nat -A PREROUTING -p tcp -d IP_раб_серв --dport 9090 -j DNAT --to IP_тест_серв:9090
    iptables -A INPUT -i eth0 -p tcp --dport 9090 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -o eth0 -p tcp --sport 9090 -m state --state ESTABLISHED -j ACCEPT

    • Переадресация на другой компьютер при обращении на порт, !*! MakPol, 11:53 , 26-Июл-12 (5)
      > попробуй так:
      > iptables -t nat -A PREROUTING -p tcp -d IP_раб_серв --dport 9090 -j
      > DNAT --to IP_тест_серв:9090
      > iptables -A INPUT -i eth0 -p tcp --dport 9090 -m state --state
      > NEW,ESTABLISHED -j ACCEPT
      > iptables -A OUTPUT -o eth0 -p tcp --sport 9090 -m state --state
      > ESTABLISHED -j ACCEPT

      а получается POSTROUTING не нужен?
      а добавление  "iptables -A OUTPUT -o eth0 -p tcp --sport 9090 -m state --state ESTABLISHED -j ACCEPT" что-то не помогло :( Только "iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited"

      • Переадресация на другой компьютер при обращении на порт, !*! reader, 14:52 , 26-Июл-12 (6)
        >[оверквотинг удален]
        >> iptables -t nat -A PREROUTING -p tcp -d IP_раб_серв --dport 9090 -j
        >> DNAT --to IP_тест_серв:9090
        >> iptables -A INPUT -i eth0 -p tcp --dport 9090 -m state --state
        >> NEW,ESTABLISHED -j ACCEPT
        >> iptables -A OUTPUT -o eth0 -p tcp --sport 9090 -m state --state
        >> ESTABLISHED -j ACCEPT
        > а получается POSTROUTING не нужен?
        > а добавление  "iptables -A OUTPUT -o eth0 -p tcp --sport 9090
        > -m state --state ESTABLISHED -j ACCEPT" что-то не помогло :( Только
        > "iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited"

        при чем тут INPUT и OUTPUT. с помощью DNAT подставили ip другой машины, пакет пойдет через FORWARD.

        POSTROUTING - нужен т.к. в туже подсеть перенаправляете , разжевано
        https://www.opennet.ru/docs/RUS/iptables/#DNATTARGET

        а iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited помогает потому что на этом правиле режутся ответные пакеты, посмотрите счетчики, а лучше сделайте логирование.
        так что пишите правило для ответных пакетов.

        смотрите tcpdump

        • Переадресация на другой компьютер при обращении на порт, !*! MakPol, 15:06 , 26-Июл-12 (7)
          Короче разобрался, настроил вот так:
          к стандартному iptables добавил:
          iptables -t nat -A PREROUTING --dst $IP_new -p tcp --dport 9090 -j DNAT --to-destination $IP_old
          iptables -t nat -A POSTROUTING --dst $IP_old -p tcp --dport 9090 -j SNAT --to-source $IP_new
          iptables -I FORWARD 1 -i eth0 -o eth0 -d $IP_old -p tcp -m tcp --dport 9090 -j ACCEPT
          iptables -I FORWARD -m state --state ESTABLISHED -j ACCEPT
          вот и вся любовь и никакой iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited теперь убирать не нужно.



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

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