The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"DNAT в сеть с CITRIX MF."
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"DNAT в сеть с CITRIX MF."
Сообщение от LuckyBird Искать по авторуВ закладки(??) on 17-Дек-04, 18:00  (MSK)
Имеем следующее:
1) Север на ALt Linux 2.4 с 2 сетевыми интерфейсами . один из которых смотрит наружу, а другой локально.
2) Во внутренней сетке стоит Citrix MF сервер, к которому должны аодключаться пользователи из интернета.
3) На сервере настроен IPTABLES.

для маршрутизации всего трафика с адреса с которого будут конектится к citrix я прописал на интренент шлюзе
$IPTABLES -t nat -A PREROUTING -i $INET_IFACE -s INET-IP -j DNAT --to-destination LOCAL-IP

Пробуем подключитьcя, и ничего не работает

Вот что видит tcpdump по локалки:
18:05:08.382166 IP INET-IP.1840 > 192.168.1.150.ica: S 212906607:212906607(0) win 64512 <mss 1460,nop,nop,sackOK>
18:05:11.398116 IP INET-IP.1840 > 192.168.1.150.ica: S 212906607:212906607(0) win 64512 <mss 1460,nop,nop,sackOK


Вот что видит tcpdump по внешнему интерфейсу:
18:05:08.381993 IP INET-IP.1840 > GTW.ica: S 212906607:212906607(0) win 64512 <mss 1460,nop,nop,sackOK>
18:05:08.382219 IP INET-IP.1840 > 192.168.1.150.ica: S 212906607:212906607(0) win 64512 <mss 1460,nop,nop,sackOK>
18:05:11.398015 IP INET-IP.1840 > GTW.ica: S 212906607:212906607(0) win 64512 <mss 1460,nop,nop,sackOK>
18:05:11.398167 IP INET-IP.1840 > 192.168.1.150.ica: S 212906607:212906607(0) win 64512 <mss 1460,nop,nop,sackOK>

Такое чуство что ответные пакеты не приходят, точнее даже не генерируются.

Подскажите, в чём проблема ?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

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

1. "DNAT в сеть с CITRIX MF."
Сообщение от Mranton Искать по авторуВ закладки(??) on 17-Дек-04, 18:22  (MSK)
если ты подаешь эту строку точно так как ты написал, то проблема, возможно, в синтаксисе :)    нужно писать $INET-IP и $LOCAL-IP

>$IPTABLES -t nat -A PREROUTING -i $INET_IFACE -s INET-IP -j DNAT --to-destination
                                                                                ^^^
>LOCAL-IP       
^^^^^^


хорошая дока: Iptables Tutorial 1.1.19 Автор: Oskar Andreasson
перевод на русский язык есть на этом сайте

удачи

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "DNAT в сеть с CITRIX MF."
Сообщение от Sampan Искать по авторуВ закладки on 18-Дек-04, 01:42  (MSK)
"Зачем делать сложно, то что проще простого?" (с) "Наутилус-помпилиус"

Ну неужели, для того, чтобы прокинуть соединение по единственному порту (1494) нужно включать DNAT iptables?!

Для этой задачи написаны масса программ (набери в Гугле port forward - тебя завалит ссылками). Только недавно на этом сайте обсуждалась 3proxy - подойдет. Можно вовсе ни чего дополнительного не устанавливать - xinetd замечательно справится.

Навскидку конфиг xinetd

service ica
{
        flags                   = REUSE
        socket_type             = stream
        wait                    = no
        protocol                = tcp
        user                    = root
        bind                    = <public_ip>
        redirect                = <internal_ip> 1494
#       only_from               = <trusted_net>        # Это если нужно
        disable                 = no
}

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

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "DNAT в сеть с CITRIX MF."
Сообщение от LuckyBird Искать по авторуВ закладки(??) on 20-Дек-04, 10:04  (MSK)
>"Зачем делать сложно, то что проще простого?" (с) "Наутилус-помпилиус"
>
>Ну неужели, для того, чтобы прокинуть соединение по единственному порту (1494) нужно
>включать DNAT iptables?!

Если настроен iptables, почему бы его не спаользовать ешё и для этого ?


>
>Для этой задачи написаны масса программ (набери в Гугле port forward -
>тебя завалит ссылками).
Основные ссылки опять на тот-же iptables.

>Только недавно на этом сайте обсуждалась 3proxy -
>подойдет.
Если стоит squid и всё работает ,  зачем ещё прокси выставлять ?

Можно вовсе ни чего дополнительного не устанавливать - xinetd замечательно
>справится.
>
>Навскидку конфиг xinetd
>
>service ica
>{
>        flags    
>          
>    = REUSE
>        socket_type    
>         = stream
>
>        wait    
>          
>     = no
>        protocol    
>          
> = tcp
>        user    
>          
>     = root
>        bind                    = <public_ip>
>        redirect                = <internal_ip> 1494
>#       only_from               = <trusted_net>        # Это если нужно
>        disable    
>          
>  = no
>}

