Что почитать проектному менеджеру: книги про управление персоналом, soft skills и DevOps

Мы в «ИТ Гильдии» уделяем особое внимание вопросам управления проектами и помогаем другим компаниям внедрять инструменты, которые оптимизируют работу в IT-отделах.

Сегодня мы собрали несколько полезных книг для PM’ов. В подборку вошла литература, которую рекомендуют к прочтению в тематических тредах на Hacker News, Reddit и Quora.


/ Unsplash / Pj Accetturo


1. The Mobile MBA: 112 Skills to Take You Further, Faster

Книга в компактной форме дает знания, которыми обладают магистры делового администрирования (MBA). И есть мнение, что она должна была называться «MBA 101 для программистов», так как материал полезен не только руководителям, но и разработчикам, которые хотят изучить тонкости работы PM’a.

Книга дает возможность провести реверс-инжиниринг выполняемых менеджерами задач, чтобы лучше понимать причины их решений. Все эти задачи автор — предприниматель Джо Оуэн (Jo Owen) — разбирает на живых примерах, которые он собрал за время интервью с двумя тысячами менеджеров разных «калибров».


2. Project Management for Humans: Helping People Get Things Done

Книга научит вас управлять и проектами, и командой разработчиков. Она написана консультантом Бреттом Харнедом (Brett Harned), который обучал PM’ов в таких компаниях, как Zappos, MTV и Monotype. Автор рассказывает, как планировать задачи и предугадывать потенциальные слабые места в процессе разработки еще до их проявления. Он также затрагивает тему soft skills и объясняет, какие из них необходимо развивать в первую очередь — и, самое главное, как это сделать. Что интересно, в конце каждой главы имеется секция TL;DR, которую можно использовать в качестве чек-листа при работе над своими задачами.


3. Managing Humans: Biting and Humorous Tales of a Software Engineering Manager

Книгу написал Майкл Лопп (Michael Lopp) — разработчик с двадцатилетним опытом — он успел поработать в Apple, Netscape, Symantec, Borland и Pinterest.

Майкл разбирает проблемы, которые приходится решать PM’ам в команде девелоперов. Вот несколько топиков: как работать с лентяями, как справляться со «звездными» программистами и как с такой командой подвести проект к логическому завершению. Кейсы он иллюстрирует историями из Кремниевой долины и, если вам понравится стиль Майкла, в качестве дополнительного чтения мы рекомендуем обратить внимание на одну из его свежих книг — «Как управлять интеллектуалами. Я, нерды и гики».


4. «Измеряйте самое важное: как Google, Intel и другие компании добиваются роста с помощью OKR»


Это — книга посвящена методу OKR (Objectives and Key Results), который используется для управления проектами. Суть метода заключается в определении ключевых целей и 3–5 измеримых параметров для оценки результатов. Цель считается достигнутой, если за отведенный промежуток времени выполнено 70–75% от установленного плана. Выполненная на 100% задача говорит о недостаточно амбициозной её постановке.

Разработчик этого метода и бывший сотрудник Intel Джон Дорр (John Doerr) рассказывает, как правильно формулировать цели в контексте OKR и мотивировать команду на их выполнение. Своим опытом использования этого метода также делятся Билл Гейтс и, кто бы подумал, Боно.



/ Unsplash / Lysander Yuen


5. Project Management for the Unofficial Project Manager

В первую очередь книга ориентирована не на профессиональных PM’ов, а на людей без опыта, которым иногда приходится руководить небольшими проектами. Одним из её авторов выступила Кори Когон (Kory Kogon), которая отвечала за разработку серии международных стандартов ISO 9000, описывающих положения теории всеобщего менеджмента качества (TQM). Поэтому под обложкой вы найдёте большое количество примеров, иллюстрирующих все этапы процесса управления проектами: от планирования до контроля и завершения.

Читатели отмечают, что большинство кейсов взяты из нетехнических областей — например, запуск новой программы здравоохранения в больнице. Однако в книге используется официальная терминология из свода знаний по управлению проектами (PMBOK), который разрабатывает всемирная организация Project Management Institute (PMI). Поэтому навыки, полученные после прочтения материала, можно применить в любой сфере — даже в разработке программного обеспечения.


6. Valve Employee Book

Холакратия — это одна из тех концепций, которые вызывают большое количество споров. Например, её используют в Valve. Как они это делают, описано в 56-страничном руководстве для сотрудников Valve Employee Book. Книгу оценило множество людей, в том числе на Хабре. В ней можно почерпнуть полезную информацию про организацию рабочих процессов.

Но есть и те, кто считает, что в холакратии больше минусов, чем плюсов. Один из резидентов на Hacker News отметил, что отсутствие строгого контроля может приводить к снижению качества процессов вроде клиентского обслуживания. В качестве примера он привел плохую техническую поддержку Valve. Так или иначе, в Employee Book каждый найдет что-то для себя. Какие подходы внедрять, а какие — нет, решать уже вам.


7. «Проект «Феникс». Роман о том, как DevOps меняет бизнес к лучшему»

Эта книга немного отличается от остальных в подборке. Её можно отнести к жанру художественной литературы. Она рассказывает историю, знакомую всем PM’ам в сфере IT: «Историю о проекте, который выходит за рамки бюджета и не укладывается по срокам». У героя книги будет 90 дней, чтобы решить все проблемы. По мере чтения, вы, параллельно с главным героем, будет узнавать, как с помощью DevOps наладить связи с разными отделами компании и выстроить бизнес-процессы в команде разработчиков. Все практические рекомендации основаны на опыте авторов — руководителя научно-исследовательской лаборатории Gartner Джорджа Спаффорда (George Spafford) и основателя компании по разработке ПО Tripwire Джина Кима (Gene Kim).


Разумеется, осветить все доступные материалы на эту тему в рамках одной статьи невозможно. Поэтому если у вас есть любимые книги, которые, на ваш взгляд, необходимо прочитать PM’у, делитесь ими в комментариях.


Несколько материалов для дополнительного чтения из нашего корпоративного блога:


ссылка на оригинал статьи https://habr.com/ru/company/it-guild/blog/465713/

Почему не приходят PUSH-уведомления в VoIP-клиенте 3CX для Android

Возможно, вы уже попробовали наше новое приложение 3CX для Android Beta. Сейчас мы активно работаем над релизом, который будет включать, кроме прочего, поддержку видеосвязи! Если вы еще не видели новый клиент 3CX, вступайте в группу бета-тестировщиков!

Однако мы обратили внимание на довольно распространенную проблему — нестабильную работу PUSH-уведомлений о вызовах и сообщениях. Типичный негативный отзыв в Google Play: если приложение в данный момент неактивно — вызовы не принимаются.

Мы относимся к таким отзывам предельно внимательно. В целом, инфраструктура Google Firebase, которую использует Google для уведомлений, работает очень надежно. Поэтому стоит разделить проблему с PUSH на несколько уровней — точек, в которых она может возникать:

  1. Редкие проблемы сервиса Google Firebase. Проверить статус сервиса можно здесь.
  2. Явные ошибки в нашем приложении — оставляйте отзывы в Google Play.
  3. Проблемы с настройкой телефона — у вас могут быть сделаны определенные настройки или установлены приложения — оптимизаторы, мешающие работе PUSH.
  4. Особенности данной сборки Android на данной модели телефона. В отличие от Apple, разработчики устройств Android кастомизируют систему, добавляя в нее различные «улучшения», которые, по умолчанию или вообще всегда, блокируют работу PUSH.

