Инструменты пользователя

Инструменты сайта


mgaccel-ppp

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
mgaccel-ppp [2019/12/20 13:31]
l1ght [Установка и настройка Accel-ppp на примере Debian 9]
mgaccel-ppp [2019/12/23 13:15]
l1ght [Рекомендации]
Строка 84: Строка 84:
 </​file>​ </​file>​
  
 +
 +===== Firewall =====
 +Проверьте что все команды из скрипта (vconfig, ifconfig, ethtool, iptables, ipset, dig, sysctl) у вас доступны. В случае отсутствия каких-либо бинарников нужно установить их самостоятельно. \\
 +Скрипт для запуска на автостарте. Например в кронтаб:​
 +
 +<file crontab>
 +@reboot /​etc/​firewall_start.sh
 +</​file>​
 +
 +<file firewall firewall_start.sh>​
 +#!/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="​1.1.1.1"​
 +
 +# OUT интерфейс (интернет)
 +out_interface1="​eth1"​
 +
 +# IP SRC-NAT для пользователей
 +out_ext_ip1="​public_ip_for_nat"​
 +
 +# IP для редиректа на страницу заглушку
 +REDIRECT_IP="​10.100.1.2"​
 +
 +# название IPSETа для разрешенных IP
 +allowed_ipset="​allowed"​
 +
 +# Список разрешенных сайтов и IP
 +allowed_list=(
 +ubilling.isp
 +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 100.64.0.0/​22 -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
 +
 +
 +</​file>​
  
 ===== Рекомендации ===== ===== Рекомендации =====
Строка 98: Строка 381:
 </​file>​ </​file>​
  
 +-> Для работы шейпера\полисера на примере eth1 \\
 +
 +<​code>​
 +# cat /​etc/​network/​interfaces.d/​eth1
 +auto eth1
 +iface eth1 inet manual
 +    pre-up /​sbin/​ifconfig eth1 txqueuelen 10000
 +    pre-up /​sbin/​ifconfig eth1 mtu 9000
 +    pre-up /​sbin/​ethtool --offload eth1 rx off tx off 
 +    pre-up /​sbin/​ethtool -G eth1 tx 4096 rx 4096
 +    pre-up /​sbin/​ethtool -K eth1 tso off gso off gro off lro off
 +    pre-up /​sbin/​ethtool -K eth1 rxvlan off txvlan off
 +    pre-up /​sbin/​ethtool --set-priv-flags eth1 vlan-stag-rx on
 +</​code>​
 +
 +-> Распределение сетевых прерываний для QINQ траффика \\ 
 +Нужно поставить драйвера с [[https://​github.com/​serhepopovych/​ixgbe/​tree/​ixgbe-5.6.3/​double-vlan|гита]] ​
 ====== Подготовка FreeRADIUS ====== ====== Подготовка FreeRADIUS ======
 Не забываем про словарь для нашего NAS. Правим файл (на биллинговом сервере!) /​usr/​local/​etc/​raddb/​dictionary. \\ Не забываем про словарь для нашего NAS. Правим файл (на биллинговом сервере!) /​usr/​local/​etc/​raddb/​dictionary. \\
mgaccel-ppp.txt · Последние изменения: 2019/12/23 13:15 — l1ght