Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Настройка HTB шейпинга + NAT с нуля  (Прочитано 3527 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн hardir

  • Автор темы
  • Участник
  • *
  • Сообщений: 124
  • open source рулит
    • Просмотр профиля
    • маленький блог бедного программера
Настройка HTB шейпинга + NAT с нуля
« : 12 Сентября 2014, 21:32:19 »
Замучал Гугл, ничего внятного так и не нашел. Все статьи идут отрывками, и начинаются с середины, с конца.
Читал это:
http://habrahabr.ru/post/60095/
http://macpronet.ru/ubuntu-debian/326-ubuntu-nat-iptables-htb.html
http://habrahabr.ru/post/88624/
http://xakep.ru/articles/49421/
И ещё пару статей.
Затуп серьёзный.

Нужно наладить статейки с разжеванностью хотя бы элиментарного. Вот начинаем.
Пояснения:
(Нажмите, чтобы показать/скрыть)
Итак, что требуется:
Раздача инета для небольшого офиса (10 - 1000 машин) посредством NAT + динамически шейпить скорость (желательно каждые 1500 миллисекунд).

Итак. Ставим Debian (7.6) минимальую (консольную) версию. обновляем, накатываем mc. С этим уже может справится любой начинающий Linux'ойд. Я справился.
Дальше начинается самое интересное.
Настраиваем NAT (для начала бесконтролируемая раздача инета всем и вся).
Для дальнейшего исключения путаницы поясню. Машина имеет ДВА ethernet интерфейса:
eth0 - смотрит в интернет (ip 172.16.0.3 шлюз 172.16.0.1 днс 172.16.0.1)
eth1 - в локалку (ip 192.168.0.100).

Задача решается просто (нарыл в Гугле). Чтобы машина начала раздавать инет нужно это настроить через iptables (это страшное слово не берите в голову). Запускаем mc открываем /etc/sysctl.conf (F4 в mc) заменим строку net.ipv4.ip_forward=0 на net.ipv4.ip_forward=1
Если строчка закомментирована — то раскомментируем её.
Далее настраиваем раздачу через iptables, да так, чтобы после перезагрузки ничего не пропало (не перестало раздаваться). Для этого открываем файл /etc/rc.local в mc, там, перед exit 0 добавим строчку
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEЗакрываем файл, сохранив его (F2 в mc)
Перезагрузка (#reboot).
Что эта строчка значит по элементно ХЗ. Но инет начнет раздаваться. Для проверки, просто на клиентах прописываем ip 192.168.0.xx, шлюз 192.168.0.100 и ДНС 8.8.8.8
Инет должен работать (у меня заработал)

Дальше пытаемся шейпить. Тут, собстна и есть затуп.
Гугл даходчиво пояснил, что нужно скачать файл htb.init
Кинуть его в каталог /usr/local/sbin и сделать исполняемым.
(Нажмите, чтобы показать/скрыть)
Если Вы качали файл под виндой на флешку (как это делал Я), а затем монтировали её в debian, то файл сам станет исполняемым, потому эта проблема решена. Если нет:
(Нажмите, чтобы показать/скрыть)
Так же нужно создать папки (F7 в mc) /etc/sysconfig/htb/ (Там будут настройки)
создать файл /var/cache/htb.init (Видимо для кэша)
файл создается командой
#touch /var/cache/htb.init(Ctrl+O в mc, чтобы открыть консоль)
Далее нужно добавить этот скрипт (/usr/local/sbin/htb.init) в автозагрузку.
Гугл подсказал что это должно сработать:
#ln -sf /usr/local/sbin/htb.init /etc/init.d/htbЯ так понимаю, тут мы в папку автозагрузки (/etc/init.d) закинули символическую ссылку на файл /usr/local/sbin/htb.init
Затем настраиваем шейпинг. Для начала попробуем ограничить для клиентов скорость скачивания. Для этого нужно настраивать отдающий интерфейс eth1 (если я всё правильно понял. поправляйте, не стесняйтесь.).
Создаем файл eth1 в папке /etc/sysconfig/htb/
#touch /etc/sysconfig/htb/eth1Открываем файл (F4) и туда пишем:
DEFAULT=42Почему 42? ХЗ. Некоторые там пишут 20. Некоторые вообще 0.
Я совсем не врубаюсь, что тут к чему. Но упорно двигаюсь дальше...
#touch /etc/sysconfig/htb/eth1-2.rootЭтим самым мы создадим файл eth1-2.root
Единственное, что я понял из названия фала, так это то, что eth1 нужно для указания, что правило всё ещё идёт для интерфейса eth1. .root это нужно для пояснения. Т.е. это комментарий. В данном случае указывающий на корневое правило, т.е. для ВСЕХ пакетов.
Что такое -2 ХЗ. И почему именно 2? а не скажем 3? или qwe? Кто знает, поделитесь секретом. Не жмитесь. Linux в массы!
Открываем /etc/sysconfig/htb/eth1-2.root (F4) и туда пишем:
RATE=100MbitЭтим мы указали максимальную скорость интерфейса на отдачу. Вдруг нужно будет скачать файл с сервера на максималке. Потому лучше оставить именно так.
Далее ещё хуже. Создаем файл:
#touch /etc/sysconfig/htb/eth1-2:42.rootПодозреваю, что 42 тут как то связанно с DEFAULT=42 из файла /etc/sysconfig/htb/eth1
Но вот КАК? ХЗ.
Заполняем файл (F4)
RATE=128KbitЭто мы указали максимальную скорость клиента. Т.е. теоритически ограничили скорость интернета до 128Kbit/sec.


Дальше что делать? Почему информация во всех статьях дальше так запутывается что у меня взрывается башка? Как запустить это всё? Почему скорость так и не упала?
Интересный ФАКТ. Если выполнить в консоли
# tc qdisc add dev eth0 root tbf rate 256kbit latency 50ms burst 1540То скорость падает до 256Kbit
Это так. К слову.
PS Я пытаюсь сделать статью максимально понятной. Разжевать всё, для тупых (таких как Я). Помагайте, пожалуйста мне.
« Последнее редактирование: 12 Сентября 2014, 22:36:18 от hardir »

 

Страница сгенерирована за 0.351 секунд. Запросов: 26.