• Google Public DNS тихо включили поддержку DNS over TLS
    0

    Вспоминаю как я пытался на Кипре залить на сервер в Питере 100 гигов и отказался от этой затеи как раз из-за сети с кучей потерь, там это почти норма.

  • Google Public DNS тихо включили поддержку DNS over TLS
    0

    Тут как раз трюк в том что соединения не прибиваются, аля мы "экономим" на хендшейке. Cкепсис правильный, работая с серверами я забыл что потери бывают разные.


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

  • Google Public DNS тихо включили поддержку DNS over TLS
    0

    В libc по умолчанию таймаут в 5 секунд (man resolv.conf), если явно в resolv.conf не исправить на что-то поменьше.
    Persistent DNS Connections for Reliability and Performance

  • Google Public DNS тихо включили поддержку DNS over TLS
    +2

    Есть экспериментальный RFC 8094 "DNS over DTLS", в нём есть такие строчки:


    DTLS session resumption consumes one round trip, whereas TLS session resumption can start only after the TCP handshake is complete. However, with TCP Fast Open [RFC7413], the implementation can achieve the same RTT efficiency as DTLS.

    DNS ходит по UDP по историческим причинам, 30 лет назад сети были мееедленные. Хотя и тогда никто не запрещал ходить по TCP.


    На тему современных отношений DNS и TCP, копипаста ответа Anand Buddhdev на вопрос почему зона .org отваливается если включить валидацию DNSSEC на рекурсоре (и забыть убрать опцию tcp: no):


    Don't disable TCP. TCP is required for proper operation of DNS, especially if you want to do DNSSEC validation. Many of the signed responses can be large. For example, the DNSKEY response for .ORG is 1625 bytes, and sometimes TCP is required in order to retrieve such large responses. Disabling TCP can cause DNSSEC validation to fail.

    Ещё есть интересная затея с DNS over QUIC

  • Визуализация связей процессов в Linux
    +1

    Мне в качестве конечного формата больше svg нравится (dot -T svg > a.svg), его можно в браузере открыть, помасштабировать и, самое главное, текст копипастить.

  • Визуализация связей процессов в Linux
    +2

    Тогда там и lsof может не быть :D


    Пайпы в помощь:


    ssh my-little-server '[sudo] lsof -n -F' | python lsofgraph.py | ...

    sudo "в лоб" не везде взлетит, конечно. В целом, сам граф можно построить где угодно если есть возможность передать вывод lsof с сервера куда-нибудь ещё

  • Давайте уже разберемся в DNS
    0

    В список RFC можно ещё добавить 1912 "Common DNS Operational and Configuration Errors".

  • Управление контейнерами с LXD
    0

    Коротко: создаёте файловую систему, добавляете метаинформацию, пакуете в тарбол и импортируете в LXD


    На https://images.linuxcontainers.org/ пишут следующее:
    "All images available on this server are generated using community supported, upstream LXC image templates available here." И далее по тексту идут ссылки на CI-скрипты сборки образов.


    Так что можно посмотреть имена шаблонов lxc-контейнеров и использовать их для создания образов LXD с помощью представленных ci-скриптов.


    Отдельная документация про формат образов:
    https://github.com/lxc/lxd/blob/master/doc/image-handling.md#image-format


    Про процедуру создания и импорта образа описано в "LXD 2.0: Image management" (перевод)

  • Управление контейнерами с LXD
    +2

    Вот тут (перевод) сказано что самый простой способ — расшарить public-образы (соответствующий флаг образа) на одном из lxd-серверов:


    lxc config set core.https_address "[::]:8443"

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


    lxc remote add <some name> <IP or DNS> --public

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

  • Хранение конфига ssh в ansible проекте и решение проблемы с туннелями при использовании относительного пути
    0

    А dns вашу проблему не решает?


    В целом, довольно элегантное решение. Спасибо!

  • Gogs: легковесный git-сервис
    +1

    Ещё есть Pagure: https://pagure.io/pagure
    Написан на питоне, используется для проектов Fedora.


    "pull-реквесты, issues, хранятся вместе с проектом, в Git-репозитории."

  • Пособие по Ansible
    +2

    По поводу "Откатываемся, если есть проблемы": для обработки ошибок лучше использовать появившиеся в версии 2.0 (актуальная — 2.1) специально для этого предназначенные "блоки".


    Оф. документация: http://docs.ansible.com/ansible/playbooks_blocks.html#error-handling


    Копипаста чтобы по ссылке не ходить:


     tasks:
      - block:
          - debug: msg='i execute normally'
          - command: /bin/false
          - debug: msg='i never execute, cause ERROR!'
        rescue:
          - debug: msg='I caught an error'
          - command: /bin/false
          - debug: msg='I also never execute :-('
        always:
          - debug: msg="this always executes"
  • Яндекс открывает ClickHouse
    0

    Для теста хватит, если в бой — всё равно переписывать.
    Ждём оффициального образа :)

  • Яндекс открывает ClickHouse
    +1

    https://github.com/jeefy/docker-clickhouse:


    docker run -p 8123:8123 -p 9000:9000 jeefy/clickhouse
  • Ubuntu Server 16.04: что нового
    0
    Для чего вы используете IPv6? Какой кейс использования?
    Какой у вас объем IPv6-трафика относительно IPv4?
  • Самая базовая потребность: как мы реализовали DNS-хостинг в «Mail.Ru для бизнеса»
    0
    Судя по rtt, ns1.ens.mail.ru находится в Москве, а где расположен ns2.ens.mail.ru?
    Будут ли авторитетные серверы доступны по IPv6?

    От промо тоже не откажусь :D
  • Самая базовая потребность: как мы реализовали DNS-хостинг в «Mail.Ru для бизнеса»
    0
    Имхо, если большинство ваших пользователей в России, то используя NS'ы Амазона и записи с маленькими значениями ttl (для быстрого фейловера, например, или ещё какой фичи) вы будете заставлять своих пользователей ждать пока их рекурсоры будут гонять пакеты за тридевять земель.
  • Самая базовая потребность: как мы реализовали DNS-хостинг в «Mail.Ru для бизнеса»
    0
    Используете родную потоковую репликацию postgresql или используете стороннюю триггерную?
  • Самая базовая потребность: как мы реализовали DNS-хостинг в «Mail.Ru для бизнеса»
    0
    Держали или обслуживали? В bind можно затолкать немало, но при тестах пару лет назад bind с одной маленькой зоной смог обработать 28rps загрузив 8 ядер, powerdns же на одном ядре и 10к зон в базе переваривал 100rps на одном ядре (да, packetcache был включён, иначе бы таких цифр не получилось).
  • Самая базовая потребность: как мы реализовали DNS-хостинг в «Mail.Ru для бизнеса»
    0
    Удаление зоны через AXFR? В случае с репликацией базы удаление получается «из коробки», в случае с AXFR вам нужно будет городить агента или ещё какой-нибудь способ очистки слейвов. Нужно ли очищать? с одной стороны — нет, с другой стороны — должен быть порядок и если домен удален из клиентской панели, значит авторитетные серверы не должны больше отвечать на эти запросы.
  • Ansible 2.0 b2. Обзор новшеств
    +3
    В случае плейбуков мы, возможно, ожидаем разное поведение: это работает как отметка тегами сам факт выполнения роли, в то время как вам бы хотелось только выполнение конкретных тегов внутри роли. Верно?

    Как отметка факта выполнения роли — работает уже давно, иначе бы у меня всё сразу поломалось :) в 2.0 тоже работает. Однако действительно есть неоднозначности и расхождения:
    • 1.9.4: если у роли есть зависимости и они внутри не помечены тегом, то таски зависимостей не будут выполнены, только сама роль
    • 2.0b2: если у роли есть зависимости и они внутри не помечены тегом, то зависимостей выполняются.

    Что касается указания зависимостей в meta для выполнения конкретных тасков требуемых ролей: не работает ни в одной из версий.

    Должен признать что раньше с тегами у нас не возникало никаких проблем, но, похоже, нужно копнуть эту тему поглубже и идти бодаться в issues :)
  • Ansible 2.0 b2. Обзор новшеств
    0
    В плее в таком виде — работает:
      roles:
        - role: selectel.grafana
          grafana_use_official_repository: no
          tags:
            - grafana
            - powerdns_dashboard
    

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

    Приведите, пожалуйста, более полный пример и где возникает ошибка. Особенно интересует часть про «в зависимостях роли».
  • Ansible 2.0 b2. Обзор новшеств
    +3
    async относится к выполнению таска, т.е. запустили таск и пошли дальше, причём сделали это на всей группе хостов синхронно.

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

    Т.к. стратегии реализованы в виде плагинов, то можно реализовать свою специфичную логику (два важных таска — синхронно, следующие — асинхронно). Более подробно реализацию можно посмотреть в коде: github.com/ansible/ansible/blob/devel/lib/ansible/plugins/strategy
  • Ansible 2.0 b2. Обзор новшеств
    0
    проверил в 2.0 — работает, как со --skip-tags=, так и просто c --tags=
    Честно говоря, ранее проблем с этим не замечал. В какой версии проявлялась проблема?
  • Ansible 2.0 b2. Обзор новшеств
    +3
    Скорее положительно. Минимум:

    Так что точно не закапают :D Будут дальше улучшать интеграцию с Fedora/RHEL-based утилитами.
  • Ansible 2.0 b2. Обзор новшеств
    +2
    Я пока проблем с тегами не замечал, а что с ними было не так?
  • Удалённый узел K-root в Селектеле
    +4
    Очень похоже на нас, проверить можно с помощью dig:
    $ dig @k.root-servers.net +nsid +norec  | grep NSID
    ; NSID: 6e 73 31 2e 72 75 2d 6c 65 64 2e 6b 2e 72 69 70 65 2e 6e 65 74  (n) (s) (1) (.) (r) (u) (-) (l) (e) (d) (.) (k) (.) (r) (i) (p) (e) (.) (n) (e) (t)
    

    В зависимости от IPv4/IPv6 ответ может различаться, добавляйте в параметры "-4"/"-6" для явного указания протокола

    Альтернативно можно воспользоваться скриптом nmap (требуются права root'а):

    $ sudo nmap -sSU -p 53 --script dns-nsid k.root-servers.net
    
    Starting Nmap 6.40 ( http://nmap.org ) at 2015-10-16 14:56 MSK
    Nmap scan report for k.root-servers.net (193.0.14.129)
    Host is up (0.0016s latency).
    PORT   STATE SERVICE
    53/tcp open  domain
    | dns-nsid: 
    |   NSID: ns1.ru-led.k.ripe.net (6e73312e72752d6c65642e6b2e726970652e6e6574)
    |   id.server: ns1.ru-led.k.ripe.net
    |_  bind.version: NSD 4.1.3
    53/udp open  domain
    | dns-nsid: 
    |   NSID: ns1.ru-led.k.ripe.net (6e73312e72752d6c65642e6b2e726970652e6e6574)
    |   id.server: ns1.ru-led.k.ripe.net
    |_  bind.version: NSD 4.1.3
    
    Nmap done: 1 IP address (1 host up) scanned in 1.55 seconds
    

    ns1.ru-led.k.ripe.net — хостнейм узла в нашем ДЦ
  • Удалённый узел K-root в Селектеле
    +4
    К сожалению, сайт k-root'а в процессе реорганизации и статистика новых узлов недоступна. Приведу график DNS-запросов к серверу, который нам прислали в сентябре:
    запросы к узлу k-root в Селектеле
    Данные с интерфейсов (зелёный — входящий):
  • Пишем документацию API при помощи RAML
    +2
    Т.е. вы не проектируете, а сразу пишете код?
  • Как мы разработали свой DNS-менеджер
    0
    Powerdns не надо пинать на «перечитку» если используется динамический бэкенд (postgresql в их числе). Разработчики недавно в своём блоге расписали как они с бэкендами работают:
    http://blog.powerdns.com/2015/06/23/what-is-a-powerdns-backend-and-how-do-i-make-it-send-an-nxdomain/
  • Ansible — давайте попробуем
    +1
    В случае, если на этапе бутстрапа вы заранее знаете что питон может отсутствовать, то можно добавить «gather_facts: no» в описание плея

    P.S. с помощью raw можно даже сетевыми железками подруливать.
  • Ansible — давайте попробуем
    +2
    Внешние скрипты можно оформить в vars_plugins, примеры:
    github.com/ansible/ansible/tree/devel/lib/ansible/inventory/vars_plugins
    github.com/ginsys/ansible-plugins/blob/devel/vars_plugins/group_vars_dirs.py (под старую версию ansible, но совместимо)

    Только нужно быть внимательным к порядку раскрытия переменных:
    1. Сначала запускаются vars_plugins
    2. На переменные из 1 накладываются переменные из inventory_dir/{group,host}_vars/
    3. Сверху прилетают переменные из playbook_dir/{group,hosts}_vars

    Поведение update или merge настраивается в ansible.cfg

    Мы используем vars_plugins для разделения переменных пулов следующим образом:
    — общие переменные для всех пулов лежат в /common_group_vars/ и читаются плагином
    — переменные пулов лежат в /pools/<имя пула>/{group,host}_vars/ (инвенторий, соответственно в /pools/<имя пула>/hosts)
    — глобальнные переменные, ссылающиеся на пулоспецифичные можно положить в /group_vars/

    P.S. нужно быть осторожным с версией 1.9.x, оно пытается «раскрыть» при использовании lookup-плагина переменные, которые не используются не то что в текущем таске, но и вообще в плейбуке, поэтому если в переменных есть что-то что ссылается на ещё не созданное или просто ненужное именно сейчас, то можно получить остановку выполнения плейбука на ровном месте.
  • PowerShell Web Access: управление серверами из браузера
    0
    • Windows® Internet Explorer® для Microsoft Windows® 8.0, 9.0, 10.0 и 11.0
    • Mozilla Firefox® 10.0.2
    • Google Chrome™ 17.0.963.56m для Windows
    • Apple Safari® 5.1.2 для Windows
    • Apple Safari 5.1.2 для Mac OS®

    Работает только в указанных версиях??
  • PowerShell Web Access: управление серверами из браузера
    0
    Ага, по спирали. Теперь консоль в браузере изобрели.
  • Как я на домашнем компьютере файлы организовывал, синхронизировал и создавал резервные копии
    0
    Использую seafile для синхронизаци данных между устройствами чуть более полугода (после того как ubuntu one прикрыли), каких-либо проблем и косяков не замечено + умеет версионирование.
  • Google Public DNS не ресолвит некоторые домены
    0
    Интересный вопрос! Можно попробовать вот так, обычно работает:
    hs01:~$ dig chaos txt version.bind @192.168.0.128 +short
    "unbound 1.4.17"
    

    Заодно выяснил что у моего домашнего провайдера в качестве рекурсоров стоят bind'ы 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 и 9.9.5 :)
  • Google Public DNS не ресолвит некоторые домены
    0
    hs01:~/temp/sources$ grep -nB2 PREFETCH_TTL_CALC ./unbound-1.4.22/util/data/msgreply.h 
    55-/** calculate the prefetch TTL as 90% of original. Calculation
    56- * without numerical overflow (uin32_t) */
    57:#define PREFETCH_TTL_CALC(ttl) ((ttl) - (ttl)/10)
    


    Если верить ./unbound-1.4.22/daemon/worker.c и другим немаловажным *.c и *.h, то, вкрадце, работает это так:
    • RR.TTL — время жизни ресурсной записи (RR, Resource Record) в секундах, получаем от авторитетных серверов вместе с самой RR.
    • ttl — время «протухания» RR в кеше. Именно время, в unix timestamp. ttl = now() + RR.TTL
    • prefetch_ttl — время когда уже пора заново идти к авторитетным NS-серверам за правдой, но простой ttl ещё не протух. prefetch_ttl = now() + (RR.TTL — RR.TTL/10)

    От клиента пришёл запрос конкретной RR:
    • если RR не было в кеше — отрезолвили (сходили к авторитетному серверу), посчитали для неё сразу prefetch_ttl и ttl, да положили в кеш.
    • если была в кеше, то (worker.c, строка 935) проверили не протух ли prefetch_ttl: не протух — просто ответили, а если да — отвечаем и обновляем кеш с обновлением prefetch_ttl и ttl (вот она нагрузка +10%).

    Если запросов конкретной RR не приходило — она из кеша удаляется по наступлении ttl и всё хорошо, к авторитетным серверам не ходим, память/проц/трафик не жрём.

    Совсем плохо будет если туннелировать трафик в днс пакетах через такой рекурсер.

    Что же будет плохого? Для туннеля как раз генерируются уникальные имена с маленьким временем жизни (тыц). И эти имена совсем не популярны среди остальных пользователей рекурсора чтобы создавать дополнительную нагрузку.
  • Google Public DNS не ресолвит некоторые домены
    0
    авторитативных
    авторитетных

    раз, два, три

    По содержанию — полностью согласен :)
  • Google Public DNS не ресолвит некоторые домены
    0
    Ни к чему. Он самостоятельно обновляет ресурсную запись если её запросят когда ttl почти «протух» и осталось меньше 10% от оригинального. Т.е. если эти домены спросят один раз — unbound отрезолвит их один раз.
  • Google Public DNS не ресолвит некоторые домены
    +3
    Гуглу можно жаловаться тут:
    https://groups.google.com/forum/#!forum/public-dns-discuss
    code.google.com/a/google.com/p/public-dns/issues/list

    И они даже отвечают

    Тут есть ссылки и советы: developers.google.com/speed/public-dns/groups

    У них ещё есть сервис для сброса кеша для отдельных записей: developers.google.com/speed/public-dns/cache