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

Исходное сообщение
"mpd5 + Обратный NAT"

Отправлено vak_2252231 , 20-Май-10 13:50 
Есть задача : организовать доступ внешним пользователям через Internet к внутренней сети.
На первый взгляд всё казалось тривиально и легко... (FreeBSD 7.3) установил mpd5, поднял NAT и всё сразу заработало. NAT в этом случае работает на внутреннем интерфейсе сервера, сервер не является шлюзом по умолчанию для рабочих станций и серверов внутренней сети.
Пользователи нормально подключаются по pptp, пингуется внутренняя сеть. Но вот проблемы начались у рабочих станций внутренней сети - возникли "тормоза" при обращении к сервисам этого сервера.

Конечно правило ipfw add 50 divert natd ip4 from any to any via igb1 для данного случая выглядит не корректно. Последующие мои попытки через добавления "косметических" правил успеха не принести: либо страдали внутренние клиенты либо у внешних пинг не проходил далее 10.116.4.111 У гугля не нашел внятного рецепта и теперь подзапутался... Подскажите как можно решить эту проблему?

/etc/rc.conf (Фрагмент)


gateway_enable="YES"
ifconfig_igb1="inet 10.116.4.111  netmask 255.255.255.0"

firewall_enable="YES"
firewall_type="OPEN"

natd_enable="YES"
natd_interface="igb1"

/etc/rc.firewall (Фрагмент)


[Oo][Pp][Ee][Nn]|[Cc][Ll][Ii][Ee][Nn][Tt])
    case ${natd_enable} in
    [Yy][Ee][Ss])
        if [ -n "${natd_interface}" ]; then

            ${fwcmd} add 50 divert natd ip4 from any to any via ${natd_interface}
        fi
        ;;
    esac


/usr/local/etc/mpd5/mpd.conf


default:
    load pptp_server

pptp_server:

    set ippool add pool1 192.168.1.50 192.168.1.99

    create bundle template B
    set iface anable nat
    set nat address 10.116.4.111
    set nat target 10.116.4.111
    set iface enable proxy-arp
    set iface idle 1800
    set iface enable tcpmssfix
    set ipcp yes vjcomp
    set ipcp ranges 192.168.1.1/32 ippool pool1
    set ipcp dns XXX.XXX.XXX.XXX
    set ipcp nbns XXX.XXX.XXX.XXX
    set bundle enable compression
    set ccp yes mppc
    set mppc yes e40
    set mppc yes e128
    set mppc yes stateless

    create link template L pptp
    set link action bundle B
    set link enable multilink
    set link yes acfcomp protocomp
    set link no pap chap eap
    set link enable chap

    set auth authname "VpnLogin"
    set auth password "VpnPassword"
    set link keep-alive 10 60

    set link mtu 1460
        set pptp self XXX.XXX.XXX.XXX
        set link enable incoming
    open



Содержание

Сообщения в этом обсуждении
"mpd5 + Обратный NAT"
Отправлено rr , 20-Май-10 14:04 
ничего не поняла.
какой внутренний интерфейс, если судя по конфигурации он единственный.
как из интернета можно подключться к внутреннему интерфейсу, даже если есть внешний.
если это не шлюз как у тебя рабочие хосты внутри сети узнают куда направлять ответы для удаленных клиентов.
что за схема такая.

"mpd5 + Обратный NAT"
Отправлено vak_2252231 , 20-Май-10 14:35 
>ничего не поняла.
>какой внутренний интерфейс, если судя по конфигурации он единственный.
>как из интернета можно подключться к внутреннему интерфейсу, даже если есть внешний.
>
>если это не шлюз как у тебя рабочие хосты внутри сети узнают
>куда направлять ответы для удаленных клиентов.
>что за схема такая.

Не показан внешний интерфейс...
Ну если надо:


ifconfig_igb0="inet XXX.XXX.XXX.XXX  netmask YYY.YYY.YYY.YYY"


