LINUX.ORG.RU
ФорумAdmin

[pptpd][dhcpd] VPN: как задавать маршруты клиенту?

 ,


0

3

Задача: больным и командировочным подключаться к локалке офиса и работать из дома.

Установил pptpd. Настроил:
nano /etc/pptpd.conf

option /etc/ppp/options.pptpd
logwtmp
bcrelay eth1
connections 30
localip 192.168.5.1
remoteip 192.168.5.100-199

nano /etc/ppp/options.pptpd

name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 222.222.222.222
ms-dns 222.222.222.223
netmask 255.255.255.0
proxyarp
debug
lock
nobsdcomp
novj
novjccomp
nologfd

Задал юзеров:
nano /etc/ppp/options.pptpd

tuzik   *	parolraz          192.168.5.101
bobik   *	paroldva          *

Настроил фаервол:

iptables -A INPUT -p gre -j ACCEPT
iptables -A INPUT -p udp --dport 1723 -j ACCEPT
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT

iptables -A FORWARD -o $LOCINT -s $VPNNET -d $LOCNET -j ACCEPT
iptables -A FORWARD -i $LOCINT -d $VPNNET -s $LOCNET -j ACCEPT

и т.д.. Вобщем удаленно подключаюсь, НО!

В линуксе сеть конторы начинаю видеть только после:

route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.5.1
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.5.1

А под мастдаем тока после:

route -p add 192.168.5.0 mask 255.255.255.0 192.168.5.1
route -p add 192.168.1.0 mask 255.255.255.0 192.168.5.1

Мне не нравится каждый раз вручную прописывать маршруты.
Более того, есть куча домашних идиотов, которые просто не в состоянии даже батник запустить.

На форумах вычитал что можно задействовать dhcp-сервер,
(http://www.certification.ru/cgi-bin/forum.cgi?action=thread&id=38520)
а именно опции 249 и 121, типа такого:

subnet 192.168.1.0 netmask 255.255.255.0 {
   option routers                  192.168.1.1;
   option subnet-mask              255.255.255.0;

   option nis-domain               "my.firm.ru";
   option domain-name              "my.firm.ru";
   option domain-name-servers	192.168.1.1,222.222.222.222,222.222.222.223;

   option time-offset              18000;
   option ntp-servers              192.168.1.1;

   range dynamic-bootp 192.168.1.128 192.168.1.254;
   default-lease-time 21600;
   max-lease-time 43200;
}

# MS routes: adds extras to supplement routers option
option ms-classless-static-routes code 249 = array of unsigned integer 8;
# RFC3442 routes: overrides routers option
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

subnet 192.168.5.0 netmask 255.255.255.0 {
   option routers                  192.168.5.1;
   option subnet-mask              255.255.255.0;

   option nis-domain               "vpn.firm.ru";
   option domain-name              "vpn.firm.ru";
   option domain-name-servers	192.168.5.1,222.222.222.222,222.222.222.223;
   netbios-name-server 192.168.1.10;  # WinServer

   option time-offset              18000;
   option ntp-servers              192.168.1.1;

   option ms-classless-static-routes 24,192,168,1, 192,168,1,5;
   option rfc3442-classless-static-routes 24,192,168,1, 192,168,1,5;

   range dynamic-bootp 192.168.5.150 192.168.5.199;
   default-lease-time 21600;
   max-lease-time 43200;
}

ВНИМАНИЕ ВОПРОС:
как щас «поженить» pptpd и dhcpd?

Ой, строку:
netbios-name-server 192.168.1.10; # WinServer

нужно удалить - левак какой-то...

AaaYeee
() автор топика

Для случая одной внутренней подсети и windows-only клиентов аналогичный квест решил следующим образом:

/etc/pptpd.conf:

listen <внешний IP>
option /etc/ppp/options.pptpd
stimeout 10
logwtmp
connections 10
remoteip 192.168.1.150-160

/etc/ppp/options.pptpd:

name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 192.168.1.5
ms-dns 192.168.1.20
proxyarp
nodeflate
nobsdcomp
novj
novjccomp
nologfd
nodefaultroute
auth

iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i ppp+ -m iprange --src-range 192.168.1.150-192.168.1.160 -j ACCEPT
iptables -A INPUT -p tcp -i ext0 --dport 1723 -j ACCEPT

iptables -A INPUT -p udp --dport 1723 -j ACCEPT

Не нужно.

bcrelay eth1
proxyarp

Или bcrelay, или proxyarp.

В вашем случае можно было попытаться обойтись следующим костылем - поднимать два инстанса pptpd и создавать два соединения на клиентской стороне с выдачей внутренних IP из соответствующих подсетей.

darky
()
Ответ на: комментарий от mky

Соряк, уезжал на несколько дней.

Наверное, вам нужен плугин ppp-dhcp.


А к чему этот плугин, к dhcp3 или к pptpd?
И как его «прикрутить»?

AaaYeee
() автор топика
Ответ на: комментарий от darky

>> iptables -A INPUT -p udp --dport 1723 -j ACCEPT

Не нужно.


В интернетах читал что новая версия PPTP требует и UDP.

bcrelay eth1 > proxyarp Или bcrelay, или proxyarp.


А вот это учёл - закометарил «bcrelay». Спасибо.

В вашем случае можно было попытаться обойтись следующим костылем - поднимать два инстанса pptpd и создавать два соединения на клиентской стороне с выдачей внутренних IP из соответствующих подсетей.


Можно было б, но не хочется запускать внешних прямиком в сеть... Хочется чтоб возможность фильтровать трафик оставалась.

квест решил следующим образом:

iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT


iptables -A FORWARD -i ppp+ -m iprange --src-range 192.168.1.150-192.168.1.160 -j ACCEPT


iptables -A INPUT -p tcp -i ext0 --dport 1723 -j ACCEPT



Попробую!!! Тхенькс!

AaaYeee
() автор топика
Ответ на: комментарий от AaaYeee

Это плугин к pppd. Вроде он заброшен, его исходики можно найти в ppp в gentoo или в src.rpm от Mandrake, или ещё где. С этим плугином ppp становится dhcp-relay'ем и будет перекидвать запросы на dhcp-сервер.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.