• Не работает NAT на MikroTik — один из вариантов

    У меня в машине роутер MikroTik. Сейчас езжу мало, во время какого-то из экспериментов с камерой обнаружил, что интернет в машине пропал. У роутера он есть, из дома я могу на него зайти, а вот во внутренней сети — нет.
    Неделю искал причину. Было такое ощущение, что пакет уходит через NAT в интернет, возвращается ответ, а куда его слать — роутер как будто не знает.

    Так и вышло. Почему-то слетели настройки NAT Connection Tracking. В интерфейсе по пути -> IP -> Firewall -> Connections -> Tracking есть вот такая таблица. Хорошо, что был другой MikroTik, на котором можно было подглядеть. Вот так она должна выглядеть.

    Как оно могло слететь — ума не приложу, я точно сюда не лазил.

  • ThinkPad T430, i3840QM, Linux и перегрев

    Обладаю я великолепнейшим ноутбуком Lenovo ThinkPad T430. Сделал апгрейд, установив максимально возможный процессор Core i7 3840QM, а у него TDP 45W против штатных 35 и он вырубался под тяжёлой нагрузкой.

    Спустя 4 месяца дождался с Алиэкспресса улучшенную систему охлаждения от версии с дискретной видеокартой. Отличаются отдельным ушком.

    Shopee Malaysia | Free Shipping Across Malaysia

    Стало лучше, но при очень большой нагрузке в док-станции с двумя мониторами он всё равно отрубался, несмотря на хорошую дорогую термопасту. И тут я стал гуглить и обнаружил великолепный интерфейс к ACPI, позволяющий управлять вентилятором, и выяснил, что штатно система при высокой температуре крутит вентилятор на 5400 rpm, хотя может быть 5900. 500 оборотов это не в тапки пысать! Если выдать команду в файл-устройство:
    # echo level 7 > /proc/acpi/ibm/fan
    то выяснится, что скорость вентилятора будет 5400 оборотов. Чтобы выжать максимум, надо выдать команду
    # echo full-speed >/proc/acpi/ibm/fan

    Для этого есть демон thinkfan.

    1. Устанавливаем thinkfan из штатных репозиториев:
      # apt-get install thinkfan
      Дописываем опцию для модуля ядра thinkpad в файл /etc/modprobe.d/thinkpad_acpi.conf
      options thinkpad_acpi fan_control=1
      и перезагружаемся.
    2. Пишем конфиг /etc/thinkfan.conf. Первая строка — откуда брать температуру, вторая группа записей — первая цифра это номер уровня скорости вентилятора (0-7), вторая — минимальное значение, при котором уходить на предыдущий, третья — максимальное, при котором уходить на следующий.
    hwmon /sys/devices/virtual/thermal/thermal_zone0/hwmon0/temp1_input
    (0, 0, 55)
    (1, 48, 60)
    (2, 50, 61)
    (3, 52, 63)
    (4, 56, 65)
    (5, 59, 66)
    (7, 63, 87)
    ("level full-speed", 85, 131072)
    

    3. Строковое значение не даст thinkfan запуститься с ошибкой:
    мар 11 22:41:41 remotehost thinkfan[7825]: Invalid fan level string. This check can be disabled by using DANGEROUS mode.
    поэтому нужно дописать опцию -D в /etc/default/thinkfan. Получится вот так:
    DAEMON_ARGS="-q -D"
    4. Заставляем Thinkfan стартовать вместе с системой и запускаем его:
    # systemctl enable thinkfan
    # systemctl start thinkfan

    После всего вышеперечисленного для проверки можно запустить взятую из репозиториев утилиту stress командой stress --cpu 8, дабы задать процессору жару. По результатам моих испытаний после прогрева до 87 градусов вентилятор уходит на запредельный режим и позволяет удержать температуру в допустимых пределах. По итогу, спустя 30 минут работы утилиты stress на всех 8 ядрах температура поднялась максимум до 98 градусов и процессор не ушёл ни в троттлинг, ни в защиту и аварийное выключение.

    Кстати говоря, можно спокойно играться с диапазонами, скажем, выключив вентилятор до 60-65 градусов вообще. А зачем он?
    Например, с помощью такого профиля:

    (0,	0,	65)
    (1,	60,	70)
    (2,	65,	72)
    (3,	70,	75)
    (4,	73,	80)
    (5,	78,	85)
    (7,	83,	87)
    ("level full-speed",	85,	131072)
    


  • Временные файлы PHP в AstraLinux

    Несмотря на то, что с точки зрения php они находятся в /tmp, на самом деле они находятся в другом месте (видимо, сам php выполняется в chroot()). Там небось ещё мандатные метки мимо пробегали.

    Фактически файлы находятся в каталоге /var/private/tmp/l0i0c0x0t0x0/

  • Yi DashCam в качестве веб-камеры

    Оказывается, в Yi DashCam есть RTSP-сервер, который можно использовать для трансляции потока с камеры в сеть. У меня в машине роутер MikroTik с VPN-туннелем до дома, поэтому из домашней сети можно смотреть, что происходит в машине.

    Почти можно. Итак, до чего я докопался.

    1. Подключаемся к Wi-Fi сети, которую раздаёт видеорегистратор. С помощью NMAP мы видим два открытых порта — 80 и 3333. На первом — веб-сервер, на втором непонятно что.
    2. После двух последовательных запросов по ссылкам http://192.168.1.254/?custom=1&cmd=8001 и http://192.168.1.254/?custom=1&cmd=3001&par=1 на камере значок Wi-Fi меняется на телефон, а на камере открываются два дополнительных порта.
    kkursor@remotehost:/var/www/html$ nmap 192.168.1.254
    Starting Nmap 7.70 ( https://nmap.org ) at 2021-02-28 11:32 MSK
    Nmap scan report for 192.168.1.254
    Host is up (0.015s latency).
    Not shown: 996 closed ports
    PORT STATE SERVICE
    80/tcp open http
    554/tcp open rtsp
    3333/tcp open dec-notes
    8000/tcp open http-alt

    Nmap done: 1 IP address (1 host up) scanned in 0.52 seconds

    3. После этого по ссылке rtsp://192.168.1.254/live можно получить видеопоток с камеры. Но без heartbeat камера через 13 секунд прерывает трансляцию. Чтобы этого избежать, раз в 10 секунд на 192.168.1.254 порт 3333 нужно посылать сообщение 02:001:0, например вот так:
    $ while [ true ]; do echo 02:001:0 | nc 192.168.1.254 3333 2>&1 >/dev/null & echo "written"; sleep 10; done
    

    На этом можно было бы закончить, но есть нюанс. Точка доступа, которую создаёт камера, прыгает по каналам, а MikroTik, находясь в режиме AP + Client, может клиентом подключиться только к точке доступа, которая находится на том же канале, что и AP микротика. При скакании по каналам подключение нарушается и что с этим сделать — я пока не понимаю.

  • Подсветка всех блочных элементов при HTML-вёрстке.

    Вёрстка в целом — это боль дырка задница. Но этот фрагмент кода может помочь выделить все блочные элементы рамками, после чего сразу станет понятно, из-за чего опять всё разъехалось.

    [].forEach.call($$("*"),function(a){a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16)})

    Источник: ссылка

  • Установка фреймворка Yii2 без базовой конфигурации

    Штатно фреймворк предлагается к установке пакетом yii-basic или yii-advanced, тянущим с собой кучу мусора, который в некоторых случаях может привести к конфликтам.

    Способ поставить только Yii2 и больше ничего:

    0. Создаём пустую папку, куда будем разворачивать фреймворк, делаем туда cd.

    1. Ставим Composer и скачиваем 2 компонента:
    $ composer require "fxp/composer-asset-plugin:*"
    $ composer require "yiisoft/yii2:*"

    2. Затем создаём файл web/index.php. DocumentRoot идёт на папку web.
    <?php
    require __DIR__ .'/../vendor/yiisoft/yii2/Yii.php';
    $config = require __DIR__ . '/../config/web.php';
    (new yii\web\Application($config))->run();

    3. Создаём config/web.php
    <?php
    return [
    'id' => 'coffeego',
    'basePath' => realpath(__DIR__ . "/../"),
    ];

    4. Создаём controllers/SiteController.php
    <?php
    namespace app\controllers;
    use yii\web\Controller;
    class SiteController extends Controller {
    public function actionIndex() {
    return $this->render('index');
    }
    }

    5. Создаём views/site/index.php и views/layouts/main.php (просто создать файлы) После этого можно начинать разработку в штатном MVC.

  • Присвоить названия нескольким ОС AstraLinux на одном компьютере

    На компьютере установлено несколько систем AstraLinux. Нужно как-то различать их в меню grub, чтобы грузить нужную. При этом крайне желательно обойтись без ручного редактирования файла /boot/grub/grub.cfg, который будет перезаписан после установки новой системы, например.

    Делаем следующее:

    1. Присваиваем всем файловым системам метку:
    # e2label /dev/sda1 ASTRA1
    # e2label /dev/sda2 ASTRA2

    2. Правим два файла. Первый /etc/grub.d/10_linux, строка 136. Меняем

      echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"

    на

      echo "menuentry '$(echo "$title ($(e2label `blkid -U $boot_device_id`))" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"

    Второй — /etc/grub.d/30_os-prober, строка 297. Меняем

    menuentry '$(echo "$title" | grub_quote)' --class gnu-linux --class gnu --class os \$menuentry_id_option 'osprober-gnulinux-$LKERNEL-${recovery_params}-$boot_device_id' {

    на

    menuentry '$(echo "$title ($(e2label $DEVICE))" | grub_quote)' --class gnu-linux --class gnu --class os \$menuentry_id_option 'osprober-gnulinux-$LKERNEL-${recovery_params}-$boot_device_id' {

    3. Вызываем update-grub.

    На выходе имеем в grub.cfg что-то такое:

    menuentry 'AstraLinuxCE GNU/Linux, with Linux 4.15.3-1-generic (на /dev/nvme0n1p6) (ASTRA1)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.15.3-1-generic--a009ed5b-4c18-4235-9baa-a711f5443472' {

    Единственный нюанс — нужно это делать либо в каждой Астре, либо обновлять Grub только из одной.

  • Astra Linux 1.6 + Apache2 — отключение авторизации

    Прикольно, оказывается в 1.6 авторизацию апача можно отключить. Для этого надо в конфиге прописать параметр:

    AstraMode off

  • Astra Linux 1.6. Авторизация пользователей Apache

    По умолчанию Астра не пускает свежедобавленных пользователей. Да и вообще с правами там бидэ.

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

    usermac -c 0:0 имя_пользователя_под_которым_будем_заходить

    Для корректного функционирования авторизации через PAM пользователю, от которого работает веб-сервер (по-умолчанию — www-data), необходимо выдать права на чтение информации из БД пользователей и сведений о мандатных метках, для этого выполняем следующие команды:

    usermod -a -G shadow www-data
    setfacl -d -m u:www-data:r /etc/parsec/macdb
    setfacl -R -m u:www-data:r /etc/parsec/macdb
    setfacl -m u:www-data:rx /etc/parsec/macdb

    Спасибо сайту Lab50.net, вот ссылка на полную статью http://lab50.net/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-%D0%B7%D0%B0%D1%89%D0%B8%D1%89%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE-apache/

  • Proxmox: импорт ВМ из VirtualBox

    В Proxmox можно импортировать виртуалки из Виртуалбокса.

    1. Копируем на сервер vdi
    2. Импортируем его командой
      qm importdisk 100 Astra.vdi bigdata
      где 100 — ID виртуалки, VDI — понятно, bigdata — идентификатор lvm-хранилища.
    3. ???
    4. PROFIT

    Подглядел тут: https://www.caretech.io/2017/10/17/migrating-virtualbox-vdi-to-proxmox-ve-5/

  • nivc_lifehacks

    Это всё, что возьму я с собой.

    — Юра «Музыкант» Шевчук, ДДТ

    Лайфхаки с внутреннего портала одной некогда великой организации.

    Команда для формирования ISO из папки
    mkisofs -o ../ISONAME.iso -V DISC-LABEL -P "AO OLOLO" -joliet-long -l -force-rr -R -D .

    Неожиданное поведение Астры при смене времени на хосте.
    Ситуация — нужно произвести расчёты в целях тестирования. Свежих данных нет, считаю старыми, для этого отодвигаю время на хосте на месяц назад удалённо. Сижу, работаю дальше, возникает необходимость перезагрузить компьютер. Пишу sudo reboot, жду… минуту нет, две, пять…

    С мыслями «что-то пошло не так» иду к машине. А она циклично ребутится. В консоли — unexpected inconsistency on /, last superblock mount is in future, please run fsck manually и спрашивает логин/пароль.
    У рута пароля нет. Логин пользователя из sudoers не принимает, хочет рута. Редактор параметров загрузки ядра тоже не работает. ¯\_(ツ)_/¯
    Что делать, кроме исправления времени обратно вперёд? Проблема на самом деле абзац. Выключили питание при севшей батарейке биоса, и что, лапки кверху и работать не будем? Непорядок.

    Решение простое — подключить диск к другому компьютеру, /etc/default/rcS, в конце его параметр. Делаем FSCKFIX=yes, закрываем, перезагружаемся, вуаля. Причём это касается и других дебианоподобных систем, во всяком случае у убунты этот параметр тоже отключен.

    VLAN в Astra Linux.
    Для подключения к стенду нужно быть в одном broadcast domain с ним. Пробросили мне VLAN 300, а как его настроить — хз.

    В /etc/network/interfaces пишем:

    auto lo eth0.300
    iface eth0.300 inet static
    address 192.168.x.y
    netmask 255.255.255.0
    gateway 192.168.x.y
    vlan_raw_device eth0

    reboot и всё каласо 🙂

    Разблокировка пользователя в ALD (и не только).
    Если много-много-много раз неправильно набрать пароль пользователя, то сервер согласится, что пароль маоцзедун войти в систему под этим пользователем больше не получится. Гуёвая логинилка будет говорить, что пароль неверный. Войдём в консоль и увидим:
    duty-main login: arm-admin
    Account locked due to 100500 failed logins.

    При этом на уровне ALD никаких блокировок не установлено.
    Решение проблемы:
    # pam_tally --user=username --reset'

    Монтирование FTP-каталога в локальную файловую систему в Astra Linux.
    Задача — примонтировать папку со сборочной машины в локальную ФС виртуалки, чтобы не копировать туда репозиторий каждый раз.
    $ sudo curlftpfs -o nonempty,allow_other files/repo/astra/1.5 /srv/ftp/repo/astra/1.5/

    Строка в /etc/fstab может выглядеть так:
    curlftpfs#files/repo/astra/1.5/ /srv/ftp/repo/astra/1.5/ fuse allow_other,nonempty 0 0

    Про постгрес и аудит.
    — Сколько памяти занимает Chrome?
    — Сколько найдёт…
    По умолчанию постгрес астры ведёт аудит и пишет в логи каждый выполненный запрос. При очень интенсивной работе с БД (при работе опрашивающих оборудование агентов, например), этот аудит очень быстро съедает всё место, до которого может дотянуться.
    Нужно найти в /etc/postgresql/9.4/main/postgresql.conf строку:
    ac_audit_mode = ''internal'' # rbt audit mode. Possible values are
    и поставить её в none.
    Например, так:
    sed -i /etc/postgresql/9.4/main/postgresql.conf -e "s/ac_audit_mode\s=\s'internal'/ac_audit_mode = 'none'/"

    Конфигурация платы PCL-746
    Положение DIP-переключателей на платах рассчитывается следующим образом.
    Адрес платы состоит из 10 бит. Назовём их А0…А9.
    Записывается он следующим образом:
    Три младших бита (А0, А1, А2) — всегда нули.
    Семь битов А3…А9 задаются DIP-переключателями инвертированно. То есть биту 1 соответствует положение переключателя «OFF», биту 0 — соответственно «ON»; кроме того, самому старшему биту (А9) соответствует самый правый переключатель (с самым большим номером), а самому младшему (А3) — самый левый. Это немного неинтуитивно, на мой взгляд, логичнее было бы всё сделать наоборот. Ну да ладно, пусть разработчику платы икнётся. 🙂
    Можно, кстати, перевернуть плату кверх ногами, тогда все положения переключателей будут правильные («ON» — 1, «OFF» — 0) и будут в правильном порядке отвечать за 7 старших бит адреса.
    Таким образом, положение DIP-переключателей для адреса, например, 100h, определяется так:
    1. Переводим 100h в двоичное представление. Получается 1 00000 000.
    2. Отбрасываем последние три нуля. Остаётся 1 000 00.
    3. Дополняем число нулями слева до 7 знаков, если надо. Получается 0 1000 00.
    4. Инвертируем. Получается 1 0 111 11
    5. «Переворачиваем» число зеркально слева направо. Получается 1111101. Это и есть требуемая конфигурация переключателя, соответствующая адресу 100h.

    Таким образом, рассчитанные положения перемычек адресации выглядят так:
    Порт 1 (RS-485) Адрес 0x218, DIP-переключатель 0011110
    Порт 2 (RS-232) Адрес 0x220, DIP-переключатель 1101110

    Если Астра не запоминает разрешение экрана…
    Столкнулись с проблемой.
    Ситуация: Астра грузится, но в разрешении 640х480 по центру FullHD монитора с чёрными полями по краям. Настраиваешь в настройках — встаёт штатное разрешение монитора (в нашем случае — 1920х1080), но после перезагрузки опять 640х480. При загрузке других современных линуксов с флешек и тому подобного ситуация аналогичная.
    Ярослав Борисович настроил в xorg.conf ручное разрешение, но это помогло частично. Окно входа стало то же 640х480, но уже не во весь монитор, а маленьким окошком в уголке. Мышь давала себя двигать по всему монитору. После долгого красноглазия обратили внимание на то, что в программе настройки монитора два видеовыхода указано — VGA-1 и LVDS-1. Второй я уже после нашёл на плате распаянным — видимо для подключения матрицы напрямую. А потом, наблюдая за Linux Mintом, запущенным с флешки, я обратил внимание, что в левом верхнем углу, за пределами основного монитора, и есть кусочек размером 640х480, размеры которого берёт Linux (причём любой, не только Астра) для основного монитора. Проблема в том, что оно не знало, что LVDS-1 на самом деле ни к чему не подключен; кроме того она считала его основным монитором.
    Видеоядро на этой плате Intel 8086:a001 (встроенное в ядро CPU Intel Atom Processor Integrated Graphics Controller).
    Такое поведение системы лечится дописыванием опций ядра video=LVDS-1:d video=VGA-1:e в переменную GRUB_CMDLINE_LINUX_DEFAULT в /etc/default/grub и запуском команды update-grub. В нашем случае переменная стала выглядеть так:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=LVDS-1:d video=VGA-1:e"
    Таким образом этот интерфейс полностью отключается.

    Veracrypt и монтирование томов.
    Если при монтировании криптоконтейнера в VeraCrypt возникает ошибка «device-mapper: resume ioctl on truecrypt* failed: invalid argument», то нужно в настройках установить галку «Do not use kernel cryptographic services».
    На Kubuntu 14.04.2 LTS с ядром 3.16.0-50-generic без этой галки VeraCrypt не работает.

    Удалённый скриншот на Астре.
    xwd -root -display :0 ./screendump.file
    convert ./screendump.file ./scree.bmp
    этот вариант хорош тем, что не требует момент форвардить иксы + можно чисто из под терминала под любой ОС получить полный (или частичный) скриншот экрана

    AstraLinux и форвардинг иксов (боян).
    По умолчанию в Астре форвардинг X-приложений не работает (помимо проблем с MITSHM, см. ниже).
    Для того, чтобы заработал, нужно в конфиг-файл /etc/ssh/sshd_config
    добавить строку X11UseLocalhost no и выдать команду /etc/init.d/ssh restart
    После этого при переподключении всё заработает.

    Некорректное отображение Qt4 приложений через ssh на Astra Linux.
    При подключении по ssh к хосту с Astra Linux и запуске любого Qt4 приложения, отрисовывается только панель заголовка и пустое окно без каких-либо элементов.
    Это как-то связано с использованием Qt4 расширения X11 MIT-SHM (MIT Shared Memory Extension), о чём свидетельствуют многочисленные ошибки в консоли при запуске.
    На данный момент удалось решить проблему, запретив Qt4 использовать это расширение, добавив на хосте переменную окружения «QT_X11_NO_MITSHM=1».
    По идее это должно сказаться на скорости отрисовки, но я пока не заметил побочных эффектов.
    Если кто-нибудь знает более правильный способ, прошу отписать в комментариях.

  • Удаление каталога .git из дерева проекта

    find . -name .git -exec rm -rvf {} +

  • Копирование файловой системы ext4 с диска на диск.

    Сдох на рабочем компе хард размером 2 ТБ. Купили новый SSD на 250 Гб. CloneZilla отказывается копировать диск. Нашёл шикарное решение.

    # fsarchiver -v savefs /media/folder-bkp/disco-source.fsa /dev/sda1

  • Быстрое вычисление MD5SUM для каталога.

    find -type f \( -not -name "md5sum.txt" \) -exec md5sum '{}' \; > md5sum.txt

  • StarLine Ключ, Android, Honor или Huawei.

    После очередного обновления телефона стало глючить приложение-ключ для дистанционного управления старлайновской сигналкой.

    Методом проб и ошибок понял, что система убивает приложение. Но зачем она это делает — хз.

    Нашёл решение:

    Вам нужно:

    1. Установите ADB на свой компьютер
    2. Подключите телефон с помощью кабеля для передачи данных
    3. Включите параметры разработчика
    4. Включите отладку по USB в параметрах разработчика на вашем телефоне
    5. Выполните следующие команды на вашем компьютере:

    adb shell pm uninstall --user 0 com.huawei.powergenie

    Спасибо товарищу по ссылке: https://lavnik.net/kak-zapretit-huawei-i-android-ubivat-prilozheniya-v-fonovom-rezhime

    Но этого мало. Нужно ещё Turn off battery optimization. Apps, Apps, Special access, Battery optimization. Give that a try.

  • Ubuntu, OpenVPN, Mikrotik. Экспорт сертификатов с роутера

    kkursor@remotehost:~/OpenVPN$ openssl pkcs12 -in cert_export_ovpn.kkursor.ru.p12 -out server.crt
    Enter Import Password:                                                                                                                                                                                                            
    kkursor@remotehost:~/OpenVPN$ openssl pkcs12 -in cert_export_remotehost.kkursor.ru.p12 -out client.crt
    Enter Import Password:                                                                                                                            
    kkursor@remotehost:~/OpenVPN$ openssl pkcs12 -in cert_export_remotehost.kkursor.ru.p12 -out client.key -nocerts
    Enter Import Password:
    Enter PEM pass phrase:
    Verifying — Enter PEM pass phrase:

    kkursor@remotehost:~/OpenVPN$ openssl rsa -in client.key -out client.open.key
    Enter pass phrase for client.key:
    writing RSA key

  • Astra Linux SE 1.6 — пользователю не удаётся создать и редактировать файлы и каталоги

    Даже в домашнем каталоге. Даже через sudo.

    Решение:
    $ sudo pdpl-user -i 63 username

    И перелогиниться.

  • Защищено: Интересные места

    Это содержимое защищено паролем. Для его просмотра введите, пожалуйста, пароль:

  • 1C 8.3 под Linux — pg_catalog.like_escape(mvarchar, mvarchar) does not exist

    После разворачивания серверной 1С 8.3 на Linux-сервере с патченой постгрёй возникли проблемы — в произвольных местах 1с падает с вышеуказанной ошибкой.

    Нужно зайти в консоль постгреса и выполнить 2 SQL-запроса.

    # CREATE FUNCTION pg_catalog.like_escape(mvarchar, mvarchar) RETURNS mvarchar AS ‘$libdir/mchar’, ‘mvarchar_like_escape’ LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
    # CREATE FUNCTION pg_catalog.similar_escape(mvarchar, mvarchar) RETURNS mvarchar AS ‘$libdir/mchar’, ‘mvarchar_similar_escape’ LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;

  • VBoxHeadless + VNC слушает только localhost.

    Играюсь тут с запуском виртуальных машин на сервере без GUI.

    Вроде всё супер, но установить из phpVirtualBox систему не получилось — VNC упорно не хотел пускать.

    Фаервол не мешает.

    Выяснил путём вызова sudo netstat -nap | grep 5900 (где 5900 — назначенный виртуалке порт), что VBoxHeadless слушает только localhost.

    Изменить это поведение можно командой sudo VBoxManage modifyvm «virtual machine name» —vrde on —vrdeaddress 0.0.0.0