Блог ИТ склеротика. IPTables и удаленный доступ в сеть

Страницы

Расширенный поиск в статьях блога

18 февраля 2012 г.

IPTables и удаленный доступ в сеть

Итак, сеть настроена, пакеты ходят, интернет работает, права режутся — в общем момент, когда можно перевести дух и заняться «доводкой» сервера для удобства не пользователя, но администратора. А что хочется правильному системному администратору? Конечно же! Чтобы его рабочие обязанности отнимали у него как можно меньше свободного времени. А что для этого служит лучше всего — естественно удаленный доступ.


Сегодня этим уже никого не удивишь — безлимитный интернет есть уже практически у всех, так что доступ к любимому серверу можно получить откуда угодно.
А что делать, если за одним IP-адресом «скрыта» обширная сеть с несколькими серверами, к каждому из которых может понадобиться доступ?
Естественно существует вариант установить что-нибудь вроде Radmin на каждый из них, и использовать один как «перевалочную базу». Однако Radmin не всегда может помочь — нужен полноценный «родной» терминал. Как поступить в таком случае? Нужно просто ввести разницу, на какой порт обращаться.
Немного опишу структуру сети, о которой пойдет речь. Внешний IP — один. Собственно к ADSL-модему подключен «шлюзовой» сервер под управлением Linux, второй интерфейс сервера — подключен в сеть. Интернет раздается на несколько подсетей, в каждой из которых стоит по серверу, на который можно зайти по RDP.
Примем за 192.168.100.1 — адрес внешнего интерфейса шлюзового сервера. eth0 — «внутренний» интерфейс, eth1 — «внешний». 192.168.1.1 — адрес первого сервера, 192.168.2.1 — второго, и т.д.
Я думаю, не стоит подробно описывать процесс правки правил IPTABLES. Поэтому сконцентрируемся на том, как дать доступ извне на несколько серверов.
Для начала нужно пробросить порты с ADSL-модема на сервер. Определяемся сколько нам их нужно. Например, шесть — настраиваем на проброс порты с 3384 по 3389.
Далее, нам нужно лишь обработать пакет, который примет модем, и отправить его на нужный нам сервер:
iptables -t nat -A PREROUTING -p tcp -d 192.168.100.1 –dport 3385 -j DNAT to-destination 192.168.2.1:3389
iptables -t nat -A PREROUTING -p tcp -d 192.168.100.1 –dport 3386 -j DNAT to-destination 192.168.3.1:3389
iptables -t nat -A PREROUTING -p tcp -d 192.168.100.1 –dport 3389 -j DNAT to-destination 192.168.1.1:3389

iptables -A FORWARD -i eth1 -o eth0 -d 192.168.1.1 -p tcp –dport 3389 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -d 192.168.2.1 -p tcp –dport 3389 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -d 192.168.3.1 -p tcp –dport 3389 -j ACCEPT

Что у нас получается? Если мы запустим RDP-клиент на внешний адрес модема — шлюз пробросит его на нужный сервер внутри сети, ориентируясь по портам. Если укажем адрес подключения без указания порта — подключимся на сервер 192.168.1.1.
Способ не идеальный, но вполне рабочий. А главное простой и не требует каких-либо усилий для реализации.

.

Счетчик тИЦ и PR Яндекс.Метрика Msn bot last visit powered by MyPagerank.NetYahoo bot last visit powered by MyPagerank.Net ping fast  my blog, website, or RSS feed for Free