Записки коммандера. День 13-14

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

Наблюдал сошедших с ума пилотов, на вылете бьющихся в стену. Запостил баг.

Day13_1

Видел офигенный город на планете.

Day13_2

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

Day13_3

Теперь знаю: дай сделать хотя бы выстрел в твою сторону и штрафа не будет.

И самое обидное, под конец воскресенья был убит пиратами же аж 3 раза. Подряд. Загруженным под завязку ништяками. И если первые два раза все было практически по-честному, мордобой на последних процентах жизни и всё такое, то последний расколошматил меня очень быстро. Величину потерянного можете оценить сами.

Day13_4

Записки коммандера. День 11-12

Решил прошвырнуться по галактике. Продал хаулер, купил asp explorer, набил всякой всячиной. Сделал круг на пару тысяч световых лет.

В результате стал первооткрывателем кучки маленьких планет и заработал без малого миллион.

Не интересно и скучно. Так как навык отработан, решил смотаться к какой-то небуле. Хз что это, но по крайней мере на карте галактики она выделена.

Записки коммандера. Дни 9-10

Девятый день выпал на понедельник, а понедельник даже в космосе считается тяжелым днем. Не летал.

На десятый день решил попробовать себя в деле изучения неизвестного. Выбрал систему, где меня любят, выкинул все из трюмов и полетел. Ну и что, что всего два прыжка? Зато кучка enexplored объектов. Какие-то сканятся с 70 световых секунд, а каким-то надо 20-30.

За буквально 10 минут неспешного полета насканил на 70 тысяч. В принципе, неплохой заработок, но какой-то больно нудный. Хотя наверняка я чего-то еще не постиг. Надо будет еще попробовать.

Решил потренироваться пострелять по обломкам кораблей. Нашел USS, только прицелился, как прилетел пират. Опять буквально 3 секунды и меня нет. Причем на этот раз я специально смотрел – щиты были на полную и не пробиты. Обидно, прям хоть на форумы лезь или в техподдержку. Залетел на верфь, поприкидывал, чем меня можно так быстро разобрать. Не нашел.

Утешился перевозкой пары бумок и пошел спать.

Day09_1

Записки коммандера. Дни 6-8

Шестой день был нелетным. Погода в космосе не позволяла выйти из ангара в свободный полет. Ну и пофиг.

Седьмой день запомнится мне надолго. Во-первых, меня первый раз убили. Причем убили очень быстро – выход из гипера и через пару секунд я умер. Скриншот сделать не успел, понять тоже, но обиделся. Главное: пирату ничего не досталось, потому что я летел пустым. Страховка и у меня снова мой корабль с тем же самым оборудованием.

Во-вторых, поменял корабли. Кобра оказалась … вообще не оказалась. Поэтому соскочил на хаулер, а с него на тип 6.

И наконец, поставил себе самый мощный сканер. Проблемы “найди точку назначения” больше не стало.

Day07_1

Ну и без сканера обнаружить такое … В общем, нереально

Day07_2

День восьмой опять начался с пиратов. На этот раз все как обычно: вывалили из гипера, начали лазером стрелять. Но на этот раз у меня груза было на полмиллиона кредов, поэтому аж заколдобился, убегая. Решил потратиться на ближайшей хорошей станции на оружие. Надоело.

Пару раз останавливался на USS.

Day07_3

Обломки и несколько бочек с биомусором. Надо прикинуть, выгодно или нет …

Сканер рулит!

Day07_4

За каждый открытый объект дают по 500-1000 кредов. А так как шастаю я обычно неисследованными тропами, то копеечка падает сама собой … Вот результат небольшого бизнес-трипа по делам.

Day07_5

Считаю, что неплохо, на халяву-то. Заодно получил инвайт от инженерши

Day07_6

Ну чего, говорят они круты. Слетал, посмотрел.

Day07_7

Чего такое meta-alloys? Фиг знает, надо будет поискать. Прямо так в заначке корабля не обнаружилось.

И тут наконец-то подвернулся пират. Да, после перевооружения корабля пираты как-то пропали. Вообще. Даже когда я шарахался по анархическим закоулкам, ведущим войну. Но тут вылез.

Day07_8

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

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

Практика показала, что пока встреченные пираты разваливаются от третьего-четвертого залпа. Четвертый нужен тем, кто покруче и первый залп сбивает ECM. На остальные он не успевает перезарядиться. Окупаемость ракет на пиратах: 50 на 50. Или ракет выпускаешь на 4000 кредов, в получаешь 1200. Или выпускаешь на 2000, а получаешь 12000. Фиг поймешь.

А в остальном жисть прекрасна. Летаешь, любуешься красотами, заодно деньги на апгрейд зарабатываешь. Мой рекорд – миллион за 10 минут.

Day07_9

Записки коммандера. День 5

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

Но омрачает только одно: я чего-то не понимаю и корабль отказывается прыгать дальше 11 световых лет. Даже со всем выкинутым барахлом вроде пушек и грузовых трюмов. Попытка взять моторчик классом повыше 4Е приводит к сообщению об уменьшении длины прыжка еще больше. В характеристиках пишут про то, что моторчик 4Е везет 130 тонн, а 2А – 60 (или 80 – не помню точно). А у меня корабль 230 минимум.

Чего-то я не понимаю.

Записки коммандера. День 4

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

Day04_1

Продаю все навесное, иду покупать грузовик. Оказывается, я вполне себе платежеспособный клиент. Загружаюсь, лечу, получаю много-много денежек. Клиенты в противоборствующих державах, да еще по пути 3 системы с войной. Это дорого стоит!

Day04_2

В итоге становлюсь совсем платежеспособным клиентом. А наличие денег позволяет получить то, что хочется.

Day04_3

Да! Та самая культовая кобра, на которой я гонял таргоидов в 86м! Ничего, что не совсем обвешанная, даже вернее сказать, что совсем не обвешанная – это дело наживное. На той станции, где я её купил, просто модулей не было. Ну и денег у меня после покупки двух кораблей не так-то уж и много …

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

Для этого в правой панели находим fire groups и пробелом расставляем пушки в одну, а сканер в другую. Включаем оружие (кнопка U) и затем переключаемся с помощью N между тем, что сейчас надо: сканер или лазеры. Ну а потом “стреляем” сканером. Более того, сканировать можно даже в суперкруизе. Я теперь сразу после прыжка сканером стреляю, пока гипердвигатель перезаряжается. Не смотря на то, что сканер стоковый, уже 19 новых объектов настрелял. Отлечу подальше – сдам, денежку малую подниму. Мелочь, а приятно.

Day04_4

Записки коммандера. День 3

Решил не мелочиться и купил на все наличествующие деньги новый моторчик и двигатели коррекции. На счету осталось полторы тысячи, зато у меня на корабле теперь моторчики самые крутые. Класс 2А – для этого корабля я больше пока не видел. Ну и результат соответсвующий.

Day03_2

Да, я наконец-то нашел актуальные данные о корабле. Как ни странно, но они оказались на правой панели.

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

Day03_0

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

Day03_1

Во-вторых, меня чуть не расстреляли.

Day03_4

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

Буду думать. А пока можно любоваться двойной звездой

Day03_3

Записки коммандера. День 2

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

Отличие пошло сразу. На первом же прыжке меня перехватил бот. Ну сначала покрутило с “rescue vector”, а потом выбросило в обычный космос.

Почему бот? ну потому что только у ботов имена без CMDR в начале и только бот может кричать “отдай мне свой груз” не удосужившись проверить, а есть ли вообще грузовой отсек. Да и не знаю я пока, как груз отдавать.

Day02_1

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

Улетел.

И так почти каждый прыжок. Ну и что, что в системе война? Я же маленький сайдвиндер, никому ничего не делаю, примусю тут потихоньку …

Один раз меня перехватили, сделали пару выстрелов и прилетели полицейские. Досматривать шоу не стал, помогать тоже. “Ковырялки” у меня слабые, поэтому удовольствия никакого.

Из замеченного и странного: иногда пропадают задания. То есть взял, вылетел, прилетел, а задания нет. Один раз дали задание, прилетаю, а станции нет. Система есть, а станции в ней нет. Тоже странно …

