URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 51819
[ Назад ]

Исходное сообщение
"порт"

Отправлено __name , 22-Дек-04 00:03 
есть локальный сервер с адресом 192.168.0.1 и инетовский с адресом 1.2.3.4, на локальном сервере открыт порт 1234, реально ли сделать чтоб при обращении к 1.2.3.4 на порт 1234 он это переадресовывал к 192.168.0.1 на этот же порт?

Содержание

Сообщения в этом обсуждении
"порт"
Отправлено __name , 22-Дек-04 02:47 
>есть локальный сервер с адресом 192.168.0.1 и инетовский с адресом 1.2.3.4, на
>локальном сервере открыт порт 1234, реально ли сделать чтоб при обращении
>к 1.2.3.4 на порт 1234 он это переадресовывал к 192.168.0.1 на
>этот же порт?


вобщем нужно сделать редирект (на ядре 2.2) пробывал однострочные способы найденые в инете, типа:
ipchains -I input -p tcp -i eth0 --source-port 1234 -d 192.168.0.1 1234 -j REDIRECT
или
ipchains -I forward -i eth0 -p tcp -s 0/0 -d 192.168.0.1 1234 -j ACCEPT
не работают


"порт"
Отправлено MoHaX , 22-Дек-04 05:19 
Как я понял ОС Линукс... А чего iptables не пользуешь? Там вроде проще сделать...

"порт"
Отправлено ipmanyak , 22-Дек-04 06:15 
>есть локальный сервер с адресом 192.168.0.1 и инетовский с адресом 1.2.3.4, на
>локальном сервере открыт порт 1234, реально ли сделать чтоб при обращении
>к 1.2.3.4 на порт 1234 он это переадресовывал к 192.168.0.1 на
>этот же порт?
на ipchains не сделать такой маппинг порта, нужно юзать iptables, но поскольку у тебя ядро 2.2.x и айпиталеса там кажись вообще нету, то тебе нужен пакет redir-2.2.1 брать здесь http://sun3.sammy.net/~sammy/hacks/
http://sun3.sammy.net/~sammy/hacks/redir-2.2.1.tar.gz
маппинг будет выглядеть так
/bin/redir --lport=3389 --laddr=1.2.3.4 --cport=3389 --caddr=192.168.0.1 --syslog --name=rdesktop &


"порт"
Отправлено tumba , 23-Дек-04 13:21 
>>есть локальный сервер с адресом 192.168.0.1 и инетовский с адресом 1.2.3.4, на
>>локальном сервере открыт порт 1234, реально ли сделать чтоб при обращении
>>к 1.2.3.4 на порт 1234 он это переадресовывал к 192.168.0.1 на
>>этот же порт?

>у тебя ядро 2.2.x и айпиталеса там кажись вообще нету, то
>тебе нужен пакет redir-2.2.1

А на 2.4.x. как это сделать ?

Вообще-то хотелось бы научится мапировать на произвольные порты. Т.е. при обращении по порту 1111 на машине 192.168.0.1, на самом деле обращалось на порт 2222 на машине 192.168.0.2



"порт"
Отправлено Quarc , 23-Дек-04 14:02 
под 2.4 можно использовать iptables(хотя можно оставить и ipchains)
вообщем то что тебе нужно делается DNAT'ом

iptables -t nat -A PREROUTING -p tcp -d 192.168.0.1 --dport 1111 -j DNAT --to-destination 192.168.0.2:2222
(примерно так у меня выглядит правило чтоб расшарить веб сервер, стоЯщий за НАТом, в инет)

В принципе ещё надо сделать так:
iptables -t nat -A POSTROUTING -p tcp -dport 2222 -d 192.168.0.2 -j SNAT --to-source 192.168.0.1:1111(с этим правилом не уверен, пусть знающие люди поправят если что не так)

без этого правила будет происходить не совсем мапинг портов, т.е. без него машина 192.168.0.2 будет видеть реальные адреса запросившего, что бывает нужно, а бывает нет

PS:У некоторых протоколов(например ftp) есть свои особенности и так просто такой сервис не промапить.


"порт"
Отправлено jonatan , 23-Дек-04 14:54 
https://www.opennet.ru/docs/RUS/iptables/#DNATTARGET
Здесь подробно расписано для чего бывает нужен SNAT в случае использования DNAT.

"порт"
Отправлено jonatan , 23-Дек-04 14:50 
Если kernel 2.2.x
http://www.tldp.org/HOWTO/IP-Masquerade-HOWTO/forwarders.htm...

"порт"
Отправлено zm0m , 23-Дек-04 21:27 
>есть локальный сервер с адресом 192.168.0.1 и инетовский с адресом 1.2.3.4, на
>локальном сервере открыт порт 1234, реально ли сделать чтоб при обращении
>к 1.2.3.4 на порт 1234 он это переадресовывал к 192.168.0.1 на
>этот же порт?

нужно примерно следующее на баше для ядра 2.4 и iptables
если в сети компе_шлюзе_фаерволе с внешним ip и 2-мя сетевухами
внеш  217.77.209.22    (eth0)
внутр 192.168.0.100/24 (eth1)
ип_то_чего_выпускаем 192.168.0.1/24

#--
IPTABLES=iptables                                                
                                                                          
INT_INTERF="eth0" # Внутренний If                      
EXT_INTERF="eth1" # Внешний If                    
                                                                          
REAL_IP="217.77.209.22" # реальный IP                  
DMZ_IP="192.168.0.1"    # IP в DMZ зоне кот должен быть доступен извне

REAL_PORT="1905"        # Порт открытый на компе с REAL_IP                
DMZ_PORT="2004"         # Порт открытый на компе с DMZ_IP
                                                                        
LAN_DMZ="192.168.0.0/24" # Сеть DMZ зоны                      
LAN_IPADDR_DMZ="192.168.0.100" # IP из фаервол-шлюз

$IPTABLES -A PREROUTING -p tcp -d $REAL_IP --dport $REAL_PORT -t nat -j DNAT --to-destination $DMZ_IP:$DMZ_PORT
$IPTABLES -A POSTROUTING -p tcp -d $DMZ_IP -t nat -j SNAT --to-source $LAN_IPADDR_DMZ
$IPTABLES -A FORWARD -p tcp --syn -d $DMZ_IP -j ACCEPT
$IPTABLES -A FORWARD -p tcp -s $DMZ_IP -m state ESTABLISHED,RELATED -j ACCEPT


"порт"
Отправлено fa , 24-Дек-04 03:41 
>есть локальный сервер с адресом 192.168.0.1 и инетовский с адресом 1.2.3.4, на
>локальном сервере открыт порт 1234, реально ли сделать чтоб при обращении
>к 1.2.3.4 на порт 1234 он это переадресовывал к 192.168.0.1 на
>этот же порт?
Возможно я неправильно понял суть вопроса. Видел несколько утилит (bounce, datapipe, socket2soc), которые этим занимаются