LINUX.ORG.RU

Сообщения Goganchic

 

Схема сети для небольшой организации

Пытаюсь разработать схему сети для небольшой организации. В организации несколько разработчиков, один админ. Организация занимается разработкой софта (в основном разный веб). Представляю себе двухконтурную схему:

  1. DMZ-контур из которого есть доступ в интернет. Сюда помещаю внешний DNS, http-блансировщик на nginx, внешний файрвол, vpn-сервер для доступа внутрь.
  2. Внутренний контур. Сюда помещаю внутренний файрвол, который пропускает только определенные порты из DMZ, FreeIPA для домена, внутренний DNS, хранилище кода, CI/CD системы, базы данных и прочие сервера.

Доступ во внутренний контур из Интернета возможен только через DMZ. Доступ в Интернет из внутреннего контура возможен только через DMZ.

Часть HTTP-ресурсов доступна из Интернета через http-балансировщик. Сами ресурсы расположены на серверах во внутренней сети.

Часть HTTP-ресурсов доступна только из-под VPN.

Возникает ряд вопросов:

  1. в целом имеет ли такая схема право на существование?
  2. вводить ли в домен машины из DMZ-контура?
  3. какой DNS сервер указывать машинам из DMZ-контура?

 

Goganchic
()

FreeIPA кеширование sudo_rules

Пытаюсь объединить несколько машин на Oracle Linux 8 в домен с помощью FreeIPA. Никаких специфичных настрое не делал - просто запустил ipa-client-install --mkhomedir на клиентах и ipa-server-install на сервере.

Настраиваю sudo rules. Заметил, что после после удаления правил - изменения на клиентах появляются достаточно быстро, а вот после добавления правил - нет.

Читаю доку по sssd-ldap. Вижу, что sudo rules кешируются и чтобы правила применились нужно либо достаточно долго ждать, либо чистить кеш через sss_cache -E и удаление данных в /var/lib/sss/db/, либо менять настройки ldap_sudo_smart_refresh_interval и ldap_sudo_full_refresh_interval.

По последним настройкам возник вопрос: с одной стороны sudo rules у меня меняться будут не очень часто, но с другой - ждать по 15 минут, когда они применятся - не очень хочется. Какие значения для этих настроек приемлемы? В документации пишут, что если указать слишком маленькие значения - то будет генерироваться много лишнего трафика. И я вот думаю, если указать, ldap_sudo_full_refresh_interval = 300 и ldap_sudo_smart_refresh_interval = 120 это нормально или перебор? Спрашиваю потому, что дефолтные настройки в ldap_sudo_full_refresh_interval = 21600 и ldap_sudo_smart_refresh_interval = 900 кажутся совсем дикими.

 ,

Goganchic
()

Как Xiaomi определяет возможность Turbo charge

Подключаю телефон шнуром Xiaomi (USB Type A - USB Type C) к заряднику Xiaomi - отображается Turbo Charge.

Подключаю телефон к другому заряднику или другим шнуром - отображается режим быстрой зарядки, который медленнее чем Turbo Charge.

Между шнуром и зарядником втыкаю тестер с алиэкспресса, чтобы посмотреть напряжение и ток - отображается только режим быстрой зарядки. Прозвонил мультиметром контакты тестера - все 4 USB-контакта прозваниваются, т.е. никакого последовательного подключения к контактам скорее всего нет.

Вопрос: почему телефон в этом случае не подхватывает Turbo Charge? В чем может быть подвох? На мой взгляд, если контакты данных нетронуты, то телефон и зарядник должны иметь возможность согласовать режим зарядки.

Линукс при том, что иногда раздаю с этого телефона интернет для компа на линуксе.

 

Goganchic
()

firewall-cmd правила для роутера

Хочу настроить такую сетевую схему в Oracle Linux 8:

  • DMZ Gateway с двумя сетевыми интерфейсами, один смотрит во внешний мир, другой - в DMZ сеть;
  • внутри DMZ-сети есть несколько машин;
  • одна из машин DMZ - Network Gateway? имеет 2 интерфейса: один смотрит в DMZ, другой - во внутреннюю сеть;
  • во внутренней сети - другие машины.

