Mikrotik — удаленный доступ через RDP

В офисе есть компьютер на ОС Windows. Сеть имеет «внешний» IP-адрес, используется роутер Mikrotik hAP ac².

Задача: необходимо получить к компьютеру доступ извне, через штатную утилиту «Удаленный рабочий стол».

Решение: заходим в панель управления Mikrotik, далее:

  1. В меню выбираем пункт IP -> Firewall
  2. Открываем вкладку NAT
  3. Создаем новое правило:
    1. Chain: dnsnat
    2. Src. Address: <внешний IP-адрес компьютера, с которого будем подключаться > (опционально, для защиты от вредителей)
    3. Protocol: (6) tcp
    4. Dst. Port: любая комбинация (к примеру, 14801)
    5. In. Interface: all ethernet
    6. Action: dns-nat
    7. To Address: <локальный IP-адрес компьютера, к которому будем подключаться >
    8. To Ports: 3389
  4. Сохраняем сделанные настройки
  5. Через «Удаленный рабочий стол» подключаемся к <внешний IP-адрес офисной сети>:<порт> Если все сделано правильно, то роутер направит данный запрос к нужному компьютеру.

Переход сервера на Debian Stretch

Обновил сервер с Debian 8 (Squeeze) до Debian 9 (Stretch).

Хотел сразу перейти на Debian 10, но на OpenVZ-тарифах он не поддерживается из-за различий требования к ядру.

К слову, в Debian 9 теперь nginx версии 1.16.1, что позволило нормально перейти на HTTP/2.

[WordPress] 502 ошибка при открытии админки

Столкнулся с проблемой, что при попытке открыть админку WordPress, отображалась ошибка 502 Bad Gateway.

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

В итоге помог перезапуск FastCGI:

php5-fpm restart

Unit nginx.service entered failed state

При попытке перезапустить nginx получаем ошибку:

nginx restart

[....] Restarting nginx (via systemctl): nginx.serviceJob for nginx.service failed. See 'systemctl status nginx.service' and 'journalctl -xn' for details.
failed!

Проверяем статус:

systemctl status nginx.service

nginx.service - nginx - high performance web server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
   Active: failed (Result: exit-code) since Sun 2019-12-15 16:42:45 MSK; 1min 48s ago
     Docs: http://nginx.org/en/docs/
  Process: 12694 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 16448 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE)
 Main PID: 5865 (code=exited, status=0/SUCCESS)

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

nginx -t -c /etc/nginx/nginx.conf

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Пробуем вылечить:

fuser -k 80/tcp
fuser -k 443/tcp
/etc/init.d/nginx restart

Проверяем:

[ ok ] Restarting nginx (via systemctl): nginx.service.

[Linux] Удаление очереди писем в Postfix

• Для удаления очереди писем в Postfix:

$ postfix flush (или postfix -f)

• Посмотреть очередь писем:

$ mailq

Пример результата выполнения команды:

postqueue: warning: Mail system is down -- accessing queue directly
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
CC83910135C      539 Sun Jul  1 18:31:21  root
                                          root

EC2B61013DE      370 Sun Jul  1 18:38:21  root@bulkin.me

• Удалить все письма из очереди:

$ postsuper -d ALL

Пример результата выполнения команды:

postsuper: Deleted: 38 messages

• Удалить все письма в отложенной очереди:

$ postsuper -d ALL deferred

Исправление проблем с Windows Update

Иногда служба обновлений Windows ведет себя не так, как от нее ожидается – то одна ошибка выскочит, то другая. Информацию по коду ошибку можно найти в Google, но не всегда советы помогают в исправлении ситуации.

Microsoft также не осталась в стороне, и подготовила набор скриптов для «лечения» Windows Update, которые можно скачать здесь.

Исправление проблем с Windows Update

Еще один совет для удаления кеша файлов Windows Update в виде срипта:

net stop wuauserv
CD %Windir%
CD SoftwareDistribution
DEL /F /S /Q Download
net start wuauserv

	

[MongoDB] Удаление поля из коллекции

Допустим, в какой-то коллекции есть документы, содержащие поле, которое стало уже не нужным, и вы хотите удалить это поле из всех документов данной коллекции.

Для этого достаточно выполнить следующий запрос:

db.<collection>.update({}, {$unset: {<field_name>:1}} , {multi: true});

[MongoDB] Удаление поля из массива

В коллекции ‘payments’ имеется следующая структура данных:

"log" : [
        {
            "item_id" : "1478", 
            "method" : "card", 
            "cost" : 199.0, 
            "cr_time" : ISODate("2018-06-10T10:38:49.868+0000"), 
            "pay_time" : NumberLong(1528627129), 
            "rent_end_date" : ISODate("2018-07-10T10:38:49.000+0000")
        }
        ...
]

Необходимо удалить поле «rent_end_date» для «item_id» : «1478».

Решение:

db.payments.find({'log.item_id': '1478' }).forEach(function(doc) {
    var rentEndDate = doc.log;
    for(var i = 0; i &lt; rentEndDate.length; ++i) { 
        var x = rentEndDate[i];
        delete (x["rent_end_date"]);
 
    }
    db.payments.save(doc);
});

[Linux] Удаление содержимого файла

Есть несколько возможных команд, которые позволяют удалить содержимое файла:

  1. > filename
  2. cp /dev/null filename
  3. filename < /dev/null
  4. echo -n > filename
  5. truncate -s 0 filename

[Git] Warning: Unprotected Private Key File!

Если при попытке выполнить команду (к примеру, git fetch) будет выведена ошибка «Unprotected Private Key File!», то значит у вас выставлены некорректные права доступа:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/path/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
key_load_private_type: bad permissions
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
error: Could not fetch origin

Решение:

find /path/.ssh/id_rsa -type f -exec chmod 600 {} \;
find /path/.ssh/ -type d -exec chmod 700 {} \;