The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
linux/iptables; перенаправление пакетов на другой хост, !*! chep, 29-Июл-05, 20:06  [смотреть все]
Народ, помогите, плиз,
Казалось бы простая задача, но не знаю как сделать.
В одной подсети находится linux-host с одним интерфейсом и клиент-hosts. Хочу, что бы клиенты конектились к linux, а мой linux-host перенаправлял бы все tcp запросы на третий хост. Причём, с подменой адресов (подчеркиваю). Зачем это нужно, сейчас не говорю. Насколько я понимаю, надо использовать и DNAT и SNAT.

Пробую:
# iptables -A PREROUTING -i eth0 -p all -d $LINUX_HOST_IP -j DNAT --to-destination $TRETIY_HOST
# iptables -A POSTROUTING -p all -d $TRETIY_HOST -j SNAT --to-source $LINUX_HOST_IP
# iptables -A FORWARD -i eth0 -j ACCEPT

# ping $LINUX_HOST_IP
64 bytes from $TRETIY_HOST: icmp_seq=0 ttl=128 time=0.561 ms
64 bytes from $TRETIY_HOST: icmp_seq=1 ttl=128 time=0.549 ms
64 bytes from $TRETIY_HOST: icmp_seq=2 ttl=128 time=0.546 ms
              ^^^^^^^^^^^^
Круто, icmp работает.
А tcp не работает:

# ftp 10.1.4.42
Connected to 10.1.4.42.
220 (vsFTPd 2.0.3)
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name ($LINUX_HOST_IP:root):
      ^^^^^^^^^^^
Почему tcp не перенаправляется на $TRETIY_HOST? Где грабля?

  • linux/iptables; перенаправление пакетов на другой хост, !*! Georgyi, 16:22 , 03-Авг-05 (1)
    >Народ, помогите, плиз,
    >Казалось бы простая задача, но не знаю как сделать.
    >В одной подсети находится linux-host с одним интерфейсом и клиент-hosts. Хочу, что
    >бы клиенты конектились к linux, а мой linux-host перенаправлял бы все
    >tcp запросы на третий хост. Причём, с подменой адресов (подчеркиваю). Зачем
    >это нужно, сейчас не говорю. Насколько я понимаю, надо использовать и
    >DNAT и SNAT.
    >
    >Пробую:
    ># iptables -A PREROUTING -i eth0 -p all -d $LINUX_HOST_IP -j DNAT
    >--to-destination $TRETIY_HOST
    ># iptables -A POSTROUTING -p all -d $TRETIY_HOST -j SNAT --to-source $LINUX_HOST_IP
    >
    ># iptables -A FORWARD -i eth0 -j ACCEPT
    >
    ># ping $LINUX_HOST_IP
    >64 bytes from $TRETIY_HOST: icmp_seq=0 ttl=128 time=0.561 ms
    >64 bytes from $TRETIY_HOST: icmp_seq=1 ttl=128 time=0.549 ms
    >64 bytes from $TRETIY_HOST: icmp_seq=2 ttl=128 time=0.546 ms
    >            
    >  ^^^^^^^^^^^^
    >Круто, icmp работает.
    >А tcp не работает:
    >
    ># ftp 10.1.4.42
    >Connected to 10.1.4.42.
    >220 (vsFTPd 2.0.3)
    >530 Please login with USER and PASS.
    >KERBEROS_V4 rejected as an authentication type
    >Name ($LINUX_HOST_IP:root):
    >      ^^^^^^^^^^^
    >Почему tcp не перенаправляется на $TRETIY_HOST? Где грабля?

    не все так просто,
    на всех клиентах надо указать маршрут, что сеть эта доступна через твой маршрутизатор, тогда может что то получится

    • linux/iptables; перенаправление пакетов на другой хост, !*! chep, 18:19 , 03-Авг-05 (2)
      >не все так просто,
      >на всех клиентах надо указать маршрут, что сеть эта доступна через твой
      >маршрутизатор, тогда может что то получится

      На самом деле, tcp заработал после того, как я прописал source. Но на вопрос, почему без указания source ничего не работало, я ответить не могу. Мистика. :) Невежество порождает суеверия )))

      -A PREROUTING -i eth0 -s $NETWORK_OR_CLIENT_ADDR -d $LINUX_HOST_IP  -p all -j DNAT --to-destination $TRETIY_HOST
                                ^^^^^^^^^^^^^^^^^^^
      -A POSTROUTING -o eth0 -p all -d $TRETIY_HOST -j SNAT --to-source $LINUX_HOST_IP

      Прилагаю схему, если кому интересно.

              ___  
             |   |Server ($TRETIY_HOST)
             |___|
               |
          _____|______________________
                       |
                       |
                       |
                    ___|___
                   |       |
                   |Firewal|
                   |_______|
                       |
                       |
                       |
          _____________|______________
          |       |         |        |
         _|_     _|_       _|_      _|_  
        | 1 |   | 2 |     | 3 |    |xxx|
        |___|   |___|     |___|    |___|

               Clients          LINUX_HOST

      Через firewall к TRETIY_HOST можно ходить только LINUX_HOST.
      А все клиенты должны идти через него.




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

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