В этой статье мы дадим рекомендации, касающихся повышения надежности PUSH как раз в двух последних пунктах.

Проблемы с подключением к серверам Firebase

Часто наблюдается ситуация, при которой АТС успешно подключена к инфраструктуре Firebase, но PUSH не приходит на устройство. В этом случае проверьте, коснулась ли проблема только приложения 3CX или других приложений тоже.

Если PUSH не приходит и в другие приложения, попробуйте включить и выключить «режим полета», перезапустить Wi-Fi и «мобильные данные» или даже перезагрузить телефон. При этом очищается сетевой стек Android, и проблема может быть решена. Если затронуто только приложение 3CX, попробуйте его удалить и переустановить.

Утилиты энергосбережения от производителя телефона

Несмотря на то, что Android имеет встроенные средства энергосбережения, производители смартфонов добавляют собственные «улучшения». Действительно, некоторые из них продлевают срок работы устройства, но при этом могут влиять на работу фоновых приложений. Мы рекомендуем найти и отключить все сторонние средства энергосбережения.

Однако тут следует быть осторожным. Часто вендоры создают собственные средства энергосбережения для того, чтобы предотвратить слишком сильный разогрев телефона. Иногда таким способом пытаются обойти несовершенства аппаратной части, но, если телефон загорится, это уже не будет иметь значения. Поэтому отключив «улучшенные» функции энергосбережения, протестируйте устройство под нагрузкой. И, разумеется, используйте качественные зарядные устройства и брендовые USB-кабели.

Ограничения на фоновую передачу данных

Фоновая передача данных используется многими сервисами и приложениями Android. Типичный пример — автоматическое обновление установленных приложений. Если у пользователя установлены ограничения на объем передаваемых данных, сервис Android Background Data Restriction просто блокирует фоновый обмен приложений, включая PUSH-уведомления.

Обязательно исключите клиент 3CX из подобных ограничений. Перейдите в раздел Настройки > Приложения и уведомления > О приложении > 3CX > Передача данных и включите Фоновый режим.

Функция экономии данных

Функция экономии данных не используется при подключении к Wi-Fi, но «режет» передачу при работе в мобильных сетях 3G/4G. Если вы планируете использовать клиент 3CX, экономию следует отключить в разделе Настройки > Сеть и интернет > Мобильные данные > верхнее правое меню > Экономия данных.

Если экономить данные все-таки необходимо, нажмите Неограниченный доступ к данным и включите его для 3CX (cм. предыдущий скриншот) 

Интеллектуальное энергосбережение Android Doze Mode

Начиная с версии Android 6.0 (API level 23) Marshmallow, Google реализовала интеллектуальное энергосбережение, которое активизируется, когда устройство не используется некоторое время —  остается неподвижным с погашенным дисплеем и без подключенного зарядного устройства. При этом работа приложений приостанавливается, передача данных минимизируется, процессор переходит в энергосберегающий режим. В Doze Mode не выполняются сетевые запросы, кроме PUSH-уведомлений с высоким приоритетом. Требования Doze Mode постоянно ужесточаются — в новых версиях Android могут блокироваться операции синхронизации, различные уведомления, сканирование сетей Wi-Fi, работа GPS…

Несмотря на то, что 3CX отсылает PUSH-уведомления с высоким приоритетом, Android конкретной сборки может их игнорировать. Выглядит это таким образом: вы берете телефон со стола, экран включается — и приходит (отложенное энергосбережением Doze Mode) уведомление о входящем вызове. Отвечаете — а там тишина, вызов уже давно пропущен. Проблема усугубляется тем, что некоторые устройства не успевают выходить из Doze Mode либо некорректно его отрабатывают.

Чтобы проверить, создает ли проблему Doze Mode, подключите телефон к зарядке, положите на стол и подождите несколько секунд, когда он начнет заряжаться. Позвоните на него — если PUSH и звонок проходят, значит дело в Doze Mode. Как было сказано, при подключении к зарядке Doze Mode не активируется. В то же время, если просто переместить автономный телефон или включить его экран — полный выход из Doze не гарантируется.

Итак, если проблема в Doze, попробуйте убрать приложение 3CX из режима оптимизации батареи в разделе Настройки > Приложения и уведомления > О приложении > 3CX > Аккумулятор > Исключения из режима энергосбережения.

Попробуйте наши рекомендации. Если и они не помогли, установите 3CX для Android на другом телефоне и проверьте стабильность работы. Это поможет точно определить — дело в конкретном устройстве или в сети, где вы его используете. Также рекомендуем установить все доступные обновления Android.

Если ничего не помогло, подробно опишите проблему, указав точную модель телефона и версию Android на нашем специализированном форуме.

И последняя рекомендация, которая может показаться очевидной. Чем выше класс телефона, чем известнее производитель, тем выше шансы на беспроблемную работу прямо «из коробки». По возможности, используйте устройства Google, Samsung, LG, OnePlus, Huawei и все устройства на Android One. В данной статье использованы скриншоты с телефона LG V30+ с Android 8.0.


ссылка на оригинал статьи https://habr.com/ru/company/3cx/blog/465719/

Полностью многоразовая аэрокосмическая система из существующих технологий

Слово “космонавтика” со времен Королева и Гагарина подразумевает огромные космодромы и одноразовые ракеты. Ну ладно, не всегда одноразовые — но даже многоразовые ракетные ступени Илона Маска каждый раз надо привезти, собрать в специальном цеху, установить на специальный стартовый стол, заправить, проверить — и только после этого запустить. Не удивительно, что космонавтика — очень дорогое удовольствие и массовое промышленное освоение ресурсов космоса даже сейчас кажется туманной перспективой далеко не ближайшего будущего.

Что же может заменить ракеты? Многоразовая аэрокосмическая система. Эта идея не нова: после появления самолета Ан-225 Мрия на его основе проектировалось множество аэрокосмических систем, о чем можно узнать из мемуаров Анатолия Вовнянко, участвовавшего в его создании. Самая интересная из них — МАКС-М:
image

Самым важным преимуществом данного варианта является полная многоразовость. В качестве первой ступени выступает самолет. Это исключает необходимость в специальном космодроме — им может стать любой аэродром, способный принять Ан-225. Сам самолет может в течение всего срока эксплуатации осуществить десятки тысяч запусков космопланов.

Космоплан, рассчитанный на использование с Ан-225, может весить до 275 тонн. По предварительным рассчетам, полностью многоразовый вариант может вывести на низкую околоземную орбиту от 5,5 тонн на широте 51° до 7 тонн на Экваторе. В случае неполной загрузки можно запускать космоплан недалеко от стартового аэродрома (например, на территории Украины или над Черным морем), а если нужно завезти на орбиту именно 7 тонн — самолет может прилететь на Экватор и произвести запуск уже там.

Разделение самолета и космоплана происходит на высоте 10 км и скорости 236 м/с (850 км/ч). Чтобы плавно отделить тяжелый космоплан, находящийся на спине самолета, нужно создать небольшую отрицательную перегрузку. Самолет для этого делает примерно такую “горку”:

и на ней космоплан отделяется. После чего самолет возвращается на аэродром, а космоплан, имея начальную скорость, начинает горизонтальный разгон. Именно горизонтальный: космоплан обладает аэродинамическим качеством и чем больше горизонтальная скорость в атмосфере — тем больше подъемная сила. К тому же, для выхода на орбиту надо развить именно горизонтальную скорость 8 км/с. Кинетическая энергия для скорости:

