Це стара версія документу!
Зміст
Настройка accel-ppp с PPPoE авторизацией
Для начала
Снова напоминаем: уже должен быть настроен КучаГен.
Далее подключаем словарь accel-ppp на стороне Убиллинга, для чего в файле:
// /usr/local/etc/raddb/dictionary //
нам нужно найти и раскомментировать (или добавить, в случае отсутствия) следующую строку:
$INCLUDE /usr/local/etc/raddb/dictionary_preset/accel-ppp.dictionary
Создаем НАС в Убиллинге
Ключ для новосозданного НАСа, который нам потребуется в процессе дальнейшей конфигурации, можно найти здесь:
А мы, тем временем, рестартим радиус на “Убиллинговом” сервере
# service radiusd restart
И возвращаемся к нашему новосозданному НАСу и открываем форму редактирования “NAS КучаГен”
Указываем следующие опции и нажимаем кнопку “Сохранить”:
Далее все на той же форме редактирования “NAS КучаГен” нажимаем кнопку “Клонировать конфигурацию NAS”. Увидим нечто похожее:
и в выделенное на скриншоте поле для ввода(хотя оно там вообще-то и так - единственное) вставляем следующий текст (да - это уже преконфигурированные дефолтные атрибуты - все для людей!):
eyJvcHRpb25zIjp7ImlkIjoiOCIsIm5hc2lkIjoiOSIsInVzZXJuYW1ldHlwZSI6ImxvZ2luIiwic2VydmljZSI6ImNvYSIsIm9ubHlhY3RpdmUiOiIwIiwicG9ydCI6IjM3OTkifSwiYXR0cmlidXRlcyI6eyI0NCI6eyJpZCI6IjQ0IiwibmFzaWQiOiI5Iiwic2NlbmFyaW8iOiJyZXBseSIsIm1vZGlmaWVyIjoiYWN0aXZlIiwiYXR0cmlidXRlIjoiUFBQRC1VcHN0cmVhbS1TcGVlZC1MaW1pdCIsIm9wZXJhdG9yIjoiPSIsImNvbnRlbnQiOiJ7U1BFRURVUH0ifSwiNDUiOnsiaWQiOiI0NSIsIm5hc2lkIjoiOSIsInNjZW5hcmlvIjoicmVwbHkiLCJtb2RpZmllciI6ImFjdGl2ZSIsImF0dHJpYnV0ZSI6IlBQUEQtRG93bnN0cmVhbS1TcGVlZC1MaW1pdCIsIm9wZXJhdG9yIjoiPSIsImNvbnRlbnQiOiJ7U1BFRURET1dOfSJ9LCI0MiI6eyJpZCI6IjQyIiwibmFzaWQiOiI5Iiwic2NlbmFyaW8iOiJyZXBseSIsIm1vZGlmaWVyIjoiYWxsIiwiYXR0cmlidXRlIjoiRnJhbWVkLUlQLUFkZHJlc3MiLCJvcGVyYXRvciI6Ij0iLCJjb250ZW50Ijoie0lQfSJ9LCI0MyI6eyJpZCI6IjQzIiwibmFzaWQiOiI5Iiwic2NlbmFyaW8iOiJyZXBseSIsIm1vZGlmaWVyIjoiYWxsIiwiYXR0cmlidXRlIjoiRnJhbWVkLUlQLU5ldG1hc2siLCJvcGVyYXRvciI6Ij0iLCJjb250ZW50IjoiMjU1LjI1NS4yNTUuMjU1In0sIjQxIjp7ImlkIjoiNDEiLCJuYXNpZCI6IjkiLCJzY2VuYXJpbyI6ImNoZWNrIiwibW9kaWZpZXIiOiJhbGwiLCJhdHRyaWJ1dGUiOiJDbGVhcnRleHQtUGFzc3dvcmQiLCJvcGVyYXRvciI6Ijo9IiwiY29udGVudCI6IntQQVNTV09SRH0ifSwiNjgiOnsiaWQiOiI2OCIsIm5hc2lkIjoiOSIsInNjZW5hcmlvIjoicmVwbHkiLCJtb2RpZmllciI6ImFsbCIsImF0dHJpYnV0ZSI6IkZpbHRlci1JZCIsIm9wZXJhdG9yIjoiPSIsImNvbnRlbnQiOiJ7U1RBVEV9In19LCJzZXJ2aWNlcyI6eyI5Ijp7ImlkIjoiNyIsIm5hc2lkIjoiOSIsInBvZCI6IntQUklOVEZ9ICdGcmFtZWQtSVAtQWRkcmVzcz0ge0lQfScgfCB7U1VET30ge1JBRENMSUVOVH0ge05BU0lQfTozNzk5IGRpc2Nvbm5lY3Qge05BU1NFQ1JFVH0iLCJjb2Fjb25uZWN0Ijoie1BSSU5URn0gJ0ZyYW1lZC1JUC1BZGRyZXNzPSB7SVB9JyB8IHtTVURPfSB7UkFEQ0xJRU5UfSB7TkFTSVB9OjM3OTkgZGlzY29ubmVjdCB7TkFTU0VDUkVUfSIsImNvYWRpc2Nvbm5lY3QiOiJ7UFJJTlRGfSAnRnJhbWVkLUlQLUFkZHJlc3M9IHtJUH0nIHwge1NVRE99IHtSQURDTElFTlR9IHtOQVNJUH06Mzc5OSBkaXNjb25uZWN0IHtOQVNTRUNSRVR9In19fQ
не забываем отметить чекбокс под текстовым полем, подтверждающий то, что мы таки осознаем что делаем и нажимаем кнопку “Сохранить”. Следующим шагом - очищаем атрибуты и делаем регенерацию базы(да, именно в такой последовательности):
Устанавливаем Accell-ppp
Предварительные манипуляции
Инсталлим, стандартно, Debian с минимальным набором софта. Логинимся рутом ииии:
# apt-get update # apt-get upgrade # apt-get install sudo
Добавляем своего юзера с правами рут:
# nano /etc/sudoers
После чего разлогиниваемся из-под рута:
# exit
И вводим пароль новосозданного пользователя
# sudo su
Инсталим нужный софт:
# apt-get install net-tools vlan ipset dnsutils mc
Включаем IP Forwarding
# sysctl -w net.ipv4.ip_forward=1
Что-бы не слетел после ребута
# echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf
Проверяем поддержку влан
# lsmod | grep 8021q
Если вывод пустой то подгружаем их
# modprobe 8021q
Чекаем интерфейсы
# ip a
Приводим наш конфиг /etc/network/interfaces к нормальному виду, где:
- интерфейс ens192 смотрит в мир
- интерфейс ens224 смотрит на клиентов
- интерфейс ens266 смотрит на биллинг
Создаем пачку VLANов на нужном интерфейсе. Так как мы юзаем PPPoE, то IP адреса на этих VLANах нам не нужны.
В случае же с IPoE manual в определении интерфейса меняем на static и указываем IP адреса:
auto vlan102 # здесь не manual, a static iface vlan102 inet static # здесь не забываем указать адреса address 192.168.1.200 netmask 255.255.255.0 vlan-raw-device ens224
Ниже приведен конфиг /etc/network/interfaces целиком:
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug ens192
iface ens192 inet static
address xxx.xxx.xxx.xxx
netmask yyy.yyy.yyy.yyy
gateway zzz.zzz.zzz.zzz
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 8.8.8.8
dns-search our.isp.net
allow-hotplug ens224
iface ens224 inet static
address !!!!- здесь адрес сетевой которая смотрит на клиентов -!!!!
netmask !!!!- здесь ваша маска для адреса, который смотрит на клиентов -!!!!
allow-hotplug ens256
iface ens256 inet static
address !!!!- здесь адрес сетевой которая смотрит на биллинг -!!!!
netmask !!!!- здесь ваша маска для адреса, который смотрит на биллинг -!!!!
auto vlan101
iface vlan101 inet manual
#address
#netmask
vlan-raw-device ens224
auto vlan102
iface vlan102 inet manual
#address 192.168.1.200
#netmask 255.255.255.0
vlan-raw-device ens224
auto vlan103
iface vlan103 inet manual
#address 192.168.1.200
#netmask 255.255.255.0
vlan-raw-device ens224
auto vlan104
iface vlan104 inet manual
#address 192.168.1.200
#netmask 255.255.255.0
vlan-raw-device ens224
auto vlan105
iface vlan105 inet manual
#address 192.168.1.200
#netmask 255.255.255.0
vlan-raw-device ens224
auto vlan106
iface vlan106 inet manual
#address 192.168.1.200
#netmask 255.255.255.0
vlan-raw-device ens224
auto vlan107
iface vlan107 inet manual
#address 192.168.1.200
#netmask 255.255.255.0
vlan-raw-device ens224
auto vlan108
iface vlan108 inet manual
#address 192.168.1.200
#netmask 255.255.255.0
vlan-raw-device ens224
auto vlan109
iface vlan109 inet manual
#address 192.168.1.200
#netmask 255.255.255.0
vlan-raw-device ens224
Поднимаем интерфейсы
# ifup -a
и приступаем к установке accel-ppp
Собственно, установка accel-ppp
# apt-get install -y build-essential git cmake gcc linux-headers-`uname -r` git libpcre3-dev libssl-dev liblua5.1-0-dev # git clone https://github.com/xebd/accel-ppp.git /opt/accel-ppp-code # mkdir /opt/accel-ppp-code/build # cd /opt/accel-ppp-code/build/
Собираем с модулями IPOE_DRIVER, возможно потом пригодится и VLAN_MON который нужен и для PPPoE и для IPoE.
# cmake -DBUILD_IPOE_DRIVER=TRUE -DBUILD_VLAN_MON_DRIVER=TRUE -DCMAKE_INSTALL_PREFIX=/usr -DKDIR=/usr/src/linux-headers-`uname -r` -DLUA=TRUE -DCPACK_TYPE=Debian10 ..
Обращаем особое внимание на параметр -DCPACK_TYPE=Debian он должен соответствовать реальности. В конце строки обязательно оставляйте .. - это указывает путь к исходному коду accel-ppp. Компилируем.
# make
Если не успеваем за выводом, еще раз запускаем компиляцию и убеждаемся что нужные нам модули скомпилились.
# make [ 7%] Built target triton [ 37%] Built target accel-pppd [ 40%] Built target luasupp [ 48%] Built target radius [ 50%] Built target vlan-mon [ 52%] Built target pptp [ 57%] Built target pppoe [ 60%] Built target l2tp [ 61%] Built target sstp [ 66%] Built target ipoe [ 68%] Built target auth_chap_md5 [ 69%] Built target auth_pap [ 70%] Built target auth_mschap_v1 [ 72%] Built target auth_mschap_v2 [ 74%] Built target log_tcp [ 75%] Built target log_file [ 77%] Built target log_syslog [ 79%] Built target connlimit [ 81%] Built target sigchld [ 83%] Built target pppd_compat [ 85%] Built target ipv6pool [ 86%] Built target ippool [ 88%] Built target chap-secrets [ 89%] Built target logwtmp [ 92%] Built target ipv6_dhcp [ 93%] Built target ipv6_nd [ 97%] Built target shaper [ 98%] Built target accel-cmd [ 99%] Built target ipoe_drv [100%] Built target vlan_mon_drv
Упаковываем все в пакет
# cpack -G DEB CPack: Create package using DEB CPack: Install projects CPack: - Run preinstall target for: accel-ppp CPack: - Install project: accel-ppp CPack: Create package
Инсталлируем
# dpkg -i accel-ppp.deb
Если получаем ошибку, значит вы не читаете документацию, а именно первые 6 строк.
dpkg: warning: 'ldconfig' not found in PATH or not executable dpkg: warning: 'start-stop-daemon' not found in PATH or not executable dpkg: error: 2 expected programs not found in PATH or not executable Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin
# mv /etc/accel-ppp.conf.dist /etc/accel-ppp.conf
Чекаем интерфейсы
# ip a
Правим конфиг под наши нужды
# nano /etc/accel-ppp.conf [modules] path=/usr/lib64/accel-ppp log_file pppoe auth_mschap_v2 radius sigchld pppd_compat shaper [core] log-error=/var/log/accel-ppp/core.log # в опции ниже крайне рекмендуется указывать реальное количество ядер процессора thread-count=4 [ppp] verbose=1 min-mtu=1000 mtu=1400 mru=1400 [lcp] echo-interval=30 echo-failure=3 [common] single-session=replace [pppoe] interface=ens192 interface=vlan101 interface=vlan102 interface=vlan103 interface=vlan104 interface=vlan105 interface=vlan106 interface=vlan107 interface=vlan108 interface=vlan109 [dns] dns1=8.8.4.4 dns2=8.8.8.8 [radius] dictionary=/usr/local/share/accel-ppp/radius/dictionary dictionary=/usr/local/share/accel-ppp/radius/radius.dict nas-identifier=accel-ppp nas-ip-address=адрес сетевой которая смотрит на биллинг gw-ip-address=адрес сетевой которая смотрит на клиентов auth-server=адрес биллинга:1812,ключ радиуса acct-server=адрес биллинга:1813,ключ радиуса dae-server=адрес сетевой которая смотрит на биллинг:3799,ключ радиуса verbose=1 [client-ip-range] 10.0.0.0/24 [log] log-file=/var/log/accel-ppp/accel-ppp.log log-emerg=/var/log/accel-ppp/emerg.log log-fail-file=/var/log/accel-ppp/auth-fail.log copy=1 level=1 [pppd-compat] ip-up=/etc/ppp/if-up ip-down=/etc/ppp/if-down radattr-prefix=/var/run/radattr [shaper] #may need: ethtool -K eth0 tso off ufo off gso off gro off lro off up-limiter=police down-limiter=tbf attr-down=PPPD-Downstream-Speed-Limit attr-up=PPPD-Upstream-Speed-Limit verbose=1 [cli] telnet=127.0.0.1:2001 verbose=1
В силу того что accel-ppp не умеет ipset через CoA, то рулить юзерами будем скриптами up/down указанными в секции [pppd-compat] нашего конфига.
# mkdir /etc/ppp # nano /etc/ppp/if-up
if-up конфиг:
#!/bin/bash IP=`/usr/bin/awk '/Framed-IP-Address/ {print $2}' /var/run/radattr.$1` STATE=`/usr/bin/awk '/Filter-Id/ {print $2}' /var/run/radattr.$1` if [[ "$STATE" == "PASSIVE" || "$STATE" == "DOWN" || "$STATE" == "OFF-LINE" || "$STATE" == "NOT-EXIST" ]]; then /usr/sbin/ipset -A disabled $IP 2>/dev/null /usr/sbin/ipset -D active $IP 2>/dev/null else /usr/sbin/ipset -D disabled $IP 2>/dev/null /usr/sbin/ipset -A active $IP 2>/dev/null fi
Далее:
# nano /etc/ppp/if-down
if-down конфиг:
#!/bin/bash IP=`/usr/bin/awk '/Framed-IP-Address/ {print $2}' /var/run/radattr.$1` /usr/sbin/ipset -D disabled $IP 2>/dev/null /usr/sbin/ipset -D active $IP 2>/dev/null
Раздаем права:
# chmod +x /etc/ppp/if-up # chmod +x /etc/ppp/if-down
Зачастую при установке либо обновлении аццель затирает папку со словарями потому проверяем
# ls /usr/local/share/accel-ppp/radius/
Если такового нет, не страшно:
# mkdir -p /usr/local/share/accel-ppp/radius/ # cp /opt/accel-ppp-code/accel-pppd/radius/dict/* /usr/local/share/accel-ppp/radius/
Создаем свой словарь атрибутов, чтобы аццель понимал шейпы получаемые от радиуса:
# nano /usr/local/share/accel-ppp/radius/radius.dict
Добавляем содержимое:
ATTRIBUTE PPPD-Upstream-Speed-Limit 230 integer ATTRIBUTE PPPD-Downstream-Speed-Limit 231 integer
Добавляем в автозапуск:
#systemctl enable accel-ppp
Заливаем фаерволл
#nano /etc/init.d/firewall
Добавляем содержимое:
#!/bin/bash
#
# firewall
#
# chkconfig: - 97 20
#
### BEGIN INIT INFO
# Provides:firewall
# Required-Start: $network
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: firewall builder
### END INIT INFO
lock_path=/var/lock/firewall.lock
# Список IPSETов
ipset_list=(
disabled
)
VC=`which vconfig`
IFC=`which ifconfig`
ETT=`which ethtool`
IPT=`which iptables`
IPS=`which ipset`
DIG=`which dig`
CTL=`which sysctl`
DNS_lookup="8.8.8.8"
# OUT интерфейс (интернет)
out_interface1="сетевая которая смотрит в интернет"
# IP SRC-NAT для пользователей
out_ext_ip1="внешний ip наса"
# IP для редиректа на страницу заглушку
REDIRECT_IP="ip заглушки"
# название IPSETа для разрешенных IP
allowed_ipset="allowed"
# Список разрешенных сайтов и IP
allowed_list=(
Адрес биллинга
8.8.8.8
8.8.4.4
www.liqpay.com
liqpay.com
static.liqpay.com
ecommerce.liqpay.com
api.privatbank.ua
login.privatbank.ua
privat24.privatbank.ua
www.privat24.ua
privat24.ua
liqpay.com
www.liqpay.com
static.liqpay.com
ecommerce.liqpay.com
fonts.googleapis.com
ajax.googleapis.com
my-payments-p24.privatbank.ua
themes.googleusercontent.com
www.google-analytics.com
google-analytics.com
ssl.google-analytics.com
widget.siteheart.com
static.siteheart.com
www.googleadservices.com
stats.g.doubleclick.net
googleads.g.doubleclick.net
qrapi.privatbank.ua
js.honeybadger.io
socauth.privatbank.ua
www.googletagmanager.com
st.privatbank.ua
services.privatbank.ua
mypayments.privatbank.ua
client.siteheart.com
fonts.gstatic.com
esapi.siteheart.com
crm.privatbank.ua
)
postrouting() {
# Очищаем NAT
$IPT -t nat -F POSTROUTING
# NAT для пользователей
$IPT -t nat -A POSTROUTING -s 10.0.0.0/8 -o $out_interface1 -j SNAT --to-source $out_ext_ip1 --persisten
echo "POSTROUTING done"
}
input() {
$IPT -F INPUT
# Если используете Fail2ban SSH
$IPT -N fail2ban-ssh
$IPT -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
$IPT -A INPUT -i eth1 -s "mgmt_net" -j ACCEPT
$IPT -A INPUT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p UDP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p TCP -m multiport --dports 6881:6889 -m state --state NEW -j DROP
$IPT -A INPUT -p UDP -m multiport --dports 6881:6889 -j DROP
$IPT -A INPUT -p TCP -m multiport --dports 49001 -m state --state NEW -j DROP
$IPT -A INPUT -p UDP -m multiport --dports 49001 -j DROP
$IPT -A INPUT -p TCP -m multiport --dports 135,137,138,139,445 -j DROP
echo "INPUT done"
}
raw_rules() {
# очищаем RAW таблицы
$IPT -t raw -F PREROUTING
$IPT -t raw -F OUTPUT
echo "RAW rules done"
}
forward() {
# Очищаем FORWARD
$IPT -F FORWARD
# Пропускаем трафик к разрешенным IP
$IPT -A FORWARD -m set --match-set $allowed_ipset dst -j ACCEPT
# Блокируем трафик пользователей в IPSETах
for ipset_name in ${ipset_list[*]}
do
$IPT -A FORWARD -m set --match-set $ipset_name src -j REJECT --reject-with icmp-proto-unreach
done
echo "FORWARD done"
}
prerouting() {
# Очищаем PREROUTING
$IPT -t nat -F PREROUTING
# Пропускаем трафик к разрешенным IP
$IPT -t nat -A PREROUTING -m set --match-set $allowed_ipset dst -j ACCEPT
# Перенаправляем пользователей из IPSETов на страницы заглушки
$IPT -t nat -A PREROUTING -m set --match-set disabled src -p tcp --dport 80 -j DNAT --to-destination $REDIRECT_IP:80
echo "PREROUTING done"
}
allow() {
# Очищаем IPSET разрешенных IP
$IPS -F $allowed_ipset
for row in ${allowed_list[*]}
do
# проверяем запись из списка разрешенных, явлияется ли она IP адресом
if [[ $row =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]];
then
# добавляем этот IP в список разрешенных
$IPS add $allowed_ipset $row > /dev/null 2>&1
else
# запись оказалась доменом, резолвим его IP через dig
for ip in `$DIG $row +short @$DNS_lookup`
do
# добавляем полученные через dns IP адрес в список разрешенных
$IPS add $allowed_ipset $ip > /dev/null 2>&1
done
fi
done
echo "ALLOWED done"
}
start() {
if [ -f $lock_path ]; then
echo "Firewall is running"
exit 0
else
touch $lock_path
fi
echo "Start building firewall"
for ipset_name in ${ipset_list[*]}
do
$IPS -N $ipset_name iphash > /dev/null 2>&1
done
$IPS -N active iphash > /dev/null 2>&1
$IPS -N $allowed_ipset iphash > /dev/null 2>&1
allow
input
forward
prerouting
postrouting
raw_rules
$CTL -p > /dev/null 2>&1
echo "Firewall rules created"
}
stop() {
if [ ! -f $lock_path ]; then
echo "Firewall is stoped"
exit 0
else
rm -f $lock_path
fi
$IPT -F INPUT
$IPT -F FORWARD
$IPT -t nat -F
$IPT -t mangle -F
$IPT -t raw -F PREROUTING
$IPT -t raw -F OUTPUT
$IPT -P FORWARD ACCEPT
echo "FORWARD/NAT/RAW flushed"
$CTL -p > /dev/null 2>&1
}
show() {
$IPT -L INPUT -v -n --line-numbers
$IPT -L FORWARD -v -n --line-numbers
$IPT -t nat -L PREROUTING -v -n --line-numbers
$IPT -t nat -L POSTROUTING -v -n --line-numbers
$IPT -t raw -L -v -n --line-numbers
$IPS list $allowed_ipset
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
allow)
allow
;;
input)
input
;;
forward)
forward
;;
pre)
prerouting
;;
post)
postrouting
;;
raw)
raw_rules
;;
show)
show
;;
*)
echo "Usage: $0 {start|stop|restart|allow|input|forward|pre|post|raw|show}"
esac
Обращаем внимание на #NAT для пользователей, где указываем какую клиентскую подсеть натить.
Делаем наш ферволл-скрипт исполняемым:
# chmod +x /etc/init.d/firewall # bash /etc/init.d/firewall start
И добавляем его в автозагрузку
# /lib/systemd/systemd-sysv-install enable firewall
Смотрим или создались таблички:
# ipset list
В ответ мы должны увидеть примерно следующее:
Name: disabled Type: hash:ip Revision: 4 Header: family inet hashsize 1024 maxelem 65536 Size in memory: 88 References: 2 Number of entries: 0 Members: Name: active Type: hash:ip Revision: 4 Header: family inet hashsize 1024 maxelem 65536 Size in memory: 88 References: 0 Number of entries: 0 Members:
- именно в эти таблички и будут запихиваться юзеры скриптами if-up и if-down
Запускаем accel-ppp
# service accel-ppp start
Чекаем логи
# cat /var/log/accel-ppp/core.log # cat /var/log/accel-ppp/emerg.log # cat /var/log/accel-ppp/accel-ppp.log
В логах должно быть чисто
Типичная ошибка - юзер не подключается с ошибкой авторизации и в логе:
radius: out of memory
- проверьте пути к словарям и наличие самих словарей.
Настраиваем ротацию логов:
# nano /etc/logrotate.d/accel-ppp
Добавляем содержимое:
/var/log/accel-ppp/*.log { missingok sharedscripts postrotate test -r /var/run/accel-pppd.pid && kill -HUP `cat /var/run/accel-pppd.pid` endscript }
Завершающий этап
Ребутимся, подключаем юзера.
На стороне наса проверяем или корректно выдался шейп.
# telnet 127.0.0.1 2001 # show sessions
Копирайт
Создатель данного мануала - Себастьян Перейро