Вот это попробую.

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

  Рекомендовать в FAQ | Cообщить модератору | Наверх

14. "DNAT в сеть с CITRIX MF."
Сообщение от Sampan Искать по авторуВ закладки on 20-Дек-04, 13:42  (MSK)
>>"Зачем делать сложно, то что проще простого?" (с) "Наутилус-помпилиус"
>>
>>Ну неужели, для того, чтобы прокинуть соединение по единственному порту (1494) нужно
>>включать DNAT iptables?!
>
>Если настроен iptables, почему бы его не спаользовать ешё и для этого ?

Это обсуждение - лучший ответ на вопрос. О чем здесь спрашивают? "А почему так не работает? Попробуй так. И т.д."
Здесь же приходилось встречать админов, у которых скрипт iptables превышал 3000 строк. На 99 % можно утверждать, что ни он, ни кто другой уже в целом не понимает что этот скрипт делает. Для безопасности системы это не есть гуд.

>Если стоит squid и всё работает ,  зачем ещё прокси выставлять ?

Есть масса специалистов по безопасности, которые считают NAT необходимым злом. Правильная идеология - не манипуляция пакетами не проходе, а набор проксей прикладного уровня. Squid - это, всего лишь, маленький подкласс (http) возможных типов проксей (прежде всего - Socks). (Какие бывают прокси можно посмотреть www.delegate.org)
Кстати, все коммерческие (и дорогущие) firewall построены именно так! Посмотри состав любого - обойма разных проксей. И неспроста.

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

Кто ж говорит, что не в состоянии? Совершенно точно, возможно пробросить соединение средствами iptables. Я утверждаю, что, если это возможно, лучше и правильнее делать средствами проксей (или port forwarder)прикладного уровня.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "DNAT в сеть с CITRIX MF."
Сообщение от LuckyBird Искать по авторуВ закладки(??) on 20-Дек-04, 10:00  (MSK)
>если ты подаешь эту строку точно так как ты написал, то проблема,
>возможно, в синтаксисе :)    нужно писать $INET-IP и
А какая разница, если написан альяс

INET_IP="XXX.XXX.XXX.XXX"

