Замучал Гугл, ничего внятного так и не нашел. Все статьи идут отрывками, и начинаются с середины, с конца.
Читал это:
http://habrahabr.ru/post/60095/http://macpronet.ru/ubuntu-debian/326-ubuntu-nat-iptables-htb.htmlhttp://habrahabr.ru/post/88624/http://xakep.ru/articles/49421/И ещё пару статей.
Затуп серьёзный.
Нужно наладить статейки с разжеванностью хотя бы элиментарного. Вот начинаем.
Пояснения:mc - Мининг коммандер файловый менеджер. Типа Far, NC, VC (TotalCommander) и т.д.
Итак, что требуется:
Раздача инета для небольшого офиса (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 и сделать исполняемым.
(файл лучше переименовать в htb.init, получится файл /usr/local/sbin/htb.init)
Если Вы качали файл под виндой на флешку
(как это делал Я), а затем монтировали её в debian, то файл сам станет исполняемым, потому эта проблема решена. Если нет:
(Ctrl+O в mc, чтобы открыть консоль)
#chmod +x /usr/local/sbin/htb.init
Так же нужно создать папки (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 Я пытаюсь сделать статью максимально понятной. Разжевать всё, для тупых (таких как Я). Помагайте, пожалуйста мне.