"mpd5 + Обратный NAT"
Отправлено Square , 20-Май-10 14:10 
>Есть задача : организовать доступ внешним пользователям через Internet к внутренней сети.
>
>На первый взгляд всё казалось тривиально и легко... (FreeBSD 7.3) установил mpd5,
>поднял NAT и всё сразу заработало. NAT в этом случае работает
>на внутреннем интерфейсе сервера, сервер не является шлюзом по умолчанию для
>рабочих станций и серверов внутренней сети.
>Пользователи нормально подключаются по pptp, пингуется внутренняя сеть. Но вот проблемы начались
>у рабочих станций внутренней сети - возникли "тормоза" при обращении к
>сервисам этого сервера.

а обратный нат то за каким хреном тут сдался? роутите вашу pptp сетку во внутреннюю и все...


"mpd5 + Обратный NAT"
Отправлено vak_2252231 , 20-Май-10 14:39 
>[оверквотинг удален]
>>На первый взгляд всё казалось тривиально и легко... (FreeBSD 7.3) установил mpd5,
>>поднял NAT и всё сразу заработало. NAT в этом случае работает
>>на внутреннем интерфейсе сервера, сервер не является шлюзом по умолчанию для
>>рабочих станций и серверов внутренней сети.
>>Пользователи нормально подключаются по pptp, пингуется внутренняя сеть. Но вот проблемы начались
>>у рабочих станций внутренней сети - возникли "тормоза" при обращении к
>>сервисам этого сервера.
>
>а обратный нат то за каким хреном тут сдался? роутите вашу pptp
>сетку во внутреннюю и все...

Ну направлять пакеты во внутреннюю сетку можно, а какого хрена обратно будут пакеты идти?! Шлюз то по умолчанию у внутренних хостов совсем другой. Вот именно нужен NAT, причём через интерфейс внутренней сети. Или есть какой другой хитрый способ?


"mpd5 + Обратный NAT"
Отправлено Square , 20-Май-10 15:17 
>[оверквотинг удален]
>>>рабочих станций и серверов внутренней сети.
>>>Пользователи нормально подключаются по pptp, пингуется внутренняя сеть. Но вот проблемы начались
>>>у рабочих станций внутренней сети - возникли "тормоза" при обращении к
>>>сервисам этого сервера.
>>
>>а обратный нат то за каким хреном тут сдался? роутите вашу pptp
>>сетку во внутреннюю и все...
>
>Ну направлять пакеты во внутреннюю сетку можно, а какого хрена обратно будут
>пакеты идти?! Шлюз то по умолчанию у внутренних хостов совсем другой.

Вы шутку шутите чтоли? Шлюз по умолчанию у внутренних клиентов - ваш роутер, который знает как отроутить пакетик в pptp сеть.

Попробуйте думать о вашей pptp сети -как будто это просто еще одна внутренняя сеть (на самом деле это так и есть) и у вас все получится без обратного ната.

>Вот именно нужен NAT, причём через интерфейс внутренней сети. Или есть
>какой другой хитрый способ?

Да. Прочитать книжку про то как работают сети tcp/ip. Олиферов например.


"mpd5 + Обратный NAT"
Отправлено vak_2252231 , 20-Май-10 15:32 

>Вы шутку шутите чтоли? Шлюз по умолчанию у внутренних клиентов - ваш
>роутер, который знает как отроутить пакетик в pptp сеть.

С чего ради шлюз по умолчанию это pptp сервер?!
Нет, это не так! Поверьте, есть сети, где серверов много и каждый не может быть шлюзом по умолчанию.

>
>Попробуйте думать о вашей pptp сети -как будто это просто еще одна
>внутренняя сеть (на самом деле это так и есть) и у
>вас все получится без обратного ната.

Пробую, пока не получается. Конечно, если ip клиентов были бы из одной сети - нет проблем: маршрут на их сеть завести на шлюзе по умолчанию и всё. Но ведь ip клиентов могут быть очень разными, а маршрут на сеть, которую pptp раздаёт на время соединения ничего не даст.

