• Пока в твиттыре все анонсируют на эппл, у меня вопрос: Спецы по bind/power/anyother dns server есть? Хочу странного, чтобы локальный рекурсивный резолвер возвращал 127.0.0.1 если не нашел хост. Задача простая, если я вбил в браузер someshit.fuckingshit.jpg — отправить меня в локальный http сервер. Идеи, предложения, коментарии?
    ♡ recommended by @lomalkin, @Yurtaev, @gelin

Replies (35)

  • @bb, проксиком не?
  • @ViolentOr, каким проксиком-та?
  • @bb, практически любой коммерческий умеет показывать кастомную страницу ошибки
  • @bb, на Twisted forwarder сделать. он тупо форвардит запросы к кэширующему и перехватывает ответы. думаю за часа 2-3 напишешь
  • @bb, Нужно прописать в какой–нибудь зоне *.subdomain.tld A 127.0.0.1, затем в настройках сети добавить суффикс поиска subdomain.tld. Например, я настроил localhost.toom.su
  • @OCTAGRAM, а если это например jpg.schors.spb.ru ? чёткий ответ даст "та сторона". или это не подразумевалось?
  • @schors, Что есть «та сторона»?
  • @schors, прикинь. Не смог. gist.github.com расскажи где ошибка? сейчас оно должно исправлять только домены, где есть пробел. Но сцуко не работает :(
  • @schors, Этот домен резолвится, значит, резолвер не пойдёт перебирать DNS суффиксы поиска
  • @OCTAGRAM, а блин, я забыл. но если есть отрицательный чёткий ответ — он тоже не пойдёт
  • @OCTAGRAM, у меня сейчас голова так не работает — надо доку смотреть. ты хоть откаменти что там что. ты сейчас перехватываешь имя, а тебе вроде ответ надо
  • @OCTAGRAM, 1. я тут вижу какую-то ошибку. ты не disResolverBackend имел ввиду? dnsFactory = server.DNSServerFactory(caches=[cache.CacheResolver()], clients=[disBackend])
  • @OCTAGRAM, не, я не прав. ох. надо твой стиль ещё понять
  • @schors, надо отлаживать. повесь его и смотри где он что ловит командами dig тем же самыми
  • @schors, он висит на хосте 178.79.148.141.
    仝 ~ » dig 'the-b .ru' @178.79.148.141 | grep -v '^;'
    the-b\032.ru. 5 IN A 178.79.148.141
    ОДНАКО
    仝 ~ » ping 'the-b .ru'
    ping: cannot resolve the-b .ru: Unknown host


    чо ему надо блин?
  • @bb, а что у тебя в /etc/resolve.conf
  • @schors, и даже больше —
    仝 ~ » host 'the-b .ru'
    the-b\032.ru has address 178.79.148.141
    Host the-b\032.ru not found: 3(NXDOMAIN)
    Host the-b\032.ru not found: 3(NXDOMAIN)
    откуда, сцуко?
  • @schors,
    仝 ~ » cat /etc/resolv.conf | grep -v '^#'
    domain WAG320N
    nameserver 178.79.148.141
  • @bb, так.... он зачем-то куда-то ещё ходит...
  • @bb, система кто?
  • @bb, и как ты свой tac запускаешь? у меня молча Stopped
  • @schors, система линукс и мак, одинаково. sudo twistd -ny dnass.py
  • @bb, повесь обёртку на self._lookup(). я что-то немного голову сломал сейчас
  • @bb, ну в смысле, я не уверен в хэндшейке при том же пинге. что и зачем он там спрашивает.
  • @bb, с host всё понятно — он пытается там мыло найти, soa и прочую хрень
  • @schors, вот блин, ты понимаешь, блеск и нищета оупенсорца. И дело вообще нифига не в пинге. Вот так 仝 ~ » telnet 'the-b .ru' 80 1 ↵
    the-b .ru: nodename nor servname provided, or not known те же яйца
  • @bb, это заглюки DNS скорее. говорю — повесь обёртку трассировки на _lookup() — посмотри что собака такая спрашивает
  • @bb, смотри. ты когда конкретную запись попросил (A) — он тебе чётко отвечает. а когда ты gethostbyname() делать — я вот хер помнит какая там последовательность действий предполагается у клиента. возможно и не чёткая A
  • @bb, я сейчас не очень жажду напоминать себе RFC по DNS. поэтому советую бэк-инжиниринг быстрый провести — что собака спрашивает. выведи на экран запросы из _lookup()
  • @schors, нарисовал обертку. Помогло :) всетаки одна голова хорошо, а Щорс еще лучше!
  • @bb, и что было?
  • @schors, ну ты прав был, глюки DNS. Если коротко — по непонятной причине залип резолвер. Помог touch /etc/resolv.conf
  • @bb, оужас
  • @schors, Нет, я имел в виду самые обычные сетевые настройки. DNS–суффикс есть и в Windows, и в *nix. На Windows это Свойства Протокола TCP/IPv4 » Дополнительно » DNS — и там есть список, в который можно домены забивать. На *nix это директива domain в /etc/resolv.conf. У меня в Mac OS X в GUI это называется Домены поиска
  • @bb, Можно из nginx сделать http прокси и им уже вместо 4хх 5хх иже с ними, проксить на localhost. Я тут писал когда-то blog.mosquito.su