LinuxForum.Fans
Тема

Как соединить клиента с Server2 через Server1

Автор: Shul 2 сообщений 1922 просмотров
#159397

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

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

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

[console]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[/console]


Цепочка RH-Firewall-1-INPUT используется в таблицах INPUT и FORWARD.
"Обратные" правила я не прописывал, т.к. в этой цепочке есть вот такое:
[console]ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED[/console]
хотя... может, в этом и проблема?

На всякий случай, вот цепочка
[console]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
[/console]

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

Спасибо!

#159399

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

text

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

text

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
Войдите или зарегистрируйтесь, чтобы ответить.