10 апреля 2010 г.

Раздача интернета + шейпер на Ubuntu 9.10

Устанавливаем систему;
Обновляемся:
apt-get update
apt-get upgrade
reboot
Параметры сетевых соединений:
WAN port - eth0 (212.212.212.212, mask: 255.255.255.252, gw: 212.212.212.211)
LAN port - eth1 (10.1.1.1, mask: 255.255.255.0, gw: 0.0.0.0)
Устанавливаем dhcp3-server:
sudo apt-get install dhcp3-server
Если не стартует, то создаем недостающую папку:
sudo mkdir /etc/ltsp
Меняем настройки сервера на необходимые:
sudo gedit /etc/dhcp3/dhcpd.conf
Удаляем всё и вставляем:
subnet 10.1.1.0 netmask 255.255.255.0
{
option routers 10.1.1.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 195.54.2.1;
option domain-name-servers 195.54.3.2;
range 10.1.1.10 10.1.1.254;
default-lease-time 21600;
max-lease-time 28800;
}
Правим файл /etc/default/dhcp3-server вписывая в него строку:
INTERFACES=”eth1”
После чего можем запустить сервер
sudo /etc/init.d/dhcp3-server start
Устанавливаем LAMP-server

sudo tasksel install lamp-server
sudo apt-get install phpmyadmin
В конец файла /etc/apache2/apache2.conf следующую строку:
Include /etc/phpmyadmin/apache.conf
Создаем скрипт раздачи инета:
#!/bin/sh
# полная версия находится здесь: lafox.net/docs/masq/
IPTABLES=/sbin/iptables
DEPMOD=/sbin/depmod
MODPROBE=/sbin/modprobe
EXTIF="eth0"
INTIF="eth1"
$DEPMOD -a
$MODPROBE ip_tables
$MODPROBE ip_conntrack
$MODPROBE ip_conntrack_ftp
$MODPROBE ip_conntrack_irc
$MODPROBE iptable_nat
$MODPROBE ip_nat_ftp
$MODPROBE ip_nat_irc
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
$IPTABLES -P INPUT ACCEPT
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
$IPTABLES -t nat -F
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
$IPTABLES -A FORWARD -j LOG
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
echo -e "done.\n"
Сохраняем его в файл /etc/profile.d и назовем его, к примеру masq.sh
Назначаем права и исполняем:
sudo chmod +x /etc/profile.d/masq.sh
sudo sh /etc/profile.d/masq.sh
Записываем файл в автозагрузку:
sudo gedit /etc/rc.local
дописываем перед exit строку
/etc/profile.d/masq.sh
Качаем шейпер sourceforge.net/projects/htbinit/
sudo cp htb.init /etc/init.d/htb
sudo chmod +x /etc/init.d/htb
sudo update-rc.d htb defaults
В настройках шейпера указываем HTB_PATH на etc/htb
В папке etc/htb создаем правила для раздачи интернета:
Eth0
Eth0-2.full10mbit
Eth1
Eth1-2.full100mbit
Eth1-2:20.inet
Eth1-2:20:30.people
Eth1-2:20:30:31.первый клиент
Eth1-2:20:30:32.второй клиент
Замечания:
R2Q — коэффициент, определяющий соотношение точности/скорости работы шейпера
DEFAULT — идентификатор класса, в который попадают пакеты, если они не попадают под другие правила. Класс с идентификатором 0 существует всегда и пропускает пакеты без всякого шейпинга, то есть на полной скорости.
RATE — гарантируемая скорость для клиента.
CEIL — максимальная скорость для клиента при свободном канале.
LEAF — указывает, что класс является одним из листов дерева, то есть в него попадает трафик, удовлетворяющий определенному правилу (RULE). Параметр sfq означает, что мы хотим, чтобы внутри этого класса скорость распределялась равномерно между сессиями.
RULE — правило, задающее, какой трафик будет попадать в этот класс. RULE=10.1.1.10/24 В данном случае в класс попадает весь трафик, имеющий IP назначения от 10.1.1.10 до 10.1.1.255.


Проверить работу скрипта htb.init, кроме спидтестов, можно просмотром конфигурации командами:
tc class show dev eth1
tc qdisc show dev eth1
После правки конфигурации перезапускаем htb.init:
/etc/init.d/htb restart
Устанавливаем систему мониторинга
sudo apt-get install munin munin-node
Посмотрим какие плагины доступны и что может подсказать конфигуратор:
sudo munin-node-configure
sudo munin-node-configure --suggest
Установим плагин мониторинга трафика:
Скачать плагин вы можете из официального репозитория плагинов munin, называется он qos_, просто скопируйте его в папку плагинов munin /usr/share/munin/plugins/ и в папке используемых плагинов /etc/munin/plugins сделайте на него символическую ссылку вида qos_eth1, где eth1 — имя интерфейса, на котором нужно мониторить загрузку.
sudo ln -s /usr/share/munin/plugins/qos_ /etc/munin/plugins/qos_eth1
Подключать плагину по алфавиту в файле /etc/munin/plugin-conf.d
[qos_eth1]
env.ignore_queue1_10 yes
env.label_name1_31 клиент1
env.label_name1_32 клиент2
После настроек презагружаем
sudo /etc/init.d/munin-node restart
/usr/share/munin/munin-update --force-root
/usr/share/munin/munin-html --force-root
/usr/share/munin/munin-graph --force-root
Ограничим доступ к munin из веба:
sudo htpasswd -c /etc/munin/.passwd пользователь
sudo gedit /etc/apache2/sites-enabled/000-default
вконце перед </VirtualHost>:
<Location /munin>
AuthType Basic
AuthName "Munin"
AuthUserFile /etc/munin/.passwd
Require valid-user
</Location>
<Location /munin>
AuthType Basic
AuthName "Munin"
AuthUserFile /etc/munin/.passwd
Require valid-user
</Location>

Комментариев нет:

Отправить комментарий