В системе есть firewalld с nftables бекендом.

У меня возник ряд вопросов:

  1. Какие зоны нужно назначать интерфейсам DMZ Gateway? Интерфейсу наружу - public, интерфейсу внутри - DMZ?
  2. Какие зоны нужно назначать интерфейсам Network Gateway? Интерфейсу наружу - DMZ, интерфейсу внутри - Work?
  3. Как принято настраивать роутинг в firewall-cmd? Могу сделать с помощью direct-синтаксиса. Правильный ли это подход?

Пытаюсь понять, правильно ли делать все через firewalld или же можно настроить напрямую в nftables.

 , ,

Goganchic
()

wireguard адрес по dhcp

Настраиваю wireguard в конфигурации 1 сервер - много клиентов. Типичный конфиг клиента выглядит так:

[Interface]
Address = 10.10.8.101/24 <-- тут указывается статический адрес
ListenPort = 34567
PrivateKey = some-key

[Peer]
PublicKey = some-key
AllowedIPs = 10.10.8.0/24
Endpoint = 1.2.3.4:34567
PersistentKeepalive = 25

Получается, за каждым клиентом закреплен свой отдельный IP-адрес, который будет занят, даже если клиент не в сети. Можно ли сделать что-то вроде DHCP, чтобы адреса клиентам выдавались динамически?

 ,

Goganchic
()

iptables разрешить только определенный forwarding

Есть роутер на Debian 11. Локальная сеть - enp0s8, интернет - enp0s3. Хочу сделать так, чтобы из интернета был доступен web-сервер, который лежит в локальной сети на машине 10.0.0.2, а из локальной сети - был доступен Интернет. Весь лишний forward хочу запретить. Делаю такие правила iptables:

*nat
-A PREROUTING -i enp0s3 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.2:80
-A POSTROUTING -o enp0s3 -j MASQUERADE
COMMIT

*filter
-A INPUT -i lo -j ACCEPT
-A INPUT -i enp0s3 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i enp0s3 -j DROP
-A FORWARD -i enp0s3 -p tcp --dport 80 -j ACCEPT
-A FORWARD -i enp0s3 -j DROP
COMMIT

В таком конфиге Web-сервер из Интернета доступен, но Интернет из локальной сети - нет. Если убрать правило -A FORWARD -i enp0s3 -j DROP, то все работает, но это значит, что будет работать любой forward. Как бы мне сказать что forward соединений из локальной сети в Интернет можно делать, а обратно - только то, что разрешено явно? Или я загоняюсь и так делать не нужно?

 , ,

Goganchic
()

Как Linux решает куда форвордить трафик?

Настраиваю nat на Debian 11 с помощью dnsmasq и iptables. В машине 2 сетевые карты: enp0s3 - смотрит в Интернет, получает адрес по DHCP и enp0s8 - смотрит в локальную сеть, имеет статический адрес. Хочу настроить машину как gateway из локальной сети в Интернет. Настраиваю dnsmasq для раздачи DHCP и DNS в локальной сети, выставляю net.ipv4.ip_forward=1 в /etc/sysctl.conf и добавляю одно единственное правило в iptables: -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE, то есть для каждого пакета, которому нужно сделать nat, получаю ip-адрес интерфейса enp0s3 и меняю оригинальный source адрес пакета на адрес интерфейса.

Вопрос: каким образом Linux понимает, что nat нужно сделать именно с enp0s8 на enp0s3? Что если у меня не 2 а 10 интерфейсов? Правильно ли я понимаю, что дело в таблице маршрутизации, которую можно посмотреть с помощью команды ip route? Linux смотрит на адрес назначения пакета и по таблице определяет в какой интерфейс нужно запульнуть пакет.

 , ,

Goganchic
()

deb пакет мой офис

Смотрю содержимое deb-пакета «Мой Офис». Вижу, что все файлы, включая бинарники, настройки, шрифты, иконки и прочие ресурсы лежат в директории /usr/local/bin/myoffice-standard-home-edition. Я ведь правильно понимаю, что в Linux так не принято? Ну не хочешь ты раскладывать файлы по папка - ну положи все в /opt.

 ,

Goganchic
()

Воспроизводимое Linux-окружение

