Роздача internet'y через pppoe або Я дятел, але цього ніхто не помітив

Черговий раз використовував цей блог як записник для того, щоб налаштувати ще один Linux'овий роутер. На цей раз мені стала в нагоді нотатка понад дворічної давності про нарізку internet-каналу з допомогою скрипта htb.init. Проте з голови зовсім вилетіло, що котролювати швидкість можна лише на вихідному інтерфейсі, що логічно: не можете ж ви контролювати швидкість приходу вхідних пакетів — як їх друга сторона відправила так і прийдуть.

В результаті я написав правила обмеження швидкості на інтерфейсі, який «дивиться» в internet, i в мене получилося, що користувач може скачувати інформацію з максимальною швидкістю, а віддавати — з тою, яку я «нарізав». Здоровий глузд же підказує, що треба хоча б навпаки, а в ідеалі — контролювати швидкість в обидві сторони.

Здавалося б — нема нічого простішого — продублювати конфігурацію для інтерфейсу, до якого підключений користувач і «дєло в шляпє», але мої граблі, як завжди виявляється, такими простими не бувають: користувач з’єднується по протоколу pppoe і як називається інтерфейс з’єднання котрого користувача наперед вгадати неможливо, більше того — поки користувач не з’єднався потрібного інтерфейсу просто-напросто в системі немає.

Довелося трохи погуглити.

Як на зло, першими на очі потрапили рішення «викидати htb.init, читати документацію по ip та tc і писати скрипти самому». Були навіть приклади скриптів. Але світ не без добрих людей і хвилин за 15 я таки знайшов відносно просте рішення з використанням того ж htb.init.

Рішення, що називається, «в лоб»: зробити шаблонну конфігурацію, розмножити її для всіх можливих варіантів назви інтерфейсу (від ppp0 до ppp254) і перезапускати htb.init при кожному з’єднанні/відключенні pppoe-клієнта.

Само собою 255 однотипних операцій зручніше робити скриптом, тільки чувак, котрий то написав, в своєму прикладі скрипта намертво забив імена шаблонних файлів (благо в нього їх тільки три) і розмножував їх копіюванням. Мені це не сподобалося, бо
а) по мірі додавання/прибирання користувачів міняється набір шаблонних файлів, тому я просто вирішив читати список і підміняти шаблонну частину назви на потрібну;
б) при зміні параметрів в існуючому файлі потрібно наново запускати процес копіювання, а якщо робити не копії, а лінки на шаблонні файли (як я і зробив), то при редагуванні шаблонів зміни у всіх 255-ти екземплярах відбудуться автоматично.

В результаті скрипт набув такого вигляду:

# cat make_clones 
#!/bin/bash 
#прибрати існуючі версії 
rm -f /etc/sysconfig/htb/ppp* 
#цикл для 255 можливих інтерфейсів 
for pppno in `seq 0 254`; do 
 #прочитати назви шаблонних файлів (починаються зppp)
 for ppptpl in `find /etc/sysconfig/htb/ppp.d/ -name ppp\*`; do 
  #сформувати назву файла конфігурації. Відкидаємоppp,
  #замість нього додаємо повний шлях і назву інтерфейсу; 
  #відкидання символів після крапки — необов’язкове — 
  #htb.init їх дозволяє (як примітку), але так красивіше
  #виглядає: в шаблонах все підписано, а в «живій» 
  #конфігурації тільки необхідний мінімум 
  pppXfile=/etc/sysconfig/htb/ppp${pppno}`basename ${ppptpl}|colrm 1 3|cut -d "." -f 1`
  ln -f ${ppptpl} ${pppXfile}
 done
done

Запускати це чудо слід лише при додаванні чи вилученні користувача. Параметри існуючого можна міняти в відповідному файлі шаблону або будь-якого інтерфейсу і вони автоматично відбудуться у всіх решта відповідних файлах, бо лінки рулять!

Залишилося закинути скрипт перезапуску htb.init в папки /etc/ppp/ip-up.d та /etc/ppp/ip-down.d, який складається з однієї стрічки:
/sbin/htb.init restart

Знаю, що зазвичай він знаходиться зовсім не там, але в мене використовується systemd, та й скрипт потрібно запускати зовсім не на завантаженні системи, тому мені зручніше тримати його в /sbin/

