Vyatta

Vyatta

Vyatta Inc. — частная фирма, которая производит маршрутизаторы/межсетевую защиту/VPN на основе открытых исходных кодов. Бесплатная закачка Vyatta доступна с марта 2006 года. Это специализированный Linux-дистрибутив, позволяющий превратить обычный персональный компьютер в маршрутизатор. Это решение позиционируется Vyatta как конкурент продуктам уровня Cisco IOS серий 1800 — 7200. Производитель предлагает платные услуги и поддержку для пользователей маршрутизаторов Vyatta.

Настройка PPTP аутентификации через Radius-server

В описании настройки не указано как устанавливать систему Vyatta и настраивать интерфейсы

Version : Vyatta Core 6.0 Beta 2010.02.19

Настраиваем VPN сервер. Данная конфигурация предусматривает авторизацию по mschap, mschap-v2+mppe

test@vyatta:~$ configure
set vpn pptp
set vpn pptp remote-access client-ip-pool start 10.0.1.1
set vpn pptp remote-access client-ip-pool stop 10.0.1.50
set vpn pptp remote-access authentication mode radius
set vpn pptp remote-access authentication radius-server 10.10.21.253 key 12345
set vpn pptp remote-access dns-servers server-1 10.10.254.2
set vpn pptp remote-access dns-servers server-2 10.10.254.1
set vpn pptp remote-access outside-address 193.188.254.21
commit
save

Правим файл /etc/pptpd.conf

ppp /usr/sbin/pppd
option /etc/ppp/options.pptpd
listen 193.188.254.21
debug
logwtmp
localip 10.255.254.0 # Здесь IP адрес вашего сервера в локальной сети
#remoteip 10.0.1.1-50 # Закоментировать, назначается радиусом

/etc/ppp/options.pptpd

### Vyatta PPTP VPN Begin ###
name pptpd
refuse-pap
require-mschap
require-mschap-v2
require-mppe-128
ms-dns 10.10.254.1
ms-dns 10.10.1.254
debug
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
plugin radius.so
radius-config-file /etc/radiusclient-ng/radiusclient-pptp.conf
plugin radattr.so

Конфигигурация работы Vyatta с Radius сервером

/etc/radiusclient-ng/radiusclient-pptp.conf
auth_order      radius
login_tries     4
login_timeout   60
nologin /etc/nologin
issue   /etc/radiusclient-ng/issue
authserver      10.10.21.253:1812
acctserver      10.10.21.253:1813
servers         /etc/radiusclient-ng/servers-pptp
dictionary      /etc/radiusclient-ng/dictionary-ravpn
login_radius    /usr/sbin/login.radius
seqfile         /var/run/radius.seq
mapfile         /etc/radiusclient-ng/port-id-map-ravpn
default_realm
radius_timeout  10
radius_retries  3
login_local     /bin/login

/etc/radiusclient-ng/servers-pptp

10.10.21.253                12345      #IP адрес радиус сервера и секретный ключ

Добавим в /etc/radiusclient-ng/dictionary-ravpn такие атрибуты

# Limit session traffic
ATTRIBUTE       Session-Octets-Limit            227     integer
# What to assume as limit - 0 in+out, 1 in, 2 out, 3 max(in,out)
ATTRIBUTE       Octets-Direction                228     integer
# Connection Speed Limit
ATTRIBUTE       PPPD-Upstream-Speed-Limit       230     integer
ATTRIBUTE       PPPD-Downstream-Speed-Limit     231     integer
ATTRIBUTE       PPPD-Upstream-Speed-Limit-1     232     integer
ATTRIBUTE       PPPD-Downstream-Speed-Limit-1   233     integer
ATTRIBUTE       PPPD-Upstream-Speed-Limit-2     234     integer
ATTRIBUTE       PPPD-Downstream-Speed-Limit-2   235     integer
ATTRIBUTE       PPPD-Upstream-Speed-Limit-3     236     integer
ATTRIBUTE       PPPD-Downstream-Speed-Limit-3   237     integer
ATTRIBUTE       Acct-Interim-Interval            85     integer

Проверте или есть такие атрибуты на стороне радиус сервера /usr/local/etc/raddb/dictionary такие атрибуты

# Limit session traffic
ATTRIBUTE       Session-Octets-Limit            227     integer
# What to assume as limit - 0 in+out, 1 in, 2 out, 3 max(in,out)
ATTRIBUTE       Octets-Direction                228     integer
# Connection Speed Limit
ATTRIBUTE       PPPD-Upstream-Speed-Limit       230     integer
ATTRIBUTE       PPPD-Downstream-Speed-Limit     231     integer
ATTRIBUTE       PPPD-Upstream-Speed-Limit-1     232     integer
ATTRIBUTE       PPPD-Downstream-Speed-Limit-1   233     integer
ATTRIBUTE       PPPD-Upstream-Speed-Limit-2     234     integer
ATTRIBUTE       PPPD-Downstream-Speed-Limit-2   235     integer
ATTRIBUTE       PPPD-Upstream-Speed-Limit-3     236     integer
ATTRIBUTE       PPPD-Downstream-Speed-Limit-3   237     integer
ATTRIBUTE       Acct-Interim-Interval            85     integer

Шейпер

vim /etc/ppp/ip-pre-up

#!/bin/bash

DOWNSPEED=0
UPSPEED=0
AWK="/usr/bin/awk"

if [ -f /var/run/radattr.$IFNAME ]
then
#    FILTERS=`$AWK  '/Filter-Id/ {print $2}'  /var/run/radattr.$IFNAME`
  DOWNSPEED=`$AWK  '/PPPD-Downstream-Speed-Limit/ {print $2}'  /var/run/radattr.$IFNAME`
  UPSPEED=`$AWK  '/PPPD-Upstream-Speed-Limit/ {print $2}'  /var/run/radattr.$IFNAME`
#    if [[ -n "$FILTERS" ]]
#    then
#    fi
fi

TC="/sbin/tc"

$TC qdisc del dev $IFNAME root &>/dev/null
$TC qdisc del dev $IFNAME ingress &>/dev/null

##### speed server->client
if [ "$UPSPEED" != "0" ] ;
then
  $TC qdisc add dev $IFNAME root tbf rate ${UPSPEED}kibit burst 1540 limit 20kb
fi

##### speed client->server
if [ "$DOWNSPEED" != "0" ] ;
then
  $TC qdisc add dev $IFNAME handle ffff: ingress
  $TC filter add dev $IFNAME parent ffff: protocol ip \
      prio 1 u32 match u32 0 0 police rate ${DOWNSPEED}kibit \
      burst 96k drop flowid 1:
fi

NAT

vyatta@vyatta:~$ configure
set service nat rule 1
set service nat rule 1 type masquerade
set service nat rule 1 outbound-interface eth1
set service nat rule 1 protocol all
set service nat rule 1 source address  10.0.1.1/16
set service nat rule 1 destination address 0.0.0.0/0
commit
save

Проверка добавились ли правила

vyatta:/home/vyatta# show nat rules

ABillS

/ System configuration/ NAS/

Type: pppd:pppd + RADIUS plugin (Linux)