LINUX.ORG.RU

Сообщения Novascriptum

 

Проблемы systemd в гостевом CentOS 7 (из ubuntu 22)

Форум — General

Дорогие форумчане, столкнулся с распространённой ошибкой в docker-контейнере с CentOS 7 (например, при выполнении systemctl status): «Failed to get D-Bus connection: No such file or directory»

При этом требования, перечисленные под заголовком «Dockerfile for systemd base image» на странице https://hub.docker.com/_/centos/ выполнены. И теперь не знаю, что делать. :/ Проблема в том, что CentOS 7 работает на ядре 3.10, а в хост-системе (Ubuntu) ядро 5.15. Таким образом, ядро в гостевой системе тоже 5.15 (что понятно). Подозреваю, что ошибка связана как-то с этим. Потому что при сборке и запуске этого же контейнера в хост-системе на CentOS 7 данной проблемы нет.

Куда теперь копать, ума не приложу.

 , ,

Novascriptum
()

Что не так с именованным пайпом?

Форум — General

Тестирую простой пример:

mkfifo something123.txt

cat something123.txt | gzip -7 -c > out.gz &

echo "foo" > something123.txt
sleep 1
echo "bar" > something123.txt
sleep 2
echo "baz" > something123.txt
sleep 1
rm something123.txt

Ожидаю, что когда распакую out.gz - увижу в нём три строки foo-bar-baz. По факту терминал зависает после первой записи в пайп (foo). Если прервать операцию - в распакованном out.gz видим только запись о foo (bar нету). Такое чувство, что пайп закрылся после foo.

А если переписать вот так, то всё начинает работать, как мной ожидалось:

exec 3> >(gzip -7 -c > out.gz)

echo "foo" >&3
sleep 1
echo "bar" >&3
sleep 2
echo "baz" >&3
sleep 1

exec 3>&-

…терминал не зависает, создаётся файлик out.gz, который распаковываем и получаем в нём три строки:

gunzip < out.gz > out.txt && cat out.txt
foo
bar
baz

Я что-то неправильно понимаю про именованный пайп и в первом случае ожидаю от него чего-то ему не свойственного?

 , ,

Novascriptum
()

Ошибка установки nodejs из-за версии glibc

Форум — General

Всем привет. Устанавливаю nodejs на CentOS 7.9. В итоге получаю вот это:

# yum install nodejs
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: mirrors.datahouse.ru
 * extras: mirrors.datahouse.ru
 * updates: mirrors.datahouse.ru
Resolving Dependencies
--> Running transaction check
---> Package nodejs.x86_64 2:18.2.0-1nodesource will be installed
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.21)(64bit) for package: 2:nodejs-18.2.0-1nodesource.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.28)(64bit) for package: 2:nodejs-18.2.0-1nodesource.x86_64
--> Processing Dependency: libm.so.6(GLIBC_2.27)(64bit) for package: 2:nodejs-18.2.0-1nodesource.x86_64
--> Processing Dependency: libstdc++.so.6(CXXABI_1.3.9)(64bit) for package: 2:nodejs-18.2.0-1nodesource.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.20)(64bit) for package: 2:nodejs-18.2.0-1nodesource.x86_64
--> Finished Dependency Resolution
Error: Package: 2:nodejs-18.2.0-1nodesource.x86_64 (nodesource)
           Requires: libm.so.6(GLIBC_2.27)(64bit)
Error: Package: 2:nodejs-18.2.0-1nodesource.x86_64 (nodesource)
           Requires: libstdc++.so.6(GLIBCXX_3.4.20)(64bit)
Error: Package: 2:nodejs-18.2.0-1nodesource.x86_64 (nodesource)
           Requires: libstdc++.so.6(GLIBCXX_3.4.21)(64bit)
Error: Package: 2:nodejs-18.2.0-1nodesource.x86_64 (nodesource)
           Requires: libstdc++.so.6(CXXABI_1.3.9)(64bit)
Error: Package: 2:nodejs-18.2.0-1nodesource.x86_64 (nodesource)
           Requires: libc.so.6(GLIBC_2.28)(64bit)
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

Попробовал сделать вот так:

 yum install libstdc++.so.6
<...>
Running transaction
  Installing : libgcc-4.8.5-44.el7.i686                                                                                              
  Installing : glibc-2.17-325.el7_9.i686                                                                                              
  Installing : nss-softokn-freebl-3.67.0-3.el7_9.i686                                                                                 
  Installing : libstdc++-4.8.5-44.el7.i686                                                                                            
  Verifying  : libstdc++-4.8.5-44.el7.i686                                                                                            
  Verifying  : nss-softokn-freebl-3.67.0-3.el7_9.i686                                                                                 
  Verifying  : glibc-2.17-325.el7_9.i686                                                                                              
  Verifying  : libgcc-4.8.5-44.el7.i686                                                                                               