Периодически возникает задача создания Linux-окружения по некоторому образцу. Например, хочется иметь возможность быстро развернуть новую рабочую машину или сервер. Разные версии одних и тех же пакетов могут вести себя по-разному, поэтому очень хочется избежать сюрпризов и поставить именно тот набор версий, что указан в образце.

В разных языках программирования данная проблема решена в той или ной мере. Например, в Ruby есть bundler и Gemfile.lock, в котором перечислены все версии прямых и транзитивных зависимостей, в Node.js - npm и package-lock.json. Всегда можно попросить пакетный менеджер установить фиксированные версии библиотек.

Для создания серверных воспроизводимых окружений можно использовать Docker или Podman: указываю, что хочу запустить приложение внутри контейнера на некотором образе и я точно уверен, что окружение не поменяется (ну, кроме ядра хоста, конечно).

А что насчет десктопных дистрибутивов?

Возьмем, к примеру, Ubuntu. Можно посмотреть доступные версии пакетов с помощью apt-cache madison. Если один и тот же пакет предоставляется несолькими репозиториями, то можно выбрать какую именно версию установить. Однако, для одного репозитория доступна только одна версия пакета, т.е. если у меня в официальных репах лежит nginx 1.18.0-6, то в этой репе уже нет 1.18.0-3.

Посмотрел NixOS, слоган которого «Reproducible builds and deployments». С одной стороны я могу указать список пакетов в configuration.nix, но с другой, если я подсуну конфиг на новую машину, то далеко не факт, что мне установятся те же самые версии пакетов, ведь актуальные версии в репозиториях могли измениться.

Конечно можно сделать как с Docker-ом: скопировать образ диска с помощью dd и накатить на новый хард, но, на мой взгляд, такой подход выглядит несколько костыльно, потому что предполагает, что я взаимодействую с содержимым машины, как с некоторым черным ящиком, а хочется чтобы все было прозрачно, так сказать, configuration as a code.

Понимаю, что эта проблема может быть и не проблемой вовсе в большинстве случаев: если все следуют semver-у, то пакет 1.2.3 будет совместим с 1.2.4 и ничего страшного не произойдет, но в некоторых случаях все же хочется максимального контроля.

Уважаемый ЛОР, что посоветуете по поводу дистрибутива с воспроизводимым окружением?

 ,

Goganchic
()

Проектирование сложной формы в FreeCAD

Хочу спроектировать крепление для клавиатуры RII i4 к телефону, чтобы получить теплый ламповый телефон с механической клавиатурой. Проблема в том, что в FreeCAD я ничего кроме параллелепипедов со скругленными углами и цилиндрическими пазами или какой-нибудь типовой шестеренки я не делал. Смотрю на клавиатуру, а она вообще ни разу не квадратная. Как принято замерять все эти скругления и рисовать сложные формы? Допустим, обвел я контуры на листочке в клетку, смог измерить несколько радиусов по бокам, померил толщину штангенциркулем, а дальше как? Как принято строить 3D-модели на такие формы?

 

Goganchic
()

Не устанавливается DNS в OpenVPN

Использую Kubuntu 21.04. Хочу подключиться к hidemy.name с помощью OpenVPN конфига. Внутри конфига есть следующие строки:

#DNS server to use 
dhcp-option DNS 1.1.1.1

Для соединения использую Network Manager и пакет network-manager-openvpn:

  1. импортирую конфиг: nmcli connection import type openvpn file conn.ovpn
  2. запускаю соединение: nmcli connection up conn

До запуска соединения вижу такие настройки DNS:

systemd-resolve --status               
Global
       Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub

Link 2 (wlp0s20f3)
    Current Scopes: DNS
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 192.168.31.1
       DNS Servers: 192.168.31.1

Link 10 (vpn0)
Current Scopes: none
     Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

После активации подключения вывод не особо меняется:

Global
       Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub

Link 2 (wlp0s20f3)
    Current Scopes: DNS
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 192.168.31.1
       DNS Servers: 192.168.31.1

Link 10 (vpn0)
Current Scopes: none
     Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

Link 14 (tun0)
Current Scopes: none
     Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

По каким-то причинам dhcp-option DNS не подхватывается.

