Архив автора: admin

Неинформативные сообщения strongswan

Потребовалось подключиться по IPSec к новому межсетевому экрану. Решил попробовать strongswan, так как openswan отсутствует в репозитариях debian jessie. Выжимка из того, на чём удалось навернуться.

Основной конфиг /etc/ipsec.conf, общий ключ в /ets/ipsec.secrets. Для применения изменений необходимо выполнить sudo ipsec reload. Но данная команда не отображает никакой информации об ошибках/опечатках в конфигурационном файле в отличие от sudo ipsec restart. Другие команды можно посмотреть здесь.

Для подключения-отключения необходимо выполнить: sudo ipsec up|down .

После ее вызова выводится лог подключения.

Пока не указал в явном виде использовать IKE v1 (keyexchange=ikev1) удаленная сторона просто молчала, strongswan повторял попытки установления соединения.

Также потребовалось явно указать список протоколов шифрования для IKE (ike=aes128-sha1-modp1536,aes128-md5-modp1536,3des-md5-modp1024,aes128-sha1-modp1024,aes256-sha-modp1024,3des-md5-modp1024). До этого момента соединение обрывалось на первом шаге с ошибкой NO_PROPOSAL_CHOSEN.

Далее я получил ошибку no shared key found. В конфигурационном файле для подключения должны присутствовать опции left=%any и right=1.2.3.4, соответствующие адресам узлов, участвующих в ассоциации. Опции leftid и rightid в моем случае необязательны, я их не указывал. В файле /etc/ipsec.secrets общий ключ должен быть записан в виде:

%any 1.2.3.4 : PSK «sTrong$ecret»

Слева направо: адреса участников ассоциации, двоеточие (отделенное пробелами), тип записи PSK (общий ключ), собственно, ключ обязательно в кавычках. Без кавычек ключ, кажется, в base64. Подробнее тут.

Далее я снова получил ошибку NO_PROPOSAL_CHOSEN, но уже во второй фазе IKE — Quick Mode. Казалось бы, стороны снова не могут согласовать алгоритмы шифрования, но нет.

Помог блог какого-то замечательного человека. Спасибо тебе, огромное!) Оказалось, что нужно указать корректную, с точки зрения межсетевого экрана, rightsubnet=1.2.3.4/32, вместо rightsubnet=0.0.0.0/0, указывающую только на сам межсетевой экран. После чего всё благополучно взлетело, а я пошел ковыряться дальше.

Примерный файл конфигурации:

conn vpn
# Режим работы IPSec — транспортный (туннельный и т.д.)
type=transport
# Алгориты шифрования/аутентификации
ike=aes128-sha1-modp1536,aes128-md5-modp1536,3des-md5-modp1024,aes128-sha1-modp1024,aes256-sha-modp1024,3des-md5-modp1024
ikelifetime=86400s
lifetime=3600s
# Версия протокола IKE v1
keyexchange=ikev1
rekey=yes
forceencaps=yes
# Режим запуска — в момент обращения к защищаемому узлу
auto=route
# Left
# Адрес с интерфейса, через который идет маршрут по-умолчанию
left=%any
# Добавлть разрешающие правила в локальный межсетевой экран
# leftfirewall=yes
# Right
# Адрес узла, с которым необходимо соединиться
right=1.2.3.4
# Подсеть за узлом, которая будет защищаться соединением, фильтр протокола и порт
rightsubnet=1.2.3.4/32[udp/1701]

Для настройки L2TP поверх IPSec с помощью демона xl2tpd хорошо подходит инструкция от поклонников Арча.

PS. После обновления strongSwan до 5.4 благополучно работавшее соединение снова отказалось подключаться с той же ошибкой NO_PROPOSAL_CHOSEN. Благодаря этому посту и описанию параметра esp = в официальной документации было выяснено, что в 5.4 был изменен алгоритм шифрования по умолчанию:

esp =
Defaults to aes128-sha256 (aes128-sha1,3des-sha1 before 5.4.0).

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

Автор: Василий Иванов

Linux не для идиотов — сборник рецептов

linuxГод выпуска: 2007

Автор: К.А.Е. (Dalth)

Язык: Русский

Страниц: 52

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

Введение в Linux: удобное руководство

itlДата публикации: 2010

Автор: Machtelt Garrels

Язык: русский

Страниц: 217

ISBN 90-808529-1-0

Многие люди верят в то, что Linux очень сложен для обучения и что только специалисты смогут понять эту операционную систему. Но поскольку это операционная система с открытым исходным кодом, она набрала большую популярность среди обычных пользователей не только в качестве серверов, но и в офисах, и для домашнего использования. Цель этой книги — показать широкому кругу читателей что Linux может быть совсем простым и веселым. Это легкий обзор всех возможностей это операционной системы и будет интереснее всего для новых пользователей. Читать

Монетизация мобильного трафика

Not Allowed Type

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

Временные или вечные ссылки? Что эффективнее?

Временные или вечные ссылки? Что эффективнее?