Дока то хоошая, только вот ничего не работает :(

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "DNAT в сеть с CITRIX MF."
Сообщение от jonatan Искать по авторуВ закладки on 18-Дек-04, 13:13  (MSK)
ИМХО правильно так:

$IPTABLES -t nat -A PREROUTING -d $INET-IP -p tcp --dport 1494 -j DNAT --to-destination $LOCAL-IP

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "DNAT в сеть с CITRIX MF."
Сообщение от LuckyBird Искать по авторуВ закладки(??) on 20-Дек-04, 09:35  (MSK)
>ИМХО правильно так:
>
>$IPTABLES -t nat -A PREROUTING -d $INET-IP -p tcp --dport 1494 -j
>DNAT --to-destination $LOCAL-IP

Так тоже не работает :(
Никакой разницы в результате.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "DNAT в сеть с CITRIX MF."
Сообщение от ru Искать по авторуВ закладки(??) on 20-Дек-04, 09:50  (MSK)
Добавь еще такое правило
$IPTABLES -t nat -A PREROUTING -d $INET-IP -p udp --dport 1604 -j DNAT --to-destination $LOCAL-IP

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "DNAT в сеть с CITRIX MF."
Сообщение от jonatan Искать по авторуВ закладки on 20-Дек-04, 09:51  (MSK)
Может тогда так пойдет

$IPTABLES -t nat -A PREROUTING -i $INET_IFACE -d $INET-IP -p tcp --dport 1494 -j DNAT --to-destination $LOCAL-IP:1494

  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "DNAT в сеть с CITRIX MF."
Сообщение от LuckyBird Искать по авторуВ закладки(??) on 20-Дек-04, 10:06  (MSK)
>Может тогда так пойдет
>
>$IPTABLES -t nat -A PREROUTING -i $INET_IFACE -d $INET-IP -p tcp --dport
>1494 -j DNAT --to-destination $LOCAL-IP:1494


Никак не работает.

Больше всего ненравится то, что в данный момент трафик на ситрих форвадит виндовый шлюз, и всё замечательно работает %)

Подозрительно другое - есть только входящие пакеты на ситрих со шлюза, но не видно ответных Ж(

  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "DNAT в сеть с CITRIX MF."
Сообщение от ru Искать по авторуВ закладки(??) on 20-Дек-04, 10:20  (MSK)
Так если у тебя есть виндовый шлюз значит есть и юниксовый
а ты ситриксу прописал юниксовый шлюз
Тут у нас тоже возникла такая задача и мы ее решили DNAT ом
легко
  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "DNAT в сеть с CITRIX MF."
Сообщение от LuckyBird Искать по авторуВ закладки(??) on 20-Дек-04, 10:30  (MSK)
>Так если у тебя есть виндовый шлюз значит есть и юниксовый
>а ты ситриксу прописал юниксовый шлюз
>Тут у нас тоже возникла такая задача и мы ее решили DNAT
>ом
>легко

Да вроде всё ок (

А можно пример конфига ?

Возможна еще одна трабла.
Дело в том, что DNAT не отслеживает соединения
( в отличии от SNAT, который неявно делат для поступивших с другой стороны пакетов обратный DNAT).
Посему, когда машина из внутренней сети отвечает, до внешней машины пакеты идут со внутренним ip источника.
Конечно на шлюзе стоит SNAT для всей внутренней сети, и вроде как все впорядке, но соответствие портов источника
при этом не гарантируется.
Т.е. из инета citrix конектится на 1494-й порт и ждет ответа c 1494-го, а получает ответ допустим от 10022.

Помогите пожалуйста разобраться :(

  Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "DNAT в сеть с CITRIX MF."
Сообщение от ru Искать по авторуВ закладки(??) on 20-Дек-04, 10:42  (MSK)
Естественно SNAT быть должен в нем можно указать --to-destination INTERNET_INTERFACE:1494 То есть ты сделай SNAT на конкретный слючай и проверь прохождение
  Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "DNAT в сеть с CITRIX MF."
Сообщение от jonatan Искать по авторуВ закладки on 20-Дек-04, 13:09  (MSK)
>Дело в том, что DNAT не отслеживает соединения
>( в отличии от SNAT, который неявно делат для поступивших с другой
>стороны пакетов обратный DNAT).
Все он отслеживает. Механизм SNAT/DNAT одинаков. SNAT для этого не нужен.

>Помогите пожалуйста разобраться :(
Я виноват, забыл еще это

$IPTABLES -t filter -A FORWARD -i $INET_IFACE -d $LOCAL_IP -p tcp --dport 1494 -j ACCEPT
$IPTABLES -t filter -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

  Рекомендовать в FAQ | Cообщить модератору | Наверх

15. "DNAT в сеть с CITRIX MF."
Сообщение от Dig Искать по авторуВ закладки on 20-Дек-04, 14:07  (MSK)
Если нужно пробросить порт в локальную сеть то SNAT как раз тоже нужен
DNAT - делает проброс внутрь (замена реал ипадресс на фейк ипадресс) - тоесть запрос от клиентов с инета форвардятся в внутреннюю сеть
SNAT - натит ответные пакеты от сервера в локальной сети к клиентам в инете
FORWARD - нужет только в том случае если у тебя по умолчанию политика DROP или другие правила фаервола препятствуют прохождению пакетов

  Рекомендовать в FAQ | Cообщить модератору | Наверх

17. "DNAT в сеть с CITRIX MF."
Сообщение от jonatan Искать по авторуВ закладки on 20-Дек-04, 16:31  (MSK)
>Если нужно пробросить порт в локальную сеть то SNAT как раз тоже
>нужен
>DNAT - делает проброс внутрь (замена реал ипадресс на фейк ипадресс) -
>тоесть запрос от клиентов с инета форвардятся в внутреннюю сеть
>SNAT - натит ответные пакеты от сервера в локальной сети к клиентам
>в инете
Читай Iptables Tutorial, а еще лучше - проверяй, то что утверждаешь. Если нужно выполнять проброс из Инета в локалку, то достаточно одного DNAT. Все лично проверено. Убирал ВСЕ SNAT. Работает.  Механизм у SNAT и DNAT одинаковый.

>Дело в том, что DNAT не отслеживает соединения
Посмотри здесь
cat /proc/net/ip_conntrack
там и DNAT-соединения и SNAT. Даже различий между ними нет.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

16. "DNAT в сеть с CITRIX MF."
Сообщение от LuckyBird Искать по авторуВ закладки(??) on 20-Дек-04, 14:29  (MSK)
Всем огромное спасибо - все заработало.

Если не сложно подскажите пожалуйста, почему нужно писатьтак
$IPTABLES -t nat -A PREROUTING -d $INET_IP -p tcp --dport 1494   -j DNAT --to-destination 192.168.1.150

а не подходит
$IPTABLES -t nat -A PREROUTING -i $INET_IFACE -p tcp --dport 1494   -j DNAT --to-destination 192.168.1.150

Ведь по идее это означает - всё пришедшее на внешний интерфейс порт 1494  - пересылать на внутреннюю сеть, или я что-то недопонимаю ?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

18. "DNAT в сеть с CITRIX MF."
Сообщение от jonatan Искать по авторуВ закладки on 20-Дек-04, 17:11  (MSK)
Возможно для реализации conntrack (отслеживание соединений).
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




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

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