Пока летал, открыл две или три новые планеты. Просто пролетал мимо и блямкнуло. По прилету на станцию сказали, что бы улетел больше, чем на 2 года от найденного. Смысла не понял, но отлетел. Дали семь с копейками тысяч. Мелочь, а приятно. Надо будет прикупить на верфи сканер. Наверняка будут больше денег давать за сканирование.

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

Видел и реальных игроков. Два раза. Разошлись бортами.

Выделенный вечерний час на игру закончился, хорошего помаленьку.

Day02_2

Записки коммандера. День 1

Наконец-то я задушил свою жабу и поставил Elite:Dangerous. Вроде тот же самый автор, те же самые правила, да всё то же самое. Читать гайды, лазить по форумам и прочее принципиально пока не буду. Иначе что за интерес? Тем более для Элиты разлива 86-87 годов.

Итак, я фиг знает кто, фиг знает где. Для начала выберем обучение. Сразу предлагают посмотреть видео – не хочу. Давай постреляем …

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

Вылетаю с тренировочной станции … залетаю обратно. Сайдвиндер кораблик маленький, юркий, поэтому пролетает через шлюз даже боком. А вот дальше проблемы. Я не понимаю, чего этой штуке надо. Меня плющит, колбасит и даже немножко стукает об стены. Наконец, выходит время и я начинаю заново.

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

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

Пора полетать в реальном мире!

Запускаю игру в режиме “соло”. Это, как я понял, включает “все как в жизни, только игроки тебя не видят”. Ну ок. Пошли шариться по менюшкам. Будем торговать!

У меня свободен (и в наличии) один грузовой отсек. 2 тонны. В кошельке цельная тыща кредов. Это хорошо – раньше сотню давали и крутись как можешь. Покупаю какую-то машинерию и сразу же ищу, куда бы её сплавить.

Обнаруживаю на левом экране галактическую карту и тупым перебором выбираю планету с сельским хозяйством. Тыкаю на первую галочку и вылетаю!

Летят утки .. и два гуся! Старые навыки не дают пропасть и я буквально за пару минут обнаруживаю, что гиперпривод не включается, если из корабля что-то торчит. А торчат у меня посадочные опоры и пушки. Пару минут перебора клавиатуры и выясняется, что опоры убираются кнопочкой L, а пушки – правой кнопкой мышки. Если с опорами понятно, то когда я успел вытащить пушки – не помню. Жамкаем J – получаем фигу. Разгоняемся и снова жамкаю – теперь получилось.

Лечу! Хорошо лечу! И прилетаю прямо в солнце. Ну или звезду. Выруливаю в чистый космос и пытаюсь осмотреться. Старые навыки и знания не дают абсолютно никаких подсказок. Куда лететь – не понятно. Делаю правильный вывод и опять лезу по экранам. Опять же на левом обнаруживаю вкладку “навигация” и там всякие строчки. Выбираю по названию и иконке станцию. Давлю пробел и найденное подсвечивают в качестве цели. Перехожу на основной экран и наблюдаю круговерть звезд и прочих космических объектов. Пока шарился, по-привычке дергал мышкой. А корабль реагировал. Выравниваюсь, нахожу по компасу цель и лечу.

Прилетел. Вернее, пролетел мимо. Скорость большая, а сбрасывается медленно. Развернулся и опять пролетел мимо. Развернулся, сбросил скорость, подкрался. “Безопасный выход готов”. Пока думал, что это значит, опять пролетел мимо. Развернулся, подкрался, “выход готов”. И? Опять пролетел мимо. Отлетел подальше, развернулся и решил убиться от станцию. Прицелился … “аварийный выход”. Облин, так я в гипере все это время летал? Круто.

Попробовал. Да, есть внутри системный гипер, как и в первой элите. Только там после гиперпрыжка надо было его включать, а тут он не выключается.

Набаловался, прилетел обратно к станции, выровнялся и полез в шлюз. Тут же выскочило сообщение, что мне предлагают немедленно смыться из занимаемой области, иначе мне будет больно и печально. Хорошо, вылетаю назад и зависаю около станции. Опять тыкаться в менюшках. Достаточно быстро я обнаружил, что вкладки переключаются кнопочками q и e, и там можно выбрать станцию и запросить у нее стыковку. Выбираю, запрашиваю, получаю. Немного волнуясь, залетаю и занимаю выделенное место. Давали 9 минут, справился за 4, вот какой я молодец.

Продаю машинерию и получаю аж 700 кредов прибыли. Заправляюсь на 20 и чувствую, что жить можно. Но скучно. Надо смотреть, как можно денег больше и быстрее заработать. В магазине станции обнаруживаю доску объявлений. Изначально я решил, что доска объявлений – это как новости. Ну там “давайте сбросимся по 10 тыщ на строительство” или “сегодня фракция такая-то объявила этакое”. Оказывается, там есть и задания в духе “мы испытываем бум, надо отвезти эту информацию, получишь денежку и полюсики к репутации”. На плюсики мне пофиг, а вот денег надо.

Беру задание на 12 тысяч кредитов и лечу. Прилетел, сдал, получил. Заправился. Теперь 700 кредитов первой прибыли смотрятся совершенно невыразительно. Беру на 25 тысяч. Лететь далеко, но вроде можно. Что бы не лететь пустым, покупаю чего-то высокотехнологичное.

Прыжок, прилетел, заправился. Пошарился по менюшкам и обнаружил, что с получением корабля дали задание на 10 тысяч. Посмотрел на карту – рядом. Слетал, получил. Задание на 25 тысяч жгет карман. Прыгнул поближе. Звездная система, без станции. Следующая тоже. И судя по названию, следующая тоже. Не долечу – просто горючего не хватит. Прыгаю вбок. Заправляюсь. Думаю.

Иду по менюшкам на предмет “может, задание есть рядом” и обнаруживаю менюшку верфи. А верфь – это такое дело, можно корабль прокачать. Или новый купить.

Хожу, выбираю … либо мне денег не хватает, либо мне это не надо. Думаю. Пока думал, обнаружил в продаже стыковочный компьютер. Я комфорт люблю, поэтому взял. Свободного места больше нет. Задумчиво посмотрел на трюм. Пошел в торговлю, продал содержимое, потеряв тыщу кредов. Вернулся, продал трюм и купил вместо него топливный бак. Заправился. Посмотреть не знаю где, но по ощущениям теперь могу прыгать без дозаправки раз пять. Должно хватить.

Вылетаю, прыгаю кузнечиком до станции назначения. В галактической карте есть прокладчик маршрутов, но прокладывает он как-то криво. Поэтому лечу прямо, куда хватает радиуса действия гиперпривода. Где не хватает – я получаю сообщение о недостаточности 0.60. Чего это такое, я пока не понимаю, но прыгать не дает.

Наконец, через полчаса прыжков класса “влево-вниз-вбок-хз куда” прилетаю. Высокотехнологичная! Получаю прибыль и сразу же на верфи. Моторчик! Мне нужен моторчик помощнее! На верфях в наличии только один, который одновременно и подходит моему сайдвиндеру и имеет в циферках 0.80 (а 0.80 больше чем 0.60, а значит лучше). Покупаю за 17 тысяч и тут же беру первое попавшееся задание на доставку документов. Пофиг на цену, мне проверить прыгучесть надо.

12! Двенадцать световых лет! А раньше с трудом до 7-8 дотягивал.Ну вроде как можно и 12.2, но я не нашел звезду дальше. Если судить по шкале расхода горючего, то 0.80 – это число едениц горючего, который моторчик может съесть за один прыжок. То есть в идеале я могу прыгнуть 5 раз. По 12 световых лет. Или 60 световых лет на одной заправке. В реальности меньше, ибо для полетов по системе горючее тоже расходуется.

Все, жисть на первый день удалась.

Day01

Делаем пользу из телевизора.

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

Но использовать их у меня не получается: смотреть нечего. То, что предлагают имеющиеся каналы совершенно не удовлетворяет мои вкусы. Телевизор стоящий в спальне гордо имеет на боку какую-то кастрированную OS и умеет ходить в интернет. Там есть всякие “амедиатеки”, “ивиру”, “нетфликсы” и прочий хлам, отличающийся от эфирных каналов лишь ценником. Смотреть там точно так же нечего.