>
>Да. Прочитать книжку про то как работают сети tcp/ip. Олиферов например.

Спросить пока самое эффективное. А книжки читать... (вот вы видимо читали, а понять ситуацию не хотите) - пустое.


"mpd5 + Обратный NAT"
Отправлено Square , 20-Май-10 15:45 
>
>>Вы шутку шутите чтоли? Шлюз по умолчанию у внутренних клиентов - ваш
>>роутер, который знает как отроутить пакетик в pptp сеть.
>
>С чего ради шлюз по умолчанию это pptp сервер?!
>Нет, это не так! Поверьте, есть сети, где серверов много и каждый
>не может быть шлюзом по умолчанию.

Вы не понимаете. Разве я сказал что это один и тот же сервер? У вас есть роутер, который является шлюзом по умолчанию для ваший внутренней сети. И уже дело роутера- иметь таблицу маршрутизации которая отошлет пакетик на pptp сервер который в свою очередь отроутит его на виртуальный свой интерфейс.

Являются ли эти сервера одним сервером физическим, или виртуальным, или это разные сервера - не имеет никакого значения.

Путь прохождения пакета при этом увеличится на один хоп.

>[оверквотинг удален]
>>
>>Попробуйте думать о вашей pptp сети -как будто это просто еще одна
>>внутренняя сеть (на самом деле это так и есть) и у
>>вас все получится без обратного ната.
>
>Пробую, пока не получается. Конечно, если ip клиентов были бы из одной
>сети - нет проблем: маршрут на их сеть завести на шлюзе
>по умолчанию и всё. Но ведь ip клиентов могут быть очень
>разными, а маршрут на сеть, которую pptp раздаёт на время соединения
>ничего не даст.

Маршрут на роутере (для pptp сетки), должен указывать на pptp сервер, который уже в свою очередь отроутит пакетик на свой виртуальный pptp интерфейс.
Маршрут на pptp сервере для серой сети- должен указывать НА РОУТЕР.

И таки прочитать книжку про то как работают сети tcp/ip. Олиферов например.

PS. вы вероятно связали ваш роутер и pptp-сервер через ту же самую внутреннюю сеть... мдааа.... так вот если это разные физические сервера - то свяжите их через фейковую сеть /32 назначив ее:
на роутере - как алиас на той же внутренней сетевой карте
на pptp-сервере - обычным путем на физическом интерефейсе (если этот сервер больше не предоставляте никаких сервисов во внутренней сети), или тоже через алиас если предоставляет.


"mpd5 + Обратный NAT"
Отправлено vak_2252231 , 20-Май-10 16:15 

>[оверквотинг удален]
>сервер? У вас есть роутер, который является шлюзом по умолчанию для
>ваший внутренней сети. И уже дело роутера- иметь таблицу маршрутизации которая
>отошлет пакетик на pptp сервер который в свою очередь отроутит его
>на виртуальный свой интерфейс.
>
>Являются ли эти сервера одним сервером физическим, или виртуальным, или это разные
>сервера - не имеет никакого значения.
>
>Путь прохождения пакета при этом увеличится на один хоп.
>

Думаете достаточно серую (раздаваемую pptp сервером) сеть в маршруте указать? Не уверен, хотя как вариант... Но хотелось бы в данном случае не использовать маршруты шлюза по умолчанию. Хотелось бы через NAT всех внешних пользователей завернуть.


"mpd5 + Обратный NAT"
Отправлено Square , 20-Май-10 16:17 
>[оверквотинг удален]
>>Являются ли эти сервера одним сервером физическим, или виртуальным, или это разные
>>сервера - не имеет никакого значения.
>>
>>Путь прохождения пакета при этом увеличится на один хоп.
>>
>
>Думаете достаточно серую (раздаваемую pptp сервером) сеть в маршруте указать? Не уверен,
>хотя как вариант... Но хотелось бы в данном случае не использовать
>маршруты шлюза по умолчанию. Хотелось бы через NAT всех внешних пользователей
>завернуть.

