1

Добрый день, Гуру!

Задача слеюущая: есть сервер S1(1.1.1.1) и сервер S2(2.2.2.2). На S2 поднята служба, работающая по UDP.
Мне нужно сделать так, чтобы клиент C1, обращаясь на S1 по порту, скажем, 1010 попадал на S2:2020, но при этом он не должен знать о существовании S2.
Оба сервера находятся в интернете. На обоих стоит CentOS 5.5. S2:2020 работает.

На данный момент я попытался вот что сделать на S1:

 Консоль:
iptables -t nat -A PREROUTING -p udp --dport 1010 --dst 1.1.1.1 -j DNAT --to-destination 2.2.2.2
iptables -t nat -A PREROUTING -p udp --dport 1010 -j REDIRECT --to-ports 2020
iptables -t nat -A POSTROUTING -p udp --dport 2020 --dst 2.2.2.2 -j SNAT --to-source 1.1.1.1

iptables -I RH-Firewall-1-INPUT 1 -p udp --dport 1010 -j ACCEPT
iptables -I RH-Firewall-1-INPUT 2 -p udp --src 2.2.2.2 -j ACCEPT


Цепочка RH-Firewall-1-INPUT используется в таблицах INPUT и FORWARD.
"Обратные" правила я не прописывал, т.к. в этой цепочке есть вот такое:

 Консоль:
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED

хотя... может, в этом и проблема?

На всякий случай, вот цепочка

 Консоль:
Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere            icmp any
ACCEPT     esp  --  anywhere             anywhere
ACCEPT     ah   --  anywhere             anywhere
ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns
ACCEPT     udp  --  anywhere             anywhere            udp dpt:ipp
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Казалось бы, обсосанная тема... но я пока не сомг добиться ее решеиня... Надеюсь, что вы мне подскажете, как быть?
Правильно ли вообще для этого использовать iptables? Или лучше смотреть в сторону SSH или NetCat?

Спасибо!

2 (07.05.2011 13:32:07 отредактировано Kettler)

на 1.1.1.1
Выполните вот такой скрипт где local ваша локальная подсеть за 1.1.1.1

local="192.168.0.0/24"
iptables -t nat -A PREROUTING -p udp --dport 1010 -j DNAT --to-destination 2.2.2.2:1010
iptables -i FORWARD -i $local -d 2.2.2.2 -p udp 1010 -j ACCEPT
iptables -i FORWARD -s  2.2.2.2 -o $local -p udp 1010 -j ACCEPT

на 2.2.2.2
Где ip это реальный ип адрес смотрящий в инет в 1.1.1.1

ip="1.1.1.1""
iptables -A INPUT -i $ip -p udp --sport 1010 -j ACCEPT
iptables -A OUTPUT -o $ip -p udp --dport 1010 -j ACCEPT
Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.