Проверьте вход в систему Ваши серверы (и компьютеры, они непосредственно продолжают работать). Не только ищите их учетную запись, но также и учетные записи, которые не являются известными администраторами. Ищите дыры в своих журналах. Если журнал событий был недавно очищен на сервере, это - подозреваемый.
Проверьте измененную дату на файлах на Ваших веб-серверах. Запустите быстрый скрипт, чтобы перечислить все недавно измененные файлы и рассмотреть их.
Проверьте последнее обновление дата на всей Вашей групповой политике и пользовательских объектах в AD.
Проверьте, что все Ваши резервные копии работают, и существующие резервные копии все еще существует.
Проверьте серверы, куда Вы выполняете Службы теневого копирования томов для предыдущей истории для пропавших без вести.
Я уже вижу много хороших перечисленных вещей и просто требуемых для добавления этих других вещей, которые можно быстро проверить. Это стоило бы того, чтобы сделать полный обзор всего. Но запустите с мест с новыми изменениями. Некоторые из этих вещей могут быть быстро проверены и могут повысить некоторые ранние красные флаги для выручения Вас.
На самом деле нет способа выполнить вашу задачу, потому что DNS-сервер может разрешать запросы любым удобным для него способом, и для клиента это черный ящик. Однако, можно приблизиться к ответу на ваш вопрос.
Уловка состоит в том, чтобы настроить поддомен со специальным сервером имен, ответ которого на любой запрос A
просто повторяет IP-адрес хоста, который отправил запрос . Такой сервер имен может быть реализован в Perl с помощью модуля Net :: DNS :: Nameserver :
#!/usr/bin/perl
use Net::DNS::Nameserver;
Net::DNS::Nameserver->new(
# w.x.y.z is the IP address of the host where this code is running
LocalAddr => ['w.x.y.z'],
ReplyHandler => sub {
my ($qname, $qclass, $qtype, $peerhost, $query) = @_;
my ($rcode, @ans, @auth, @add) = ('NXDOMAIN');
print "Received query for $qname from $peerhost\n";
if ($qtype eq 'A') {
$rcode = 'NOERROR';
push @ans, Net::DNS::RR->new("$qname 1 $qclass $qtype $peerhost");
}
return ($rcode, \@ans, \@auth, \@add, { aa => 1});
},
)->main_loop;
Затем настройте запись NS
некоторого домена, чтобы она указывала на этот специальный сервер имен. Я сделал это для домена под названием resolverid.acrotect.com
. (В качестве услуги я оставлю код работающим там на следующие несколько дней.)
Затем отправьте несколько разных DNS-запросов от клиента в вашей сети:
dig +short cachebuster1.resolverid.acrotect.com
dig +short cachebuster2.resolverid.acrotect.com
dig +short cachebuster3.resolverid.acrotect.com
Это заставит ваш сервер имен разрешить запросы, связавшись с поддельным сервером имен, который отвечает IP-адресом машины, пересылающей запрос. В некоторых случаях этот адрес является «публичной» стороной вашего «частного» сервера имен, о чем вы и просили.
В остальных случаях инфраструктура более сложная. Например, если вы настроены на использование серверов DNS Google 8.8.8.8 и 8.8.4.4, вы фактически используете географически распределенный пул серверов имен. Сервер Google, который делает запрос к поддельному серверу имен, может не иметь IP-адреса, близкого к 8.8.8.8 или 8.8.4.4. Однако вы сможете увидеть, что он принадлежит Google, выполнив поиск ответа по обратному IP или WHOIS. (Интересно, что если вы выполните поиск обратного IP-адреса с помощью Google DNS, вы увидите, что Google оптимизировал обратный поиск IP-адреса на основе только что выполненного вами поиска A
. PTR
, который он возвращает, будет что-то. resolverid.acrotect.com
. Чтобы прервать эту оптимизацию, вам нужно будет выполнить dig + trace -x abcd
.)
Я не верю, что вы сможете (благодаря грамотному использованию DNS вашим клиентом).
Весь смысл наличия рекурсивного преобразователя DNS для вас заключается в том, что он будет ответить на ваши вопросы от вашего имени. Откуда они их взяли, не ваше дело (просто DNS-клиент).
Команда source
доступна только в bash
, а команда супервизора выполняется sh
. Я бы рекомендовал использовать сценарий для выполнения ваших команд:
/etc/supervisor/conf.d/my_app.conf
[program:my_app]
command = bash /path/to/app/init.sh
directory = /path/to/app/
user = ubuntu
autostart=true
autorestart=true
/path/to/app/init.sh
#!/bin/bash
beanstalkd -l 127.0.0.1 -p 11300
source /home/mf/virtualenvs/env/bin/activate
python manage.py command1
python manage.py command2
Единственная проблема в том, что супервизор будет только иметь контроль над сценарием, а не над командами. Если у вас есть ситуация, когда вы хотите, чтобы супервизор управлял определенным процессом и поддерживал его активность, я бы порекомендовал использовать exec
в вашем файле инициализации bash, таким образом супервизор будет контролировать ваш процесс. Например,
/path/to/app/init.sh
#!/bin/bash
exec beanstalkd -l 127.0.0.1 -p 11300
Вы можете найти это полезным: http: // sjsnyder.