accel debian 8 заметки
ротация (когда ежедневная может вызывать сбой)
/var/log/accel-ppp/*.log {
weekly
rotate 2
missingok
sharedscripts
postrotate
test -r /var/run/accel-pppd.pid && kill -HUP `cat /var/run/accel-pppd.pid`
endscript
}
Включаем proxy-arp системный
net.ipv4.conf.all.proxy_arp = 1
net.ipv4.conf.default.proxy_arp = 1
узнаем модель сетевой карты
производитель: vendor
имя продукта: product
используемый драйвер: driver
Установка драйвера сетевой карты
make
make CFLAGS_EXTRA="-DIXGBE_NO_LRO" install
update-initramfs -u
потом reboot
Смотрим версию драйвера
NetXtreme II BCM57810 10
установка драйвера на Deb8
на пограничниках нельзя два проца E5 ставить
не ошибка, работает с этим
/usr/src/linux-headers-3.16.0-4-common/arch/x86/Makefile:136: CONFIG_X86_X32 enabled but no binutils support
/usr/src/linux-headers-3.16.0-4-common/Makefile:648: Cannot use CONFIG_CC_STACKPROTECTOR_REGULAR: -fstack-protector not supported by compiler
В конфиге должен быть отключен:
mppe=prefer
mtu должен быть 1492
но
Ошибка
Не открывает speedtest.net, privat24.ua
mtu=1372
mru=1372
В rc.local поменять на (для работы балансера)
apt-get install sshguard
modprobe ip_conntrack
#!/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: Mikbill firewall builder
### END INIT INFO
lock_path=/var/lock/firewall.lock
# Список IPSETов
ipset_list=(
nomoney
freezee
disabled
deleted
unknown
)
IPT=`which iptables`
IPS=`which ipset`
DIG=`which dig`
CTL=`which sysctl`
DNS_lookup="213.174.7.1"
# OUT интерфейс (интернет)
out_interface1="eth4.61"
# IP SRC-NAT для пользователей
out_ext_ip1="213.174.7.65"
# IP для редиректа на страницу заглушку
REDIRECT_IP="10.0.0.1"
# IP SRC-NAT для выхода на разрешенные IP
allowed_ext_ip="1.2.3.4"
# название IPSETа для разрешенных IP
allowed_ipset="allowed"
/var/log/accel-ppp/*.log {
weekly
rotate 2
missingok
sharedscripts
postrotate
test -r /var/run/accel-pppd.pid && kill -HUP `cat /var/run/accel-pppd.pid`
endscript
}
Включаем proxy-arp системный
net.ipv4.conf.all.proxy_arp = 1
net.ipv4.conf.default.proxy_arp = 1
узнаем модель сетевой карты
- lshw -class network >/tmp/tmp
производитель: vendor
имя продукта: product
используемый драйвер: driver
Установка драйвера сетевой карты
make
make CFLAGS_EXTRA="-DIXGBE_NO_LRO" install
update-initramfs -u
потом reboot
Смотрим версию драйвера
- ethtool -i eth5
NetXtreme II BCM57810 10
установка драйвера на Deb8
- nano /etc/apt/sources.list
deb http://security.debian.org/debian-security/ jessie/updates main contrib non-free
deb-src http://security.debian.org/debian-security/ jessie/updates main contrib non-free
- apt-get update
- apt-get install firmware-bnx2
или
- apt-get install firmware-bnx2x
на пограничниках нельзя два проца E5 ставить
не ошибка, работает с этим
/usr/src/linux-headers-3.16.0-4-common/arch/x86/Makefile:136: CONFIG_X86_X32 enabled but no binutils support
/usr/src/linux-headers-3.16.0-4-common/Makefile:648: Cannot use CONFIG_CC_STACKPROTECTOR_REGULAR: -fstack-protector not supported by compiler
В конфиге должен быть отключен:
mppe=prefer
mtu должен быть 1492
но
Ошибка
Не открывает speedtest.net, privat24.ua
mtu=1372
mru=1372
В rc.local поменять на (для работы балансера)
#!/bin/bash
modprobe ip_conntrack
modprobe nf_conntrack_ipv4
modprobe ppp_mppe
lsmod |grep ppp_mppe
lsmod|grep ipoe
modprobe ip_gre
lsmod | grep ipoe /opt/ixgbe-5.0.4/scripts/set_irq_affinity 0-11 eth4 >/dev/null
lease-time=300
max-lease-time=302
[14:12]
вот тут я поставил 300 и 600
[14:13]
и то бывают лаги
[14:13]
поставил 600 и 660 стало меньше
делаем уход в "дыру", если есть реалки и балансировка на несколько NAS
/sbin/ip ro add blackhole 111.111.7.128/25
[modules]
log_file
radius
sigchld
ippool
shaper
pppoe
auth_pap
auth_chap
auth_mschap_v1
auth_mschap_v2
ipoe
[core]
log-error=/var/log/accel-ppp/core_ipoe.log
thread-count=12
[ppp]
verbose=0
min-mtu=1000
mtu=1492
mru=1492
mppe=prefer
ipv4=require
ipv6=deny
ipv6-intf-id=0:0:0:1
ipv6-peer-intf-id=0:0:0:2
ipv6-accept-peer-intf-id=1
lcp-echo-interval=10
lcp-echo-failure=3
lcp-echo-timeout=45
[pppoe]
verbose=1
ac-name=accelnet
ifname-in-sid=called-sid
called-sid=ifname
interface=eth4.100
modprobe ppp_mppe
lsmod |grep ppp_mppe
lsmod|grep ipoe
modprobe ip_gre
lsmod | grep ipoe /opt/ixgbe-5.0.4/scripts/set_irq_affinity 0-11 eth4 >/dev/null
lease-time=300
max-lease-time=302
[14:12]
вот тут я поставил 300 и 600
[14:13]
и то бывают лаги
[14:13]
поставил 600 и 660 стало меньше
делаем уход в "дыру", если есть реалки и балансировка на несколько NAS
/sbin/ip ro add blackhole 111.111.7.128/25
[modules]
log_file
radius
sigchld
ippool
shaper
pppoe
auth_pap
auth_chap
auth_mschap_v1
auth_mschap_v2
ipoe
[core]
log-error=/var/log/accel-ppp/core_ipoe.log
thread-count=12
[ppp]
verbose=0
min-mtu=1000
mtu=1492
mru=1492
mppe=prefer
ipv4=require
ipv6=deny
ipv6-intf-id=0:0:0:1
ipv6-peer-intf-id=0:0:0:2
ipv6-accept-peer-intf-id=1
lcp-echo-interval=10
lcp-echo-failure=3
lcp-echo-timeout=45
[pppoe]
verbose=1
ac-name=accelnet
ifname-in-sid=called-sid
called-sid=ifname
interface=eth4.100
[ipoe]
#check-mac-change=0
username=lua:macuser
lua-file=/etc/accel-ppp.lua
lease-time=300
max-lease-time=360
attr-dhcp-opt82=DHCP-Option82
attr-dhcp-opt82-remote-id=DHCP-Agent-Remote-Id
attr-dhcp-opt82-circuit-id=DHCP-Agent-Circuit-Id
attr-dhcp-client-ip=Framed-IP-Address
attr-l4-redirect=L4-Redirect
attr-l4-redirect-ipset=L4-Redirect-ipset
l4-redirect-ipset=l4
#attr-dhcp-router-ip=DHCP-Router-IP-Address
#attr-dhcp-mask=DHCP-Mask
shared=1
ifcfg=1
mode=L2
start=dhcpv4
proto=100
#proxy-arp=1
interface=eth4.100
#interface=re:eth1\.[0-9][0-9][0-9]
verbose=1
gw-ip-address=10.0.0.1
[ip-pool]
attr=Framed-Pool
[dns]
dns1=213.174.7.1
dns2=8.8.8.8
[radius]
gw-ip-address=10.100.254.254
dictionary=/usr/local/share/accel-ppp/radius/dictionary
nas-identifier=nas1
nas-ip-address=172.18.0.11
server=172.18.0.1,B0TLnFLsqkUi,auth-port=1812,acct-port=1813,req-limit=0,fail-time=0
dae-server=0.0.0.0:3799,B0TLnFLsqkUi
timeout=10
max-try=3
acct-timeout=0
acct-delay-time=0
verbose=1
[shaper]
attr=Filter-Id
#Day/Night shaper
#time-range=1,1:00-3:00
#time-range=2,3:00-5:00
#time-range=3,5:00-7:00
ifb=ifb0
up-limiter=htb
#down-limiter=htb
#up-limiter=police
down-limiter=tbf
cburst=1375000
r2q=10
quantum=1500
leaf-qdisc=sfq perturb 10
verbose=0
[client-ip-range]
disable
[log]
log-file=/var/log/accel-ppp/accel.log
log-emerg=/var/log/accel-ppp/emerg.log
log-fail-file=/var/log/accel-ppp/auth-fail.log
log-debug=/var/log/accel-ppp/debug_.log
copy=1
level=7
[cli]
telnet=127.0.0.1:2000
tcp=127.0.0.1:2001
После настроек sysctl перед применением выполняем
modprobe ip_conntrack
modprobe nf_conntrack_ipv4
failed to load ifb kernel module
Не ошибка
failed to load ifb kernel module
Не ошибка
Firewall
- nano /etc/init.d/firewall
#
# 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: Mikbill firewall builder
### END INIT INFO
lock_path=/var/lock/firewall.lock
# Список IPSETов
ipset_list=(
nomoney
freezee
disabled
deleted
unknown
)
IPT=`which iptables`
IPS=`which ipset`
DIG=`which dig`
CTL=`which sysctl`
DNS_lookup="213.174.7.1"
# OUT интерфейс (интернет)
out_interface1="eth4.61"
# IP SRC-NAT для пользователей
out_ext_ip1="213.174.7.65"
# IP для редиректа на страницу заглушку
REDIRECT_IP="10.0.0.1"
# IP SRC-NAT для выхода на разрешенные IP
allowed_ext_ip="1.2.3.4"
# название IPSETа для разрешенных IP
allowed_ipset="allowed"
# Список разрешенных сайтов и IP
allowed_list=(
4.2.2.2
8.8.8.8
8.8.4.4
mikbill.ru
213.174.7.1
)
postrouting() {
# Очищаем NAT
$IPT -t nat -F POSTROUTING
# NAT для пользователей
$IPT -t nat -A POSTROUTING -s 10.11.0.0/16 -o $out_interface1 -j SNAT --to-source $out_ext_ip1
$IPT -t nat -A POSTROUTING -s 10.1.0.0/16 -o $out_interface1 -j SNAT --to-source $out_ext_ip1
# NAT для разрешенных IP
$IPT -t nat -A POSTROUTING -m set --match-set $allowed_ipset dst -o $out_interface1 -j SNAT --to-source $allowed_ext_ip
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
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 nomoney src -p tcp --dport 80 -j DNAT --to-destination $REDIRECT_IP:81
$IPT -t nat -A PREROUTING -m set --match-set freezee src -p tcp --dport 80 -j DNAT --to-destination $REDIRECT_IP:82
$IPT -t nat -A PREROUTING -m set --match-set disabled src -p tcp --dport 80 -j DNAT --to-destination $REDIRECT_IP:83
$IPT -t nat -A PREROUTING -m set --match-set deleted src -p tcp --dport 80 -j DNAT --to-destination $REDIRECT_IP:84
$IPT -t nat -A PREROUTING -m set --match-set unknown src -p tcp --dport 80 -j DNAT --to-destination $REDIRECT_IP:85
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 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 -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
- chmod +x /etc/init.d/firewall
- chkconfig firewall on
Разгружаем по ядрам нагрузку
#RPS On
echo ff > /sys/class/net/eth5/queues/rx-0/rps_cpus
echo ff > /sys/class/net/eth4/queues/rx-0/rps_cpus
#RFS On
echo 32768 > /proc/sys/net/core/rps_sock_flow_entries
echo 2048 > /sys/class/net/eth0/queues/rx-0/rps_flow_cnt
Скрипт-балансировщик
mkdir /opt/set_irq_affinity
cd /opt/set_irq_affinity
mkdir /opt/set_irq_affinity
cd /opt/set_irq_affinity
- wget https://gist.github.com/SaveTheRbtz/8875474/raw/0c6e500e81e161505d9111ac77115a2367180d12/set_irq_affinity.sh
- chmod +x set_irq_affinity.sh
В rc.local
Настройки сетевых интерфейсов в rc.local
echo "`date` apply conntrack hashsize" >> /etc/rclocal.log
echo > /sys/module/nf_conntrack/parameters/hashsize 1240000 > /dev/null 2>&1
echo "`date` done" >> /etc/rclocal.log
echo "`date` changing ethtool parameters offload&others" >> /etc/rclocal.log
/sbin/ethtool -N eth5 rx-flow-hash udp4 sdfn > /dev/null 2>&1
/sbin/ethtool -K eth5 ntuple off > /dev/null 2>&1
/sbin/ethtool -A eth5 autoneg off rx off tx off > /dev/null 2>&1
/sbin/ethtool --offload eth5 rx off tx off > /dev/null 2>&1
/sbin/ethtool -K eth5 rxvlan off txvlan off > /dev/null 2>&1
/sbin/ethtool -G eth5 tx 8192 rx 8192 > /dev/null 2>&1
/sbin/ethtool -K eth5 tso off gso off gro off lro off > /dev/null 2>&1
/sbin/ethtool -C eth5 tx-usecs 0 > /dev/null 2>&1
/sbin/ifconfig eth5 txqueuelen 10000 > /dev/null 2>&1
/sbin/ethtool -K eth5 tso off gso off gro off lro off > /dev/null 2>&1
#echo "`date` changing ethtool parameters offload&others" >> /etc/rclocal.log
/sbin/ethtool -N eth4 rx-flow-hash udp4 sdfn > /dev/null 2>&1
/sbin/ethtool -K eth4 ntuple off > /dev/null 2>&1
/sbin/ethtool -A eth4 autoneg off rx off tx off > /dev/null 2>&1
/sbin/ethtool --offload eth4 rx off tx off > /dev/null 2>&1
/sbin/ethtool -K eth4 rxvlan off txvlan off > /dev/null 2>&1
/sbin/ethtool -G eth4 tx 8192 rx 8192 > /dev/null 2>&1
/sbin/ethtool -K eth4 tso off gso off gro off lro off > /dev/null 2>&1
/sbin/ethtool -C eth4 tx-usecs 0 > /dev/null 2>&1
/sbin/ifconfig eth4 txqueuelen 10000 > /dev/null 2>&1
/sbin/ethtool -K eth4 tso off gso off gro off lro off > /dev/null 2>&1
echo "`date` done" >> /etc/rclocal.log
/opt/set_irq_affinity/set_irq_affinity.sh 0-11 eth4Проверка
/opt/set_irq_affinity/set_irq_affinity.sh 0-11 eth5
/sbin/ifconfig ifb0 txqueuelen 10000
cat /proc/interrupts| grep eth
echo "`date` apply conntrack hashsize" >> /etc/rclocal.log
echo > /sys/module/nf_conntrack/parameters/hashsize 1240000 > /dev/null 2>&1
echo "`date` done" >> /etc/rclocal.log
echo "`date` changing ethtool parameters offload&others" >> /etc/rclocal.log
/sbin/ethtool -N eth5 rx-flow-hash udp4 sdfn > /dev/null 2>&1
/sbin/ethtool -K eth5 ntuple off > /dev/null 2>&1
/sbin/ethtool -A eth5 autoneg off rx off tx off > /dev/null 2>&1
/sbin/ethtool --offload eth5 rx off tx off > /dev/null 2>&1
/sbin/ethtool -K eth5 rxvlan off txvlan off > /dev/null 2>&1
/sbin/ethtool -G eth5 tx 8192 rx 8192 > /dev/null 2>&1
/sbin/ethtool -K eth5 tso off gso off gro off lro off > /dev/null 2>&1
/sbin/ethtool -C eth5 tx-usecs 0 > /dev/null 2>&1
/sbin/ifconfig eth5 txqueuelen 10000 > /dev/null 2>&1
/sbin/ethtool -K eth5 tso off gso off gro off lro off > /dev/null 2>&1
#echo "`date` changing ethtool parameters offload&others" >> /etc/rclocal.log
/sbin/ethtool -N eth4 rx-flow-hash udp4 sdfn > /dev/null 2>&1
/sbin/ethtool -K eth4 ntuple off > /dev/null 2>&1
/sbin/ethtool -A eth4 autoneg off rx off tx off > /dev/null 2>&1
/sbin/ethtool --offload eth4 rx off tx off > /dev/null 2>&1
/sbin/ethtool -K eth4 rxvlan off txvlan off > /dev/null 2>&1
/sbin/ethtool -G eth4 tx 8192 rx 8192 > /dev/null 2>&1
/sbin/ethtool -K eth4 tso off gso off gro off lro off > /dev/null 2>&1
/sbin/ethtool -C eth4 tx-usecs 0 > /dev/null 2>&1
/sbin/ifconfig eth4 txqueuelen 10000 > /dev/null 2>&1
/sbin/ethtool -K eth4 tso off gso off gro off lro off > /dev/null 2>&1
echo "`date` done" >> /etc/rclocal.log
Комментарии
Отправить комментарий