$$display$$E=mv^2/2$$display$$

Но на высоте 10 км на орбиту не выйдешь: мешает атмосфера. Для стабильной низкой орбиты надо набрать 200 км. Потенциальная энергия для высоты:

$$display$$E=mgh$$display$$

Оценим соотношение энергии горизонтального разгона и вертикального подъема:

$$display$$(mv^2/2)/(mgh)$$display$$

$$display$$v^2/(2gh)$$display$$

Если подставить числа, получим, что энергия для набора высоты 200 км примерно в 16 раз меньше, чем для набора горизонтальной скорости 8 км/с. Так что важнее всего именно горизонтальный разгон, при котором большую часть работы по подъему сделает аэродинамика.

image

На космоплан можно ставить обычные, давно отработанные и выпускаемые ракетной промышленностью, кислород-керосиновые ракетные двигатели. При этом тяга двигателей нужна в разы меньшая, чем в случае обычной ракеты вертикального взлета: гравитацию прямо преодолевать не нужно, космоплан обладает аэродинамическим качеством и его поддерживает в воздухе подъемная сила. Опять же, чем больше горизонтальная скорость (которую и так надо набирать) — тем сильнее атмосфера будет выталкивать космоплан в космос.

Оказавшись в космосе, космоплан оставляет на орбите контейнер с грузом. Дальше в космосе грузы лучше всего тащить орбитальными буксирами на электрореактивных установках с ядерным реактором. При тяге порядка 1-2 Ньютона, годящейся только для ускорения в невесомости и космическом вакууме, они обеспечивают очень высокий удельный импульс. Если химический двигатель дает струю до 5 км/с, то электрореактивный ускоритель может разгонять ионы до 300 км/с — то есть, в 60 раз эффективнее. Впрочем, что делать в самом космосе — тема для отдельной статьи, и не одной.

image

После выполнения задачи, космоплан сходит с орбиты и возвращается в атмосферу. Он уже пустой и сравнительно легкий, но по-прежнему обладает аэродинамическим качеством. Это означает, что сход с орбиты будет куда более плавным, чем баллистический спуск обычных спускаемых аппаратов. Космоплан при этом должен иметь специальную форму для более плавного спуска, чем у шаттлов и Бурана. Это уменьшит (если не устранит) нужду в теплозащите — и связанных с ней расходниках и обслуживании.

Сесть космоплан может на аэродроме, с которого будет его следующий полет в космос. Там же пройти техобслуживание и погрузку груза. После чего пустой космоплан (то есть, массой в пределах 100 тонн) погружают автокраном на спину Ан-225, заправляют вместе с самолетом — и в новый рейс. Теоретически, один Ан-225 может запускать по космоплану каждые 4-6 часов, а то и чаще. То есть, по 20-30 тонн на орбиту в сутки, и так каждый день. Когда космопланы начнут стабильно летать на орбиту каждые несколько часов, можно будет уже уверенно говорить о промышленном освоении космоса.

Такая частота запусков и такой интенсивный режим эксплуатации возможны только если полностью исключить одноразовые компоненты типа разгонных блоков или внешнего топливного бака. Также нужно минимизировать расходники, в идеале чтобы каждый раз расходовался только керосин и жидкий кислород. Описанная аэрокосмическая система использует те же аэродромы и даже тот же керосин, что и обычная авиация. Любой аэродром, способный принимать Ан-225, легко может стать космодромом. Есть и отличия от обычной авиации, но они хорошо укладываются в рамки аэродромной инфраструктуры: загрузка космоплана на Ан-225 автокраном, заправка жидким кислородом и техобслуживание космоплана в аэродромных ангарах, которое, опять же, не должно быть намного сложнее самолетного.

image

Самолет Ан-225 уже 30 лет существует в летающем экземпляре. Кроме того, есть еще один недостроенный экземпляр, который можно достроить специально для нужд аэрокосмической программы. Готового космоплана пока нет — и это даже хорошо, так как позволит спроектировать с нуля новую конструкцию, максимально оптимизированную под воздушный старт с самолета-носителя и интенсивную эксплуатацию с минимумом расходников и обслуживания. Большинство необходимых для такой аэрокосмической программы компонентов можно производить в пределах Украины.

Кроме полетов в космос, открывается еще одна не менее заманчивая перспектива: суборбитальные авиалинии. После отработки технологии на орбитальных пусках, можно будет применить ее уже для сверхскоростных пассажирских и почтовых перевозок. Полет космоплана по суборбитальной траектории в любую точку мира займет по времени не больше часа. Хотите за час летать с Европы в Южную Америку или Австралию, испытывая невесомость?

image

На участке 1 космоплан разгоняется на своих двигателях до скорости, достаточной для выхода на суборбитальную траекторию. На участке 2 он летит через космос в невесомости, которую чувствуют пассажиры. На участке 3 происходит аэродинамическое торможение, после чего происходит посадка в целевом аэропорту.

Космоплан, совместимый с Ан-225, может вместить до 60 пассажиров при суборбитальном полете. Если удастся при этом добиться “самолетной” простоты эксплуатации аэрокосмической системы, билеты будут стоить ненамного дороже обычных самолетов: за 15 часов, вместо обычного дальнего полета с пассажирами, Ан-225 может успеть запустить несколько суборбитальных космопланов, суммарно везущих соизмеримое количество пассажиров. Вопрос лишь в скорости предстартовых операций, которую можно постепенно увеличивать (разумеется, не в ущерб безопасности). В точке назначения должен быть другой Ан-225, запускающий космопланы в обратный рейс.

Такая система будет легко разворачиваться и сворачиваться в любом аэропорту мира: достаточно на самом же Ан-225 завезти туда автокран для погрузки космоплана и портативное оборудование для сжижения кислорода, которым заправляют космоплан. Дорогая, сложная и долгая в постройке стационарная инфраструктура (как на космодромах для обычных ракет) не нужна.

Полностью многоразовая аэрокосмическая система может не только открыть эпоху промышленного освоения космоса, но и сделать возможными полеты в самую дальнюю точку Земли за час.


ссылка на оригинал статьи https://habr.com/ru/post/465721/

JustCode — скоростной браузер для бюджетных компьютеров и планшетов на Windows

Предыстория

У меня есть убогий дешевый планшет на Windows 10 с одним гигабайтом оперативной памяти и 16 гигабайтами места, в пределах которого установлен Windows 10. Чтобы Windows 10 мог хоть как-то скачивать и устанавливать обновления — я скрутил размер файла подкачки в ноль и файл pagefile.sys перестал занимать драгоценные гигабайты.

После этого я с удивлением обнаружил, что для просмотра более-менее крупных сайтов на этом планшете невозможно использовать ни Chrome, ни Internet Explorer, ни даже старую Opera 12. Все они пытаются пару раз показать сайт, перезагружают его снова (он, по видимости, не влезает в настоящую оперативную память без файла подкачки) и выдают после второй попытки загрузки сообщение о неудаче.

Почему при размере исходного HTML-кода сайта в несколько сотен килобайт — компьютер с гигабайтом оперативной памяти не может его отрисовать?

По всей видимости, потому что сайт состоит из разношерстных элементов, включающих в себя скрипты JavaScript (или даже VB) (которые нужно выполнять после загрузки и по событиям типа «движение мыши над элементом» и др), CSS-стили, фреймы с другими страницами, медиа (картинки, музыку, видео и др.). При загрузке сайта браузер грузит основной код сайта, а затем начинает подгружать связанные файлы, выполнять и готовить к выполнению скрипты, загружать и отображать картинки, подгружать стили, просчитывать для каждого элемента страницы получившийся финальный стиль после наложения нескольких стилей, располагать все элементы на странице и только потом дает пользователю посмотреть сайт.