Итак, я сформировал задачу: надо сделать так, что бы телевизор не собирал пыль. Для этого эта штука должна обзавестись следующими навыками:
– Научиться играть музыку. Я практически все делаю под музыку.
– Научиться показывать киношки именно те, которые я хочу и те, когда я хочу. Важное дополнение: некоторые киношки я смотрю на языке оригинала, а некоторые – с расположенного дома сетевого диска (просто по причине их тотального отсутствия в магазинах).
– Не трахать мозги.

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

Google Chromecast уже смотрится лучше. Тем более один из телевизоров имеет какую-то старую (ну или аналогичную) версию. Основной минус – трансляция только с телефона/компьютера. Значит, надо иметь постоянно включенным еще один компьютер или держать телефон поблизости. Нет, с компьютерами проблем нет, а вот с телефонами проблема – Chromecast никак не поддерживает Apple.

Куча hdmi-донглов проходит под первым пунктом и точно так же не вызывает энтузиазма.

В итоге остается только новый Apple TV. Старый – он как хромкаст и тоже требует внешнего устройства. Согласно рекламе и описаниям, он умеет делать все, что требуется.

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

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

Второй проблемой стали фильмы. На любой чих приставка выдавала сообщение о неустранимой ошибке и закрывала “приложеньице”. Сказать, что я был огорчен – ничего не сказать. Более того, при попытке играть кино на планшете и потом включение AirPlay приводило к 50% зависанию проигрывания. Отдельные кадры показывает, но кино играть не желает.

Попытка проиграть кино с большого компьютера закончилась сообщением, что играть оно не будет, так как дисплей не поддерживает hdcp.

Перезагрузки и прочие шаманские танцы не помогали точно так же.

Решение оказалось сложным. Что конкретно помогло, я не знаю и знать не желаю. Я просто сбросил приставку в ноль (она при этом заново скачивает прошивку из сети), поставил язык интерфейса английский и подключил appletv по ethernet. Пароли и прочее ввел с помощью планшета (есть при установке такой выбор. я просто в первый раз пропустил)

Все проблемы сняло как рукой. Обычного интернета в 80 мегабит (пиковых,постоянно доступно там 30-40 от силы) в воскресенье вечером хватает на показ фильма в FullHD без каких-либо пауз, квадратиков и прочих аттрибутов.

Поставил VLC. Играет, все что я ему попробовал подсунуть.

Звуковые дорожки переключаются. В iTunes сразу и без проблем, VLC иногда плющит.

Музыка полностью аналогична той же самой на айфонах-айпадах. Все работает.

Задача выполнена и я провел половину воскресенья за пересмотром “звездных войн”. Качественное FullHD на большом экране очень непривычно смотреть. Внезапно обнаружилось, что я как-то уже привык к “мылу”. Как бы не повторилась история с “аудиофильством”

PS Так же внезапно обнаружилось приятное дополнение. Понажимав несколько раз кнопку menu (то есть уйдя на главный экран и попытаться уйти “выше”), можно запустить “скринсейвер”, представляющий собой HD видео разных городов с высоты.

Решил написать книгу …

… про реальную разработку устройств на stm32. Поэтому думаю обновления если и будут, то нерегулярным и в основном в виде кусочков из книги. Ну прёт меня пока.

Что бы не было скучно, вот вам малюсенький кусочек, можно сказать бета-версия про кварцевые резонаторы и вообще частоты.

Дуэт шариками …

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

Screenshot_2016-01-31-11-17-55

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

https://youtu.be/8s2M1X7bTWA

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

Берите для iOS и Android, но не говорите потом, что я не предупреждал! 🙂

Игрища с сервером – 3 или openvpn и ipv6

Сделав очередной openvpn сервер, я задался вопросом: а нафига я его вообще делал? Нет, что бы добираться безопасно до своих ресурсов, это да. Но одна из главных задач – дать клиенту ipv6 в мире ipv4. И именно её он не выполняет. Значит сейчас починим.

Самый простой вариант “в лоб” – перевести сервер в бридж режим и пусть клиенты будут представляться хост-машине как еще одни виртуалки. Минус – замучаюсь с безопасностью. Плюс – тупо и надежно.

Вариант посложнее – выпилить кусочек ipv6 сети и давать её клиентам. Минус тут один – некоторые клиенты почему-то желают видеть у себя /64 и никак иначе. А у меня всего одна /64. Нет, можно получить еще через любого туннельного брокера, но не хочу.

Значит вариант остается один: взять приватную ipv6 подсеть и сделать раздачу из него. Для выбора сетки мы можем брать все что нам понравится, главное что бы первый байт адреса был fd. Вот тут можно даже побаловаться, просто обновляя страничку.

Я возьму для своих крамольных целей сеть fdab:cdef:1234:5678::/64

Почитав маны, добавляю следующие строчки в конфиг сервера

server-ipv6 fdab:cdef:1234:5678::/64
tun-ipv6
push tun-ipv6

И перезагружаю сервер

systemctl restart openvpn@server.service

Переподключаю клиента и смотрю в логи. Вижу заветную строку.

Fri Jan 29 03:12:31 2016 /usr/sbin/ip addr add dev tun0 local 10.100.2.6 peer 10.100.2.5
Fri Jan 29 03:12:31 2016 /usr/sbin/ip -6 addr add fdab:cdef:1234:5678::1000/64 dev tun0
Fri Jan 29 03:12:31 2016 /usr/sbin/ip route add 10.100.0.0/24 via 10.100.2.5

Пробую с клиента пингануть сервер

$ ping6 fdab:cdef:1234:5678::1 -c 2
PING fdab:cdef:1234:5678::1(fdab:cdef:1234:5678::1) 56 data bytes
64 bytes from fdab:cdef:1234:5678::1: icmp_seq=1 ttl=64 time=48.1 ms
64 bytes from fdab:cdef:1234:5678::1: icmp_seq=2 ttl=64 time=48.2 ms

Работает! Теперь осталось самая мелочь – запушить правило роутинга, адрес ДНС и собственно роутинг сделать.

Строчка конфига

push "route-ipv6 2000::/3"

Заставит маршрутизировать весь ipv6 трафик через openvpn. Почти как redirect-gateway def1, но только для ipv6.

Но так как у нас приватная сеть, то я могу пинговать только openvpn. Другие хосты согласно правилам хорошего тона, такие поползновения обламывают.

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

systemctl stop firewalld
yum -y install iptables-services
systemctl enable iptables
systemctl enable ip6tables
systemctl start iptables
systemctl start ip6tables

Добавляем правила для SNAT и открываем 1194/udp на вход
-A POSTROUTING -s 10.100.2.0/24 -o eth0 -j SNAT --to-source 10.100.0.133
-A POSTROUTING -s fdab:cdef:1234:5678::/64 -o eth0 -j SNAT --to-source 2a01:4f8:171:1a43:5054:ff:fe0d:da49

-A INPUT -p udp -m state --state NEW -m udp --dport 1194 -j ACCEPT

И удаляем мешающееся

-A FORWARD -j REJECT --reject-with icmp6-adm-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

Теперь последний шаг – sysctl.conf

net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding=1

То, что надо перечитать – перечитываем, то, что надо перезагрузить – перезагружаем.

Если все сделано правильно, клиент VPN начнет пинговать внешние ipv6 ресурсы. traceroute у меня почему-то обламывался на первом же хопе. Посмотрел tcpdump – видимо, не до конца допилили модуль, отвечающий за NAT: адреса не переписываются. Но с другой стороны – ну и пофиг: если очень надо, то я смогу зайти прямо на хост.

Последняя проверка: а файлики-то клиент утащит?

$ wget -6 google.com
--2016-01-29 04:07:49-- http://google.com/
Resolving google.com (google.com)... 2607:f8b0:4005:800::1002
Connecting to google.com (google.com)|2607:f8b0:4005:800::1002|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://www.google.de/?gfe_rd=cr&ei=5SurVtbrKeaD8Qeu6YvACw [following]
--2016-01-29 04:07:49-- http://www.google.de/?gfe_rd=cr&ei=5SurVtbrKeaD8Qeu6YvACw
Resolving www.google.de (www.google.de)... 2607:f8b0:4010:800::101f
Connecting to www.google.de (www.google.de)|2607:f8b0:4010:800::101f|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘index.html’

