proftpd speed TransferRate ip address
proftpd
нужно сделать разграничение скорости для анонимных пользователей из локалки и интернета, пока непонятно как
Code:
#класс внутренних пользователей
<Class internal>
From 192.168.0.0/16
From 172.16.0.0/12
From 10.207.0.0/16
From 88.84.193.0/24
</Class>
#такая директива не работает :(
#Fatal: unknown configuration directive '<IfClass>'
#<IfClass !internal>
# TransferRate RETR 10000
#</IfClass>
<Class external>
From !192.168.0.0/16
From !172.16.0.0/12
From !10.207.0.0/16
From !88.84.193.0/24
#здесь скорость не задается
#TransferRate RETR 10000
#Fatal: TransferRate: directive not allowed in server config context
</Class>
<Anonymous /tmp/harddisk>
<Limit RETR>
AllowClass external
#TransferRate RETR 10000
#not working
#Fatal: TransferRate: directive not allowed in <Limit> context
</Limit>
</Anonymous>
как правильно настроить webalizer и ротацию логов?
Стоит на роутере webalizer хочу что бы он раз в сутки запускался.
Как правильно прописать автозапуск в crontab?
crontab Выглядит так:
# cat crontab
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/sbin:/opt/bin
MAILTO=""
HOME=/
# ---------- ---------- Default is Empty ---------- ---------- #
есть директория cron.d
с одним файлом updatedb-daily
вопрос номер два как правильно и проще сделать ротацию логов?
Базовая настройка ProFtpD
Искал нормальный мануал по установке и настройке proftpd, так и не нашёл в итоге решил собрать из всех найденных в один нормальный.
Мануал делал по аналогии с примером
Устанавливаем необходимые пакеты.
Code:
ipkg install proftpd adduser
Создаём пользователей. Для примера одного анонимного, другого администратора.
Анонимный пользователь
Code:
adduser userftp -d /opt/ftp/ -s /bin/false
adduser adminftp -d /opt/ftp/admin -s /bin/false
Создаём файл rонфигурации для Ftp.
Code:
nano /opt/etc/proftpd.config
Code:
ServerName "Necrom Station"
ServerType standalone
DefaultServer on
UseReverseDNS off
IdentLookups off
# Port 21 is the standard FTP port.
Port 21
UseIPv6 off
AllowForeignAddress on
MasqueradeAddress 192.168.1.1
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022 022
MaxInstances 8
MaxLoginAttempts 3
# Не забываем про логирование:
ExtendedLog /opt/var/log/proftpd/extend.log
TransferLog /opt/var/log/proftpd/transfer.log
SystemLog /opt/var/log/proftpd/syslog.log
ScoreboardFile /opt/var/run/proftpd.scoreboard
# Мы не будем использовать файл /etc/ftpusers
UseFtpUsers off
PersistentPasswd off
MultilineRFC2228 on
# "таймауты", по истечению которых сервер будет закрывать соединение
TimeoutLogin 120
TimeoutNoTransfer 900
TimeoutStalled 100
TimeoutIdle 2200
<Global>
RootLogin Off
AuthUserFile /etc/passwd
AllowStoreRestart on
ShowSymlinks on
AllowOverwrite on
DisplayChdir .message
ListOptions .-l.
RequireValidShell off
# TransferRate RETR 25
# TransferRate APPE,STOR 100:2048
</Global>
<Limit ALL>
DenyAll
</Limit>
# Set the user and group under which the server will run.
User nobody
Group nobody
DefaultRoot ~
# A basic anonymous configuration, no upload directories. If you do not
# want anonymous users, simply delete this entire <Anonymous> section.
<Anonymous /opt/ftp>
User userftp
Group ftp
# We want clients to be able to login with "anonymous" as well as "ftp"
UserAlias anonymous userftp
AuthAliasOnly on
# Limit the maximum number of anonymous logins
MaxClients 5
# Отключаем требования валидного шелла пользователя
# позволяет "пускать" в систему юзером без доступа по SSH (nologin)
RequireValidShell on
# Скрывать файлы и папки пользователя root
HideUser adminftp
# Разрешаем авторизацию, чтение файлов и перемещение по папкам
<Limit LOGIN READ DIRS>
AllowAll
</Limit>
DisplayLogin welcome.msg
#DisplayFirstChdir .message
# Разрешаем запись
<Directory upload/*>
<Limit WRITE>
AllowAll
</Limit>
</Directory>
</Anonymous>
# Объявляем анонимный сервер с корнем в домашем каталоге пользователя adminftp
<Anonymous ~adminftp>
# От кого будет работать демон
User adminftp
Group adminftp
# Установка владельца на новые файлы
UserOwner adminftp
GroupOwner adminftp
# Включаем запрос пароля
AnonRequirePassword on
# Разрешаем все для нашего пользователя
<Limit ALL>
Order Allow, Deny
AllowUser adminftp
</Limit>
</Anonymous>
Добавляем файл /etc/paswwd в автозагрузку
Code:
echo "/etc/passwd
/etc/group" >> /usr/local/.files
flashfs save && flashfs commit && flashfs enable
Создаём скрипт автозапуская.
Code:
nano /opt/etc/init.d/S90proftpd
chmod +x /opt/etc/init.d/S90proftpd
Code:
#!/bin/sh
prefix="/opt"
PATH=${prefix}/bin:${prefix}/sbin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=proftpd
DAEMON=${prefix}/sbin/${NAME}
DAEMON_OPTS="-c ${prefix}/etc/proftpd.conf"
test -x $DAEMON || exit 0
if [ -z "$1" ] ; then
case `echo "$0" | sed 's:^.*/\(.*\):\1:g'` in
S??*) rc="start" ;;
K??*) rc="stop" ;;
*) rc="usage" ;;
esac
else
rc="$1"
fi
case "$rc" in
start)
echo "Starting ftp server: $NAME"
$DAEMON $DAEMON_OPTS
;;
stop)
if [ -n "`pidof $NAME`" ]; then
echo "Stopping ftp server: $NAME"
killall $NAME 2> /dev/null
fi
;;
restart)
"$0" stop
sleep 1
"$0" start
;;
*)
echo "Usage: $0 (start|stop|restart|usage)"
;;
esac
exit 0
Вот в принципе и всё.
P.s Для того чтобы было видно во внешнем мире нужно добавить 2 правила. И проверить цепочку INPUT. Иногда бывает не в попад стоит правило DROP.
Code:
iptables -D INPUT -j DROP
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -I OUTPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -j DROP
Если не получится можно попробывать вот так
Code:
iptables -I INPUT 1 -p tcp --dport 21 -j ACCEPT
iptables -I OUTPUT 1 -p tcp --dport 20 -j ACCEPT
Чтоб удалить iptables правило по номеру
Code:
iptables -L INPUT --line-numbers
iptables -D INPUT номер
Чтоб протестировать соединение на стороне сервера можно использовать команду
Code:
tcpdump -npi vlan1 port 21 and host 10.1.1.1(внешний_ip)
И попросить в сети, кого нить проверить через консоль ftp 10.1.1.1
Примерный вид должен быть следующий.
iptables -nvL INPUT
Code:
Chain INPUT (policy ACCEPT 37 packets, 3796 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
86375 8817K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
18 1440 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 state NEW
270 22017 ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 state NEW
83 2496 ACCEPT 2 -- * * 0.0.0.0/0 224.0.0.0/4
0 0 ACCEPT udp -- * * 0.0.0.0/0 224.0.0.0/4 udp dpt:!1900
126 14317 SECURITY all -- vlan1 * 0.0.0.0/0 0.0.0.0/0 state NEW
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.1.1 tcp dpt:80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
Если вообще не хочет работать, то убивайте по 1 правилу из цепочки INPUT или всё цепочку для тестирования и смотрите где затор. (Убить все правила iptables -F INPUT)
Правила частично позаимствовал с этих постов
15 и 167
Ещё читал что бывают проблемы с UPnP. Взято отсюда
Quote:
UPnP не подчищает за собой port mappings и оставляет записи в nvram. Посмотреть эти записи можно так:
nvram show | grep "forward_port"
forward_port0=9999-9999>192.168.1.1:9999-9999,udp,on,Azureus UPnP 9999 UDP
forward_port1=9999-9999>192.168.1.1:9999-9999,tcp,on,Azureus UPnP 9999 TCP
forward_port2=49001-49001>192.168.1.1:49001-49001,udp,on,Azureus UPnP 49001 UDP
forward_port3=3000-3000>192.168.1.1:3000-3000,tcp,on,EiskaltDC++ 3000 (TCP)
forward_port4=3031-3031>192.168.1.1:3031-3031,tcp,on,EiskaltDC++ 3031 (TCP)
forward_port5=3000-3000>192.168.1.1:3000-3000,udp,on,EiskaltDC++ 3000 (UDP)
После перезагрузки эти записи попадают в iptables и могут портить настройки NAT.
iptables -t nat -L -nv
Удалить записи из nvram можно командой "nvram unset XXX"
Очистить все записи можно скриптом:
for a in `nvram show | grep "forward_port" | sed "s/=.*//"` ; do nvram unset $a ; done