Я хотел бы быстро и сразу посмотреть сайт (загрузить только его HTML-код), причем только интересующие меня элементы:

  • на одной странице я хочу посмотреть только текст
  • на другой текст со ссылками
  • на третьей только картинки, но не все, а выборочно по одной загружая их вручную
  • на четвертой я хочу почитать вдобавок комментарии
  • на пятой почитать код Java-скриптов, выключив отображение всего остального.

И я в ряде случаях не хотел бы при просмотре сайтов:

  • видеть окна/панели с рекламой в виде от фото и простых анимаций до полноценного озвученного видео,
  • видеть окна «подпишись на рассылку от нашего сайта»,
  • видеть окна «включи уведомления от нашего сайта» или, по старинке, «сделай нашу страницу стартовой»,
  • видеть окна «разреши геолокацию чтобы знать где ты, наш клиент, находишься»,
  • видеть окна «извините, мы на этом сайте используем cookies»,
  • передавать cookies.

Как это сделать? Ясное дело, что нужно написать еще один браузер и использовать его!

Сначала мне казалось что все будет просто. Берем и пишем парсер HTML-кода. Грузим теги, разбиваем на части, выводим текст вне тегов как текст, а если встретили, например, a href=«habr.com», то выводим это как ссылку. «Делов-то!» — подумал я и сел за Delphi.

Реализация выбора элементов для просмотра

Список элементов, которые можно включить для просмотра или выключить, разросся за время разработки браузера.

Тут появились и сам текст сайта, и границы table-таблиц/div-слоев, и выделение в отдельные строки текста с «акцентами» (жирного, курсива и с другими выделяющими тегами), ссылки и якоря-закладки, медиа (картинки, музыка, видео), связанные файлы «link …», пометки-комментарии «!—… —«, а также script-сценарии, style-стили, form-формы, meta-метаданные с возможностью показа их кода. Для каждого из типов элементов можно выбрать цвет и жирность текста. Также можно выбрать готовую тему оформления, включающую в себя определенную раскраску элементов, а также стиль текста.

Реализация общих настроек

Верхняя часть окна браузера со временем покрылась настройками и стала напоминать панели с кнопками MS Office. Там были и флажки, и выпадающие списки, и кнопки вызова функций типа «Закладки» или «История».

Там можно было, например, выбрать имя и размер желаемого для просмотра шрифта как в текстовом редакторе. Также стало можно загрузить сторонний растровый PCF-шрифт (PaintCAD Font) и отрисовывать картинку этим шрифтом. На скриншоте загружен шрифт sc60micro.pcf, срисованный вручную с браузера старого телефона, кто-то, наверное, еще помнит тот wap-браузер из сименсов 15-летней давности:

Реализация настроек приватности

Прямо под общими настройками расположились настройки приватности:

Флажком Referer можно отключить передачу адреса, откуда вы пришли на веб-страницу. Флажком Cookie — отключить куки.

А с помощью поля User-Agent можно выбрать кем притвориться — одним из компьютерных или мобильных браузеров, а можно даже google/bing/yandex/mailru-ботом. При выборе одного из вариантов — в поле справа отобразится текст для отправляемого на сервер user-agent http-заголовка. В этом поле можно и вручную свой user-agent ввести вместо выбора одного из предлагаемых браузером вариантов.

Работа с загружаемыми файлами: панель объекта и панель файла

Если браузер встречает, например, ссылку на картинку — он пишет ссылку вида «Изображение: адрес». По клику на нее — ссылка переносится в панель объекта.

В зависимости если включена полная экономия трафика или экономия трафика на загрузках — то в поле информации об объекте выводится информация о файле.

Пользователь сам решает скачать файл или нет (например, если он сидит через мобильный интернет и ему жалко трафика, а файл оказался большим — то можно не скачивать его). Скачать файл можно кнопкой скачивания справа от поля объекта.

Если же экономия выключена, то файл автоматически будет скачан в папку download рядом с EXE-шником браузера и:

  • открыт в программе по умолчанию если это безопасный файл (картинка, музыка, видео),
  • перенесен в поле файла и выделен в открывшемся окне Проводника если файл потенциально опасен или неизвестен браузеру.

Панель файла:

Она включает в себя поле с именем сохраненного файла и кнопки:

  • открытия в программе по умолчанию,
  • открытия папки с файлом с фокусом на файле,
  • открытия файла в самом браузере JustCode,
  • открытия файла в блокноте notepad.exe.

Главное меню для сенсорного экрана

Клик по значку браузера в левом верхнем углу открывает меню со значками 32х32 пикселя, дублирующее многие функции главного окна. Это меню имеет достаточно крупные по высоте пункты, что позволяет гораздо легче нажимать их пальцем, чем при прицеливании в мелкие флажки типа кодировки UTF-8 или пункта выбора режима экономии трафика.

Работа с исходным кодом сайта и автоматизация

Если нажать Ctrl+E или выбрать аналогичную команду в главном меню, то полный исходный код сайта будет помещен в область информации об объекте.

Там в строке «Поиск» можно ввести текст и поискать его кнопками с лупой (первое вхождение, следующее вхождение, последнее вхождение) в исходном коде.

Другие красочные кнопки под полем поиска позволяют (у многих кнопок JustCode есть всплывающие подсказки с описанием их функций):

  • удалить все выше или ниже выделенного/найденного текста,
  • превратить %xx коды в символы,
  • превратить JavaScript коды типа \n в символы,
  • вставить переносы перед/после каждого найденного текста, аналогичного введенному в «Поиск»-строку,
  • удалить все строки, не содержащие текста, введенного в «Поиск»-строку
  • проверить все оставшиеся в области строки как http-ссылки на файлы,
  • загрузить измененный исходный код сайта в JustCode для просмотра,
  • и даже открыть редактор программ (скриптов) (Ctrl+F5), который позволяет в автоматическом режиме «нажимать» описанные кнопки командным путем.

Редактор собственных JustCode-программ

В этом окошке редактора, например, открыт шаблон, который дербанит код страницы с YouTube-видео до отдельных ссылок на видео и аудио.

Понятное дело, что есть онлайн сервисы, которые делают это же. Но редактор позволяет выполнить такой скрипт без задействования сторонних сервисов и «посмотреть youtube», не запуская java-скрипты страницы с видео.

Написанные скрипты можно сохранить в файлы и эти файлы «забиндить» (назначить) на кнопки быстрого запуска чтобы потом запускать из главного окна браузера по Alt+1, Alt+2… Alt+0 без открытия окошка редактора программ.

Работа с формами

При встрече формы в тегах браузер отображает форму как ссылку «Форма»:

При нажатии открывается специальное окно, которое отображает содержимое формы (показана форма залогинивания в почту mail.ru):

Если включить сверху флажок «Расширенный режим», то можно увидеть сам код формы, а кнопка «Отправить» станет не отправлять страницу, а подготавливать URL и (в случае необходимости) POST-данные для отправки и отображать их в соответствующих полях. И можно вручную поправить их, если нужно, и после нажатия на «Отправить и перейти» отправить указанные данные на сервер.

Если же нажать кнопку «Создать программу отправки данных», то будет создан скрипт, устанавливающий текущий URL и вызывающий отправку данных — т.е. эмулирующий ввод данных на веб-странице в форму и их отправку.