Какие ссылки эффективнее для продвижения сайта и что лучше всего приобретать для получения необходимого результата? Данная статья достаточно просто и доступно объяснит как новичкам, так и более опытным пользователям преимущества и различия как вечных так и временных ссылок.

Что же такое вечная ссылка? — Это та ссылка, проставленная на ресурсе на все время его работы. Оплата за такие ссылки осуществляется один раз и возможно в рассрочку.

Временная ссылка — ссылка, за присутствие которой на ресурсе необходима ежемесячная оплата. Как только вы прекращаете ее оплачивать, она удаляется с ресурса.

Как можно участвовать в ICFPC (2016)

«Рядом с этой сокровищницей мысли, — неторопливо думал Васисуалий, — делаешься чище, как-то духовно растешь»

В этом году мы с товарищами (ForNever, Minoru, Hagane, grouzen) опять взялись участвовать в ICFPC. Если кто не в курсе, что это такое — см мой предыдущий пост или серию постов товарища adept.
В этот раз для разнообразия мы не писали AI для игрушки. Организаторы были из Японии, и поэтому мы весь уик-енд… складывали оригами. Кто-то из кода, а кто-то нет.
Задача состояла в том, чтобы из квадратного «листа бумаги» складывать разные (плоские) фигуры. В качестве задачи даётся описание нужной фигуры, а решение — набор складок на квадрате и описание, какие вершины в какие переходят при складывании. Первая сотня фигур была предложена организаторами, а дальше задачи могли отправлять участники, и за отправку задач тоже давали очки.
При этом, на самом деле, это было «не настоящее оригами». Были допустимы решения, невозможные с бумагой — части листа могли проходить друг через друга при складывании. При отправке решений чужих задач можно было даже «рвать бумагу» (при отправке своих задач — нельзя). Момент про разрешено ли разрезание мы уточняли долго и сложно.
Контест в этот раз проходил с утра пятницы по вечер воскресенья в моём часовом поясе.

В пятницу

с утра я «по-быстрому» написал скачивалку задач с сервера и закачивалку решений (на python, просто потому что там было REST API, а у меня уже был опыт использования для этого питоньей библиотеки requests). Ещё я написал парсер предложенного формата задач и рендерилку, которая рисует фигуры из задач в виде svg (на Haskell). Сразу пригодился хаскельный модуль Data.Ratio. Дело в том, что в задачах использовались координаты в виде рациональных чисел, причём размеры числителя и знаменателя не были ограничены. Так что быстро образовалась строчка type Number = Ratio Integer.
Потом я посмотрел на результаты рендера и увидел, что первые семь задач тривиальные (там просто квадрат, сдвинутый или повёрнутый, но не сложенный), решения для них легко написать вручную. Решил и залил.
Потом мы начали думать над задачей (я уже писал, у меня всегда так — сначала код, потом думать).
Когда нет ограничения на разрезание бумаги, задача сводится к тому, чтобы разрезать квадрат на эн многоугольников и сложить из них нужную фигуру. Насколько я знаю, подобные темы широко и глубоко изучены, но я не знаком с конкретными работами и алгоритмами. (в университете был даже какой-то спецкурс по оригами, как разделу геометрии, но я на него не попал). Поэтому я долго и упорно думал в эту сторону, но ничего не придумал.
В чате довольно быстро образовалось несколько идей:

  • Разрезать требуемую фигуру на треугольники и попытаться из таких треугольников сложить квадрат.
  • Какой-нибудь вариант генетических алгоритмов: разрезаем квадрат как попало и складываем как попало, оцениваем скор в соответствии с правилами организаторов.
  • Быстро придумался простой алгоритм для складывания любого достаточно маленького выпуклого многоугольника: пройти по всем его рёбрам и сложить бумагу вдоль них. Если останутся торчащие «хвосты», то опять пройти по рёбрам и подвернуть вдоль них.
  • Кроме силуэта фигуры, в задачах приводился её «скелет» — набор всех рёбер в положении после складывания. При этом, правда, было указание, что это только подсказка, складывать в соответствии с этим скелетом не обязательно. Так вот, появилась идея брать этот скелет и пытаться разворачивать его до квадрата.

Товарищ grouzen произвёл обширные изыскания существующих научных работ на тему оригами и около, и обеспечил нас пейперами для чтения на всю неделю. К сожалению, применить их мы не смогли.
Потом начался как всегда разброд и шатание, каждый стал заниматься чем-то своим.
Я решил начать с написания какого-никакого «фреймворка» для дальнейшей работы — набора функций для разрезания многоугольников, объединения и т.п. Некоторые из геометрических алгоритмов тривиальны (отражение многоугольника относительно прямой), зато другие зубодробительны (объединение произвольных многоугольников). Для таких алгоритмов я стал гуглить существующие реализации, по возможности на Haskell (т.к. парсер задач уже был на Haskell). Нашёл только clipper. Это биндинги к одноимённой библиотеке на C++. Сразу обнаружилась особенность: Clipper работает с целочисленными координатами (видим