Свої проколи я встиг зрозуміти і виправити до підключення реальних користувачів, тому ніхто нічого не помітив, але на майбутнє нотатку треба собі залишити — хто зна: може через два з половиню роки знов щось таке налаштовувати буду :-)

Internet-радіо

Преамбула. На мордокнижці один цікавий чоловік випадково звернув мою увагу, що на сайті Золотий фонд української естради є така річ як радіо. Коли я вирішив подивитися чи можна його слухати не з сайту, а просто в плеєрі, виявилося — ні, бо ніяке це насправді не радіо, а плеєр, в який завантажується список програвання кожен раз по-різному перемішаний. Так що якщо ви відкриєте його з двох різних комп’ютерів — почуєте абсолютно різні пісні.

В списку було лише трохи більше тисячі пісень, тому я його засунув не в плеєр, а в качалку файлів і до кінця дня вже мав локальну копію всього золотого фонду. Цікаві є речі, скажу я вам.

А тепер амбула.

GPG, RPM і інші слова на три букви

Не бійтеся — інших слів не буде. Просто чергова нотатка про те, що в дядька Гугла знаходиться за казна-яким разом і то при правильному розташуванні зірок і ключових слів.

Якщо в Linux глибоко лазити руками, то часом при інсталяції пакетів можна побачити таку помилку:Неправильний підпис (NOT OK (no key): /var/cache/urpmi/rpms/firefox-17.0-3.mga2.x86_64.rpm: Заголовок V3 RSA/SHA1 Signature, key ID 80420f66: NOKEY)

Після неї треба підтверджувати, що ти не верблюд, не двогорбий і не африканський, а якщо пакетів багато — це дістає.

Вирішується до смішного легко, але сходу натрапити на потрібне рішення важко.

ДеПоттерінґ системи

Головний герой сьогоднішньої статті — Леннарт Поттерінґ (Lennart Poettering) — співробітник RedHat і автор декількох «мегакорисних» програм та ідей. Витвори цього персонажа мають єдину перевагу: все красиво виглядає. Як воно все працює середньостатистичні користувачі не мають ані найменшого уявлення, більш досвідчені — плюються і стараються викинути куди подалі, а програмісти, які бодай частково розібралися в коді взагалі хапаються за голови від кількості знайдених проблем з безпекою.

Я відношу себе до другої категорії, тому сьогодні розповім як максимально безболісно позбутися плодів життєдіяльності пана Поттерінґа.

Ще один плюс Linux'a

Сьогодні вирішив подивитися наскільки сильно можна «розфарбувати» Linux. Для цього свій звичний віконний менеджер IceWM я замінив на KDE, або в простонародді — «кеди». Напівпрозорі вікна і віджети на робочому столі були в KDE, ще коли Біллі Гейтсу тільки снився Longhorn, а що він вийде через кілька років під назвою Vista — ніхто й не здогадувався.

При хорошій відеокарті (а я на свою NVidia ніби не жаліюся) KDE запропонує Вам цілу купу ефектів, як от: желейні вікна (Вікно можна за один кутик відгорнути і поглянути, що за ним відбувається, а потім воно саме повертається на місце, при цьому ще й потруситься, немов справжнє желе. При пересуванні по екранну воно теж буде так прикольно пружинити.), різні спливання, ковзання, виринання, розпадання, прозорість, розмивання — словом знущається з тих вікон як може.

Linux + proxy з авторизацією + тупа прога без підтримки proxy

Власне в темі описана основна частина задачі. Все що лишається — все ж змусити ту програму піти в Internet.

В світі вінди така задача вирішується установкою Forefront TMG (раніше називався ISA Server) на сервер і Forefront TMG Client (відповідно раніше — ISA Client) на комп’ютер з проблемною програмою.

В Linux'i не все так просто...

Linux + VirtualBox = сервер віртуальних машин

Якщо вам в руки потрапляє такий комп’ютер, а поруч з ним стоять треті пентіуми, які в кінці дев’яностих хтось гордо назвав серверами, то виникає бажання всі задачі перенести на нове залізо, а весь той хлам вимкнути, щоб не гудів даремно. Якщо ви одноосібно адмініструєте це все і все воно «живе» на чомусь одному — на Windows'i чи Linux'i, то проблем немає: налаштовуєте всі сервіси на одному комп’ютері і маєте повний фен-шуй. Проте частіше за все зробити таку «купку невеличку» не вдається: або крім вас різні сервіси адмініструють різні інші люди, або ви не хочете, щоб при зламі веб-сервера зловмисники отримали доступ ще й до електронної пошти чи внутрішнього документообігу, або різні сервери виконують однотипні задачі і просто «посваряться» за певні ресурси, або ...причини завжди знайдуться.

