VPN сервер и клиент одновременно - как организовать

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
OSBoy
сержант
Сообщения: 228
Зарегистрирован: 2007-04-09 12:17:50
Откуда: Из капусты

VPN сервер и клиент одновременно - как организовать

Непрочитанное сообщение OSBoy » 2009-03-31 14:26:50

В общем то я уже упоминал этот вопрос вот тут, но решил вынести в отдельную тему.

Суть вопроса такая: на freebsd 7.0 поднят mpd5, который настроен и как клиент и как сервер одновременно: клиент коннектится к серверу провайдера, а к серверу в свою очередь коннектятся свои клиенты, которых через всю эту городушку надо выпустить в интернет (пока всё это только в теории):

Код: Выделить всё

startup:
        set user mpd_admin mpd_password
        set console self 127.0.0.1 console_port
        set console open
        set web self 0.0.0.0 web_port
        set web open

default:
        load pptp_server
        load pptp_client

pptp_server:
        set ippool add pool1 10.53.1.2 10.53.1.99
        create bundle template B
        set iface enable proxy-arp
        set iface idle 1800
        set iface enable tcpmssfix
        set ipcp yes vjcomp
        set ipcp ranges 10.53.1.1/32 ippool pool1
# DNS сервер провайдера:
        set ipcp dns 192.168.X.Z
        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
        set link enable chap
        set link keep-alive 10 60
        set link mtu 1460
# IP моего сервера в сети провайдера:
        set pptp self 192.168.Х.Х
        set link enable incoming

pptp_client:
        create bundle static B1
#       set iface route default
        set iface up-script /usr/local/etc/mpd5/up.sh
        set iface down-script /usr/local/etc/mpd5/down.sh
        set ipcp ranges 0.0.0.0/0 0.0.0.0/0
        create link static L1 pptp
        set link action bundle B1
        set auth authname myname
        set auth password mypass
        set link max-redial 0
        set link mtu 1460
        set link keep-alive 20 75
# IP адрес VPN-сервера провайдера:
        set pptp peer 192.168.XXX.XXX
        set pptp disable windowing
        open
/usr/local/etc/mpd5/up.sh :

Код: Выделить всё

#!/bin/sh
route change default 10.20.XX.XX  # Адрес сервера провайдера в поднимаемой впн-сети
/usr/local/etc/mpd5/down.sh :

Код: Выделить всё

#!/bin/sh
route change default 192.168.YY.YY  # Адрес шлюза в физической сети провайдера
                                                   # (он же прописан и в rc.conf)
Во-первых, на сколько всё это правильно, что тут лишнее и чего не хватает?
А во-вторых, как бы обеспечить чёткое разделение ngХ интерфейсов на один (смотрящий к серверу провайдера - ng0) и все остальные (смотрящие в сторону клиентов - ng1....ngXX, которые соответственно будут динамически создаваться при подключении клиентов)? То есть, как забронировать статический ng0 строго для сервера?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Khuman
рядовой
Сообщения: 27
Зарегистрирован: 2007-07-31 8:33:47
Откуда: Украина, Киев
Контактная информация:

Re: VPN сервер и клиент одновременно - как организовать

Непрочитанное сообщение Khuman » 2009-03-31 16:31:43

По интерфейсам Вы уже разнесли.

Код: Выделить всё

           create bundle static B1
всегда создается на интерфейсе ng0

ИМХО: Я бы для своей внутренней сети поднял бы кеширующий DNS с форвардом на провайдера и отдавал бы его VPN клиентам.
В целом все должно работать.
It comes in the night and sucks the essence from your computers. ©Kern Sibbald

Аватара пользователя
OSBoy
сержант
Сообщения: 228
Зарегистрирован: 2007-04-09 12:17:50
Откуда: Из капусты

Re: VPN сервер и клиент одновременно - как организовать

Непрочитанное сообщение OSBoy » 2009-04-01 8:58:39

Хорошо, допустим с ng0 всё ОК, тогда ещё такой вопрос:
Допустим, у меня в фаерволе есть правило:

Код: Выделить всё

${fwcmd} add 5050 allow ip from any to ${my_vpn_clients} out recv ${oif} xmit ${vif}
Где: ${oif} - внешний интерфейс (смотрящий в инет, грубо говоря);
${vif} - все внутренние интерфейсы (к VPN-клиентам).
Когда внешний интерфейс ${oif} был физическим - rl1, а mpd был только сервером, то ${vif} можно было смело задать ng* - благо, ipfw это позволяет:
via if* - пакет должен быть пропущен через интерфейс ifX, где X - любой номер устройства;
А вот как теперь задать значение переменной ${vif}, чтобы она означала ng1....ngXX или каким другим способом можно организовать вышеприведённое правило?
Если можно, приведите, плиз, пример синтаксиса!

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: VPN сервер и клиент одновременно - как организовать

