При помощи htb.init разделяем трафик полностью

Если у Вас есть Ваша собственная домашняя сеть с двумя или более компьютерами и она подключена к интернету, вы точно знаете о тех проблемах с одновременным доступом к сети, которые практически неизбежны при таком подключении. Самой большой и раздражающей проблемой является разделение ширины канала между всеми участниками сети: когда вы пытаетесь работать серез ssh с удаленным сервером, а в этот момент ваша wife/брат/друг решает поглядеть новый и очень классный видео клип с Google Video или YouTube, Ваше соединение замирает и вы можете забыть о комфортабельной работе . В этой маленькой статье я дам вам простое решение этой проблемы, которое позволит вам делать все, что угодно не думая о проблемах разделения трафика!

Для начала замечу, что Ваша сеть должна быть подключена к Internet при помощи Linux сервера. Если Вы подключены через какой-то тупой аппаратный маршрутизатор, то Вам сильно не повезло и вы не сможете воспользоваться приведенным примером.

Если же Ваш сервер работает под управлением Linux, тогда используйте слудеющие ниже интсрукции чтобы сделать вашу жизнь проще. Замечу, что у меня интернет подключен к интерфейсу eth0, а локальная сеть – к eth1, канал у меня – симметричное подслючение на 512Kbit/s, потому все примеры будут очновываться на этих параметрах:

  1. Скачайте скрипт htb.init с сайта sourceforge.
  2. Распакуйте его и положите в /sbin/htb.init, сменив ему аттрибуты, чтобы сделать его исполнимым:

    # chmod +x /sbin/htb.init

  3. Создайте каталоги для конфигурации и кеша htb.init:

    # mkdir -p /etc/sysconfig/htb
    # mkdir -p /var/cache/htb.init

  4. Перейдите в каталог коныигурации htb.initи создайте следующие конфигурационные файлы для исходящего трафика:
    • Файл ‘eth0′ со следующим содержимым:

      DEFAULT=30
      R2Q=100

    • Файл ‘eth0-2.root’ со следующим содержимым:

      # root class containing outgoing bandwidth
      RATE=512Kbit

    • Файл ‘eth0-2:10.ssh’ со следующим содержимым:

      # class for outgoing ssh
      RATE=256Kbit
      CEIL=512Kbit
      LEAF=sfq
      RULE=*:22
      PRIO=10

    • И, наконец, файл ‘eth0-2:30.default’ со следующим содержимым:

      # default class for outgoing traffic
      RATE=256Kbit
      CEIL=512Kbit
      LEAF=sfq
      PRIO=30

  5. Теперь, создайте набор файлов для управления входящим трафиком:
    • Файл ‘eth1′ со следующим содержимым:

      DEFAULT=30
      R2Q=100

    • Файл ‘eth1-2.root’ со следующим содержимым:
      # root class containing incoming bandwidth
      RATE=512Kbit

    • Файл ‘eth1-2:10.ssh’ со следующим содержимым:

      # class for incoming ssh
      RATE=256Kbit
      CEIL=512Kbit
      LEAF=sfq
      RULE=*:22,
      PRIO=10

    • Файл ‘eth1-2:20.mytraf’ для конфигурирования параметров канала на Ваш компьютер:

      # class for my incoming traffic
      RATE=256Kbit
      CEIL=512Kbit
      LEAF=sfq
      RULE=192.168.0.2 # this is my ip
      PRIO=20

    • И файл ‘eth1-2:30.default’ для параметров канала по умолчанию для остальных со следующим содержимым:

      # default class for outgoing traffic
      RATE=256Kbit
      CEIL=512Kbit
      LEAF=sfq
      PRIO=30

  6. Последний шаг – запуск системы контроля трафика при помощи следующей команды:

    # /sbin/htb.init start
    #