При этом POST-данные также указываются внутри URL, но отделяются двойным вопросительным знаком. Т.е. одинарный «?» — это GET, а двойной «??» — это POST.

Аналогичную «ссылку» на отправку введенных данных формы методом GET (с одинарным «?») или методом POST (с двойным «??») можно получить, если нажать в редакторе форм кнопку «Скопировать URL и POST-данные в буфер как ссылку».

Просмотр файлов в браузере

После скачивания непонятного файла может возникнуть необходимость посмотреть «что там внутри». Поэтому в браузер встроены три режима просмотра:

  • как HTML-кода с парсингом и рендером (F12),
  • как текста в Windows/DOS кодировке (Shift+F12),
  • как 16-ричного представления с кодами и текстом (Ctrl+F12).

Выбираются они в меню или вышеупомянутыми сочетаниями клавиш с Shift/Ctrl+F12.

Если выбрать тему MonoDOS/MonoDOS2 или загрузить DOS PCF-шрифт (и включить флажок «DOS-кодировка» в меню PCF-шрифтов), или при любом шрифте выбрать кодировку OEM_CHARSET, то можно просматривать старые текстовые файлы с псевдографикой прямо в браузере.

По Ctrl+F12 можно посмотреть hex-представление файла и, например, по заголовку понять что мы скачали или изучить как устроен внутри, например, exe-файл блокнота.

Заключение

Оказалось, что сделать браузер это не просто написать парсер. Этому браузеру еще не хватает многого.

Например, распаковки полученных данных от сервера. Поэтому, например, сайт games.mail.ru выглядит как набор рандомных байтов, т.к. сайт не слушается и присылает запакованные данные даже при просьбе в http-заголовках присылать только незапакованные.

Также браузер не умеет отправлять файлы в формах, умеет только данные форм как «application/x-www-form-urlencoded».

Также с ним не зайдешь на заскриптованные сайты типа instagram. Там будут только скрипты, которые должны подгружать контент.

Но с ним можно читать сайты новостей и сидеть на форумах даже на слабом планшете и на любом Windows (95, 98, 2k, XP, Vista, 7, 8, 10, правда HTTPS-сайты на старых Windows могут не фурычить если алгоритмы типа SHA2 не поддерживаются операционной системой, т.к. не были известны на момент ее разработки), выборочно грузить картинки и тут же смотреть их в любимой программе просмотра картинок, просматривать скрипты сайтов и иногда читать забавные комментарии их разработчиков, следить за изменением структуры сайтов (вы сразу заметите что добавился какой-то блок рекламы или лишний баннер, если каждый день читаете один и тот же новостной портал).


(переносы по словам пока не завезли).

Скачать поделие для тестов

Весит порядка 500 килобайт.
Скачать можно по ссылке blackstrip.ru/jc.zip


ссылка на оригинал статьи https://habr.com/ru/post/465709/

Тренинг Cisco 200-125 CCNA v3.0. День 28. Углубленное изучение AСL

Сегодня мы продолжим тему видеоурока 27-го дня и займемся углубленным изучением ACL: мы немного поговорим об обратной маске Wildcard Mask, расширенном списке ACL, настройке расширенного списка ACL и командах, помогающих диагностировать неполадки в дизайне сети.
На предыдущем уроке мы познакомились с новой для нас концепции обратной маски, и сейчас я расскажу о Wildcard Mask более подробно. Если вы помните, маска подсети помогает нам визуально разделить сеть на адресную часть сети и адресную часть хоста.

Если перейти на битовый уровень, можно увидеть, что маска подсети состоит из серии единиц, обозначающих сетевую часть, и серии нулей, которые обозначают часть хоста. Обратная маска очень похожа на маску подсети, только в «перевернутом» виде – там, где в маске подсети имеются единицы, в обратной маске находятся нули, и наоборот. Это не является обязательным правилом – в отдельных случаях обратная маска формируется по другому принципу, на при изучении CCNA это правило действует всегда.

Наилучшим способом вычисления обратной маски является отнимание октетов маски подсети от глобальной маски, которая всегда выглядит как 255.255.255.255.
Итак, чтобы вычислить обратную маску для маски подсети 255.255.255.0, мы просто отнимаем её от глобальной маски и получим 0.0.0.255.

В этом примере мы рассматривали сеть 192.168.100.255/24, а сейчас давайте рассмотрим сеть /26. Если у вас имеется /26, то последний октет маски подсети будет равен 192.

Если вы посмотрите на битовую форму представления этих IP-адресов, то увидите, что маска подсети содержит 26 единичных и 6 нулевых битов.

В таком случае обратная маска должна состоять из 26 нулей и 6 единиц. Как мы уже говорили, те места, где расположены 0, показывают совпадающие параметры адресов, а места, где расположены единицы, вы можете игнорировать.

Чтобы было понятнее, я напишу сверху IP-адрес в десятичной форме. Последний октет обратной маски соответствует числу 63, и я могу отобразить её в виде 0.0.0.63. проще говоря, /26 означает, что 26 нулей, или 3 первых октета IP-адреса совпадают, а последние 6 битов могут быть какими угодно – нулями или единицами.

Смотрите – если мы заменим эти последние 6 битов IP-адреса нулями, то получим число 192, а если единицами – число 255. Таким образом, обратная маска показывает, что подсеть с IP-адресами, последний октет которых расположен в диапазоне от 192 до 255, то есть часть сети 192.168.100.225/26, попадает под действие указанного условия ACL.

Вы можете спросить, зачем нужны две маски: маска подсети и Wildcard-маска. Я сам задавал этот вопрос, когда был студентом, и до сих пор многие люди, даже работая в Cisco, задаются этим вопросом. Попробую на него ответить. В общем случае маска подсети и обратная маска показывают одно и то же, если это касается подсети, то есть части IP-адреса, обозначающей сеть. Когда мы идентифицируем целую сеть, то обратная маска представляет собой просто «перевернутый» вариант прямой маски.

Однако с идентификацией хоста дело обстоит по-другому. Если вы хотите идентифицировать целую подсеть со всеми входящими в неё адресами, можно использовать маску подсети. Но если вам нужно идентифицировать всего лишь несколько хостов из этой сети, чтобы избирательно применить к ним правила ACL, нужна обратная маска.

Вы никогда не встретите маску подсети, которая бы состояла из чередующихся единиц и нулей – в ней всегда сначала идут единицы, а в конце – нули. Wildcard поэтому и называется «дикой», потому что может состоять из любой последовательности единиц и нулей. Чтобы вам стало понятнее, давайте решим задачу: «идентифицируйте хосты данной сети, имеющие четные числа в четвертом октете».

Это нужно для создания правила ACL такого типа: permit 192.168.100.0 <обратная маска>, то есть трафик будет разрешен для IP-адресов данной подсети только с четными четвертыми октетами. Можно ли проделать это с помощью маски подсети? Не думаю, потому что четвертый октет обычной маски подсети может содержать только одно конкретное число. Давайте посмотрим на 4 октет обратной маски.

В последнем октете обратной маски можно разместить такие биты: 11111110. Я объясню, что это такое. Если в 4-м октете содержатся четные числа, то последний бит октета обязательно равен 0, а если последний бит равен 1, значит, число нечетное. Если мы говорим о подсети /24, то у неё только последний октет может содержать четное число.