Есть идеи почему так может быть и как это исправить?

 ,

Goganchic
()

Запустить через OpenVPN только определенные роуты

Использую конфиг OpenVPN из OpenVPN road warrior installer. Эта штука настраивает так, чтобы весь трафик клиента пускался через VPN. Как сделать так, чтобы зарулить только часть трафика через VPN, а остальной трафик шел бы мимо него?

Сейчас используется такой серверный конфиг:

local 1.2.3.4
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-crypt tc.key
topology subnet
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 1.1.1.1"
keepalive 10 120
cipher AES-256-CBC
user nobody
group $group_name
persist-key
persist-tun
verb 3
crl-verify crl.pem
explicit-exit-notify

и такой клиентский:

client
dev tun
proto udp
remote 1.2.3.4 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
ignore-unknown-option block-outside-dns
block-outside-dns
verb 3
дальше инфа про сертификат

 

Goganchic
()

Зачем нужен цикл в функциях STM32 HAL

Смотрю исходники STM32 HAL. Вижу следующее:

#define __HAL_RCC_GPIOC_CLK_ENABLE()  do { \
                                        __IO uint32_t tmpreg = 0x00U; \
                                        SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOCEN);\
                                        /* Delay after an RCC peripheral clock enabling */ \
                                        tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOCEN);\
                                        UNUSED(tmpreg); \
                                          } while(0U)

зачем здесь нужен do/while цикл? Выполняется он всегда ровно 1 раз, т.к. постусловие всегда ложно. Правильно ли я понимаю, что это нужно только для того, чтобы определить внутри цикла переменную tmpreg так, чтобы область ее видимости была в этом самом цикле и название переменной не конфликтовало с названиями внутри функции, которая вызывает макрос?

 ,

Goganchic
()

VLC не открываем видео с SMB шары

В Kubuntu 21.04 из Dolphin пытаюсь открыть видео на сетевой SMB-шаре, к которой есть доступ без пароля. Ловлю ошибку вида:

Your input can't be opened:
VLC is unable to open the MRL `smb://192.168.1.1/Data/video.mkv`.
Check the log for details.

Пробовал задавать логин/пасс как пишут в интернетах - не помогло. Пробовал ставить kio-fuse как пишут на Reddit - тоже никакого эффекта. Проблема специфична для KDE: в Gnome все работает как нужно, т.к. Nautilus монтирует SMB-шару с помощью gvfsd-fuse и VLC работает уже с локальным файлом.

Понимаю, что можно смонтировать шару с помощью cifs и тогда VLC будет работать как надо, но это выглядит как костыль. Быть может кто-то знает более правильное решение?

 , ,

Goganchic
()

Почему /dev не пустой?

Смотрю корневой раздел своей десктопной Kubuntu 21.04 (подмонтировал /dev/sda1 в папку ~/root, т.е. это именно настоящие файлы, а не udev on /dev type devtmpfs), вижу что в директории /dev внутри корневого раздела есть какие-то файлы:

console
fd
full
null
ptmx
pts
random
shm
stderr
stdin
stdout
tty
urandom
zero

Что это за файлы? Правильно ли я понимаю, что они нужны для начальной загрузки ядра до этапа, когда произойдет монтирование devtmpfs?

 ,

Goganchic
()

Софт для бекапа десктопа

Привет!

Ищу софт для бекапа десктопа, что-то похожее на Time Machine в MacOS. Хочется создавать инкрементальные бекапы на внешний шифрованный жесткий диск и в случае необходимости иметь возможность загрузиться с флешки и восстановить систему или накатить ее на новый жесткий диск. Бекапы в облако - не приоритетны.

OS - Ubuntu 20.04 или Kubuntu 21.04.

Пробовал встроенное средство бекапа Ubuntu - оно создает бекап выбранных директорий, по умолчанию - домашней директории пользователя. Для восстановления мне, видимо, нужно вручную установить Ubuntu, все ПО которое было и после этого восстановить содержимое домашнего каталога. Хотелось бы, чтобы все это произошло автоматически.

Посоветуйте, пожалуйста, возможных вариантов софта для бекапа.

 ,

Goganchic
()

