LINUX.ORG.RU

Сообщения Goganchic

 

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

Форум — Admin

Есть роутер на 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 решает куда форвордить трафик?

Форум — Admin

Настраиваю 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 пакет мой офис

Форум — Desktop

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

 ,

Goganchic
()

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

Форум — General

Периодически возникает задача создания 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

Форум — General

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

 

Goganchic
()

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

Форум — General

Использую 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 только определенные роуты

Форум — General

Использую конфиг 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

Форум — Development

Смотрю исходники 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 шары

Форум — Desktop

В 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 не пустой?

Форум — General

Смотрю корневой раздел своей десктопной 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
()

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

Форум — Desktop

Привет!

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

OS - Ubuntu 20.04 или Kubuntu 21.04.

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

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

 ,

Goganchic
()

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

Форум — Admin

Разворачиваю виртуалку на 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

Форум — General

Пытаюсь разобраться с 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

Форум — General

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

Daily man-db regeneration

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

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

 ,

Goganchic
()

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

Форум — General

Недавно установил 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
()

Ubuntu 21.04 fractional scaling размытые шрифты

Форум — Desktop

Привет. Пытаюсь настроить scaling 125% на Ubuntu 21.04: в Firefox и интерфейсе системы все красиво, но в некоторых приложениях, таких как Telegram Desktop, Viber, Zoom - шрифты выглядят размытыми. Погуглил - ничего путного не нашел. Может кто-нибудь знает как это исправить?

 , ,

Goganchic
()

mDNS между хостом и KVM виртуалками

Форум — Admin

Есть несколько KVM виртуалок на Ubuntu 20.04 в одной сети 192.168.122.0/24 и хост тоже на Ubuntu 20.04. Хочу настроить между ними mDNS. Между виртуалками mDNS работает как положено через systemd-resolved, между хостом и окружающими другими физическими машинами mDNS тоже работает, а вот между хостом и виртуалками - нет. Подскажите пожалуйста, куда копать? Как настроить mDNS между хостом и виртуалками? Уж очень хочется доступаться к ним не по IP, а по хостнеймам вида virt1.local.

 , ,

Goganchic
()

Зачем нужен Netplan в Ubuntu Desktop?

Форум — Desktop

Разбираюсь с настройкой сети в Ubuntu 20.04. Вижу, что для этих целей используется NetworkManager, но поверх него есть абстракция в виде Netplan, которая может генерировать конфиги как для NetworkManager, так и для systemd-networkd.

Как я понимаю, на десктопах, где конфигурация сети может часто изменяться (например, при осуществлении подключения к разным Wi-Fi сетям) обычно используется NetworkManager, в то время, как на серверах, где конфигурация сети статична, более распространен systemd-networkd.

Netplan — это тулза от Canonical, которая предлагает описать конфигурацию сети в некотором своем формате, а уже на основе этой конфигурации будут сгенерированы конфиг-файлы для выбранного бекенда: NetworkManager или systemd-networkd.

И тут у меня возник вопрос: а зачем эта тулза вообще нужна на Ubuntu десктопах? Почему сразу не конфигрурировать сеть NetworkManager? Зачем еще одна абстракция?

 , , , ,

Goganchic
()

Бекап десктопа Ubuntu 20.04

Форум — Desktop

Дамы и господа, приветствую.

Какие нынче существуют средства для бекапа десктопной системы разработчика Ubuntu 20.04? Хочется что-то похожее на Time Machine из Mac OS X, чтобы делались инкрементальные бекапы, старые удалялись, если место на носителе закончилось. Цель - иметь возможность одной кнопкой (или простой последовательностью команд) в случае краха системы восстановиться из бекапа, т.е. скопировать куда-нибудь home-каталог - мало, т.к. есть еще всякие конфиги в /etc, есть docker-образы в /var/lib/docker, есть kvm виртуалки в /var/lib/libvirt/images и т.п. Останавливать систему, загружаться с livecd и делать dd всего жесткого диска нежелательно.

Что посоветуете?

 ,

Goganchic
()

Зачем в Ubuntu 20.04 avahi если есть systemd-resolved?

Форум — Desktop

Разбираюсь тут с поддержкой mDNS и доменов .local. Раньше для этого в Ubuntu использовался avahi. После появления systemd-resolved, который, судя по всему умеет mDNS в режиме responder и resolver и поддерживает dns-sd (или не поддерживает?) в Ubuntu 20.04 mDNS по-прежнему реализуется с помощью avahi. Может кто-нибудь подсказать почему так или поделиться полезной ссылкой? Мои поиски привели меня на arch wiki, но там есть лишь инфа про то, как заставить systemd-resolved обсулживать mDNS. Информации про то, почему это до сих пор реализуется с помощью avahi нет. Почему в системе по-умолчанию установлен и systemd-resolved и avahi? Какой в этом тайный смысл?

 , ,

Goganchic
()

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