Непрочитанное сообщение paradox » 2009-04-01 9:03:08

а вы перейдите в другую логику
от имен интерфейсов
к их айпиадрессам

Аватара пользователя
OSBoy
сержант
Сообщения: 228
Зарегистрирован: 2007-04-09 12:17:50
Откуда: Из капусты

Re: VPN сервер и клиент одновременно - как организовать

Непрочитанное сообщение OSBoy » 2009-04-01 20:06:17

paradox писал(а):а вы перейдите в другую логику
от имен интерфейсов
к их айпиадрессам
via ipno - пакет должен быть пропущен через интерфейс, IP-address которого ipno.
Имеется ввиду вот это? А для xmit и recv это тоже применимо?

Mamazulu
рядовой
Сообщения: 20
Зарегистрирован: 2008-09-10 9:19:17

VPN сервер и клиент одновременно - как организовать

Непрочитанное сообщение Mamazulu » 2009-04-23 7:36:40

У меня похожая проблема
Топология:
Сервер подключается к vpn через pptp
При настройке mpd5 сервер на freebsd6.4 спокойно вываливается в Нэт. Пинги идут, присваивается ему реальный динамический адрес в диапазоне 83.167.72.х При попытке использовать как шлюз никто не может выбраться за пределы локалки.
НАдо сдеать так, чтобы у простых юзеров не спрашивал логин-пароль.
mpd.conf

Код: Выделить всё

startup:
        # configure mpd users
        set user root bar admin
#       set user foo1 bar1
        # configure the console
        set console self 127.0.0.1 5005
        set console open
        # configure the web server
        set web self 0.0.0.0 5006
        set web open

default:
        load pptp_client

pptp_client:
         create bundle template B
         set iface up-script /usr/local/etc/mpd5/if-up.sh
         set iface down-script /usr/local/etc/mpd5/if-down.sh
         create link template common pptp
         set link enable multilink
         set link action bundle B
         set link disable chap pap eap
         set link enable chap
         set auth authname [i]name[/i]
        set auth password [i]pass[/i]
        set link max-redial 0
        set link mtu 1460
        set link keep-alive 20 75
        set pptp peer vpn.provaider.ru
        set pptp disable windowing
        open
rc.conf

Код: Выделить всё

gateway_enable="YES"
ifconfig_de0="inet 10.3.2.13 netmask 255.255.0.0"
static_routes="dns vpn"
route_dns="-net [i]dns[/i] 10.3.0.1"
route_vpn="-net [i]vpn[/i] 10.3.0.1"
ipfw.rules

Код: Выделить всё

ipfw add allow ip from any to any 
Нужно ли еще вписать natd?
и какой может быть код?
natd -f /etc/natd.conf
natd.conf

Код: Выделить всё

interface ng0
Или еще есть вариант? подскажите. Просто работа горит.

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: VPN сервер и клиент одновременно - как организовать

Непрочитанное сообщение schizoid » 2009-04-23 9:15:06

перед

Код: Выделить всё

ipfw add allow ip from any to any 
поставь

Код: Выделить всё

ipfw add divert 8778 all from any to any via ng0
ну и на машинах шлюз и ДНС
ядерный взрыв...смертельно красиво...жаль, что не вечно...

Mamazulu
рядовой
Сообщения: 20
Зарегистрирован: 2008-09-10 9:19:17

Re: VPN сервер и клиент одновременно - как организовать

Непрочитанное сообщение Mamazulu » 2009-04-23 9:40:18

спасибо за наводку, тока встречный вопрос:
обязательно ли ставить днс? я пользуюсь днс провайдера. маршруты вроде прописаны
а шлюз - вроде в rc.conf стоит gateway_enable="YES"

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: VPN сервер и клиент одновременно - как организовать

Непрочитанное сообщение schizoid » 2009-04-23 10:08:42

не обязательно. тогда на клиентских тачках тоже указывать ДНС провайдера
ядерный взрыв...смертельно красиво...жаль, что не вечно...

Mamazulu
рядовой
Сообщения: 20
Зарегистрирован: 2008-09-10 9:19:17

Re: VPN сервер и клиент одновременно - как организовать

Непрочитанное сообщение Mamazulu » 2009-04-24 5:41:57

Блин, все равно не пашет.
Немного подправил строчку:

Код: Выделить всё

ipfw add divert 8778 all from any to any via ng0
на

Код: Выделить всё

ipfw add divert 8668 all from any to any via ng0
Вроде natd на этом порту слушает...
и еще, у меня интерфейс ng0 это pptp соединение., т е его надо форвардить тока после поднятия. как это организовать ?

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: VPN сервер и клиент одновременно - как организовать

Непрочитанное сообщение schizoid » 2009-04-24 9:38:09

тогда в up-скрипт мпд пропиши нужное правило
ядерный взрыв...смертельно красиво...жаль, что не вечно...