Ubuntu отключить auto update

Разворачиваю виртуалку на Ubuntu 20.04 в Digital Ocean с целью накатить на нее некоторый набор софта. Делаю это автоматическим скриптом. И все бы хорошо, если не то, что в половине случаев виртуалка начинает автоматическую проверку обновлений и при попытке запустить sudo apt-get install ... получаю ошибку вида Could not get lock /var/lib/dpkg/lock-frontend. It is held by process. Виртуалка одноразовая: создал, накатил софт, прогнал задачу, выключил. Как лучше отключить автообновления на виртуалке? Вот тут прочитал что можно отключить apt-daily.timer и apt-daily-upgrade.timer. Нормально ли это или есть более правильный способ отключения автообновлений?

 , ,

Goganchic
()

Ubuntu 21.04 fractional scaling tearing

Пытаюсь разобраться с tearing-ом в Ubuntu 21.04 на Honor Magicbook с графикой Intel Iris Xe graphics. Проблема проявляется при масштабировании в 150%. В Wayland даже с масштабированием тиринга нет, но из-за бага с FF с обрезкой меню, отсутствием заголовка окна в Slack и размытым VLC и Viber для моих задач такое решение подходит со скрипом. Отказаться от проблемного софта я, к сожалению, не могу. Починить сам тоже не могу в силу закрытости некоторой части используемого софта. Ждать, когда выпустят фиксы, как показывает практика, можно очень долго.

Смотрел в сторону Xorg. Пытался применить решения с askubuntu - не помогло: в разных комбинациях AccelMethod, TearFree и DRI либо ничего не меняется, либо еще хуже - экран начинает артифачить. Все что я находил в интернете в том или ином роде повторяло решение с askubuntu.

Судя по тому, что в Wayland проблемы нет, рискну предположить что решение возможно и в Xorg. Быть может кто-то сталкивался с похожей проблемой, поделитесь, пожалуйста, полезной ссылкой с возможным решением?

 , ,

Goganchic
()

Зачем нужен man-db.service в Ubuntu

Обнаружил такой systemd сервис: man-db.service. Вызывается он раз в день с помощью таймера man-db.timer. Смотрю описание:

Daily man-db regeneration

Никак не могу понять, а зачем нужна эта самая регенерация базы? В моем понимании есть набор man-страниц. Есть индекс по ним. Если я не добавляю новые страницы или не удаляю существующие с помощью установки пакетов через apt-get, то как-то регенерировать индекс особого смысла нет, т.к. данные не поменялись, а, следовательно, и индекс не поменяется.

Подскажите пожалуйста, зачем такое может потребоваться?

 ,

Goganchic
()

Ubuntu 21.04 ярлык запуска в левой панели

Недавно установил Ubuntu на 14" ноут. На ноуте матрица 1080p, если интерфейс не масштабировать, то выглядит все достаточно мелко. Я включил fractional saling на 150% - размер интерфейса стал приемлимым, но, как я писал в предыдущей теме, некоторые приложения стали размытыми. Среди них и telegram. Нашел в сети, что для Qt приложения, каковым является telegram, можно включить wayland-бекенд и, как следствие, размытость пропадает. Сделать это можно с помощью передачи переменной окружения QT_QPA_PLATFORM=wayland при запуске приложения.

Все бы хорошо, но запускать telegram постоянно через терминал не кажется мне хорошей идеей, поэтому я сделал в .local/share/applications файл со следующим содержимым:

[Desktop Entry]
Name=Telegram messenger
Comment=Instant messenger application
Exec=env QT_QPA_PLATFORM=wayland telegram-desktop %u
Icon=/snap/telegram-desktop/current/meta/gui/icon.png
Terminal=false
Type=Application
Categories=Network;InstantMessaging;P2P;

После этого в меню Applications появился новый пункт, позволяющий запустить telegram без размытия. Однако, если я попытаюсь закрепить запущенное приложение в левой панели и запустить его с помощью закрепленного ярлыка - то запускается тот оригинальный telegram, без переменных окружения и, как следствие, с размытым интерфейсом.

Как бы сделать такой лаунчер, чтобы он нормально закреплялся в левой панели?

 , ,

Goganchic
()

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