Введение
Virtual Network Computing (VNC) — система удалённого доступа к рабочему столу компьютера, использующая протокол RFB (англ. Remote FrameBuffer, удалённый кадровый буфер).
Управление осуществляется путём передачи нажатий клавиш на клавиатуре и движений мыши с одного компьютера на другой и ретрансляции содержимого экрана через компьютерную сеть.
Система VNC платформонезависима: VNC-клиент, называемый VNC viewer, запущенный на одной операционной системе, может подключаться к VNC-серверу, работающему на любой другой ОС.
Существуют реализации клиентской и серверной части практически для всех операционных систем, в том числе и для Java (включая мобильную платформу J2ME).
К одному VNC-серверу одновременно могут подключаться множественные клиенты.
Наиболее популярные способы использования VNC — удалённая техническая поддержка и доступ к рабочему компьютеру из дома.
Дисплей 0
Если вы пытаетесь запустить сервер на дисплее 0 и получаете ошибку
● vncserver@:0.service — Remote desktop service (VNC)
Loaded: loaded (/etc/systemd/system/vncserver@:0.service; enabled; vendor preset:
Active: failed (Result: exit-code) since Thu 2021-03-18 15:50:32 EET; 2min 8s ago
Process: 4260 ExecStart=/usr/bin/vncserver_wrapper andrei %i (code=exited, status=
Process: 4255 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1
Main PID: 4260 (code=exited, status=2)
Mar 18 15:50:32 localhost.localdomain vncserver_wrapper: (EE) Cannot establish
Mar 18 15:50:32 localhost.localdomain vncserver_wrapper: _XSERVTransSocketUNIX
Mar 18 15:50:32 localhost.localdomain vncserver_wrapper: _XSERVTransMakeAllCOT
Mar 18 15:50:32 localhost.localdomain vncserver_wrapper: (EE)
Mar 18 15:50:32 localhost.localdomain vncserver_wrapper: Fatal server error:
Убедитесь, что у вас не запущена X Window System
обычно она занимает дисплей 0.
Если запущена — закройте иксы
Unit network.service entered failed state
Хорошо, что был доступ к консоли сервера с помощью kvm-over-ip, а конкретно через ILO, идущего в комплексе с сервером HP. Я никогда не рекомендую менять настройки сети и делать глобальные изменения или начальную настройку iptables, если у вас нет доступа к консоли. Чаще всего все проходит нормально, но все равно иногда случаются непредвиденные ситуации и доступ к серверу отключается. Если он стоит в ЦОД, то это полный провал. Настройку сети и фаервола я всегда делаю в самом начале и больше стараюсь их не трогать без крайней необходимости.
После перезагрузки сеть не поднялась, а в логах были следующие ошибки:
systemd: Starting LSB: Bring up/down networking... systemd: network.service: control process exited, code=exited status=6 systemd: Failed to start LSB: Bring up/down networking systemd: Unit network.service entered failed state systemd: network.service failed
Говорю сразу решение, которое помогло мне. Нужно создать пустой файл network в директории /etc/sysconfig.
# touch /etc/sysconfig/network
Перезапускаем сеть:
# systemctl restart network
Ошибок нет, сеть поднялась.
Запуск VNC сервера
sudo systemctl daemon-reload
sudo systemctl start vncserver@:1
systemctl status vncserver@:1
● vncserver@:1.service — Remote desktop service (VNC)
Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2021-03-16 13:49:55 EET; 3min 56s ago
Process: 23138 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
Main PID: 23145 (vncserver_wrapp)
CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service
├─23145 /bin/sh /usr/bin/vncserver_wrapper andrei :1
└─24097 /bin/sh /usr/bin/vncserver_wrapper andrei :1
Mar 16 13:49:45 localhost.localdomain systemd: Starting Remote desktop service (VNC)…
Mar 16 13:49:55 localhost.localdomain systemd: Started Remote desktop service (VNC).
Mar 16 13:50:35 localhost.localdomain vncserver_wrapper: New ‘localhost.localdomain:1 (andrei)’ desktop is localhost.localdomain:1
Mar 16 13:50:35 localhost.localdomain vncserver_wrapper: Creating default startup script /home/andrei/.vnc/xstartup
Mar 16 13:50:35 localhost.localdomain vncserver_wrapper: Creating default config /home/andrei/.vnc/config
Mar 16 13:50:35 localhost.localdomain vncserver_wrapper: Starting applications specified in /home/andrei/.vnc/xstartup
Mar 16 13:50:35 localhost.localdomain vncserver_wrapper: Log file is /home/andrei/.vnc/localhost.localdomain:1.log
Чтобы VNC sever запускался при загрузке системы выполните
systemctl enable vncserver@:1
Проверить, что vnc server слушает на порту 5901 можно командой
ss -tulpn| grep vnc
tcp LISTEN 0 5 *:5901 *:* users:((«Xvnc»,pid=1330,fd=9))
tcp LISTEN 0 128 *:6001 *:* users:((«Xvnc»,pid=1330,fd=6))
tcp LISTEN 0 5 :5901 :* users:((«Xvnc»,pid=1330,fd=10))
tcp LISTEN 0 128 :6001 :* users:((«Xvnc»,pid=1330,fd=5))
Теперь порт 5901 нужно открыть в firewall
Выполните
sudo firewall-cmd —add-port=5901/tcp —permanent
sudo firewall-cmd —reload
sudo firewall-cmd —list-ports
19999/tcp 5901/tcp
Как вы можете убедиться — порт 5901 успешно добавлен в список открытых
Если вам вдруг стало интересно — что за порт 19999 — его использует
Locust
Ошибка автозапуска службы nfs-server.service — exportfs: Failed to resolve в CentOS Linux 7.2
При перезагрузке файлового NFS-сервера на базе CentOS Linux 7.2 служба nfs-server не стартует, хотя настроена на автоматический запуск. Соответсвенно NFS-клиентам недоступны NFS-шары с этого файлового срвера.
При этом ручной запуск службы nfs-server происходит успешно.
После перезагрузки сервера, если заглянуть в текущий статус службы то увидим то, что она не запущена и ошибку типа «exportfs: Failed to resolve…»
# service nfs-server status Redirecting to /bin/systemctl status nfs-server.service ● nfs-server.service - NFS server and services Loaded: loaded (/usr/lib/systemd/system/nfs-server.service;enabled;vendor preset:disabled) Active: failed (Result: exit-code) since Fri 2016-09-09 10:03:12 MSK; 28min ago Process: 1955 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=1/FAILURE) Sep 09 10:02:35 systemd: Starting NFS server and services... Sep 09 10:03:12 exportfs: exportfs: Failed to resolve OVIRT1.dom.com Sep 09 10:03:12 systemd: nfs-server.service:control process exited, code=exited status=1 Sep 09 10:03:12 systemd: Failed to start NFS server and services. Sep 09 10:03:12 systemd: Unit nfs-server.service entered failed state. Sep 09 10:03:12 systemd: nfs-server.service failed.
Проблема может быть связана с тем, что в процессе загрузки служба nfs-server.service пытается запуститься до того, как закончена полная инициализация сети, и соответственно из-за ошибки разрешения имени из файла /etc/exports служба не стартует.
Для решения этой проблемы можно использовать разные методы.
Метод №1
Включить службу NetworkManager-wait-online, в случае если в вашей системе используется NetworkManager :
# systemctl enable NetworkManager-wait-online.service
Метод №2
Отредактировать конфигурационный файл службы /usr/lib/systemd/system/nfs-server.service, добавив в секцию строки:
Unit ... After=network-online.target Wants=network-online.target Requires=network-online.target ...
После этого выполняем команду:
# systemctl daemon-reload
Эти методы можно пробовать использовать как раздельно так и вместе.
После применения методов несколько раз перезагружаем сервер и убеждаемся в том, что каждый раз служба nfs-server запускается автоматически при загрузке системы.
Если ничего не помогает, то можно попробовать поставить жёсткий «костыль», а именно добавить в конец файла /etc/rc.d/rc.local проверку наличия сети путём отсылки ping, и как только сеть появится — запускать службу.
Этот фрагмент добавим в файл /etc/rc.d/rc.local (в переменную checkip вставьте IP другого сервера, например шлюза):
sleep 10 checkip="10.1.0.1" if ; then while ! ping -c 1 -W 1 $checkip; do # Waiting for gateway ip - network interface might be down..." sleep 1 done sleep 10 systemctl start nfs-server.service fi
И не забудем сделать исполняемым файл
# chmod +x /etc/rc.d/rc.local
Удаление Network Manager в CentOS
Удалить Network Manager очень просто. Выполняем несколько команд в консоли сервера:
# systemctl stop NetworkManager # systemctl disable NetworkManager
Если мы сейчас перезапустим сеть или перезагрузим сервер, то удаленно подключиться к серверу не сможем. Хорошо, что есть ILO Я хоть и не сразу перезагрузился, но управление сервером потерял. Расскажу, в чем была причина
После отключения и удаления Network Manager, я нарисовал конфиг для сетевого интерфейса с именем eno1.
# cat /etc/sysconfig/network-scripts/ifcfg-eno1
DEVICE="eno1" HWADDR="98:f2:b3:f7:0e:90" ONBOOT=yes NETBOOT=yes BOOTPROTO=none TYPE=Ethernet NAME="eno1" DNS1=10.1.3.21 IPADDR=10.1.3.14 NETMASK=255.255.255.0 GATEWAY=10.1.3.21
По идее, этого достаточно. Отправил сервер в перезагрузку и удаленно больше не смог к нему подключиться.
Установка tigervnc-server
Выполните
sudo yum install tigervnc-server
Залогиньтесь под пользователем, которому вы хотите дать доступ по vnc
vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used
view-only password это пароль для доступа только с правами на просмотр. Действия мыши и клавиатуры
во время такого доступа ограничены.
sudo vi /lib/systemd/system/vncserver@.service
# The vncserver service unit file
#
# Quick HowTo:
# 1. Copy this file to /etc/systemd/system/vncserver@.service
# 2. Replace <USER> with the actual user name and edit vncserver
# parameters in the wrapper script located in /usr/bin/vncserver_wrapper
# 3. Run `systemctl daemon-reload`
# 4. Run `systemctl enable vncserver@:<display>.service`
#
# DO NOT RUN THIS SERVICE if your local area network is
# untrusted! For a secure way of using VNC, you should
# limit connections to the local host and then tunnel from
# the machine you want to view VNC on (host A) to the machine
# whose VNC output you want to view (host B)
#
# $ ssh -v -C -L 590N:localhost:590M hostB
#
# this will open a connection on port 590N of your hostA to hostB’s port 590M
# (in fact, it ssh-connects to hostB and then connects to localhost (on hostB).
# See the ssh man page for details on port forwarding)
#
# You can then point a VNC client on hostA at vncdisplay N of localhost and with
# the help of ssh, you end up seeing what hostB makes available on port 590M
#
# Use «-nolisten tcp» to prevent X connections to your VNC server via TCP.
#
# Use «-localhost» to prevent remote VNC clients connecting except when
# doing so through a secure tunnel. See the «-via» option in the
# `man vncviewer’ manual page.
Description=Remote desktop service (VNC)
After=syslog.target network.target
Type=simple
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
ExecStart=/usr/bin/vncserver_wrapper <USER> %i
ExecStop=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
WantedBy=multi-user.target
Выполните первый и второй шаги из Quick HowTo
sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
Обратите внимание на 1 — таким образом указывается номер дисплея для данной версии сервера.
Можно было выбрать другое число, главное запомнить этот выбор.
sudo vi /etc/systemd/system/vncserver@\:1.service
В строке
Замените <USER> на имя вашего пользователя. (моего зовут andrei)
Можно вручную через vi
а можно с помощью sed
sudo sed -i ‘swrapper\ <USER>wrapper\ andrei‘ /etc/systemd/system/vncserver@\:1.service
Если вашего пользователя зовут
vncuser
команда будет выглядеть так:
sudo sed -i ‘swrapper\ <USER>wrapper\ vncuser‘ /etc/systemd/system/vncserver@\:1.service
Заключение
Напоминаю, что с обновлением 5.4 появились и новые шаблоны. Они автоматически не появятся у вас на сервере. Их нужно будет скачать и импортировать вручную из репозитория — https://github.com/zabbix/zabbix/tree/release/5.4/templates. Это же касается и способов оповещения, которые регулярно добавляются. Если не обновили их вручную при переходе на 5-ю ветку, то так же можете забрать их из репы и импортировать к себе на сервер.
Онлайн курс «DevOps практики и инструменты»
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Проверьте себя на вступительном тесте и смотрите программу детальнее по .