URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 1959
[ Назад ]

Исходное сообщение
"Проблема доступа из локалки к локальным серверам через внешн..."

Отправлено tafkos , 11-Мрт-05 01:02 
Имеется следующая ситуация:

Структура доступа к инету из LAN:
LAN(192.168.1.0/24)<->(rl1, 192.168.1.20)FreeBSD gateway with ipfw natd(rl0, 81.x.x.x/28)<->Internet

ipfw и natd настроены стандартно

ipfw_start.sh

ipfw add divert natd all from 192.168.1.0/24 to any out via rl0
ipfw add divert natd all from any to 81.x.x.x/28 in via rl0

ipfw add pass all from any to any via rl1

ipfw add pass tcp from any to any <ports> - правила для работы с различными сервисами
ipfw add pass tcp from any <ports> to any

natd.conf
interface rl0
use_sockets yes
redirect_address 192.168.1.100 81.x.x.y (на 192.168.1.100 крутится сервер, доступный из интернета по адресу 81.x.x.y)

доступ из локалки в интернет работает без проблем
локальные серверы свободно доступны через нат из интернета
локальные серверы не доступны из локалки через внешние (белые) IP...

т.е. например,
1) с адреса 192.168.1.10 пытаемся залезть на http://81.x.x.y - получаем отлуп,
2) а если лезем на http://192.168.1.100 - все работает как часы.
3) в то же время лезем c 82.z.z.z на http://81.x.x.y - тоже все работает...

Вопрос: как дать доступ из локалки к локальным серверам через внешние(белые IP), т.е. через NAT?


Содержание

Сообщения в этом обсуждении
"Проблема доступа из локалки к локальным серверам через внешн..."
Отправлено EvilX , 11-Мрт-05 09:33 
>ipfw add divert natd all from 192.168.1.0/24 to any out via rl0
>
>ipfw add divert natd all from any to 81.x.x.x/28 in via rl0

Надо правильно так:
ipfw add divert natd all from any to any in via rl0
ipfw add divert natd all from 192.168.1.0/24 to any out via rl0

Что бы дать отлуп:
Либо поставь нат внешний только на нужные адреса, либо пере натом:
ipfw add deny all from 192.168.1.0/24 to bad.bad.bad.bad


"Проблема доступа из локалки к локальным серверам через внешн..."
Отправлено tafkos , 11-Мрт-05 20:20 
>>ipfw add divert natd all from 192.168.1.0/24 to any out via rl0
>>
>>ipfw add divert natd all from any to 81.x.x.x/28 in via rl0
>
>Надо правильно так:
>ipfw add divert natd all from any to any in via rl0
>ipfw add divert natd all from 192.168.1.0/24 to any out via rl0
>

Те же грабли, тока вид сбоку. По прежнему внутренние сервера недоступны с внутренних хостов по внешним IP адресам... :(

>
>Что бы дать отлуп:
>Либо поставь нат внешний только на нужные адреса, либо пере натом:
>ipfw add deny all from 192.168.1.0/24 to bad.bad.bad.bad

А отлуп давать как раз никому не надо - надо этот отлуп ликвидировать...

Еще раз, что мне надо сделать:
Локальный клиент должен обратиться на внешний IP, под которым виден внутренний сервак из инета (через нат), и получить доступ к этому серваку. Иначе говоря, пакет должен
1. Выйти с локального клиента
2. Попасть на внутренний интерфейс gateway'я.
3. Успешно пройти через IPFW.
4. Преобразоваться через НАТ, т.е. сменить серый IP отправителя на белый.
5. Попасть на внешний интерфейс gateway'я, оттуда никуда не уходить, вернуться в систему.
6. Снова преобразоваться и редиректиться через NAT, теперь сменить белый IP получателя на серый.
7. Опять успешно пройти через IPFW.
8. Прилететь на локальный сервак.
Ну, и чтобы обратно ответы долетали...


"Проблема доступа из локалки к локальным серверам через внешн..."
Отправлено San , 14-Мрт-05 20:16 
>из инета (через нат), и получить доступ к этому серваку. Иначе
>говоря, пакет должен
>1. Выйти с локального клиента
>2. Попасть на внутренний интерфейс gateway'я.
>3. Успешно пройти через IPFW.
>4. Преобразоваться через НАТ, т.е. сменить серый IP отправителя на белый.
>5. Попасть на внешний интерфейс gateway'я, оттуда никуда не уходить, вернуться в
>систему.
>6. Снова преобразоваться и редиректиться через NAT, теперь сменить белый IP получателя
>на серый.
>7. Опять успешно пройти через IPFW.
>8. Прилететь на локальный сервак.
>Ну, и чтобы обратно ответы долетали...

А если попробовать выкинуть п.3,4,5,6 и 7 и сделать форвардинг по аналогии со схемой реализации transparent-proxy ?
Т.е. в твоем случае надо в правилах ДО дайверта вписать:
---------
ipfw add 111 fwd ${ipin},${srvport} tcp from ${netin} to ${outsrvadr} ${srvport} out via ${ifout}
ipfw add 112 fwd ${ipin},${srvport} udp from ${netin} to ${outsrvadr} ${srvport} out via ${ifout}
---------
где
ipin="IP адрес внутреннего интерфейса фрюхи"
ifout="имя внешнего интерфейса фрюхи"
netin="IP адрес внутренней сети"
outsrvadr="внешний IP адрес сервера"
srvport="номер порта на сервере"


"Проблема доступа из локалки к локальным серверам через внешн..."
Отправлено Alex , 15-Мрт-05 11:36 
На этом же сайте прочти про настройку iptables