В случае обратной маски в первых трех октетах расположены 0, а семь первых битов четвертого октета нас не волнуют, главное, чтобы восьмой бит октета равнялся нулю, потому что он должен совпасть с последним октетом IP-адреса сети, который равен 0.

Если последний бит IP-адреса будет равен 1, данный адрес будет запрещен, сейчас я добавлю условие в наш список ACL – Deny any. Таким образом, только если последний октет любого IP-адреса нашей подсети будет оканчиваться 0, то есть будет четным, у нас выполнится условие совпадения с обратной маской, которая тоже заканчивается 0, и условие ACL «разрешить все адреса с четным 4-м октетом» будет удовлетворено. В противном случае, то есть для всех нечетных IP-адресов, будет действовать условие «запретить любой» — deny any.

Таким образом, нас не волнует, какое точное значение будет иметь четный октет – 2,4,6, 8 и так далее, главное, что он будет иметь в конце нулевой бит. Если бы мы использовали обычную маску подсети, нам потребовалось бы создать отдельную запись для каждого IP-адреса, имеющего четный 4-й октет. Использование обратной маски позволяет заменить все эти записи одной.
Точно такой же принцип действует и для нечетных чисел 4-го октета, просто последний бит обратной маски в этом случае должен быть равен 1. В этом случае будет установлено общее правило, permit или deny, для всех IP-адресов подсети, имеющих нечетный 4-й октет. Посмотрите, как выглядит этот пример в десятичной форме.

Если я использую обратную маску 0.0.0.254, наша задача будет решена: все хосты с четным четвертым октетом разрешены, а все остальные хосты — запрещены. Преимущество обратной маски состоит в том, что при создании ACL её можно настроить под свои нужды. Вам не стоит особо беспокоиться о специфических обратных масках, потому что тематика CCNA этого не требует. Достаточно просто запомнить правило: обратная маска получается при отнимании маски подсети от глобальной маски 255.255.255.255. Учтите, что курс CCNA в больше степени затрагивает тематику подсетей, а не хостов.

Давайте вернемся к предыдущему слайду, и я расскажу ещё об одном способе вычисления Wildcard-маски.

Если вы помните из нашей «волшебной» таблицы, /26 означает размер блока битов, равный 64. Если этот блок равен 64, последний октет обратной маски будет иметь значение (64-1)=63. Если у нас имеется /25, размер блока будет 128, значит, последний октет обратной маски будет (128-1)=127. Это еще одна подсказка для облегчения вычисления значения обратной маски. Но если вы не хотите им пользоваться, применяйте обычный способ, отнимая маску подсети от глобальной маски.

А теперь перейдем к рассмотрению синтаксиса команд расширенного ACL. Как и в случае стандартного ACL, существует два вида записи команд: классический и современный.

Классическая команда представляет собой запись access-list < номер ACL> <запретить /разрешить > < протокол >. Таким образом, первая команда расширенного ACL отличается от команды стандартного ACL указанием протокола, а не критерия. Это означает, что здесь фильтрация трафика производится не по IP-адресу источника или назначения, а по используемому протоколу.
Во всех случаях мы используем протокол IP, который бывает трех видов: ICMP, или известный нам пинг, TCP, который зависит от конкретного порта 21,23 и так далее, и UDP. Напомню, что в Википедии имеется статья с перечнем всех протоколов и соответствующим им номерам портов.
Далее следует строка команды < IP источника > < обратная маска > [информация протокола]. Информация протокола означает указание номера порта. То есть в предыдущей команде в качестве < протокол > вы указываете ICMP, TCP или UDP, а во второй команде в качестве параметра [информация протокола] указываете номер порта 21,23 и т.д.

Третья строка команды – это < IP назначения > < обратная маска > [информация протокола], то есть параметры, касающиеся назначения.

Если вы помните по предыдущим урокам, номер порта источника представляет собой случайное число, потому что устройство, посылающее трафик, создает для этого порт под случайным номером. В связи с этим в первой строке, касающейся источника трафика, вы указываете [информацию протокола] назначения, например, FTP, то есть протокола того устройства, чей трафик хотите заблокировать.

Напомню, что для внесения изменений в список расширенного ACL классического типа вам придется заново сформировать весь список вручную, как и в случае стандартного ACL классического типа.

Команда современного вида начинается с выражения ip, который не имеет никакого отношения к протоколу IP, это просто ключевое слово. Итак, в первой строке имеется ключевое слово ip, параметр «расширенный access-list» и номер или имя списка ACL. После выполнения первой команды вы переходите в решим подкоманд config-ext-nacl и вводите <запретить /разрешить > < протокол >, как мы уже обсудили выше.

Далее следуют две команды < IP источника > < обратная маска > [информация протокола] и < IP назначения > < обратная маска > [информация протокола], причем в первой обычно игнорируется параметр [информация протокола источника], а вместо него используется параметр [информация протокола назначения]. Иногда может потребоваться указать порт источника, однако в CCNA в большинстве случаев на этот параметр можно не обращать внимания.

Применение расширенного ACL аналогично применению стандартного ACL. Здесь также нужно указать интерфейс устройства, к которому применяется список, затем использовать параметр ip access-group, номер или имя списка ACL и направление потока трафика – входящий или исходящий. В предыдущем видео мы уже обсуждали, каким образом определяется направление трафика для конкретного порта.

Давайте прейдем к схеме и настроим расширенный список ACL, используя топологию сети из предыдущего урока. Задача №1 звучит так: «Компьютеры сети отдела менеджмента и сети финансового отдела могут иметь доступ по протоколам HTTP(80) и FTP(21) только к серверу Server0, находящемуся в сети серверной».

При этом разрешается не весь трафик, а только тот, что исходит из портов 80 и 21, то есть, например, трафик по протоколу SSH должен блокироваться. Если помните, расширенный ACL должен применяться поближе к источнику, поэтому для отдела менеджмента его следует применить к порту G0/0 роутера R1, а для бухгалтерии – к порту G0/0 роутера R2. По отношению к роутеру мы блокируем входящий трафик, поэтому в командах списка используем параметр IN. Присвоим списку ACL номер 101 и составим перечень строк, который он должен содержать, используя классический подход.

Первая строка разрешает TCP, потому что HTTP порт 80 означает TCP, далее указываем сеть отдела менеджмента, 192.168.1.224/28. В данном примере я опускаю обратную маску, мы используем её в Packet Tracer, пока что нам важен сам принцип формирования списка. Сеть менеджмента является источником трафика, после неё указывается IP-адрес назначения 192.168.1.194/32, где 194 – это последний октет адреса Server0, а /32 означает, что условие касается только данного конкретного устройства, расположенного в подсети 192.168.1.192/27. В конце строки мы указываем разрешенный порт назначения 80, предназначенный для HTTP-трафика.

Таким же образом формируется запись для порта 21, используемого для передачи FTP-трафика. Я не пишу третью строку, которая по умолчанию выглядит как Deny any и запрещает любой исходящий трафик с устройств, не принадлежащих данной подсети. Далее необходимо указать, что список применяется к порту G0/0 роутера R1 в направлении IN, то есть для входящего трафика.

Аналогично мы поступаем при составлении записей ACL Allow_Acc для финансового отдела, разрешая TCP-трафик с портов 80 и 21 и применяя данный список для входного интерфейса G0/0 роутера R2.

Задача №2 звучит так: «Компьютеры сети отдела продаж могут пользоваться всеми протоколами, кроме PING (ICMP), только на сервере Server1, расположенном в сети серверной». Это значит, что для связи с сервером компьютеры отдела продаж могут использовать протоколы HTTP, SSH, FTP – любые протоколы, кроме ICMP. В этом случае список условий ACL будет выглядеть таким образом.