… но проблема осталась.

# strings /usr/lib/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH

Причём раньше на той же конфигурации CentOS нода нормально ставилась. Теперь чего-то не хватает, можно ли это доустановить? Или я неправильно ошибку понимаю?

 , ,

Novascriptum
()

php command line: код и данные из standard input

Форум — General

Возникла потребность из хост-системы обращаться к php-интерпретатору, находящемуся внутри docker-контейнера (т.к. не хочу в хост-систему устанавливать php по ряду причин). В итоге интерпретатор запускаю как-то так (из хост-системы обращаюсь к контейнеру):

cat script.php | docker exec -i php_container_name php -- --param1=value1

Проблема в том, что этот скрипт должен работать с бинарными данными, подаваемыми ему на вход (а сейчас туда уходит, собственно, сам код скрипта). И непонятно, куда их теперь подавать.

С моей стороны было два соображения:

  1. Использовать named pipe, имя которого передать аргументом в php-скрипт:
cat script.php | docker exec -i php_container_name php -- --param1=value1 pipe-name="/path/to/file"

…И внутри скрипта читать уже содержимое этого пайпа. Идея, наверное, рабочая, но тогда между контейнером и системой нужно шарить этот файл - лишняя операция. И не факт ещё, что данные корректно полетят из системы в контейнер (не знаю, будет это работать или нет, но, судя по тому, что сокеты работают, то и named pipe должен заработать).

  1. Передавать данные в php-скрипт через дескриптор 3. Изнутри php-скрипта я понимаю, как их прочитать. Но не понимаю, как корректно составить команду, которая будет писать данные в php. Ну то есть я хотел бы что-то вроде такого:
#!/bin/bash
exec 3> >(docker exec -i php_container_name php -- --param1=value1)
cat ./script.php >&3
# тут мне надо как-то открыть дескриптор 3 php-процесса для записи и передать в него данные
exec 3>&-

Предпочтителен второй вариант, но не могу понять, как это пишется.

 ,

Novascriptum
()

Запись в файловый дескриптор дочернего процесса

Форум — General

Разбираюсь с пайпами и файловыми дескрипторами. Возник вопрос в конкретной ситуации. Имеется php-скрипт read.php:

$step = 4 * 1024;

echo "php started\n";
while (!\feof(\STDIN)) {
    \fwrite(\STDOUT, 'read stdin part: '.\fread(\STDIN, $step)."\n");
}
echo "php finished\n";

Хочу запустить его из баш-скрипта + отдельной строкой передать ему что-то в standard input следующим образом:

php read.php &
procId=$(ps axw -o pid,command | grep 'read' | head -1 | sed -r 's|^\s*([0-9]+)[^0-9]+.*$|\1|g')
echo "procId: $procId"
echo -e "test1\ntest2" >> /proc/$procId/fd/0

При этом php-скрипт не получает ничего в STDIN, вывод следующий:

$ sh box.sh
procId: 2818
$ php started
read stdin part: 
php finished

При этом терминал висит, как будто ожидает ручного ввода данных. Делаю вывод, что вот эта строчка не срабатывает:

echo -e "test1\ntest2" >> /proc/$procId/fd/0

Судя по выводу в командную строку выше, у меня баш-скрипт завершает своё выполнение до начала исполнения php-скрипта («procId: 2818» вывелось раньше, чем «php started»). Как-то можно «дать понять» баш-скрипту подождать запуска php перед началом записи в его STDIN?

 ,

Novascriptum
()

logrotate nginx: пишет в тот же самый файл

Форум — General

Имеется такой конфиг logrotate:

/var/log/nginx/*.log {
        daily
        missingok
        rotate 10
        compress
        delaycompress
        notifempty
        create 640 nginx adm
        sharedscripts
        postrotate
                if [ -f /var/run/nginx.pid ]; then
                        kill -USR1 `cat /var/run/nginx.pid`
                fi
        endscript
}

Всё работает замечательно, но лог продолжает писаться в старый файл (тот, что был переименован). Например, в access.log.1, а не вновь созданный access.log. Выполняю вручную:

kill -USR1 `cat /var/run/nginx.pid`

…ошибок нет, эффекта тоже нет. Такое чувство, что kill не работает:

[root@nginx nginx]# kill -USR1 `cat /var/run/nginx.pid`
[root@nginx nginx]# ps aux | grep nginx
root      5364  0.0  0.0  75152  3712 ?        Ss   13:57   0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
bitrix    5365  0.0  0.1  77084  6964 ?        S    13:57   0:00 nginx: worker process
bitrix    5366  0.0  0.2  77084  8688 ?        S    13:57   0:00 nginx: worker process
bitrix    5367  0.0  0.1  77084  6964 ?        S    13:57   0:00 nginx: worker process
bitrix    5368  0.0  0.1  77084  6964 ?        S    13:57   0:00 nginx: worker process
bitrix    5369  0.0  0.2  77084  8772 ?        S    13:57   0:00 nginx: worker process
bitrix    5370  0.0  0.1  77084  6964 ?        S    13:57   0:00 nginx: worker process
bitrix    5371  0.0  0.1  77084  6964 ?        S    13:57   0:00 nginx: worker process
bitrix    5372  0.0  0.1  77084  6964 ?        S    13:57   0:00 nginx: worker process
root      5527  0.0  0.0  10692   980 pts/1    S+   14:07   0:00 grep --color=auto nginx

Может ли это как-то быть связано с тем, что nginx работает в докер-контейнере? Как тогда правильно прибить процесс?

 ,

Novascriptum
()

nginx logrotate

Форум — General

Почему-то не работает logrotate, хотя говорит, что всё нормально. Вот конфиг:

/var/log/nginx/*.log {
        daily
        missingok
        rotate 10
        compress
        delaycompress
        notifempty
        create 640 nginx adm
        sharedscripts
        postrotate
                if [ -f /var/run/nginx.pid ]; then
                        kill -USR1 `cat /var/run/nginx.pid`
                fi
        endscript
}

Запускаю вручную, вот что вижу:

# /usr/sbin/logrotate -d /etc/logrotate.d/nginx
reading config file /etc/logrotate.d/nginx
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /var/log/nginx/*.log  after 1 days (10 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/nginx/access.log
  log needs rotating
considering log /var/log/nginx/error.log
  log needs rotating
rotating log /var/log/nginx/access.log, log->rotateCount is 10
dateext suffix '-20220220'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
previous log /var/log/nginx/access.log.1 does not exist
renaming /var/log/nginx/access.log.10.gz to /var/log/nginx/access.log.11.gz (rotatecount 10, logstart 1, i 10), 
renaming /var/log/nginx/access.log.9.gz to /var/log/nginx/access.log.10.gz (rotatecount 10, logstart 1, i 9), 
renaming /var/log/nginx/access.log.8.gz to /var/log/nginx/access.log.9.gz (rotatecount 10, logstart 1, i 8), 
renaming /var/log/nginx/access.log.7.gz to /var/log/nginx/access.log.8.gz (rotatecount 10, logstart 1, i 7), 
renaming /var/log/nginx/access.log.6.gz to /var/log/nginx/access.log.7.gz (rotatecount 10, logstart 1, i 6), 
renaming /var/log/nginx/access.log.5.gz to /var/log/nginx/access.log.6.gz (rotatecount 10, logstart 1, i 5), 
renaming /var/log/nginx/access.log.4.gz to /var/log/nginx/access.log.5.gz (rotatecount 10, logstart 1, i 4), 
renaming /var/log/nginx/access.log.3.gz to /var/log/nginx/access.log.4.gz (rotatecount 10, logstart 1, i 3), 
renaming /var/log/nginx/access.log.2.gz to /var/log/nginx/access.log.3.gz (rotatecount 10, logstart 1, i 2), 
renaming /var/log/nginx/access.log.1.gz to /var/log/nginx/access.log.2.gz (rotatecount 10, logstart 1, i 1), 
renaming /var/log/nginx/access.log.0.gz to /var/log/nginx/access.log.1.gz (rotatecount 10, logstart 1, i 0), 
rotating log /var/log/nginx/error.log, log->rotateCount is 10
dateext suffix '-20220220'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
previous log /var/log/nginx/error.log.1 does not exist
renaming /var/log/nginx/error.log.10.gz to /var/log/nginx/error.log.11.gz (rotatecount 10, logstart 1, i 10), 
renaming /var/log/nginx/error.log.9.gz to /var/log/nginx/error.log.10.gz (rotatecount 10, logstart 1, i 9), 
renaming /var/log/nginx/error.log.8.gz to /var/log/nginx/error.log.9.gz (rotatecount 10, logstart 1, i 8), 
renaming /var/log/nginx/error.log.7.gz to /var/log/nginx/error.log.8.gz (rotatecount 10, logstart 1, i 7), 
renaming /var/log/nginx/error.log.6.gz to /var/log/nginx/error.log.7.gz (rotatecount 10, logstart 1, i 6), 
renaming /var/log/nginx/error.log.5.gz to /var/log/nginx/error.log.6.gz (rotatecount 10, logstart 1, i 5), 
renaming /var/log/nginx/error.log.4.gz to /var/log/nginx/error.log.5.gz (rotatecount 10, logstart 1, i 4), 
renaming /var/log/nginx/error.log.3.gz to /var/log/nginx/error.log.4.gz (rotatecount 10, logstart 1, i 3), 
renaming /var/log/nginx/error.log.2.gz to /var/log/nginx/error.log.3.gz (rotatecount 10, logstart 1, i 2), 
renaming /var/log/nginx/error.log.1.gz to /var/log/nginx/error.log.2.gz (rotatecount 10, logstart 1, i 1), 
renaming /var/log/nginx/error.log.0.gz to /var/log/nginx/error.log.1.gz (rotatecount 10, logstart 1, i 0), 
renaming /var/log/nginx/access.log to /var/log/nginx/access.log.1
creating new /var/log/nginx/access.log mode = 0640 uid = 599 gid = 4
renaming /var/log/nginx/error.log to /var/log/nginx/error.log.1
creating new /var/log/nginx/error.log mode = 0640 uid = 599 gid = 4
running postrotate script
running script with arg /var/log/nginx/*.log : "
                if [ -f /var/run/nginx.pid ]; then
                        kill -USR1 `cat /var/run/nginx.pid`
                fi
"
removing old log /var/log/nginx/access.log.11.gz
error: error opening /var/log/nginx/access.log.11.gz: No such file or directory

По итогу как в папке /var/log/nginx/ было два файла (error.log и access.log), так и осталось, не изменилось вообще ничего.:(

# ls -al /var/log/nginx/
total 356
drwxrwx--- 2 root root     41 Feb 20 19:19 .
drwxr-xr-x 1 root root   4096 Feb 20 03:13 ..
-rw-r--r-- 1 root root 330483 Feb 20 19:14 access.log
-rw-r--r-- 1 root root  26398 Feb 20 18:47 error.log

Как так, куда копать?

 ,

Novascriptum
()

nginx: переменная в ssl_certificate

Форум — General

Хочу в конфиге сделать что-то вроде такого:

server{
	server_name ^.*?\.(?<basename>.*?);
	...
	ssl_certificate /path/to/cert/$basename/cert.pem
}

Это позволило бы в одном месте конфига указать сертификаты сразу для нескольких доменов. В итоге переменная не применяется (хотя она точно непустая - проверял путём добавления её значения в заголовок ответа) - в логе сообщение о том, что по пути «/path/to/cert//cert.pem» сертификат не найден.

Версия nginx 1.21, версия модуля openssl 1.0.2k (built with OpenSSL 1.0.2k-fips 26 Jan 2017). Вроде переменные должны в этом месте поддерживаться с nginx 1.15.9 (у меня явно новее). И с версии openssl 1.0.2. Я как-то не так понимаю использование переменных в пути к сертификату?

 ,

Novascriptum
()

nginx from epel rawhide

Форум — General

Имеется чистый CentOS 7. Хочу установить nginx, но интересует сборка с обновлённым модулем openssl (чтобы был от 1.1.1 и выше). Нашёл тут: https://src.fedoraproject.org/rpms/nginx/c/0c7690e709ab5efa99d0a0d69c941aae11dd0700?branch=rawhide

Репозиторий epel, ветка rawhide. Как из неё установиться? Я бы предполагал так:

yum -y upgrade; \
yum -y install epel-release; \
yum-config-manager --enable nginx-rawhide; \
yum install nginx

Это верно?

 , ,

Novascriptum
()

Правила iptables: то ли я накосячил, то ли докер автоматом открыл

Форум — General

Разбираюсь с iptables после установки докера. Изначально было настроено так:

-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m multiport --dports 80,443,{мой кастомный порт для ssh} -j ACCEPT

Поставил докер, установил контейнер, сделал проброс ещё одного порта (допустим, 10000) на 22 порт контейнера. Ожидаю, что когда попытаюсь зайти по ssh в хост-систему на 10000 порт, то получу что-то вроде connection refused, пока не открою сам 10000 порт. В итоге соединяюсь прекрасно. В чём затык? Правила стали вот такие:

-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N DOCKER-USER
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m multiport --dports 80,443,{мой кастомный порт для ssh} -j ACCEPT
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o br-18c405db569f -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-18c405db569f -j DOCKER
-A FORWARD -i br-18c405db569f ! -o br-18c405db569f -j ACCEPT
-A FORWARD -i br-18c405db569f -o br-18c405db569f -j ACCEPT
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER -d 10.10.0.19/32 ! -i br-18c405db569f -o br-18c405db569f -p tcp -m tcp --dport 22 -j ACCEPT

-A DOCKER-ISOLATION-STAGE-1 -i br-18c405db569f ! -o br-18c405db569f -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o br-18c405db569f -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN

Тут добавилось какое-то правило, которое открывает 10000 порт? Не вижу его. :( А в соответствии с правилом «-P INPUT DROP», врод, он должен быть закрыт. Или тут несколько правил, типа одно перенаправляет на другое, а в конце на то, что «-A DOCKER -d 10.10.0.19/32 *** –dport 22 -j ACCEPT»?

 ,

Novascriptum
()

Bash: запись в предыдущий процесс в конвейере

Форум — General

Всем здравствуйте! Возник следующий вопрос. Допустим, имеется вот такая цепочка процессов:

proc A | proc B | proc C | ...

И я хотел бы, чтобы процесс «C» писал данные в файловый дескриптор №3 процесса A. Это как-то возможно вообще указать? Ну то есть понятно, что внутри скриптов, которые тут представлены процессами A и C, я напишу код по чтению и записи в соответствующий файловый дескриптор, но как их друг с другом связать?

Также готов рассмотреть вариант, когда вот так:

proc A | proc B | proc C

И stdout процесса «C» нужно как-то направить в stdin процесса A (типа замкнуть круг).

 ,

Novascriptum
()

MySQL привилегия CREATE USER

Форум — Admin

Не могу найти нигде в документации: почему-то при создании пользователя, которому даётся привилегия CREATE USER, такой пользователь получает «автоматически» право на просмотр списка всех баз данных на сервере. Ну то есть я создаю пользователя вот так:

CREATE USER 'user1'@'localhost' IDENTIFIED BY 'mypass1';
GRANT CREATE USER ON *.* TO `user1`@`localhost` WITH GRANT OPTION;

…и в этот момент он получает право видеть список всех БД. Это нормально? Можно ли вообще как-то выдать право пользователю создавать других пользователей, но при этом видеть базы данных только по какому-либо префиксу («user1_%» в моём случае)? При этом написать привилегию как-то так:

GRANT CREATE USER ON "user1_%".*

…не получается - типа это глобальная привилегия.

 

Novascriptum
()

opendkim (multiple users)

Форум — General

Всем доброго времени! Настраиваю почтовый сервер postfix в CentOS. В логах вижу такую ошибку:

myselector._domainkey.site.ru: key data is not secure: opendkim is in group 0 which has multiple users (e.g., "sync")

При этом файл с ключом принадлежит пользователю opendkim, группе opendkim. Далее смотрю:

id opendkim
uid=999(opendkim) gid=997(opendkim) groups=997(opendkim),12(mail)

Вроде всё корректно. Не могу понять тогда, откуда ошибка берётся.

 

Novascriptum
()

docker-compose build без контейнера

Форум — General

Всем привет! Возник тут вопрос при использовании docker-compose. Допустим, я взял за основу образ CentOS, доработал его чуток под себя (в рамках dockerfile). И создаю контейнер на основе этого образа. То есть у меня будет что-то вроде такого:

services:
  centos79:
    build:
      context: ~/win/centos-7.9
      dockerfile: Dockerfile
    image: local/centos-7.9:latest

  local-php-fpm-74:
    container_name: php74
    build:
      context: ~/win/php-fpm
      dockerfile: Dockerfile
    depends_on:
      - centos79

Мне это нужно, чтобы при запуске docker-compose up –build у меня собирались оба образа. При этом образ второго контейнера базируется на первом образе. Проблема в том, что контейнер-то мне нужен только один - второй (в данном примеер php-fpm), а вот первый нет. А при таком синтаксисе создаётся всегда два контейнера. Можно ли каким-то синтаксисом обозначить, что второй образ зависит от первого, поэтому при build’е нужно сначала собирать первый. А при запуске через up контейнер нужен только один. Не могу нигде найти.

 

Novascriptum
()

Ошибка iptables

Форум — General

Iptables при старте службы выводит следующую ошибку:

systemd[1]: Starting IPv4 firewall with iptables...
iptables.init[9875]: iptables: Applying firewall rules: iptables-restore v1.4.21: Port `0' not valid
iptables.init[9875]: Error occurred at line: 39
iptables.init[9875]: Try `iptables-restore -h' or 'iptables-restore --help' for more information.
iptables.init[9875]: [FAILED]
systemd[1]: iptables.service: main process exited, code=exited, status=1/FAILURE
systemd[1]: Failed to start IPv4 firewall with iptables.
systemd[1]: Unit iptables.service entered failed state.
systemd[1]: iptables.service failed.

Конфиг iptables выглядит следующим образом:

[root@bxenv1 tasks]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.21 on Sun Dec 27 18:58:31 2020
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:bx_public - [0:0]
:bx_trusted - [0:0]
-A INPUT -j bx_trusted
-A INPUT -j bx_public
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A bx_public -p tcp -m state --state NEW -m tcp --dport 8070 -m comment --comment "BX: requests for pool update" -j ACCEPT
-A bx_public -p tcp -m state --state NEW -m tcp --dport 80 -m comment --comment "BX: web ports" -j ACCEPT
-A bx_public -p tcp -m state --state NEW -m tcp --dport 443 -m comment --comment "BX: web ports" -j ACCEPT
-A bx_public -p tcp -m state --state NEW -m tcp --dport 8890 -m comment --comment "BX: web ports" -j ACCEPT
-A bx_public -p tcp -m state --state NEW -m tcp --dport 8891 -m comment --comment "BX: web ports" -j ACCEPT
-A bx_public -p tcp -m state --state NEW -m tcp --dport 8893 -m comment --comment "BX: web ports" -j ACCEPT
-A bx_public -p tcp -m state --state NEW -m tcp --dport 8894 -m comment --comment "BX: web ports" -j ACCEPT
-A bx_public -p tcp -m state --state NEW -m tcp --dport 5222 -m comment --comment "BX: web ports" -j ACCEPT
-A bx_public -p tcp -m state --state NEW -m tcp --dport 5223 -m comment --comment "BX: web ports" -j ACCEPT
-A bx_trusted -s 10.10.0.4/32 -p tcp -m tcp -m comment --comment "BX: server1" -j ACCEPT
-A bx_trusted -s 10.10.0.4/32 -p udp -m udp -m comment --comment "BX: server1" -j ACCEPT
COMMIT
# Completed on Sun Dec 27 18:58:31 2020
# Generated by iptables-save v1.4.21 on Sun Dec 27 18:58:31 2020
*nat
:PREROUTING ACCEPT [7:1225]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [1413:84840]
:POSTROUTING ACCEPT [2799:191448]
:DOCKER_OUTPUT - [0:0]
:DOCKER_POSTROUTING - [0:0]
-A OUTPUT -d 127.0.0.11/32 -j DOCKER_OUTPUT
-A POSTROUTING -d 127.0.0.11/32 -j DOCKER_POSTROUTING
-A DOCKER_OUTPUT -d 127.0.0.11/32 -p tcp -m tcp --dport 53 -j DNAT --to-destination 0.0.0.0:0 --random --persistent --to-destination 0.0.0.0:0 --random --persistent --to-destination 0.0.0.0 --random --persistent
-A DOCKER_OUTPUT -d 127.0.0.11/32 -p udp -m udp --dport 53 -j DNAT --to-destination 0.0.0.0:0 --random --persistent --to-destination 0.0.0.0:0 --random --persistent --to-destination 0.0.0.0 --random --persistent
-A DOCKER_POSTROUTING -s 127.0.0.11/32 -p tcp -m tcp --sport 36221 -j SNAT --to-source :53
-A DOCKER_POSTROUTING -s 127.0.0.11/32 -p udp -m udp --sport 60692 -j SNAT --to-source :53
COMMIT
# Completed on Sun Dec 27 18:58:31 2020

Сам с iptables знаком плохо, конфиг сгенерирован автоматически. В нём какая-то ошибка?

 ,

Novascriptum
()

Долгий страт midnight commander в терминале Linux Mind

Форум — Desktop

Всем привет! Столкнулся с любопытной проблемой: из-под обычного пользователя в терминале linux mint (cinnamon) долго запускается mc (секунд по 10-20). Однако если в командной строке написать «sudo mc» - то открывается моментально. Есть идеи, с чем это может быть связано?

 ,

Novascriptum
()

Vmware vs VirtualBox guest screen resolution

Форум — General

Всем привет! Недавно поднимал вопрос графической производительности в виртуалках на основе VirtualBox. Как оказалось, в vmware действительно с этим обстоят дела лучше (но не сказать, что сильно лучше), поэтому потихоньку тестирую vmware workstation и планирую перемещаться в него (в качестве хост-системы выступает win10). Установил в качестве guest Linux Mint. Теперь вот вожусь с разрешением экрана в Linux Mint. Выяснил, что это очень неудобно, если сравнивать с VirtualBox. Поясню на конкретном примере: У меня два монитора с разным разрешением (1920x1080 и 1680x1050). Я регулярно перетаскиваю окно с виртуалкой с монитора на монитор и включаю полноэкранный режим. На обоих мониторах в этом случае происходит автоподстройка разрешения в момент применения полноэкранного режима. Более того, при изначальном запуске виртуалки в полноэкранном режиме установится в ней именно то разрешение экрана, на котором она отображается (если можно так выразиться). А в vmware по умолчанию такого нет. Когда я запустил виртуалку и установил vmwaretool, разрешение осталось равным 800x600. Потом я пошёл в настройки монитора в guest-системе и ручками хотел выбрать то разрешение, которое соответствует экрану. К моему удивлению, его не оказалось (но есть, например, 1920x1200 и для 1680 точек не помню, сколько по вертикали, но не 1050). Погуглил, нашёл решение, чтобы добавить нужное мне разрешение:

cvt 1920 1080
xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
xrandr --addmode Virtual1 1920x1080_60.00
xrandr --output Virtual1 --mode 1920x1080_60.00

Но оно пропадает после ребута. Как я понял, там что-то с файлом xorg.conf и мне ещё предстоит с этим разобраться. Но даже если я это сделаю, это не решит проблему того, что у меня два экрана с разным разрешением. Если я перетаскиваю окно на другой монитор и там применяю полноэкранный режим, мне надо зайти в настройки монитора и сменить разрешение экрана. Это жутко неудобно. И, естественно, сразу возникает вопрос, почему в VirtualBox это работает из коробки и вообще, может, я чего-то неправильно стал делать, и в vmware оно тоже есть, но я типа где-то не там ищу. Вот, соответственно, и вопрос. Можно ли как-то автоматизировать автоподстройку разрешения экрана? И чтобы оно не сбрасывалось в случае ребута виртуалки на этом экране.

 , ,

Novascriptum
()

Проблемы графической производительности linux-guest из win10-host

Форум — General

Всем привет! В windows10 использую VirtualBox для виртуальных машин linux (тестировал centOS 8.1, centos 8.3, linuxmint). Во всех случаях наблюдается одна и та же проблема: если поставить в настройках вирт. машины флажок «Включить 3D-ускорение» https://www.screencast.com/t/TMnCpLCqZuF2, то внутри guest-системы резко падает графическая производительность. Внутри guest-linux, например, проверяю с помощью команды «glxgears»: 1) при использовании 3d-ускорения показывает 30 fps; 2) без использования - около 1500. Но и при 1500 в целом наблюдается неплавность при прокрутке страницы в браузере, например (похоже, что из-за низкого FPS). Примечательно, что точь-в-точь такую же проблему описывали вот тут: https://forums.virtualbox.org/viewtopic.php?f=6&t=97024

Железо у меня похожее: процессор amd ryzen 3600, графика radeon 5700xt.

Хотелось бы добиться хорошей графической производительности внутри guest-linux. Может есть у кого-нибудь предположения? Обновил уже и VirtualBox, и guest additions до последней на текущий день версии.

 , ,

Novascriptum
()

Не подключается сеть в CentOS 8

Форум — General

Всем привет! На виртуалке крутится CentOS 8. В один прекрасный момент перестало работать сетевое подключение:

Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.7686] manager: NetworkManager state is now CONNECTED_LOCAL
Dec 23 00:35:57 localhost NetworkManager[1093]: <warn>  [1608665757.7692] device (enp0s8): Activation: failed for connection 'enp0s8'
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.7694] device (enp0s8): state change: failed -> disconnected (reason 'none', sys-iface-state: 'managed')
Dec 23 00:35:57 localhost avahi-daemon[939]: Withdrawing address record for fe80::35a9:9586:c052:32f6 on enp0s8.
Dec 23 00:35:57 localhost avahi-daemon[939]: Leaving mDNS multicast group on interface enp0s8.IPv6 with address fe80::35a9:9586:c052:32f6.
Dec 23 00:35:57 localhost avahi-daemon[939]: Interface enp0s8.IPv6 no longer relevant for mDNS.
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.7885] dhcp4 (enp0s8): canceled DHCP transaction, DHCP client pid 3391
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.7885] dhcp4 (enp0s8): state changed timeout -> done
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.7972] policy: auto-activating connection 'enp0s8' (ca4214f3-5437-4bfd-9cf5-329774052f77)
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.7977] device (enp0s8): Activation: starting connection 'enp0s8' (ca4214f3-5437-4bfd-9cf5-329774052f77)
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.7978] device (enp0s8): state change: disconnected -> prepare (reason 'none', sys-iface-state: 'managed')
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.7980] manager: NetworkManager state is now CONNECTING
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.7982] device (enp0s8): state change: prepare -> config (reason 'none', sys-iface-state: 'managed')
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.8080] device (enp0s8): state change: config -> ip-config (reason 'none', sys-iface-state: 'managed')
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.8082] dhcp4 (enp0s8): activation: beginning transaction (timeout in 45 seconds)
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.8103] dhcp4 (enp0s8): dhclient started with pid 3422
Dec 23 00:35:57 localhost avahi-daemon[939]: Joining mDNS multicast group on interface enp0s8.IPv6 with address fe80::35a9:9586:c052:32f6.
Dec 23 00:35:57 localhost avahi-daemon[939]: New relevant interface enp0s8.IPv6 for mDNS.
Dec 23 00:35:57 localhost avahi-daemon[939]: Registering new address record for fe80::35a9:9586:c052:32f6 on enp0s8.*.
Dec 23 00:35:57 localhost dhclient[3422]: DHCPDISCOVER on enp0s8 to 255.255.255.255 port 67 interval 7 (xid=0xcc8b7061)
Dec 23 00:36:04 localhost dhclient[3422]: DHCPDISCOVER on enp0s8 to 255.255.255.255 port 67 interval 11 (xid=0xcc8b7061)
Dec 23 00:36:12 localhost systemd[1]: libvirtd.service: Succeeded.
Dec 23 00:36:15 localhost dhclient[3422]: DHCPDISCOVER on enp0s8 to 255.255.255.255 port 67 interval 9 (xid=0xcc8b7061)
Dec 23 00:36:24 localhost dhclient[3422]: DHCPDISCOVER on enp0s8 to 255.255.255.255 port 67 interval 14 (xid=0xcc8b7061)
Dec 23 00:36:38 localhost dhclient[3422]: DHCPDISCOVER on enp0s8 to 255.255.255.255 port 67 interval 7 (xid=0xcc8b7061)
Dec 23 00:36:42 localhost NetworkManager[1093]: <warn>  [1608665802.7622] dhcp4 (enp0s8): request timed out
Dec 23 00:36:42 localhost NetworkManager[1093]: <info>  [1608665802.7622] dhcp4 (enp0s8): state changed unknown -> timeout
Dec 23 00:36:42 localhost NetworkManager[1093]: <info>  [1608665802.7622] device (enp0s8): state change: ip-config -> failed (reason 'ip-config-unavailable', sys-iface-state: 'managed')

Используется dhcp, вот конфиг из network-scripts:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s8
UUID=ca4214f3-5437-4bfd-9cf5-329774052f77
ONBOOT=yes

# ip -br addr
lo               UNKNOWN        127.0.0.1/8 ::1/128 
enp0s8           UP             
virbr0           DOWN           192.168.122.1/24 
virbr0-nic       DOWN           

Смущает какой-то вот этот адаптер virbr0 (судя по названию, virtual bridge или что-то такое) и что у него адрес начинается на 192.168.122, а у меня локальная сеть 192.168.1.*

# ping 192.168.1.1
connect: Сеть недоступна

Что-то не могу понять, куда вообще копать. Пробовал в VirtualBox вырубать один сетевой адаптер и включать другой - не помогло. И вообще непонятно, что и из-за чего поломалось.

 ,

Novascriptum
()

Переключение раскладки по Ctrl+Shift, а не Shift+Ctrl

Форум — Desktop

Всем привет! Пытаюсь настроить переключение раскладки под себя в CentOS 8.3 + Gnome. Зашёл в «Доп. настройки Gnome»: Клавиатура и мышь / Дополнительные параметры раскладки / Переключение на другую раскладку / Ctrl + Shift.

Вроде всё ок, но переключается по нажатию на Shift + Ctrl, а не Ctrl + Shift, это дико раздражает. Причём раньше работала смена раскладки по Alt + Shift, когда я переткнул флажок напротив этого сочетания в том же окошке настроек, тоже стало применяться только по Shift + Alt, что за наваждение. :(

 localectl
   System Locale: LANG=ru_RU.UTF-8
       VC Keymap: ruwin_ct_sh-UTF-8
      X11 Layout: ru,us
     X11 Variant: ,
     X11 Options: grp:alt_shift_toggle,grp:lctrl_lshift_toggle,grp:rctrl_rshift_toggle
cat /etc/vconsole.conf
KEYMAP=ruwin_ct_sh-UTF-8
FONT=eurlatgr
localectl list-keymaps | grep ru
cz-rus
dvorak-ru
ge-ru
ng-yoruba
ru
ru-cp1251
ru-cv_latin
ru-ms
ru-yawerty
ru1
ru2
ru3
ru4
ru_win
ruwin_alt-CP1251
ruwin_alt-KOI8-R
ruwin_alt-UTF-8
ruwin_alt_sh-UTF-8
ruwin_cplk-CP1251
ruwin_cplk-KOI8-R
ruwin_cplk-UTF-8
ruwin_ct_sh-CP1251
ruwin_ct_sh-KOI8-R
ruwin_ct_sh-UTF-8
ruwin_ctrl-CP1251
ruwin_ctrl-KOI8-R
ruwin_ctrl-UTF-8
sunt5-ru

Помогите разобораться, пожалуйста, добрые люди.

 , ,

Novascriptum
()

RSS подписка на новые темы