Поместить в файрвол правила ДО диверта разрешающее доступ к сервисам сервера из внутренней сети.


"mpd5 + Обратный NAT"
Отправлено vak_2252231 , 20-Май-10 16:48 

>Поместить в файрвол правила ДО диверта разрешающее доступ к сервисам сервера из
>внутренней сети.

Пробовал! Не понравилось как это всё работает - непонятные начались задержки во внутренней сети.


"mpd5 + Обратный NAT"
Отправлено Square , 20-Май-10 16:56 
>
>>Поместить в файрвол правила ДО диверта разрешающее доступ к сервисам сервера из
>>внутренней сети.
>
>Пробовал! Не понравилось как это всё работает - непонятные начались задержки во
>внутренней сети.

правило выглядело так?
20 allow tcp from локалка to me 80 keep-state
21 allow ip from me to локалка


"mpd5 + Обратный NAT"
Отправлено vak_2252231 , 20-Май-10 16:59 

>правило выглядело так?
>20 allow tcp from локалка to me 80 keep-state
>21 allow ip from me to локалка

Да, и так было и вот так:

50 allow ip from any to any 80,443,25


"mpd5 + Обратный NAT"
Отправлено Square , 20-Май-10 17:05 
>
>>правило выглядело так?
>>20 allow tcp from локалка to me 80 keep-state
>>21 allow ip from me to локалка
>
>Да, и так было и вот так:
>
>50 allow ip from any to any 80,443,25

подозрительное правило :)


"mpd5 + Обратный NAT"
Отправлено vak_2252231 , 20-Май-10 17:10 
>>
>>>правило выглядело так?
>>>20 allow tcp from локалка to me 80 keep-state
>>>21 allow ip from me to локалка
>>
>>Да, и так было и вот так:
>>
>>50 allow ip from any to any 80,443,25
>
>подозрительное правило :)

Вполне возможно, что из-за правил возникли проблемы.
Какой синтаксис в этом случае был бы правильным?


"mpd5 + Обратный NAT"
Отправлено rr , 20-Май-10 17:18 
>
>>правило выглядело так?
>>20 allow tcp from локалка to me 80 keep-state
>>21 allow ip from me to локалка
>
>Да, и так было и вот так:
>
>50 allow ip from any to any 80,443,25

такоего не могло быть


"mpd5 + Обратный NAT"
Отправлено vak_2252231 , 20-Май-10 17:19 
>>
>>>правило выглядело так?
>>>20 allow tcp from локалка to me 80 keep-state
>>>21 allow ip from me to локалка
>>
>>Да, и так было и вот так:
>>
>>50 allow ip from any to any 80,443,25
>
>такоего не могло быть

Ок, как правильно?


"mpd5 + Обратный NAT"
Отправлено rr , 20-Май-10 17:22 
allow tcp from any to any 80,443,25
allow tcp from any 80,443,25 to any

"mpd5 + Обратный NAT"
Отправлено vak_2252231 , 20-Май-10 17:25 
>allow tcp from any to any 80,443,25
>allow tcp from any 80,443,25 to any

Можно так?

allow tcp from локалка to me 80,443,25
allow tcp from me 80,443,25 to локалка


"mpd5 + Обратный NAT"
Отправлено Dmitry , 31-Май-10 12:12 
>>allow tcp from any to any 80,443,25
>>allow tcp from any 80,443,25 to any
>
>Можно так?
>
>allow tcp from локалка to me 80,443,25
>allow tcp from me 80,443,25 to локалка

Хм. Вроде как в mpd-5.5 появился обратный nat.
В CVS версии, кстати, еще и исправлены некоторые ошибки в нем.


"mpd5 + Обратный NAT"
Отправлено vak_2252231 , 31-Май-10 15:38 

>Хм. Вроде как в mpd-5.5 появился обратный nat.
>В CVS версии, кстати, еще и исправлены некоторые ошибки в нем.

Не получилось его использовать. Может не разобрался, может просто не работает - пришлось сделать по старинке : на ipfw+natd