В первой строке мы запрещаем весь трафик по протоколу ICMP, размещая конкретное условие в начале списка, а общее – в конце списка. В данной записи указывается идентификатор подсети отдела продаж 192.168.1.0/25, IP-адрес конкретного сервера Server 1 — 192.168.1.195/32. Параметр echo означает трафик в виде пинга, то есть пакет, который отправляется к серверу, чтобы вернуться назад к компьютеру, должен быть запрещен.

Вторая строка разрешает весь остальной трафик, исходящий из подсети 192.168.1.0/25 на адрес сервера 192.168.1.195/32. Как обычно, в конце списка по умолчанию располагается строка Deny any, означающая, что если компьютеры отдела продаж попытаются связаться с финансовым отделом, такой трафик будет отброшен. Далее мы указываем, к какому интерфейсу роутера следует применить ACL, и вторая задача решена.

Задача №3 звучит так: «Ноутбук Laptop2 отдела продаж и компьютер PC0 финансового отдела могут иметь доступ к ноутбуку Laptop0 отдела менеджмента». Предположим, что за этими устройствами работают руководители отделов продаж и бухгалтерии, которые могут общаться с финансовым директором CFO, находящимся в отделе менеджмента. При этом нет никаких ограничений относительно используемых протоколов, включая ICMP.

У нас уже имеется три списка ACL, примененные к интерфейсам, которые я обвел на схеме красными окружностями. В данный момент Laptop2 не может связаться с Laptop0, потому это противоречит условиям Задачи №3.

Чтобы организовать связь этих двух устройств, необходимо добавить дополнительные условия в список ACL Allow_Sa.

Аналогично нужно добавить условия в список ACL Allow_Acc, чтобы PC0 мог свободно связаться с Laptop0.

В обоих списках мы добавляем строки с параметром Permit IP, что означает разрешение трафика по любому IP-протоколу.

Как вы знаете, ICMP использует трафик двух направлений: вы отсылаете пинг, а echo возвращает его обратно. В нашей ситуации, если Laptop2 адресует пинг Laptop0, трафик свободно поступит в сеть отдела менеджмента. Однако при возвращении пакета обратно ноутбуку отдела продаж, он попадет в интерфейс G0/0 роутера R1, где действует список ACL 101. Так как обратный трафик не соответствует ни одному из условий данного списка, он будет заблокирован. Поэтому нам нужно дополнить список ACL101 разрешающими условиями как для пинга с Laptop2 отдела продаж, так и для пинга с компьютера PC0 финансового отдела.

Мы решили Задачу №3 и теперь перейдем к решению Задачи №4: «Ноутбук Laptop3 отдела продаж может иметь доступ только к собственной сети SALES и только к службе Web Service через порт 80 на компьютере Server 1».

Первая часть задачи означает, что как только Laptop3 попытается выйти из сети SALES, его трафик будет заблокирован роутером R2. Однако согласно второй части задачи, этот компьютер должен иметь доступ к Web Service, находящейся за пределами сети SALES. Это означает, что блокируется весь трафик кроме трафика, направленного в серверную.

Из предыдущих задач мы знаем, что трафик, исходящий из отдела продаж, регулируется списком ACL Allow_Sa, который мы применили ко входному интерфейсу G0/1 роутера R2. Поэтому нам нужно изменить данный список, в первую очередь добавив в него строку «разрешить TCP к серверу 1 через порт 80» такого вида: Permit TCP 192.168.1.3/32 192.168.1.195/32 80

Первая строка означает, что любой HTTP-трафик достигнет сервера, а вторая Deny IP 192.168.1.3/32 any означает, что весть остальной трафик, например, FTP, поступающий с Laptop3, будет отброшен. Далее мы оставляем без изменений три следующие строки предыдущего списка ACL, решив таким образом Задачу №4.

Я уже говорил, что советую вам записывать решения этих задач на бумаге или набирать вручную на компьютере, потому что они изменяются, а на бумаге или в компьютере всегда можно добавить, зачеркнуть или удалить строки. Обращаю ваше внимание, что если просто дописать решение четвертой задачи в конце списка ACL, добавив две строки, система их проигнорирует, потому что условия, расположенные выше, поглощают эти правила. Поскольку вторая строка старого списка разрешает весь трафик, условие Deny IP 192.168.1.3/32, расположенное в конце списка, просто не будет выполняться.

Таким образом, правильная последовательность записей ACL имеет огромное значение. Сначала вам следует разработать логическую цепочку операций и расположить строки так, чтобы они не противоречили друг другу. Теперь давайте перейдем к Packet Tracer и выполним все настройки согласно решениям задач.

Начнем настройку с первого роутера Router1. Я использую команду show access-list, чтобы показать, что список ACL на данный момент отсутствует. Далее с помощью команды show ip route я показываю, что RIP между двумя роутерами уже настроен и работает.

Перейдём к ноутбуку Laptop0 и пропингуем Server1 по адресу 192.168.1.195. Как видите, пингование проходит удачно, так как у нас нет никаких ACL, запрещающих или фильтрующих трафик. Так же свободно мне удается пропинговать Server0.

Теперь перейдем к роутеру Router1, войдем в режим глобальных настроек и создадим список ACL 101. Для этого я набираю команду access-list 101 permit tcp. Обратите внимание – система выдает подсказку, какое значение параметра, кроме tcp, можно использовать в данной команде.

Это может быть esp, icmp, osfp и так далее. При изучении курса CCNA в основном будут использоваться протоколы ip, ismp, tcp и udp.

Нам нужно разрешить трафик целой сети, поэтому я ввожу команду access-list 101 permit tcp 192.168.1.224. Параметр /28 означает блок размером 16 битов, поэтому обратная маска будет 0.0.0.15.

Слеш 28 означает 4 заимствованных бита, если заимствован 1 бит, размер блока равен 128, если 2 бита – 64, три бита – 32, 4 бита означает размер блока 16, значит, последний октет обратной маски будет (16-1) =15. Вы также получите это число, если отнимите от глобальной маски значение маски данной подсети. Поскольку рассматривается трафик к конкретному серверу, в конце команды необходимо набрать слово host и его IP-адрес, в результате команда будет иметь вид: access-list 101 permit tcp 192.168.1.224 0.0.0.15 host 192.168.1.194.

После её ввода система выдаст подсказки, каким должен быть следующий параметр, который характеризует порт, обрабатывающий данный трафик.

Можно применить параметр dscp, при этом будут пропускаться пакеты с соответствующим значением, параметр eq, при котором разрешены только пакеты с данным конкретным номером порта, gt – пропуск пакетов с номером порта большим, чем указано, lt – пакеты с меньшим номером порта и т.д. В нашем курсе мы будем использовать номер конкретного порта, поэтому в конце команды нужно ввести eq. После этого система выдаст подсказки относительно возможных значений следующего параметра.

Это может быть как номер порта от 0 до 65535, так и название протокола, которому соответствует определенный порт. Для FTP это порт 21, для SMTP – порт 25, можно просто ввести www – это будет означать HTTP-трафик через порт 80. В нашем случае мы вводим просто номер порта 80.
Если с помощью команды do show run посмотреть на текущую конфигурацию, видно, что система автоматически заменила число 80 на значение www. Следующая команда будет полностью аналогична, за исключением номера порта, вместо 80 у нас теперь будет 21: access-list 101 permit tcp 192.168.1.224 0.0.0.15 host 192.168.1.194 eq 21.

