Проксирование IP.

S
На сайте с 15.01.2008
Offline
34
811

Добрый день многоуважаемые друзья!

Столкнулся с ситуацией которая ввела меня в тупик.

И так,что есть:

Сервер №1: имеет внешний IP и виден из интернета

Сервер №2: имеет локальный IP (192.168.x.x) и подключен напрямую к серверу №1 (через второй Ethernet порт) через обычную сеть.

Сервер №1 и сервер №2 без особых проблем общаются друг с другом.

Задача:Вывести сервер №2 в сеть используя сервер №1 (на нем стоит сервер БД, который должен быть доступен из сети).

На обеих машинах CentOS 5.3

Из текущих идей пока только OpenVPN летает в голове.

В наличии имеются множество IP (видимые из интернета) которые можно использовать для проксирования сервера №2.

Может быть, уважаемые форумчане, кто-либо из Вас сталкивался с подобной ситуацией. Я бы был Вам очень благодарен, если б Вы толкнули меня в нужном направлении :)

Спасибо,с уважением к Вам.

Качественный хостинг Unlimits Telecom (http://www.unlimits.ru) (ООО "БизнесТелеКом"). Официальный Twitter канал (http://twitter.com/untelecom). Ознакомиться с нашими услугами можно в этом (/ru/forum/478822) топике.
BS
На сайте с 22.06.2009
Offline
73
#1

Настроить нат, чтобы с сервера2 можно было попасть во внешку, и например порт форвардинг через iptables, перебрасывать всё что приходит на определенный порт внешнего интерфейса на сервер2, чтобы бд на нём была доступна извне.

qwartyr
На сайте с 19.10.2007
Offline
40
#2

Да нужен именно чистый NAT для порта 3306.

профессиональное администрирование серверов (http://www.unixsupport.ru) отзывы (http://www.free-lance.ru/users/qwartyr/opinions/) на free-lance.ru
S
На сайте с 15.01.2008
Offline
34
#3

Спасибо уважаемый bb-support!

Отличная идея!Все получилось!

И так друзья,если кто вдруг когда-либо столкнется с подобной ситуацией, вот решение проблемы (буду за исходные данные брать мой пример):

На сервере 1:

1) включаем портфорвардинг

echo "1" > /proc/sys/net/ipv4/ip_forward

2)Добавляем правила в IpTables:

iptables -t filter -A FORWARD -j ACCEPT

iptables -t nat -A POSTROUTING -s <"внутренняя" подсеть> -d 0/0 -o <"внешний" интерфейс> -j SNAT --to-source <"внешний" IP>

Пример:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 0/0 -o eth0 -j SNAT --to-source 199.199.199.199

3)И Самое главное!Форвардим порты:

iptables -t nat -A PREROUTING -p tcp -m tcp -d ВНЕШНИЙ ИП --dport ПОРТ_КОТОРЫЙ_ПЕРЕБРАСЫВАЕМ -j DNAT --to-destination ВНУТРЕННИЙ_ИП:ПОРТ_СЕРВЕРА

Пример (SSH порт перебрасываю):

iptables -t nat -A PREROUTING -p tcp -m tcp -d 199.199.199.199 --dport 22 -j DNAT --to-destination 192.168.1.1:22

192.168.1.0/24- внутрянняя сетка

eth0 - интерфейс который у меня смотрит в Интернет

199.199.199.199 - мой внешний IP

На сервере №2:

В /etc/sysconfig/network

1)Добавляем:GATEWAY=192.168.1.1 (т.е IP сервера №1)

2)service network restart

Boris A Dolgov
На сайте с 04.07.2007
Offline
215
#4

А еще можно заюзать haproxy.

С уважением, Борис Долгов. Администрирование, дешевые лицензии ISPsystem, Parallels, cPanel, DirectAdmin, скины, SSL - ISPlicense.ru (http://www.isplicense.ru/?from=4926)
kxk
На сайте с 30.01.2005
Offline
970
kxk
#5

Boris A Dolgov, +1

Ваш DEVOPS
S
На сайте с 15.01.2008
Offline
34
#6

Дело вкуса. Вышеописанный способ будет работать без установки дополнительного ПО.

Но всеравно спасибо за haproxy, интересный софт оказывается!

Boris A Dolgov
На сайте с 04.07.2007
Offline
215
#7
stack:
Дело вкуса. Вышеописанный способ будет работать без установки дополнительного ПО.
Но всеравно спасибо за haproxy, интересный софт оказывается!

Да, согласен. Но не всегда приемлемо


На сервере №2:
В /etc/sysconfig/network
1)Добавляем:GATEWAY=192.168.1.1 (т.е IP сервера №1)
2)service network restart

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий