Pull to refresh
9
0
Сергей @schebotar

User

Send message

Точечная маршрутизация на роутере с OpenWrt. WireGuard и DNSCrypt

Level of difficultyMedium
Reading time13 min
Views130K
Данный материал не является призывом к действию и публикуется исключительно в образовательных целях.

UPD 14.10.2023
Эта статья немного устарела. Здесь можно узнать, как использовать готовые списки IP-адресов, что не совсем актуально. Актуальная статья с маршрутизацией по доменам: https://habr.com/ru/articles/767464/


UPD 16.10.2022


  • Исправлены конфиги для Openwrt 22
  • Добавлен community список
  • В скрипт добавлена проверка загрузки файлов. Которая решает проблему, если при старте устройства не удалось сразу загрузить списки
  • DNSCrypt изменён на DNSCrypt v2

UPD 15.03.2023


  • Добавлена логика для работы с доменами, используются список доменов из community
  • Изменена проверка загрузки файлов в скрипте
  • В Ansible playbook теперь можно выбрать определённые списки

UPD 20.04.2023
Если у вас роутер получает IPv6 адрес, то роутинг будет работать криво. Пока нет инструкции для IPv6, поэтому нужно будет его выключить на роутере.


Часть 2: Поиск и исправление ошибок


Чем отличается от подобных материалов?


  • Реализация на чистом OpenWrt
  • Использование WireGuard
  • Конфигурация роутера организуется с помощью конфигов OpenWrt, а не кучей в одном скрипте
  • Предусмотрены ситуации при рестарте сети и перезагрузке
  • Потребляет мало ресурсов роутера: подсети содержатся в ipset, а не в таблицах маршрутизации. Что позволяет развернуть это дело даже на слабых устройствах
  • Автоматизация конфигурации с помощью Ansible (не требуется python на роутере)
Читать дальше →
Total votes 62: ↑61 and ↓1+60
Comments106

Реально ли без опыта в 2023 году найти работу в IT? История одного джуна

Level of difficultyEasy
Reading time7 min
Views90K

Привет! Хочу поделиться своей историей, как я нашла свою первую работу frontend - разработчиком в 2023 году.

Исходные данные: 30 лет, высшее образование по специальности логистика, 10 лет опыта работы в логистике, в т.ч. 5 лет на руководящих позициях. Июнь 2021 - приняла решение учиться и менять сферу на frontend, выбрала одну из многочисленных онлайн-школ и записалась на курс. 

Итог: апрель 2023 - получила оффер на позицию junior frontend-разработчика на полный день с официальным трудоустройством.

Читать далее
Total votes 103: ↑90 and ↓13+97
Comments214

Какой роутер с поддержкой OpenWrt купить в 2023 году

Level of difficultyEasy
Reading time5 min
Views83K

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

Сейчас, благодаря бурному развитию ARM архитектуры, мы можем приобрести довольно мощные, компактные железки за адекватную стоимость. А производители начали расширять функциональность прошивок. Если, например, вам нужна только поддержка USB модема, то многие роутеры могут предоставить это из коробки.

А если фукционала из коробки не хватает и хочется большего, то нужно как раньше смотреть в сторону неофициальных прошивок.

В последние 8 лет мой фаворит - это OpenWrt, прошивка на базе ядра Linux. Это полноценная операционка, в которой есть свой менеджер пакетов и туда до сих пор не проник systemd.

Читать далее
Total votes 20: ↑18 and ↓2+22
Comments149

Точечная маршрутизация на роутере с OpenWrt. Часть 2: Поиск и исправление ошибок

Level of difficultyMedium
Reading time12 min
Views26K

Почти 4 года назад я опубликовал обучающую статью-мануал о том, как на роутере с OpenWrt можно организовать роутинг для определенных подсетей. Всё это время мне много писали с просьбой помочь: не у всех всё заводилось с первого раза. Поэтому я решил написать материал, как самостоятельно искать, в чём именно проблема на роутере. В этой части разберёмся, что именно не работает, и как это исправить.


Первая часть. Установка и настройка


Написав тот материал, я рассчитывал что им будут пользоваться люди, связанные с ИТ. Но материал так разлетелся, что я до сих пор встречаю упоминания на форумах и в блогах. Если вы не привыкли страдать, то, возможно, это не для вас. Надо понимать, что у вас может ничего не заработать с полпинка.

Читать дальше →
Total votes 15: ↑14 and ↓1+15
Comments7

Ищем замену Excel — OnlyOffice/Р7

Level of difficultyEasy
Reading time5 min
Views6.8K

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

Сегодня речь пойдет об офисных программах. Мы настолько привыкли за много лет работать в известных всем офисных программах фирмы Microsoft, что теперь, когда с лицензионными закупками их ПО, особенно для государства и бизнеса, стало, мягко говоря, «всё плохо», с привычным комфортом офисной работы на привычных «инструментах», можно, казалось бы, попрощаться.

Не всё так печально, если речь идёт о «простом» использовании офисных пакетов, таком как заполнение вручную «стандартных» документов и табличек. Тут отечественное ПО, призванное заместить собой творение «Монстра из Рэдмонда», вполне себе справляется, и даже почти без проблем открывает документы, созданные ранее в MS Office.

А вот в вопросах, касаемых автоматизации ручных процессов, всё не так уж хорошо. Поскольку, чего тут скрывать, большинство нашего офисного ПО — это просто локализованные ответвления зарубежных проектов свободного ПО, и автоматизация в них обычно достаётся по наследству.

Степень доступной автоматизации сильно рознится, но данная статья не о сравнительном анализе возможностей нашего отечественно офисного ПО, а о нашем исследовании возможности повторения функционала из нашей разработки  —  расширения (addon) для «MS Excel» in2sql, в офисном пакете «Р7-Офис» от фирмы «АО «Р7».

Читать далее
Total votes 6: ↑4 and ↓2+5
Comments18

Базовый набор для решения задач на LeetCode/Codeforces, ч.3 Адаптивные Контейнеры C++

Level of difficultyEasy
Reading time5 min
Views3.1K

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

Статья получится очень короткой, если я просто перечислю pop, top, front поэтому добавлю по-небольшому разбору некоторых задач с LeetCode.

Почему адаптивные контейнеры?
Дело в том, что любой из этих классов довольно просто повторить при помощи любого последовательного(VECTOR, LIST, DEQUE). Из этого и термин адаптивный контейнер - он подстраивает под себя некоторый функционал классов контейнеров, что в определенной комбинации решает задачи максимально красиво и быстро.

Читать далее
Total votes 2: ↑1 and ↓1+2
Comments0

Портирование КОМПАС под Linux: особенности реализации и результаты

Level of difficultyMedium
Reading time6 min
Views16K

Мы много рассказывали на Хабре, как запустить САПР КОМПАС на Linux с разными вариантами Wine (ссылка 1, ссылка 2). Сегодня впервые публикуем пост о разработке нативной Linux-версии. На связи Андрей Пилюгин, ведущий инженер-программист.

Наша команда отвечает за портирование бизнес-логики, а работы по интерфейсу и по API делают другие команды. Эти процессы идут параллельно.

Работы по портированию КОМПАСа велись не один год, над этим начинала работать совсем небольшая группа программистов, и за этот период вышло две версии под Windows. По этой причине мы не могли разломать весь каркас приложения и написать его заново, приходилось аккуратно трансформировать приложение, постепенно заменяя его составляющие на кроссплатформенные и поддерживая в работоспособном состоянии все остальные. В этом нас сильно выручала система автотестов.

Мы решили не пытаться переписать всё сразу, а разделили портирование на этапы. На первом этапе хотели получить некую заготовку, в которой будет только сильно урезанное 2D с возможностью открытия нескольких документов, их масштабирования и переключения вкладок: по сути viewer.

Читать далее
Total votes 96: ↑95 and ↓1+104
Comments112

Как завернуть трафик Wireguard через shadowsocks на роутере

Level of difficultyEasy
Reading time2 min
Views36K

Так как есть риск блокировки Wireguard протокола, то рассказываю, как сделать, что бы трафик туннеля шел через shadowsocks.

Пример будет для сервера на Ubuntu 22.04 и роутера кинетик, с установленным на нем Entware. Предполагается, что WG уже поднят и настроен. А так же на роутер установлен Entware.

Читать далее
Total votes 18: ↑18 and ↓0+18
Comments17

Принципы SOLID: как писать хорошо масштабируемый и поддерживаемый код

Reading time7 min
Views8.2K

Вам когда-нибудь говорили, что вы пишете плохой код? 

Здесь стыдиться нечего. Мы все пишем несовершенный код, когда только учимся. Хорошая новость в том, что улучшить его — довольно просто, главное — желание. 

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

Существует целый ряд принципов в программировании (я бы даже сказал, что их слишком много), но я расскажу о пяти основных, которые складываются в аббревиатуру SOLID. 

Читать далее
Total votes 9: ↑6 and ↓3+4
Comments11

Пошушукаемся о Барбаре Лисков или раз и навсегда запоминаем принцип подстановки

Level of difficultyMedium
Reading time8 min
Views10K

Здравствуйте, всем! Хотя это моя первая публикация на Хабре, тему я хочу затронуть важную и далеко не всегда понятную новичкам. Не обращайте внимание на странный заголовок. Считайте, что это – ружье на стене, которое по ходу пьесы обязательно выстрелит.

Материал по этой теме здесь уже имеется, но на мой взгляд, информация там подана не совсем удачно и полно. Рискну внести свою лепту в дело понимания и запоминания такого фундаментального принципа.

В данной статье я постараюсь по максимуму избежать кода. Сделано это в целях повышения универсальности материала, он должен быть интересен всем читателям независимо от их языка программирования. В тех местах, где код неизбежно понадобится, он будет оформлен в синтаксисе Java. Не пугайтесь, все объясню, сложно не будет (во всяком случае, по моим расчетам). Итак, поехали!

Читать далее
Total votes 10: ↑7 and ↓3+7
Comments38

Shellinabox — если вдруг заблокируют SSH

Reading time3 min
Views16K

Сейчас мы живём в период, когда блокировки непредсказуемым образом усложняют нам жизнь. Одной из возможных угроз, которые стоит учесть, является блокировка протокола SSH (по причине того, что он позволяет организовывать туннели), и, хотя мы наверняка найдём способ достучаться до своих VPS, возможно стоит подстелить соломки и рассмотреть такой вариант, как SSH-клиент в браузере, что позволяет сделать программа Shellinabox.

Читать далее
Total votes 13: ↑10 and ↓3+11
Comments13

Разбираем HTTP/2 по байтам

Level of difficultyMedium
Reading time24 min
Views30K

image


Откройте любую статью с обзором HTTP/1.1. Скорее всего, там найдётся хотя бы один пример запроса и ответа, допустим, такие:


GET / HTTP/1.1
Host: localhost

HTTP/1.1 200 OK
Date: Sat, 09 Oct 2010 14:28:02 GMT
Server: Apache
Content-Length: 38
Content-Type: text/html; charset=utf-8

<!DOCTYPE html>
<h1>Привет!</h1>

Теперь откройте статью с обзором HTTP/2 или HTTP/3. Вы узнаете о мультиплексировании запросов, о сжатии заголовков, о поддержке push-технологий, но вряд ли увидите хоть одно конкретное сообщение. Ясно, почему так: HTTP/1.1 — текстовый протокол, тогда как сиквелы к нему бинарные. Это очевидное изменение открывает дорогу ко множеству оптимизаций, но упраздняет возможность просто и доступно записать сообщения.


Поэтому в этой статье предлагаю покопаться в кишках у HTTP/2: разобрать алгоритмы установки соединения, формат кадров, примеры взаимодействия клиента с сервером.

Читать дальше →
Total votes 115: ↑115 and ↓0+115
Comments45

Как делается OpenSource: личный опыт

Level of difficultyMedium
Reading time17 min
Views37K

Я - автор двух пакетов, входящих более-менее во все дистрибутивы Linux: sane-airscan и ipp-usb.

Кроме того, sane-airscan входит во все основные дистрибутивы BSD (FreeBSD, NetBSD и OpenBSD) и в ChromeOS. ipp-usb в ChromeOS не взяли потому, что он написан на Go, а у них там очень жестко с размером исполняемых файлов, вместо этого они написали свое на Rust, но предпочли бы взять моё изделие, если бы могли. Совсем недавно появился порт ipp-usb на FreeBSD, вероятно, другие BSD тоже скоро подтянутся.

Вместе эти два пакета образуют стек "бездрайверного" сканирования документов для Linux и *BSD, а в перспективе нескольких лет, когда старые сканеры, наконец, вымрут, вероятно других драйверов и не останется.

Кроме того, ipp-usb делает возможным "бездрайверную" печать на USB-устройствах.

Здесь я хочу рассказать, каково оно, быть автором популярных OpenSource пакетов. Хоть эта работа и не принесла мне особых денег (на что я, впрочем, особо и не рассчитывал), она принесла мне бесценный опыт.

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

Первое занимает гораздо меньше времени, чем второе. Второе - гораздо меньше времени, чем третье.

Читать далее
Total votes 394: ↑394 and ↓0+394
Comments71

Как протестировать код на Go с базой данных?

Level of difficultyMedium
Reading time10 min
Views5.8K

Как протестировать код на Go с базой данных? В этой статье опишу пример такого тестирования в связке с Postgres, очисткой на основе копирования базы данных и рассмотрю некоторые альтернативы.

Читать далее
Total votes 7: ↑3 and ↓40
Comments4

Найти работу после курсов: дорога слёз тестировщика-новичка

Reading time10 min
Views27K

За полгода курсы выпустят на СНГ-рынок 3,5К QA-интернов, а компании откроют всего 0,9К вакансий. Поэтому многие новички будут искать работу месяцами, не выдерживать давления отбора и писать компании «Я готов на переработки, только возьмите…».

Меня зовут Че́слав Герасимóвич, я 11 лет в мануальном тестировании. Повышал качество в лучшем в мире пасьянсе, в мобильных танках, пошаговой стратегии, сервисе знакомств для калифорнийских индийцев. Сейчас — Lead QA в сервисе нетворкинга для распределённых команд Dreem.me.

Сейчас покажу с картинками, как бороться и искать, найти хорошую работу и не сгореть.

Читать далее
Total votes 18: ↑16 and ↓2+22
Comments29

Симбиоз «Chromium» и «InternetTools»

Level of difficultyMedium
Reading time28 min
Views3.2K
Заполучить определённые сведения с динамического сайта – это не сказать что очень редкая, но всё же специфическая задача, решение которой и предлагает статья (без покидания, насколько возможно, уютных рамок Delphi); под динамической страницей автор понимает не просто сайт, содержащий JavaScript (в современных реалиях найти ресурс без него довольно сложно), а страницу, на которой интересующие разработчика данные изначально отсутствуют в документе, полученном от веб-сервера, появляясь исключительно после отработки JS-кода, каким-то образом вычисляющего их, либо запрашивающего нужную информацию от некоего сервера.

Если читатель раньше не сталкивался с подобной проблематикой, то наверняка приведённое сжатое описание малопонятно, поэтому обратимся к конкретному примеру – пусть требуется извлечь альбомы некоторой группы с metal-archives.com:

Пример динамического сайта
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments4

Как работает хэширование

Level of difficultyMedium
Reading time12 min
Views67K

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

Хэш-функции фундаментальны и используются повсюду.

Но что же такое хэш-функции и как они работают?

В этом посте я собираюсь развенчать мифы вокруг этих функций. Мы начнём с простой хэш-функции, узнаем, как проверить, хороша ли хэш-функция, а затем рассмотрим реальный пример применения хэш-функции: хэш-таблицу.
Читать дальше →
Total votes 62: ↑59 and ↓3+70
Comments49

5 книг по Golang для начинающих разработчиков: на что стоит обратить внимание

Reading time3 min
Views12K

Привет, Хабр! Сегодня поговорим о Golang, вернее, о хороших книгах, которые написаны для начинающих разработчиков. Возможно, какие-то из этих книг пропустили в своё время и более опытные программисты — если так, стоит обратить на них внимание. Если же вы можете порекомендовать книги по Go, которые понравились именно вам, пишите в комментариях, обсудим и их. Ну а пока — поехали.

Читать далее
Total votes 11: ↑8 and ↓3+11
Comments3

Настройка BGP для обхода блокировок, версия 2, «не думать»

Reading time3 min
Views59K

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


Поэтому здесь я приведу сжатую пошаговую инструкцию, как обходить блокировки, если у вас есть:


  • линукс-машина (ubuntu) вне поля блокировок;
  • роутер Mikrotik, на который вы уже подняли VPN-туннель до этой линукс-машины;
  • настроенный NAT на этом туннеле, позволяющий вам работать через него;
  • желание.

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


Те, кто уже всё сделал по мотивам предыдущего поста, в этом полезной информации не почерпнут.

Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments112

Возвращаем 2007 год, или делаем Интернет без блокировок

Level of difficultyMedium
Reading time5 min
Views67K

Как известно, в 2007 году кроме того, что деревья были выше, а трава зеленей, еще и в Интернете не было особых ограничений - можно было открыть почти любой сайт и наслаждаться им. До ковровых блокировок Telegram оставалось ещё 10 лет... К сожалению, в наше время такой возможности уже нет. Причины тут всем известны, в частности, некоторые компании уже не предоставляют своих услуг в России.

Хорошо, что существует возможность в рамках домашней сети восстановить свободный Интернет таким, каким он был в 2007-м. Именно этим мы и займемся. Стоит отметить, что в 2007 году довольно часто можно было встретить подключения на скорости 64-128 Кб/с, а то и вовсе dial-up; Wi-Fi был редкостью, а мобильная связь - довольно дорогим удовольствием. Однако, эти особенности того времени мы постараемся не воспроизводить.

Представляю вашему вниманию Freeroute - простой маршрутизатор, который позволяет направлять трафик на разные шлюзы в зависимости от домена назначения. Free в названии, как водится, означает свободный, а не бесплатный.

Читать далее
Total votes 69: ↑65 and ↓4+76
Comments98

Information

Rating
Does not participate
Location
Россия
Registered
Activity

Specialization

Specialist
Git
Linux
Docker
OOP
C#
.NET
ASP.NET MVC
ASP.Net
Database