[ <=> ] 19,066 97.8KB/s in 0.2s

2016-01-29 04:07:50 (97.8 KB/s) - ‘index.html’ saved [19066]

Утащил!

Значит, можно удовлетворенно потирать руки и идти спать

Игрища с сервером – 2 (openvpn, ssh и freeipa)

Наконец-то можно приступить к самому приятному: выбиванию окон во внешний мир. Или VPN. Ответы на вопросы зачем, почему и куда оставлю за рамками. Мне надо и все тут. Для организации канала буду использовать широко известный openvpn.

Ставим удобности.

yum -y install epel-release mc

Для начала подниму для проверки просто сервер. Без каких-либо излишеств.

yum -y install openvpn easy-rsa
cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn
mcedit /etc/openvpn/server.conf

Конфиг после удаления лишнего получился примерно такой

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.100.2.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.100.0.0 255.255.255.0"
;push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 10.100.0.10"
push "dhcp-option DOMAIN local.multik.org"
duplicate-cn
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
verb 3

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

Теперь ключи. Опять же, не отходя от канонов.

mkdir -p /etc/openvpn/easy-rsa/keys
cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa
mcedit /etc/openvpn/easy-rsa/vars

Тут я поправил строки “по умолчанию”

export KEY_COUNTRY="RU"
export KEY_PROVINCE="RU"
export KEY_CITY="Moscow"
export KEY_ORG="VseMoe"
export KEY_EMAIL="multik@multik.org"
export KEY_OU="Internet"
...
export KEY_NAME="Server"
...
export KEY_CN="vpn.vsemoe.com"

Дальше просто лог команд, везде давим Enter.

cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf
cd /etc/openvpn/easy-rsa
source ./vars
./clean-all
./build-ca
./build-key-server server
./build-dh
cd /etc/openvpn/easy-rsa/keys
cp dh2048.pem ca.crt server.crt server.key /etc/openvpn
cd /etc/openvpn/easy-rsa
./build-key client

Разрешаем форвард

mcedit /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p

И стартуем сервер

systemctl enable openvpn@server.service
systemctl start openvpn@server.service

Теперь на хосте надо открыть порт 1194/udp и перебросить его на виртуалку с openvpn

-A INPUT -p udp -m state --state NEW -m udp --dport 1194 -j ACCEPT
-A PREROUTING -d 136.243.151.196/32 -i eth0 -p udp --dport 1194 -j DNAT --to-destination 10.100.0.133

И на самой виртуалке открыть тем или иным образом порт

firewall-cmd --add-service=openvpn --permanent
firewall-cmd --permanent --add-port=53/udp
firewall-cmd --reload

Теперь перетаскиваем на клиента все client* файлы и ca.crt и делаем конфиг (обычный текстовый файл)

client
dev tun
proto udp
remote 136.243.151.196 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
ca ca.crt
cert client.crt
key client.key

Пробуем соедениться

$ sudo openvpn --config confif.vpn
Wed Jan 27 03:55:22 2016 OpenVPN 2.3.8 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Aug 4 2015
Wed Jan 27 03:55:22 2016 library versions: OpenSSL 1.0.1e-fips 11 Feb 2013, LZO 2.06
Wed Jan 27 03:55:22 2016 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
Wed Jan 27 03:55:22 2016 Socket Buffers: R=[212992->131072] S=[212992->131072]
Wed Jan 27 03:55:22 2016 UDPv4 link local: [undef]
Wed Jan 27 03:55:22 2016 UDPv4 link remote: [AF_INET]136.243.151.196:1194
Wed Jan 27 03:55:22 2016 TLS: Initial packet from [AF_INET]136.243.151.196:1194, sid=3dd59a35 34ce24da
Wed Jan 27 03:55:22 2016 VERIFY OK: depth=1, C=RU, ST=RU, L=Moscow, O=VseMoe, OU=Internet, CN=vpn.vsemoe.com, name=Server, emailAddress=multik@multik.org
Wed Jan 27 03:55:22 2016 VERIFY OK: depth=0, C=RU, ST=RU, L=Moscow, O=VseMoe, OU=Internet, CN=server, name=Server, emailAddress=multik@multik.org
Wed Jan 27 03:55:23 2016 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Wed Jan 27 03:55:23 2016 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Wed Jan 27 03:55:23 2016 Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Wed Jan 27 03:55:23 2016 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Wed Jan 27 03:55:23 2016 Control Channel: TLSv1.2, cipher TLSv1/SSLv3 DHE-RSA-AES256-GCM-SHA384, 2048 bit RSA
Wed Jan 27 03:55:23 2016 [server] Peer Connection Initiated with [AF_INET]136.243.151.196:1194
Wed Jan 27 03:55:25 2016 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1)
Wed Jan 27 03:55:25 2016 PUSH: Received control message: 'PUSH_REPLY,route 10.100.0.0 255.255.255.0,dhcp-option DNS 10.100.0.10,route 10.100.2.1,topology net30,ping 10,ping-restart 120,ifconfig 10.100.2.14 10.100.2.13'
Wed Jan 27 03:55:25 2016 OPTIONS IMPORT: timers and/or timeouts modified
Wed Jan 27 03:55:25 2016 OPTIONS IMPORT: --ifconfig/up options modified
Wed Jan 27 03:55:25 2016 OPTIONS IMPORT: route options modified
Wed Jan 27 03:55:25 2016 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Wed Jan 27 03:55:25 2016 ROUTE_GATEWAY 172.16.137.2/255.255.255.0 IFACE=eno16777736 HWADDR=00:0c:29:fa:0a:54
Wed Jan 27 03:55:25 2016 TUN/TAP device tun1 opened
Wed Jan 27 03:55:25 2016 TUN/TAP TX queue length set to 100
Wed Jan 27 03:55:25 2016 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Wed Jan 27 03:55:25 2016 /usr/sbin/ip link set dev tun1 up mtu 1500
Wed Jan 27 03:55:25 2016 /usr/sbin/ip addr add dev tun1 local 10.100.2.14 peer 10.100.2.13
Wed Jan 27 03:55:25 2016 /usr/sbin/ip route add 10.100.0.0/24 via 10.100.2.13
Wed Jan 27 03:55:25 2016 /usr/sbin/ip route add 10.100.2.1/32 via 10.100.2.13
Wed Jan 27 03:55:25 2016 Initialization Sequence Completed

Как видно по последней строчке, соединение установилось. Пробуем добраться до любого хоста “внутри” сети.

$ ssh root@10.100.0.10
ssh: connect to host 10.100.0.10 port 22: No route to host

Облом. По простой причине – ничего в сети 10.100.0 не знает про сеть 10.100.2, которую я отдал под VPN. Самое простое решение – включить маскарадинг на выходе

firewall-cmd --permanent --add-masquerade
firewall-cmd --reload

Пробую еще раз

$ ssh root@10.100.0.10
The authenticity of host '10.100.0.10 (10.100.0.10)' can't be established.
ECDSA key fingerprint is fb:c1:72:a2:9a:a1:df:f5:d0:95:09:a4:3b:2e:9d:68.

Сработало. Это хорошо. Теперь немного добавим безопасности путем добавление пре-авторизационного ключа. Опять же, по мануалу

openvpn --genkey --secret ta.key
tls-auth ta.key 0

В принципе, тут можно остановиться. Сервер работает, создаешь по ключу на клиента и вперед. Но мне так не охота. Я хочу сделать так, что бы конфигурационный файл был у всех одинаковый, а пользователи авторизовались по классическому логину и паролю. А логины и пароли брались бы из FreeIPA.

Опять же, вариантов много. Самый распространенный – это использование freeipa как ldap сервера. Мне лично лень. Я решил воспользоваться вариантом, когда freeipa авторизует пользователей в системе (так как это стандартный способ), а openvpn авторизовать уже через пользователей в системе.

Ставим на vpn все необходимое и подключаемся к ипе (подробности в ранних постах).

yum install -y ipa-client
ipa-client-install --mkhomedir

