вторник, 13 марта 2012 г.

Интернет сайт за NAT. Проброс сайта в локальной сети. Shorewall. Forwardings

Возникла такая вот задача:
Есть сервер в локальной сети (IP=192.168.0.1), на котором крутится интернет сайт. Есть шлюз в мир (eth0 IP=192.168.0.2), на котором установлен shorewall (настройка шлюза и shorewall), с постоянным IP-адресом (bb.bb.bb.bb) и зарезервированным доменным именем (www.mydomen.com). Необходимо: обеспечить возможность обращения к интернет сайту из "мира" и из локальной сети по доменному имени (www.mydomen.com).


С открытием и пробросом сайта в "мир" как бы проблем не возникло. Тут совсем все просто.
Разрешаем на shorewall`е интрент запросы:
 
$sudo mcedit /etc/shorewall/rules
 
ACCEPT              net          fw         tcp        www
or
WEB(ACCEPT)     net          fw 

И пробрасуем интернет запросы на наш сервер, где крутится сайт:
 
$sudo mcedit /etc/shorewall/rules
 
DNAT  net          loc:192.168.0.1         tcp        www

Собственно на этом все. Вуаля, доступ из мира разрешен!!!


А вот с доступом из локальной сети придется повозиться.
ВАЖНО!!! В интерфейсах необходимо добавить опцию routeback:
$sudo mcedit /etc/shorewall/interfaces
 
#ZONE INTERFACE BROADCAST OPTIONS
loc       eth0          detect         routeback  

Добавим правило маскарада:
$sudo mcedit /etc/shorewall/interfaces
 
#INTERFACE              SOURCE         ADDRESS          PROTO          PORT(S)
eth0:192.168.0.1       eth0              192.168.0.2      tcp               www

И, собственно, правило проброса в локальную сеть:
$sudo mcedit /etc/shorewall/rules
#ACTION     SOURCE       DEST             PROTO     DEST         SOURCE       ORIGINAL       RATE USER/ MARK
#                                                                    PORT         PORT (S)     DEST
DNAT          loc       loc:192.168.0.1      tcp         www           -               bb.bb.bb.bb

Если постоянный внешний IP-адрес отсутствует или по доменному имени резолвится несколько IP-адресов, то необходимо использовать параметры:
$sudo mcedit /etc/shorewall/params
 ETH1_IP=$(find_first_interface_address eth1) 
 
где eth1 - интерфейс, который смотрит в мир (ADSL например)

Тогда правило проброса будет выглядеть так:
$sudo mcedit /etc/shorewall/rules
#ACTION     SOURCE       DEST             PROTO     DEST         SOURCE       ORIGINAL       RATE USER/ MARK
#                                                                    PORT         PORT (S)     DEST
DNAT          loc       loc:192.168.0.1      tcp         www           -               $ETH1_IP


Теперь все ok! Mission complete :)

Более подробную инфу на буржуйском смотри тут:
http://shorewall.net/FAQ.htm#faq2
http://shorewall.net/FAQ.htm
http://shorewall.net/Documentation.html

Комментариев нет:

Отправить комментарий