Если все шаги были выполнены правльно и успешно, Вы можете использовать Ваш канал для работы через ssh, для скачивания файлов или для простого серфинга… Ваше соединение будет честно делиться между всеми участниками домашней сети. Если вы находитесь в сети один, Вы будете использовать всю ширину канала. Как только ваши соседи захотят что-то скачать, ширина канала будет разделена между вами поровну, но ваша работа будет настолько же комфортной, как и в тот момент, когда Вы были одни.

Linux:Server:DNS: Как создавать обратные зоны в BIND

Содержание

  • Создание реверсной зоны

    • Запись SOA

    • Запись NS

    • Запись Ptr(Pointer)

  • Реализации DNS серверов

  • Использование BIND9 для первичного сервера зоны

  • Использование BIND 9 для вторичного сервера зоны

Создание реверсной зоны

Создание реверсной зоны является тем же самым процессом как и создание любого другого зонного файла. Записи SOA и начальная NS такие же как и в любой другой нормальной зоне. Однако здесь требуется создание дополнительных PTR записей. Далее будем ориентироваться
при создании зоны на использование BIND. В принципе все должно быть тоже самое как и для других реализаций DNS серверов. Однако, детали судя по всему буду различны.

Запись – Start of Authority (SOA)

Запись SOA является первой записью в правильно сконфигурированной зоне. Она содержит информацию в строке полей. Запись SOA указывает серверу быть авторитативным для зоны. Запись имеет следующий формат:

<mydomain.where.> IN SOA <ns-computer.mydomain.where.> <mailbox.mydomain.where> ( <serial-number>
<refresh>
<retry>
<expire>
<minimum-ttl> )

Здесь:

Поле Описание
mydomain.where Имя домена которому SOA принадлежит. Вместо записи полного домена, можно использовать ‘@’ в файле и сервер должен это заменить автоматически.Пример:28.12.202.in-addr.arpa.@
IN Класс DNS записи. ‘IN’ – абревиатура Internet’.
SOA Тип DNS записи, ‘Start of Authority’.
ns-computer.mydomain.where. Так же известно как ‘master’ поле записи. Содержит имя узла, являющегося
первичным сервером зоны. Это указывает по сути компьютер на котором делают изменения зонных файлов.
mailbox.mydomain.wherename. Содержит e-mail адрес человека, ответственного за поддержание зоны. “@” символ не используется, а заменен точкой ‘.’, и любые ‘.’ перед “@” заменяються ‘\’.Пример:

Email адрес Соответствующий вид в поле
dns-admin@sysnet.by dns-admin.sysnet.by
dns.admin@sysnet.by dns\admin.sysnet.by

Недавно, случайные символы стали разрешены в этом поле, и ‘@’ сейчас стал допустим. Однако, старый формат используется большинством администратором и подразумевается многими DNS утилитами проверки.

serial-number Последовательный номер текущей версии базы. Если у вторичного
сервера номер меньше, чем у первичного, это указывает, что запись вторичного сервера устарела и что требуется передача зоны с первичного сервера.
refresh Указывается первичному серверу как часто опрашивать первичный сервер и проверять изменение поля серийного номера.
retry Если попытка обновления зоны неудачна, то вторичный сервер должен
повторить ее после данного интервала.
expire Если попытки обновления и повторы неудачны, вторичный сервер должен
остановить обслуживание зоны после указанного периода.
minimum-ttl TTL (Time To Live) – значение по умолчанию для каждой записи в зоне. Используется только когда определенная запись не имеет собственного значения TTL. Когда изменения часто делаются в зоне, то обычно устансерверовавливается порядка 10 минут или меньше.

Пример SOA:

20.120.202.in-addr.arpa. IN SOA ns.sysnet.by. admin.sysnet.by. (
20089040701 ;Serial number
10800 ;Refresh
3600 ; Retry
604800 ; Expire
86400) ; Minimum TTL

Символ ‘;’ указывает, что оставшаяся часть строки является комментарием и должна игнорироваться сервером. Также завершающая точка (‘.’) после каждой записи ссылается на имя узла. Без нее сервер добавит текущую зону в конец записи. Для примера, ns.sysnet.by
должен быть интерпритирован как ns.sysnet.by.20.120.202.in-addr.arpa.