И тут оно обламывается. По простой причине – для vpn.local.multik.org нет адреса в базе. А у машины два локальных интерфейса и какой использовать для чего – непонятно.

Идем в виртуалку с ipa и добавляем

[root@ipa ~]# kinit admin
Password for admin@LOCAL.MULTIK.ORG:
[root@ipa ~]# ipa dnsrecord-add
Record name: vpn
Zone name: local.multik.org
Please choose a type of DNS resource record to be added
The most common types for this type of zone are: A, AAAA

DNS resource record type: A
A IP Address: 10.100.0.133
Record name: vpn
A record: 10.100.0.133

И снова пробуем – теперь все получится.

Теперь небольшой трюк. Что бы не давать по умолчанию доступ до VPN всем, я создам новый “сервис”.

cd /etc/pam.d/
ln -s system-auth openvpn

Теперь Осталось мелочь – создать в ипе HBAC сервис openvpn и установить правила. Создаем сервис, группу для него и соединяем вместе

[root@ipa ~]# ipa hbacsvc-add openvpn
----------------------------
Added HBAC service "openvpn"
----------------------------
Service name: openvpn

[root@ipa ~]# ipa hbacrule-add allow_openvpn
-------------------------------
Added HBAC rule "allow_openvpn"
-------------------------------
Rule name: allow_openvpn
Enabled: TRUE

[root@ipa ~]# ipa hbacrule-add-service allow_openvpn --hbacsvcs=openvpn
Rule name: allow_openvpn
Enabled: TRUE
Services: openvpn
-------------------------
Number of members added 1
-------------------------

Проверяю, что натворил.

[root@ipa ~]# ipa hbacrule-find allow_openvpn
-------------------
1 HBAC rule matched
-------------------
Rule name: allow_openvpn
Enabled: TRUE
Services: openvpn
----------------------------
Number of entries returned 1
----------------------------

Добавляю к правилу пользователя и хост

[root@ipa ~]# ipa hbacrule-add-user allow_openvpn --user=multik
Rule name: allow_openvpn
Enabled: TRUE
Users: multik
Services: openvpn
-------------------------
Number of members added 1
-------------------------

[root@ipa ~]# ipa hbacrule-add-host allow_openvpn --hosts=vpn.local.multik.org
Rule name: allow_openvpn
Enabled: TRUE
Users: multik
Hosts: vpn.local.multik.org
Services: openvpn
-------------------------
Number of members added 1
-------------------------

Проверяю, что сработает на меня и на админа (который вроде как и не должен иметь доступ)

[root@ipa ~]# ipa hbactest --user=admin --host=vpn.local.multik.org --service=openvpn
--------------------
Access granted: True
--------------------
Matched rules: allow_all
Not matched rules: allow_openvpn

[root@ipa ~]# ipa hbactest --user=multik --host=vpn.local.multik.org --service=openvpn
--------------------
Access granted: True
--------------------
Matched rules: allow_all
Matched rules: allow_openvpn

Как вижу, в системе есть правило по умолчанию, которое дает доступ всем до всего. Но если его просто выкусить, то я тупо лишусь доступа И по ssh тоже. Поэтому надо сделать аналогичное для ssh

[root@ipa pam.d]# cd
[root@ipa ~]# ipa hbacsvc-add sshd
ipa: ERROR: HBAC service with name "sshd" already exists

Опс, сервис такой уже по умолчанию есть. Ну пойду дальше

[root@ipa ~]# ipa hbacrule-add allow_sshd
----------------------------
Added HBAC rule "allow_sshd"
----------------------------
Rule name: allow_sshd
Enabled: TRUE
[root@ipa ~]# ipa hbacrule-add-service allow_sshd --hbacsvcs=sshd
Rule name: allow_sshd
Enabled: TRUE
Services: sshd
-------------------------
Number of members added 1
-------------------------
[root@ipa ~]#

ipa hbacrule-add-user allow_sshd --user=multik
ipa hbacrule-add-host allow_sshd --hosts=vpn.local.multik.org

Проверяю

[root@ipa ~]# ipa hbactest --user=admin --host=vpn.local.multik.org --service=sshd
--------------------
Access granted: True
--------------------
Matched rules: allow_all
Not matched rules: allow_openvpn
Not matched rules: allow_sshd
[root@ipa ~]# ipa hbactest --user=multik --host=vpn.local.multik.org --service=sshd
--------------------
Access granted: True
--------------------
Matched rules: allow_all
Matched rules: allow_sshd
Not matched rules: allow_openvpn

Все на месте. Выкусываю нафиг
[root@ipa ~]# ipa hbacrule-disable allow_all
------------------------------
Disabled HBAC rule "allow_all"
------------------------------

Согласно выводу выше, я теперь не могу залогиниться на хост vsemoe-com пользователем multik.

[root@ipa ~]# ssh multik@vsemoe-com
multik@vsemoe-com's password:
Connection closed by UNKNOWN

Не соврала система. “Не пущаит”. Проверяю почему

[root@ipa ~]# ipa hbactest --user=multik --host=vsemoe-com.local.multik.org --service=sshd
---------------------
Access granted: False
---------------------
Not matched rules: allow_openvpn
Not matched rules: allow_sshd

Добавляю хост, как разрешенный к коннекту на него по ssh

[root@ipa ~]# ipa hbacrule-add-host allow_sshd --hosts=vsemoe-com.local.multik.org
Rule name: allow_sshd
Enabled: TRUE
Users: multik
Hosts: vpn.local.multik.org, vsemoe-com.local.multik.org
Services: sshd
-------------------------
Number of members added 1
-------------------------

Будет пускать?

[root@ipa ~]# ipa hbactest --user=multik --host=vsemoe-com.local.multik.org --service=sshd
--------------------
Access granted: True
--------------------
Matched rules: allow_sshd
Not matched rules: allow_openvpn

Должно. Проверяю

[root@ipa ~]# ssh multik@vsemoe-com
multik@vsemoe-com's password:
Last failed login: Thu Jan 28 12:53:43 MSK 2016 from 2a01:4f8:171:1a43:5054:ff:fea4:8c6 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Mon Jan 25 16:51:46 2016 from 10.100.0.254

Как говорится, работает. Теперь последняя проверка: пустит ли пользователя multik на хосте vpn для сервиса openvpn?

[root@ipa ~]# ipa hbactest --user=multik --host=vpn.local.multik.org --service=openvpn
--------------------
Access granted: True
--------------------
Matched rules: allow_openvpn
Not matched rules: allow_sshd

Для vpn пустит, а по ssh не пустит. Теперь остались сущие мелочи. Добавялем в конфиг сервера

plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn

а в конфиг клиента

auth-user-pass

и пробуем

$ sudo openvpn --config confif.vpn
Thu Jan 28 04:57:42 2016 OpenVPN 2.3.8 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Aug 4 2015
Thu Jan 28 04:57:42 2016 library versions: OpenSSL 1.0.1e-fips 11 Feb 2013, LZO 2.06
Enter Auth Username: ******
Enter Auth Password: ***********

Как видим, спросило логин и пароль. И дальше как обычно. Но каждый раз вводить логин и пароль лень. Всякие ViscoCity и прочие умеют это. Научим и консольного клиента.

Сделаем обычный текстовый файлик из 2х строчек: логина и пароля. И укажем его имя сразу после auth-user-pass. Если все сделано правильно, то openvpn ничего не будет спрашивать, а просто возьмет и прицепится.

Теоретически, на этом можно и закончить процесс. Но некрасиво как-то. “Клиентами” моего сервиса будут люди, далекие от техники. Дизайнеры всякие и менеджеры. Пока им объяснишь, чего куда совать и на что нажимать …

Технология очень простая. Берем исходный конфиг для клиента, и добавляем к нему следующие строки

key-direction 1

<ca>
—–BEGIN CERTIFICATE—–
ca.crt
—–END CERTIFICATE—–
</ca>

<cert>
—–BEGIN CERTIFICATE—–
client.crt
—–END CERTIFICATE—–
</cert>

<key>
—–BEGIN PRIVATE KEY—–
client.key
—–END PRIVATE KEY—–
</key>

<tls-auth>
—–BEGIN OpenVPN Static key V1—–
ta.key
—–END OpenVPN Static key V1—–
</tls-auth>

