The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Переадресация на другой компьютер при обращении на порт"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Firewall, Фильтрация пакетов)
Изначальное сообщение [ Отслеживать ]

"Переадресация на другой компьютер при обращении на порт"  +/
Сообщение от MakPol (ok) on 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_раб_серв

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Переадресация на другой компьютер при обращении на порт"  +/
Сообщение от PavelR (ok) on 26-Июл-12, 10:35 

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Переадресация на другой компьютер при обращении на порт"  +/
Сообщение от MakPol (ok) on 26-Июл-12, 11:09 
> нужна схема сети, с указанием 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

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Переадресация на другой компьютер при обращении на порт"  +/
Сообщение от reader (ok) on 26-Июл-12, 11:20 
>> нужна схема сети, с указанием 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

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Переадресация на другой компьютер при обращении на порт"  +/
Сообщение от ipmanyak (ok) on 26-Июл-12, 11:44 
попробуй так:
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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Переадресация на другой компьютер при обращении на порт"  +/
Сообщение от MakPol (ok) on 26-Июл-12, 11:53 
> попробуй так:
> 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"

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Переадресация на другой компьютер при обращении на порт"  +/
Сообщение от reader (ok) on 26-Июл-12, 14:52 
>[оверквотинг удален]
>> 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 - нужен т.к. в туже подсеть перенаправляете , разжевано
http://www.opennet.dev/docs/RUS/iptables/#DNATTARGET

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

смотрите tcpdump

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Переадресация на другой компьютер при обращении на порт"  +/
Сообщение от MakPol (ok) on 26-Июл-12, 15:06 
Короче разобрался, настроил вот так:
к стандартному 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 теперь убирать не нужно.
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

Архив | Удалить

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




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

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