Добрый день, Гуру!
Задача слеюущая: есть сервер 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 -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.
"Обратные" правила я не прописывал, т.к. в этой цепочке есть вот такое:
хотя... может, в этом и проблема?
На всякий случай, вот цепочка
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?
Спасибо!