Внутрь просто копируем содержимое соответствующих файлов. Любым текстовым редактором. Ну и убираем строки

ca ca.crt
cert client.crt
key client.key

Полученному файлу надо поставить расширение ovpn и его магическим образом станут понимать практически все системы, заявляющие о поддержке openvpn.

Всё. Я получил в свое распоряжение VPN сервер. Управляемый хоть из консоли, хоть из веб-морды (как? я не писал? сходите браузером на адрес ipa сервера). Ну вообще-то не только VPN сервер, но в этой рассказке я писал только про VPN.

Удачи!

Игрища с сервером – 1

Или даешь централизацию! Сервер установлен, некоторые виртуалки перенесены, а некоторые удалены. Надо облегчать себе жизнь.

Уже сейчас на хосте размещено с десяток виртуалок. И уже сейчас всеми ими рулить скучно. Зашел на одну, обновил, сходил на другую, обновил. А пароли поменять? А дать доступ очередному фрилансеру и потом не забыть его отобрать? В общем, тяжело. Было.

Первым делом надо поставить единую систему авторизации. Что бы все пароли были в одном месте и думать не надо было. Так как основной системой везде у меня CentOS, то самым логичным кандидатом на эту тему становится FreeIPA.

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

yum -y install ipa-server bind bind-dyndb-ldap ipa-server-dns
ipa-server-install --setup-dns --mkhomedir

Если что-то где-то накосячили (а вы в первый раз обязательно накосячите), то всегда можно убрать все в первоначальное состояние.
ipa-server-install --uninstall

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

Итак, оно вроде сказало, что готово. Чего делаем? Первым делом – сделаем, что бы у пользователей по умолчанию был шелл /bin/bash, а не /bin/sh.

kinit admin
ipa config-mod --defaultshell=/bin/bash

И добавлю себя любимого

# ipa user-add
First name: Viacheslav
Last name: Kaloshin
User login [vkaloshin]: multik
-------------------
Added user "multik"
-------------------
User login: multik
First name: Viacheslav
Last name: Kaloshin
Full name: Viacheslav Kaloshin
Display name: Viacheslav Kaloshin
Initials: VK
Home directory: /home/multik
GECOS: Viacheslav Kaloshin
Login shell: /bin/bash
Kerberos principal: multik@LOCAL.MULTIK.ORG
Email address: multik@local.multik.org
UID: 1624000001
GID: 1624000001
Password: False
Member of groups: ipausers
Kerberos keys available: False

и поменяем пароль мне (в принципе можно было это сделать и сразу, но так интересней)

# ipa user-mod multik --password
Password:
Enter Password again to verify:
----------------------
Modified user "multik"
----------------------
User login: multik
First name: Viacheslav
Last name: Kaloshin
Home directory: /home/multik
Login shell: /bin/bash
Email address: multik@local.multik.org
UID: 1624000001
GID: 1624000001
Account disabled: False
Password: True
Member of groups: ipausers
Kerberos keys available: True

Теперь в принципе можно проверить, залогинившись на хост свежесозданным пользователем

# ssh multik@10.100.0.10
multik@10.100.0.10's password:
Password expired. Change your password now.
Creating home directory for multik.
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user multik.
Current Password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
Connection to 10.100.0.10 closed.

Как видим, система принудительно заставляет пользователя сменить пароль. Это хорошо.

В принципе, можно все необходимое делать из консоли, а можно и с веб-интерфейса – просто браузером сходите и все сами увидите.

Но это только начало. Нам надо к этой системе подключить остальные виртуалки. Для этого надо сделать две простые вещи: настроить DNS и поставить клиента ipa. Пока для проверки, я это сделаю только на одном хосте.

на виртуалке:

# cat /etc/resolv.conf
search local.multik.org
nameserver 10.100.0.10
nameserver 10.100.0.254

на ipa надо открыть днс:

firewall-cmd --permanent --add-port=53/tcp
firewall-cmd --permanent --add-port=53/udp
firewall-cmd --reload

и опять на виртуалке

# ping ipa -c 2
PING ipa.local.multik.org (10.100.0.10) 56(84) bytes of data.
64 bytes from ipa.local.multik.org (10.100.0.10): icmp_seq=1 ttl=64 time=0.344 ms
64 bytes from ipa.local.multik.org (10.100.0.10): icmp_seq=2 ttl=64 time=0.461 ms

--- ipa.local.multik.org ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.344/0.402/0.461/0.061 ms

Отлично. Теперь подключим виртуалку

На ipa

firewall-cmd --permanent --add-service={ntp,http,https,ldap,ldaps,kerberos,kpasswd}
firewall-cmd --reload

на виртуалке

yum install -y ipa-client
# ipa-client-install --mkhomedir
Discovery was successful!
Client hostname: vsemoe-com.local.multik.org
Realm: LOCAL.MULTIK.ORG
DNS Domain: local.multik.org
IPA Server: ipa.local.multik.org
BaseDN: dc=local,dc=multik,dc=org

Continue to configure the system with these values? [no]: yes
Synchronizing time with KDC...
Attempting to sync time using ntpd. Will timeout after 15 seconds
User authorized to enroll computers: admin
Password for admin@LOCAL.MULTIK.ORG:
Successfully retrieved CA cert
Subject: CN=Certificate Authority,O=LOCAL.MULTIK.ORG
Issuer: CN=Certificate Authority,O=LOCAL.MULTIK.ORG
Valid From: Mon Jan 25 12:03:20 2016 UTC
Valid Until: Fri Jan 25 12:03:20 2036 UTC

Enrolled in IPA realm LOCAL.MULTIK.ORG
Created /etc/ipa/default.conf
New SSSD config will be created
Configured sudoers in /etc/nsswitch.conf
Configured /etc/sssd/sssd.conf
Configured /etc/krb5.conf for IPA realm LOCAL.MULTIK.ORG
trying https://ipa.local.multik.org/ipa/json
Forwarding 'ping' to json server 'https://ipa.local.multik.org/ipa/json'
Forwarding 'ca_is_enabled' to json server 'https://ipa.local.multik.org/ipa/json'
Systemwide CA database updated.
Added CA certificates to the default NSS database.
Hostname (vsemoe-com.local.multik.org) does not have A/AAAA record.
Missing reverse record(s) for address(es): 10.100.0.178, 2a01:4f8:171:1a43:5054:ff:fe51:f70e.
Adding SSH public key from /etc/ssh/ssh_host_rsa_key.pub
Adding SSH public key from /etc/ssh/ssh_host_ecdsa_key.pub
Adding SSH public key from /etc/ssh/ssh_host_ed25519_key.pub
Forwarding 'host_mod' to json server 'https://ipa.local.multik.org/ipa/json'
SSSD enabled
Configured /etc/openldap/ldap.conf
NTP enabled
Configured /etc/ssh/ssh_config
Configured /etc/ssh/sshd_config
Configuring local.multik.org as NIS domain.
Client configuration complete.

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

[root@ipa ~]# host vsemoe-com
vsemoe-com.local.multik.org has address 10.100.0.178
vsemoe-com.local.multik.org has IPv6 address 2a01:4f8:171:1a43:5054:ff:fe51:f70e

Проверяю, как оно работает

[root@tower ~]# ssh multik@10.100.0.178
multik@10.100.0.178's password:
Creating home directory for multik.
[multik@vsemoe-com ~]$ whoami
multik
[multik@vsemoe-com ~]$ id
uid=1624000001(multik) gid=1624000001(multik) groups=1624000001(multik) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

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

Новый сервер с игрищами и блудницами – 5

Или баррикадируемся от подборщиков паролей.

Захожу я утром на свой сервер, а мне добрая система сообщает

Last failed login: Sat Jan 23 10:23:49 MSK 2016 from 183.3.202.106 on ssh:notty
There were 5278 failed login attempts since the last successful login.

Китайцы и прочий народ ломится, пытается пароль к руту пободрать. Не то, что бы это напрягало, но тем не менее, некрасиво.

-A INPUT -p tcp -m state --state NEW --dport 22 -m recent --update --seconds 20 -j DROP
-A INPUT -p tcp -m state --state NEW --dport 22 -m recent --set -j ACCEPT
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