Спеціально для цього випадку розумні люди придумали поняття «віртуалізація» і в купі з ним — різного роду віртуальні машини. Деякі дозволяють ізоляцію лише певних ресурсів, інші створюють видимість повністю відокремленого обладнання. І в тих і в інших є свої переваги і недоліки в певних ситуаціях. В моєму випадку — повний зоопарк операційок (різні Windows'и і Linux'и) — найкращим виходом є повна емуляція обладнання, причому бажано реально існуючого.

Варіанти в даному випадку є наcтупні:

  • Hyper-V — коштує чималих грошей, та й Linux'и на ньому «живуть» почерез раз
  • VMWare — має безкоштовну версію і підтримує всі операційки «на ура», але безкоштовна версія має обмеження на використовувані ресурси сервера, так що з певного моменту upgrade заліза доведеться робити лише після придбання (теж недешевої) ліцензії
  • VirtualBox — проект з відкритим кодом, підтримується компанією Oracle. Безкоштовна версія має обмеження на функціонал: недоступні USB-пристрої і віддалений вхід через RDP-клієнт. Підтримує всі поширені операційки (не впевнений щодо MacOS, але вона все одно окремо не продається :-(, так що в роботі мені зустріч з нею найближчим часом «не світить»).

Флешки в сервери я не тикаю, а організувати віддалений доступ можна і без RDP, так що VirtualBox — «те що доктор прописав».

Про оленів, зебру, криві руки і Microsoft

Розкажу я вам, дітки, казочку. Жив-був за морем, за океаном дядько Біллі. Розумний був дядько, але жадібний. А щоб побільше грошей заробити створив Біллі компанію, назвав її Microsoft і почав софт писати щодня більший та більший. І взяв він на роботу програмістів силу-силенну, але не подобалася нормальним програмістам жадібність дядька Біллі і не йшли вони до нього працювати, а йшли до нього працювати довбні криворукі та на всю голову контужені. І придумали ці йолопи, що для мережі 192.168.1.0 можна поставити маску 255.255.1.0 і все буде працювати. Маразму такому дивувався цілий світ і не робив так ніхто, крім таких же йолопів пришелепкуватих, як і в дядька Біллі в компанії працювали.

От і казочці кінець.

А далі йде бувальщина...

За що я прокляну розробників Ubuntu

Я не знаю хто придумав тезу, що Ubuntu — один із найзрозуміліших Linux'ів, але він його явно не пробував інсталювати, а лише користувався.

Мені ж зараз потрібно розібратися з інсталяцією цього чуда і я бачу стільки граблів, що вже б давно плюнув і взяв будь-що інше, якби задача не стояла поставити саме його, а точніше — більш віндоподібну модифікацію — Kubuntu.

Взагалі-то я вважав, що найбільш збочені інсталяції в мене були пов’язані зі специфічним серверним обладнанням. А ні... Шамани племені мумбу-юмбу, які в своїх фігвамах наклепали Бубунту доводять протилежне — сюрпризи бувають і при інсталяції на звичайнісінький середньостатистичний комп.

photorec

Сьогодні трошки нафотографував приколів, а потім «добрі люди» — персонажі тих кадрів мені їх повидаляли (Руки би пообривав! Яке показалося таке змалювалося! Чого видаляти?!!!) От я і почав шукати чим відновити фотографії з картки пам’яті. Першою мені трапилася назва mundelete, але не нього лінка не було, зате там же була згадана інша утилітка — fatback і лінк звідки її можна стягнути.

Щось вона пошукала, щось знайшла, але все, що вона знайшла чомусь було нульового розміру.

Наступною на черзі була утиліта photorec, яку ще й до всього не треба було шукати, бо вона була в пакетах до мого дистрибутива.

Коли я побачив ЩО вона мені познаходила, то троха припух...

Працює на AutoGenCMS 0.2.6

А чому це всі вирішили, що в сайта має бути шапка?