Есть задача : организовать доступ внешним пользователям через 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_serverpptp_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 statelesscreate 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 chapset auth authname "VpnLogin"
set auth password "VpnPassword"
set link keep-alive 10 60set link mtu 1460
set pptp self XXX.XXX.XXX.XXX
set link enable incoming
open
ничего не поняла.
какой внутренний интерфейс, если судя по конфигурации он единственный.
как из интернета можно подключться к внутреннему интерфейсу, даже если есть внешний.
если это не шлюз как у тебя рабочие хосты внутри сети узнают куда направлять ответы для удаленных клиентов.
что за схема такая.
>ничего не поняла.
>какой внутренний интерфейс, если судя по конфигурации он единственный.
>как из интернета можно подключться к внутреннему интерфейсу, даже если есть внешний.
>
>если это не шлюз как у тебя рабочие хосты внутри сети узнают
>куда направлять ответы для удаленных клиентов.
>что за схема такая.Не показан внешний интерфейс...
Ну если надо:
ifconfig_igb0="inet XXX.XXX.XXX.XXX netmask YYY.YYY.YYY.YYY"
>Есть задача : организовать доступ внешним пользователям через Internet к внутренней сети.
>
>На первый взгляд всё казалось тривиально и легко... (FreeBSD 7.3) установил mpd5,
>поднял NAT и всё сразу заработало. NAT в этом случае работает
>на внутреннем интерфейсе сервера, сервер не является шлюзом по умолчанию для
>рабочих станций и серверов внутренней сети.
>Пользователи нормально подключаются по pptp, пингуется внутренняя сеть. Но вот проблемы начались
>у рабочих станций внутренней сети - возникли "тормоза" при обращении к
>сервисам этого сервера.а обратный нат то за каким хреном тут сдался? роутите вашу pptp сетку во внутреннюю и все...
>[оверквотинг удален]
>>На первый взгляд всё казалось тривиально и легко... (FreeBSD 7.3) установил mpd5,
>>поднял NAT и всё сразу заработало. NAT в этом случае работает
>>на внутреннем интерфейсе сервера, сервер не является шлюзом по умолчанию для
>>рабочих станций и серверов внутренней сети.
>>Пользователи нормально подключаются по pptp, пингуется внутренняя сеть. Но вот проблемы начались
>>у рабочих станций внутренней сети - возникли "тормоза" при обращении к
>>сервисам этого сервера.
>
>а обратный нат то за каким хреном тут сдался? роутите вашу pptp
>сетку во внутреннюю и все...Ну направлять пакеты во внутреннюю сетку можно, а какого хрена обратно будут пакеты идти?! Шлюз то по умолчанию у внутренних хостов совсем другой. Вот именно нужен NAT, причём через интерфейс внутренней сети. Или есть какой другой хитрый способ?
>[оверквотинг удален]
>>>рабочих станций и серверов внутренней сети.
>>>Пользователи нормально подключаются по pptp, пингуется внутренняя сеть. Но вот проблемы начались
>>>у рабочих станций внутренней сети - возникли "тормоза" при обращении к
>>>сервисам этого сервера.
>>
>>а обратный нат то за каким хреном тут сдался? роутите вашу pptp
>>сетку во внутреннюю и все...
>
>Ну направлять пакеты во внутреннюю сетку можно, а какого хрена обратно будут
>пакеты идти?! Шлюз то по умолчанию у внутренних хостов совсем другой.Вы шутку шутите чтоли? Шлюз по умолчанию у внутренних клиентов - ваш роутер, который знает как отроутить пакетик в pptp сеть.
Попробуйте думать о вашей pptp сети -как будто это просто еще одна внутренняя сеть (на самом деле это так и есть) и у вас все получится без обратного ната.
>Вот именно нужен NAT, причём через интерфейс внутренней сети. Или есть
>какой другой хитрый способ?Да. Прочитать книжку про то как работают сети tcp/ip. Олиферов например.
>Вы шутку шутите чтоли? Шлюз по умолчанию у внутренних клиентов - ваш
>роутер, который знает как отроутить пакетик в pptp сеть.С чего ради шлюз по умолчанию это pptp сервер?!
Нет, это не так! Поверьте, есть сети, где серверов много и каждый не может быть шлюзом по умолчанию.>
>Попробуйте думать о вашей pptp сети -как будто это просто еще одна
>внутренняя сеть (на самом деле это так и есть) и у
>вас все получится без обратного ната.Пробую, пока не получается. Конечно, если ip клиентов были бы из одной сети - нет проблем: маршрут на их сеть завести на шлюзе по умолчанию и всё. Но ведь ip клиентов могут быть очень разными, а маршрут на сеть, которую pptp раздаёт на время соединения ничего не даст.
>
>Да. Прочитать книжку про то как работают сети tcp/ip. Олиферов например.Спросить пока самое эффективное. А книжки читать... (вот вы видимо читали, а понять ситуацию не хотите) - пустое.
>
>>Вы шутку шутите чтоли? Шлюз по умолчанию у внутренних клиентов - ваш
>>роутер, который знает как отроутить пакетик в pptp сеть.
>
>С чего ради шлюз по умолчанию это pptp сервер?!
>Нет, это не так! Поверьте, есть сети, где серверов много и каждый
>не может быть шлюзом по умолчанию.Вы не понимаете. Разве я сказал что это один и тот же сервер? У вас есть роутер, который является шлюзом по умолчанию для ваший внутренней сети. И уже дело роутера- иметь таблицу маршрутизации которая отошлет пакетик на pptp сервер который в свою очередь отроутит его на виртуальный свой интерфейс.
Являются ли эти сервера одним сервером физическим, или виртуальным, или это разные сервера - не имеет никакого значения.
Путь прохождения пакета при этом увеличится на один хоп.
>[оверквотинг удален]
>>
>>Попробуйте думать о вашей pptp сети -как будто это просто еще одна
>>внутренняя сеть (на самом деле это так и есть) и у
>>вас все получится без обратного ната.
>
>Пробую, пока не получается. Конечно, если ip клиентов были бы из одной
>сети - нет проблем: маршрут на их сеть завести на шлюзе
>по умолчанию и всё. Но ведь ip клиентов могут быть очень
>разными, а маршрут на сеть, которую pptp раздаёт на время соединения
>ничего не даст.Маршрут на роутере (для pptp сетки), должен указывать на pptp сервер, который уже в свою очередь отроутит пакетик на свой виртуальный pptp интерфейс.
Маршрут на pptp сервере для серой сети- должен указывать НА РОУТЕР.И таки прочитать книжку про то как работают сети tcp/ip. Олиферов например.
PS. вы вероятно связали ваш роутер и pptp-сервер через ту же самую внутреннюю сеть... мдааа.... так вот если это разные физические сервера - то свяжите их через фейковую сеть /32 назначив ее:
на роутере - как алиас на той же внутренней сетевой карте
на pptp-сервере - обычным путем на физическом интерефейсе (если этот сервер больше не предоставляте никаких сервисов во внутренней сети), или тоже через алиас если предоставляет.
>[оверквотинг удален]
>сервер? У вас есть роутер, который является шлюзом по умолчанию для
>ваший внутренней сети. И уже дело роутера- иметь таблицу маршрутизации которая
>отошлет пакетик на pptp сервер который в свою очередь отроутит его
>на виртуальный свой интерфейс.
>
>Являются ли эти сервера одним сервером физическим, или виртуальным, или это разные
>сервера - не имеет никакого значения.
>
>Путь прохождения пакета при этом увеличится на один хоп.
>Думаете достаточно серую (раздаваемую pptp сервером) сеть в маршруте указать? Не уверен, хотя как вариант... Но хотелось бы в данном случае не использовать маршруты шлюза по умолчанию. Хотелось бы через NAT всех внешних пользователей завернуть.
>[оверквотинг удален]
>>Являются ли эти сервера одним сервером физическим, или виртуальным, или это разные
>>сервера - не имеет никакого значения.
>>
>>Путь прохождения пакета при этом увеличится на один хоп.
>>
>
>Думаете достаточно серую (раздаваемую pptp сервером) сеть в маршруте указать? Не уверен,
>хотя как вариант... Но хотелось бы в данном случае не использовать
>маршруты шлюза по умолчанию. Хотелось бы через NAT всех внешних пользователей
>завернуть.Поместить в файрвол правила ДО диверта разрешающее доступ к сервисам сервера из внутренней сети.
>Поместить в файрвол правила ДО диверта разрешающее доступ к сервисам сервера из
>внутренней сети.Пробовал! Не понравилось как это всё работает - непонятные начались задержки во внутренней сети.
>
>>Поместить в файрвол правила ДО диверта разрешающее доступ к сервисам сервера из
>>внутренней сети.
>
>Пробовал! Не понравилось как это всё работает - непонятные начались задержки во
>внутренней сети.правило выглядело так?
20 allow tcp from локалка to me 80 keep-state
21 allow ip from me to локалка
>правило выглядело так?
>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
>
>>правило выглядело так?
>>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подозрительное правило :)
>>
>>>правило выглядело так?
>>>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
>
>подозрительное правило :)Вполне возможно, что из-за правил возникли проблемы.
Какой синтаксис в этом случае был бы правильным?
>
>>правило выглядело так?
>>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такоего не могло быть
>>
>>>правило выглядело так?
>>>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
>
>такоего не могло бытьОк, как правильно?
allow tcp from any to any 80,443,25
allow tcp from any 80,443,25 to any
>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 локалка
>>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 версии, кстати, еще и исправлены некоторые ошибки в нем.
>Хм. Вроде как в mpd-5.5 появился обратный nat.
>В CVS версии, кстати, еще и исправлены некоторые ошибки в нем.Не получилось его использовать. Может не разобрался, может просто не работает - пришлось сделать по старинке : на ipfw+natd