Как это работает, можно почитать на хабре в комментах.

Поглядел в логи – ляпота и чистота.

Теперь (лично мне) надо поставить 6ю центось. Надо по двум причинам: попробовать графическую консоль (ибо в полном тексте как 7я оно не ставится), и надо для OpenVZ, у которой опять же с 7й еще есть проблемы.

Поначалу я попробовал SPICE, предлагаемый по умолчанию. Тормозит дико. Даже на толстых каналах. Плюс клиентов нет под всякие разные операционки. Попробовал vnc – вот это другое дело. Не скажу, что прямо как “на настоящем”, но работать вполне можно.

virt-install --name openvz --ram 8912 --disk path=/vm/openvz.qcow2,size=8,bus=virtio,cache=none --vcpus 4 --os-type linux --network bridge=virbr0,model=virtio -c /vm/iso/CentOS-6.7-x86_64-minimal.iso --accelerate --noautoconsole --graphics vnc,password=test,listen=10.100.0.254 -v --input tablet,bus=usb

Теперь ssh -L 5900:10.100.0.254:5900 root@host и любым VNC клиентом на 127.0.0.1:5900. Пароль, как видно из команды – test. Просто, удобно и понятно.

Но мне понравилось, что можно в машину забраться и через virsh console. В винтуальной машине делаем

cat /etc/init/ttyS0.conf
stop on runlevel[016]
start on runlevel[345]
respawn
instance /dev/ttyS0
exec /sbin/mingetty /dev/ttyS0

В самый конец /etc/securetty добавляем
ttyS0

И запускаем

initctl start ttyS0

И в общем, должны попасть через virsh console. Для логов загрузки, для kernel в /etc/grub.conf добавляем

console=ttyS0

У меня все получилось. Дальше иду как написано в вики OpenVZ. Ставлю, мигрирую и так далее.

Новый сервер с игрищами и блудницами – 4

Прошлый раз я закончил на том что мне удалось завести сертификат для vsemoe.com. Вручную, но тем не менее. Но доменчиков у меня целая куча и руками для них запрашивать сертификаты каждые три месяца … я слишком ленивый для этого. Да и интернет предлагает разные варианты решения этой проблемы.

Первым делом конфигурирую домены vsemoe.org и kaloshina.com аналогично vsemoe.com

bash-3.2$ host vsemoe.com
vsemoe.com has address 136.243.151.196
vsemoe.com has IPv6 address 2a01:4f8:171:1a43:5054:ff:fee4:b6d1
vsemoe.com mail is handled by 10 mail.multik.org.
bash-3.2$ host kaloshina.com
kaloshina.com has address 136.243.151.196
kaloshina.com has IPv6 address 2a01:4f8:171:1a43:5054:ff:fee4:b6d1
kaloshina.com mail is handled by 10 mail.multik.org.
bash-3.2$ host vsemoe.org
vsemoe.org has address 136.243.151.196
vsemoe.org has IPv6 address 2a01:4f8:171:1a43:5054:ff:fee4:b6d1
vsemoe.org mail is handled by 10 mail.multik.org.

В конфиг nginx добавил

location '/.well-known/acme-challenge' {
default_type "text/plain";
root /tmp/letsencrypt-auto;
}

и попробовал заказать сертификат

./letsencrypt-auto certonly --server https://acme-v01.api.letsencrypt.org/directory -a webroot --agree-tos --webroot-path=/tmp/letsencrypt-auto/ -d kaloshina.com

Фигу. Создал там файлик test. Сервер в логах упорно ругается

[error] 1346#0: *3 open() "/tmp/letsencrypt-auto/.well-known/acme-challenge/test" failed (2: No such file or directory), client: 91.195.22.23, server: kaloshina.com, request: "GET /.well-known/acme-challenge/test HTTP/1.1", host: "kaloshina.com"

Хотя если проверить вручную, то этот фаил есть

cat /tmp/letsencrypt-auto/.well-known/acme-challenge/test
BLYA

Прочитал про пакость от systemd про приватные /tmp. Сменил

/lib/systemd/system/nginx.service
PrivateTmp=false

Не помогло.

Плюнул и создал каталог /opt/letsencrypt и переместил все туда

./letsencrypt-auto certonly --server https://acme-v01.api.letsencrypt.org/directory -a webroot --agree-tos --webroot-path=/opt/letsencrypt/ -d vsemoe.org
Updating letsencrypt and virtual environment dependencies......
Requesting root privileges to run with virtualenv: /root/.local/share/letsencrypt/bin/letsencrypt certonly --server https://acme-v01.api.letsencrypt.org/directory -a webroot --agree-tos --webroot-path=/opt/letsencrypt/ -d vsemoe.org

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/vsemoe.org/fullchain.pem. Your cert will
expire on 2016-04-18. To obtain a new version of the certificate in
the future, simply run Let's Encrypt again.
- If you like Let's Encrypt, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Сразу же скриптуем это 🙂

# cat /opt/ssl_get
#!/bin/bash
cd /root/letsencrypt
./letsencrypt-auto certonly --server https://acme-v01.api.letsencrypt.org/directory -a webroot --agree-tos --webroot-path=/opt/letsencrypt/ -d $1

и для обновления

# cat ssl_renew
#!/bin/bash
cd /root/letsencrypt
./letsencrypt-auto --renew certonly --server https://acme-v01.api.letsencrypt.org/directory -a webroot --agree-tos --webroot-path=/opt/letsencrypt/ -d $1
service nginx restart

Проверяем. У меня работает. При этом автоматом включился SNI и прекрасно раздает с одного ип-адреса много https сайтов.

Отлично, теперь пора переносить контент сайтов.

Новый сервер с игрищами и блудницами – 3

TL;DR; Статья грустная, в которой ничего почти не получилось, зато узнано много нового.

Почти вся полезная нагрузка сервера – это веб-сервера. Маленькие и не очень, требующие много места и просто пустышки. Так как я хочу сделать так, что бы все сервера были видны из интернета по SSL, то придется сделать ход конем.

Все запросы на http/https будут приходить на nginx. А тот будет работать SSL-декриптором и общаться с серверами уже по чистому http. Делать двойное шифрование-расшифрование я смысла не вижу – только трата процессорного времени. А те, кто знает про ipv6 – получат прямой доступ.

Из особенностей: машинам присваиваю имена сразу в полном формате: nginx.local.multik.org. При этом домен не пересекается с реальным, но является субдоменом. Потом, когда я буду поднимать единую систему авторизации, это сильно облегчит жизнь.

Делаем машинку для nginx

virt-install --name nginx --ram 1024 --disk path=/vm/nginx.qcow2,size=8,bus=virtio,cache=none --vcpus 2 --os-type linux --network bridge=virbr0,model=virtio --location /vm/iso/CentOS-7-x86_64-DVD-1511.iso --extra-args='console=tty0 console=ttyS0,115200n8 serial' --nographics --accelerate

и для первого сервера vsemoe.com, на котором буду тренироваться.

virt-install --name vsemoe.com --ram 1024 --disk path=/vm/vsemoe.com.qcow2,size=8,bus=virtio,cache=none --vcpus 1 --os-type linux --network bridge=virbr0,model=virtio --location /vm/iso/CentOS-7-x86_64-DVD-1511.iso --extra-args='console=tty0 console=ttyS0,115200n8 serial' --nographics --accelerate

На всякий случай проверяем, что машинки в автозапуске

virsh autostart nginx
virsh autostart vsemoe.com

На nginx – обновляемся, ставим epel-release, nginx, проколупываем дырки и ребутимся

yum update
yum install epel-release
yum install nginx
systemctl enable nginx
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https

на vsemoe – обновляемся, ставим апач и далее по тексту

yum update
yum install httpd
systemctl enable httpd
firewall-cmd --permanent --zone=public --add-service=http

Nginx получил адреса 10.100.0.186 и 2a01:4f8:171:1a43:5054:ff:fee4:b6d1
vsemoe.com 10.100.0.178 и 2a01:4f8:171:1a43:5054:ff:fe51:f70e

Теперь иду на DNS и делаю так, что бы все видели vsemoe.com по правильным адресам