Далее мы должны создать записи для ICMP-трафика, чтобы разрешить пинг. Для этого я набираю access-list 101 permit icmp. Далее я могу набрать host, как мы поступили выше, или выбрать обычный способ и набрать IP-адрес 192.168.1.226 и обратную маску 0.0.0.0, которая представляет собой не что иное, как хост. Затем я продолжаю команду словом host и IP-адресом Laptop2 – 192.168.1.2. После этого система выдаст подсказку относительно значения следующего параметра команды – здесь нужно указать, какие именно сообщения мы разрешаем.

В нашем случае нужно разрешить ответный пинг, поэтому в конце команды необходимо указать echo-replay. Это означает, что мы разрешаем только сообщения пинга. В результате условие примет такой окончательный вид: access-list 101 permit icmp192.168.1.226 0.0.0.0 host 192.168.1.2 echo-replay. Следующее условие будет выглядеть так: access-list 101 permit icmp 192.168.1.226 0.0.0.0 host 192.168.1.130 echo-replay.

Теперь нужно применить созданный список, для чего я последовательно ввожу команды int g0/0 и ip access-group, добавляю номер списка 101 и указываю входящий или исходящий, в нашем случае это входящий IN. Зайдем в настройки Laptop0 и проверим пинг адреса 192.168.1.194, который до создания ACL проходил без проблем. Как видим, теперь система сообщает, что хост назначения не доступен. Даже если поменять IP-адрес на 192.168.1.195, мы все равно получим такое же сообщение.

Если помните, условием одной из задач была доступность Server0 с ноутбука Laptop0 отдела менеджмента. Однако мы разрешили только HTTP и FTP- трафик через порты 80 и 21, но не разрешали ICMP-трафик, то есть пинг. Вот почему пингование окончилось неудачей.
Но если попробовать веб-трафик, то есть зайти в браузер и набрать в адресной строке 192.168.1.194, мы без труда соединимся с веб-сервером Server0.

Если попытаться связаться с другим сервером по адресу 192.168.1.195, попытка закончится неудачей, так как примененный ACL не разрешает такой трафик.

Для окончательного решения Задачи №1 нужно перейти к настройкам роутера R2 и составить список ACL для финансового отдела – Allow_Ac. Я убеждаюсь, что никакого ACL в данный момент не существует, перехожу к глобальным настройкам и использую современную версию синтаксиса команд. Для этого я ввожу команду ip access-list extended Allow_Ac и перехожу на уровень подкоманд.

Далее я ввожу permit tcp 192.168.1.128. Поскольку у нас имеется /26, которое означает два заимствованных бита, а вы помните, что один заимствованный бит – это размер блока 128, два бита – размер блока 64, значит, обратная маска будет 0.0.0.63. То же значение обратной маски вы можете получить другим способом, отняв маску данной подсети 255.255.255.192 от глобальной маски 255.255.255.255. В итоге мы получаем команду permit tcp 192.168.1.128 0.0.0.63 host 192.168.1.194 eq 80. Аналогично создается команда для другого порта: permit tcp 192.168.1.128 0.0.0.63 host 192.168.1.194 eq 21.

Остается выполнить последнее условие Задачи №1 – разрешить любой трафик с компьютера PC0 финансового отдела в адрес ноутбука финансового директора Laptop0 отдела менеджмента. Для этого я ввожу команду permit ip host 192.168.1.130 host 192.168.1.226 без указания номера порта, потому что это условие касается трафика по любому протоколу.

Далее нужно применить этот ACL к интерфейсу g0/0, для чего используется команда ip access-group Allow_Ac IN. Как я сказал, PC0 не должен иметь возможность пинговать Server 0, но может связываться с веб-сервисом данного сервера. Если набрать в браузере PC0 адрес 192.168.1.194, можно войти в Packet Tracer, однако пропинговать этот сервер не удается, поскольку роутер R2 блокирует такой трафик.

Приступим к созданию нового ACL для компьютеров отдела продаж, для чего используем команды ip access-list extended Allow_Sa и permit tcp host 192.168.1.3 host 192.168.1.195 eq 80. Таким образом, мы разрешаем только HTTP-трафик и запрещаем весь остальной трафик, исходящий от данного хоста в любом направлении, командой deny ip host 192.168.1.3 any.

Далее нужно записать условие, разрешающее любой трафик, кроме пинга. Поэтому я запрещаю пинг командой deny icmp 192.168.1.0. Здесь у нас имеется /25, означающий 1 заимствованный бит, размер блока составит 128 бит, значит, обратная маска будет иметь вид 0.0.0.127. Этот трафик в виде обратного ответа пинга должен быть заблокирован в направлении хоста 192.168.1.195, который представляет собой Server2. В итоге запись ACL будет выглядеть так: deny icmp 192.168.1.0 0.0.0.127 host 192.168.1.195 echo.

Далее мы записываем команду на выполнение условий 4-й строки списка, которая разрешает весь остальной трафик сети отдела продаж, адресованный этому же серверу: permit ip 192.168.1.0 0.0.0.127 host 192.168.1.195.

Затем мы записываем условие, разрешающее трафик Laptop2 в направлении Laptop0. Для этого используется команда permit host 192.168.1.2 host 192.168.1.226, после чего список приписывает к интерфейсу g0/1 командой ip access-group Allow_Sa IN.

Проверим, как работают списки ACL в отношении ноутбука Laptop3, и попробуем выяснить, можно ли с него что-нибудь пропинговать. Пинг в адрес сервера 192.168.1.195 не проходит, как и пинг компьютера PC по адресу 192.168.1.130 и пинг ноутбука финансового директора по адресу 192.168.1.226. Единственное, что может этот ноутбук – это пользоваться веб-сервисом сервера Server1.

Laptop2 должен иметь возможность отсылать любой трафик в адрес Laptop0, включая пинг. Как видите, это условие выполняется, и мы наблюдаем ответный пинг с адреса 192.168.1.226. Пинг в адрес второго ноутбука отдела менеджмента Laptop1 не проходит, так как условия списка ACL запрещают любой трафик, кроме адресованного Laptop0. Точно также Laptop2 не может отправить пинг серверу Server1 по адресу 192.168.1.195, но может пользоваться веб-сервисом этого сервера. Таким образом, мы удовлетворили условия всех 4-х задач, создав и настроив соответствующие списки ACL.

Я не знаю, является ли данный способ оптимальным для решения задач подобного рода, но я предпочитаю решать их именно таким образом. В этом и заключается прелесть ACL или любого другого инструмента для создания сетей – здесь не существует единственно правильного решения, любую задачу можно решить множеством способов. Они зависят от ваших требований к сети, от разработанного вами дизайна, потому что вы можете создавать сети любым способом, который посчитаете подходящим.

Преимущество CCNA состоит в изучении всех концепций развития сетей, и лучшим способом усвоения материала является разработка дизайна своей собственной сети. Я буду рад, если вы решите эти задачи своим собственным способом и опишите его в комментариях к данному видео. Кроме того, на основании рассмотренной топологии сети вы можете придумать другие задачи и попытаться решить их самостоятельно.

Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас оформив заказ или порекомендовав знакомым, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).

Dell R730xd в 2 раза дешевле? Только у нас 2 х Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 ТВ от $199 в Нидерландах! Dell R420 — 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB — от $99! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?


ссылка на оригинал статьи https://habr.com/ru/company/ua-hosting/blog/465725/