Запись сервера разрешения имен – NS

NS запись обьявляет сервера имен, которые обслуживают эту зону и имеет следующий формат:
Пример:

mydomen.where. IN NS hostname.mydomain.where.

Здесь:

Поле Описание
mydomain.where Имя домена, которму принадлежит NS. Вместо записи полной строки , можно использовать ‘@’, что даст возможность серверу заполнить его автоматически.
IN Класс записи. ‘IN’ – аббревиатура для Internet.
NS Тип записи. В данном случае ‘Name Server’.
hostname.mydomen.where. Имя авторитативного сервера.

Пример NS записи:

IN NS ns.sysnet.by.
IN NS ns.sexmarket.by.

Запись указатель – PTR

В домене, необходимо создавать записи доменного указателя (PTR) для каждого IP адресса. Для примера с адресом ‘193.23.27.133’, это будет:

133.27.23.193.in-addr.arpa. IN PTR stock.sexmarket.by.

Однако, так как SOA запись уже содержит in-addr.arpa домен, то можно не писать это снова, а только сократить до:

133 IN PTR men.sexmarket.by.

После создания PTR записи следующим шагом становиться задача загрузки в сервер.

Реализация DNS серверов

Существуют различные реализации DNS протокола. Наиболее популярный на сегодняшний день это BIND (Berkeley Internet Name Domain). Информация о последней версии доступна:

  • ISC BIND (http://www.dns.net/dnsrd/servers.html)

APNIC рекомендует устанавливать и использовать BIND9, как имеющий наибольшее число характеристик и исправленные ошибки безопасности.

Список остальных серверов можно поискать здесь:

Использование BIND9 для установки первичного сервера зоны.

1. Добавить запись с указанием первичного сервера в файл named.conf, используя следующий формат:

zone “<domain_name>” in {
type master;
file “<path-name>”;
};

где:

Поле Описание
domain_name Имя домена.Например: 14.12.211.in-addr.arpa.
type master Определяет, что этот сервер является первичным для данного домена.
path-name Расположение файла, содержащего зональные данные. Имя файла может быть любым.

2. Даем команду серверу перечитать новый файл:

rndc reconfig

Пример первичного сервера:

zone “14.12.211.in-addr.arpa” in {
type master;
file “reverse/14.12.211.in-addr.arpa”; };

Использование BIND9 для установки вторичного сервера зоны

1. Добавить запись с указанием вторичного сервера в файл named.conf, используя следующий формат:

zone “<domain-name>” {
type slave;
file “path-name”;
masters { <ip-address>; };
};

где:

Поле Описание
domain-name Имя домена: Например 14.12.211.in-addr.arpa.
type slave Определяет вторичный сервер.
path-name Расположение файла содержащего зональные данные. Имя файла может быть любым.
masters Указание адреса первичного (мастер).
ip-address IP адресс первичного сервера.

2. Даем команду серверу перечитать новый файл:

rndc reconfig

Пример вторичного сервера:

zone "14.12.211.in-addr.arpa" {
     type slave;
     file "slave/14.12.211.in-addr.arpa";
     masters {  212.11.14.100;};
};

Linux:Консоль – Сравнение содержимого директорий

Очень часто нужно сравнивать содержимое двух директорий в файловой системе для выяснения необходимости повторной синхронизации, для уточнения какие-файлы изменились, появились или исчезли. В этом очень помогает удивительная утилита diff.

Сравнение содержимого двух директорий и вывод только информации по отсутствующим или различным файлам:

diff -qrN /dir/1 /dir/2
r – лезем в поддиректории
q – выводим сообщения только для различий
N – считаем отсутствующие файлы пустыми

Вообще-то, возможности этой утилиты гораздо шире и важнее, но это обсуждать нужно в своем контексте.
Говорим спасибо авторам: Paul Eggert, Mike Haertel, David Hayes, Richard Stallman, and Len Tower.

Scroll to top