$ host vsemoe.com
vsemoe.com has address 136.243.151.196
vsemoe.com has IPv6 address 2a01:4f8:171:1a43:5054:ff:fe51:f70e

Добавляем на хосте

firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toaddr=10.100.0.186 --permanent

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload

И ничего не работает. Вернее, все попытки возвращаются как connection refused. Однако если на хосте поднять nc -l 80, то все получается. Вывод – не работает порт-форвардинг.

Проверяю

[root@tower ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
[root@tower ~]# cat /proc/sys/net/ipv4/ip_forward
1

Все на месте. Проверяю “ручной режим”

systemctl stop firewalld
iptables -t nat -A PREROUTING -d 136.243.151.196 -i eth0 -p tcp -m multiport --dports 80 -j DNAT --to-destination 10.100.0.186

Работает. Значит где-то проблема в правилах. Читаем вывод iptables -S и натыкаемся на баг 1079088

iptables -D FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable

и все заработало. По крайней мере я увидел в браузере заставку от nginx.

firewall-cmd --permanent --zone=public --add-service=https --permanent
firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toaddr=10.100.0.186 --permanent

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

[root@tower ~]# cat > /usr/bin/firewall-restart
#!/bin/bash
firewall-cmd --reload && sleep 1 && iptables -D FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
[root@tower ~]# chmod +x /usr/bin/firewall-restart

Пробуем телнетом

[root@outpost ~]# telnet vsemoe.com 80
Trying 2a01:4f8:171:1a43::2...
telnet: connect to address 2a01:4f8:171:1a43::2: Connection refused
Trying 136.243.151.196...
Connected to vsemoe.com.
Escape character is '^]'.

Так как ipv6 порты не форвардятся, то меняем адрес vsemoe.com на нормальный и пробуем

[root@outpost ~]# telnet vsemoe.com 80
Trying 2a01:4f8:171:1a43:5054:ff:fe51:f70e...
Connected to vsemoe.com.
Escape character is '^]'.
^]

Все, как и полагается. ipv4 идет на nginx, а ipv6 – напрямую на сервер.

Теперь правим nginx. Мне надо, что бы в логах указывалось, к какому серверу изначально был запрос. Добавляю “$server_name” в log-format

Добавляю описание сайта

# cat /etc/nginx/conf.d/vsemoe.com.conf
server {
listen 80;
server_name vsemoe.com www.vsemoe.com;

location ~ /.svn/ {
deny all;
}

location / {
proxy_pass http://10.100.0.178;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_buffer_size 4K;
proxy_buffers 64 4K;
}
}

Перезагружаю и вижу в браузере уже заставку apache. Значит, сработало. Сходил с ipv6 машинки – опять показало. Ура, значит еще один шаг сделан. Теперь надо зашифроваться.

Покупать сертификаты я пробовал – чертовски невыгодная штука. Но благодаря разным людям появился проект Let’s Encrypt, который позволяет получить сертификат бесплатно.

Что бы не мучаться с заставками, на vsemoe.com создал маленькую страничку

cat > index.html
this is vsemoe.com site
[root@outpost ~]# curl -4 vsemoe.com
this is vsemoe.com site
[root@outpost ~]# curl -6 vsemoe.com
this is vsemoe.com site

Опять же работает. Пора пробовать letsencypt

yum install git
git clone https://github.com/letsencrypt/letsencrypt letsencrypt

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

Убираю правила

firewall-cmd --zone=public --remove-forward-port=port=443:proto=tcp:toaddr=10.100.0.186 --permanent
firewall-cmd --zone=public --remove-forward-port=port=80:proto=tcp:toaddr=10.100.0.186 --permanent

И все работает. Добавляю – падает. Читаю вывод iptables -S и понимаю, что там тупо все пакеты пытаются завернуться на nginx. Ни слова про интерфейс или адрес. Читаю маны и понимаю, что оно должно, но не работает. Пробую создать спец-правила

firewall-cmd --add-rich-rule='rule family="ipv4" destination address="136.243.151.196" forward-port to-addr="10.100.0.186" to-port="80" protocol="tcp" port="80"' --permanent
firewall-cmd --add-rich-rule='rule family="ipv4" destination address="136.243.151.196" forward-port to-addr="10.100.0.186" to-port="443" protocol="tcp" port="443"' --permanent

Интернет пропадает …

firewall-cmd --remove-rich-rule='rule family="ipv4" destination address="136.243.151.196" forward-port to-addr="10.100.0.186" to-port="80" protocol="tcp" port="80"' --permanent
firewall-cmd --remove-rich-rule='rule family="ipv4" destination address="136.243.151.196" forward-port to-addr="10.100.0.186" to-port="443" protocol="tcp" port="443"' --permanent

… и появляется. В конфигах (/etc/firewalld) все правильно, а в реальных правилах – ни слова про адреса. А день потерян …

Выкидываем firewalld и ставим старый добрый iptables

systemctl stop firewalld
yum -y install iptables-services
systemctl enable iptables
systemctl enable ip6tables
systemctl start iptables
systemctl start ip6tables
iptables -t nat -A PREROUTING -d 136.243.151.196 -i eth0 -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 10.100.0.186
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to-source 136.243.151.196
iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited
ip6tables -D FORWARD -j REJECT --reject-with icmp6-adm-prohibited
service iptables save
service ip6tables save
yum remove firewalld

И отправляю машину в ребут, что бы проверить. Вижу кучу лишних правил, которые насовал kvm, что бы выпустить машины в интернет.

virsh net-destroy default
virsh net-edit default
virsh net-start default

Но правила все равно продолжают добавляться. Нашел еще один баг 433484. Там предлагают на хуки повешать все.

Лень. Проще в /etc/rc.d/rc.local добавить строчки


echo "Waiting for libvirt start"
sleep 5
service iptables restart
service ip6tables restart

Теперь вроде работает. Все и везде.

git clone https://github.com/letsencrypt/letsencrypt letsencrypt
cd letsencrypt/
./letsencrypt-auto

Поставит дикую кучу всего, после чего завершится со словами

Creating virtual environment...
Updating letsencrypt and virtual environment dependencies......
Requesting root privileges to run with virtualenv: /root/.local/share/letsencrypt/bin/letsencrypt
No installers are available on your OS yet; try running "letsencrypt-auto certonly" to get a cert you can install manually

Ну хорошо, торможу nginx

service nginx stop

И пускаю скриптик

./letsencrypt-auto certonly

Он у меня спрашивает разные вещи (типа емайла или домена) и завершается с

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/vsemoe.com/fullchain.pem. Your cert will
expire on 2016-04-16. To obtain a new version of the certificate in
the future, simply run Let's Encrypt again.
- If you like Let's Encrypt, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Быстренько копирую конфиг для сервера

cat vsemoe.com.conf
server {
listen 80;
listen [::]:80;
server_name vsemoe.com www.vsemoe.com;

location ~ /.svn/ {
deny all;
}

location ~ /.ht {
deny all;
}

location '/.well-known/acme-challenge' {
default_type "text/plain";
root /tmp/letsencrypt-auto;
}

location / {
return 301 https://$server_name$request_uri;
}
}

server {
listen 443 ssl spdy;
listen [::]:443 ssl spdy;

ssl_certificate /etc/letsencrypt/live/vsemoe.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/vsemoe.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/vsemoe.com/fullchain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;

# openssl dhparam -out /etc/nginx/dhparam.pem 2048
ssl_dhparam /etc/nginx/dhparam.pem;

# What Mozilla calls "Intermediate configuration"
# Copied from https://mozilla.github.io/server-side-tls/ssl-config-generator/
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;

# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;

resolver 8.8.8.8 8.8.4.4 valid=86400;
resolver_timeout 10;

location / {
proxy_pass http://10.100.0.178;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_buffer_size 4K;
proxy_buffers 64 4K;
}
}

Генерирую требуемое (долго идет)

openssl dhparam -out /etc/nginx/dhparam.pem 2048

Перезапускаю nginx, захожу браузером … и ляпота!

Screenshot 2016-01-17 20.37.26

Ну и проверка …

Screenshot 2016-01-17 20.47.00

Следующим шагом разрулим ситуацию с ipv6.