LINUX.ORG.RU

Сообщения Legioner

 

А как организовывать работу с podman/docker? В административном плане, если можно так выразиться?

Форум — General

Вот я создал Dockerfile:

FROM rhel7
RUN groupadd --system --gid 501 transmission && \
    useradd --system --uid 501 --gid 501 --home-dir /var/lib/transmission --shell /sbin/nologin \
        --comment "transmission daemon account" transmission && \
    yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && \
    yum -y install transmission-daemon && \
    yum clean all
COPY --chown=transmission:transmission settings.json /var/lib/transmission/.config/transmission-daemon/settings.json
RUN chmod 600 /var/lib/transmission/.config/transmission-daemon/settings.json
EXPOSE 51413/tcp 51413/udp 9091/tcp
USER transmission
CMD ["/usr/bin/transmission-daemon", "-f"]

построил свой образ: podman build --tag=transmission .

Дальше мне нужно его запустить, чтобы получился контейнер с определённым именем. Т.е. я пишу

podman run --name transmission \
    --publish 192.168.1.21:51413:51413/tcp \
    --publish 192.168.1.21:51413:51413/udp  \
    --publish 192.168.1.21:9091:9091/tcp \
    --volume /srv/downloads:/var/lib/transmission/Downloads \
    --security-opt label=disable \
    transmission
вот такая страшная команда. Создался контейнер, запустился. Стопаю по ctrl+c. Пишу systemd unit:
[Unit]
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/bin/podman start -a transmission
ExecStop=/usr/bin/podman stop transmission

[Install]
WantedBy=multi-user.target

Вроде всё понятно. Но меня смущает эта страшенная команда docker run с кучей параметров. Я её засунул в скрипт из одной строчки, но как-то тупо это. Есть ли правильные способы засунуть эту конфигурацию в конфиг?

 , ,

Legioner ()

Чего прикольного можно сделать на VPN-сервере?

Форум — Talks

Т.к. времени свободного много, а WoW Classic ещё не вышел, страдаю всякой фигнёй. Настроил недавно VPN, было непросто, но я справился, клиенту отдаёт IPv4 NAT и белый IPv6, на нём запущен unbound, чтобы кешировать DNS-запросы, а также возвращать NXDOMAIN на некоторые домены рекламных сайтов, эдакий мини-адблок. Пытался настроить прозрачный доступ к onion-сети (Transparent Proxy), но оказалось, что Firefox .onion-домены разрешать вообще не пытается (это можно настроить) и Safari на iOS тоже (а это и настроить нельзя). Поскольку делалось это в первую очередь для айфона, т.к. там TOR Browser какой-то непонятный и убогий, получился в итоге эпик фейл.

Чего интересного и полезного ещё можно придумать?

 ,

Legioner ()

sshd не запускается с первого раза после перезагрузки

Форум — Admin

При загрузке системы сервис sshd не запускается. Через минуту срабатывает таймаут systemd-юнита, он перезапускает sshd и всё грузится дальше. Отключил всё лишнее, в логах всё равно ничего не вижу. Где можно покопать ещё? Конфиг sshd не менял кроме выставления LogLevel VERBOSE. Из нестандартного - на сервере мало памяти (256 MB), хотя после загрузки потребление 44MB, не думаю, что в этом может быть проблема.

journalctl -u ssh.service
Jul 30 13:13:18 nether systemd[1]: Starting OpenBSD Secure Shell server...
Jul 30 13:14:46 nether systemd[1]: ssh.service: Start-pre operation timed out. Terminating.
Jul 30 13:14:46 nether systemd[1]: ssh.service: Control process exited, code=killed, status=15/TERM
Jul 30 13:14:46 nether systemd[1]: ssh.service: Failed with result 'timeout'.
Jul 30 13:14:46 nether systemd[1]: Failed to start OpenBSD Secure Shell server.
Jul 30 13:14:46 nether systemd[1]: ssh.service: Service RestartSec=100ms expired, scheduling restart.
Jul 30 13:14:46 nether systemd[1]: ssh.service: Scheduled restart job, restart counter is at 1.
Jul 30 13:14:46 nether systemd[1]: Stopped OpenBSD Secure Shell server.
Jul 30 13:14:46 nether systemd[1]: Starting OpenBSD Secure Shell server...
Jul 30 13:15:10 nether sshd[365]: Server listening on 0.0.0.0 port 22.
Jul 30 13:15:10 nether sshd[365]: Server listening on :: port 22.
Jul 30 13:15:10 nether systemd[1]: Started OpenBSD Secure Shell server.
...

Сеть настроена статически:

cat /etc/network/interfaces
root@nether:~# cat /etc/network/interfaces
source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

iface ens3 inet static
        address 5.8.72.4/24
        gateway 5.8.72.1
        dns-nameservers 185.31.172.240 89.188.29.4

Фаервол отключен.

Также не запускаются с первого раза другие серверы вроде apache2 и тд.

 ,

Legioner ()

Как передать белый IPv6 через StrongSwan VPN?

Форум — Admin

Настраиваю сабж на Debian 10. С NAT работает, как с IPv4 так и с IPv6. Но хотелось бы отдавать клиентам белые IPv6 адреса. Но не представляю, как это сделать. Провайдер вроде нормальный, по крайней мере /64 у меня есть и если я добавляю адрес на интерфейс, то он тут же начинает работать. Вроде через NDP это работает, tcpdump по крайней мере показывает NDP пакеты всякие (и мои, и не мои). Попробовал «тупо» указать /120 подсеть из моей белой подсети в rightsourceip, адрес выдался, но ничего кроме самого сервера не пинговалось. Через tcpdump вижу пакет с echo request и всё. Попробовал руками добавить ip neigh c этим адресом, не помогло. Также пробовал добавлять кусок отсюда, тоже не помогло.

Текущая конфигурация (с NAT):

/etc/ipsec.conf:
conn vpn
        auto = add
        keyexchange = ikev2
        compress = yes
        dpdaction = clear
        ike = aes128-sha1-modp1024!
        esp = aes128-sha1!
        left = 77.73.69.197
        leftsubnet = 0.0.0.0/0, 2000::/3
        leftid = vbezhenar.com
        leftcert = vbezhenar.com-cert.pem
        leftsendcert = always
        right = 0.0.0.0/0
        rightauth = eap-mschapv2
        eap_identity = %any
        rightsendcert = never
        rightsourceip = 10.84.175.2/24, fdd8:5196:a899:6984:393e:d71e:875b:1e02/120
        rightdns = 10.84.175.1

/etc/network/interfaces:
source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

allow-hotplug ens3
iface ens3 inet static
        address 87.73.69.197/24
        gateway 87.73.69.1

iface ens3 inet static
        address 10.84.185.1/32

iface ens3 inet6 static
        address 2a00:1838:38:31d::b6e5/64
        pointopoint 2a00:1838:38::1
        gateway 2a00:1838:38::1

iface ens3 inet6 static
        address 2a00:1838:38:31d:59b8:037c:5159:3fec/64

/etc/nftables.conf:
#!/usr/sbin/nft -f

flush ruleset

table ip nat {
        chain postrouting {
                type nat hook postrouting priority 0;
                oif ens3 ip saddr 10.84.185.0/24 snat 87.73.69.197
        }
}

table ip6 nat {
        chain postrouting {
                type nat hook postrouting priority 0;
                oif ens3 ip6 saddr fdd8:5196:a799:6984:393e:d71e:875b:1e00/120 ip6 daddr 2000::/3 snat 2a00:1838:37:31d:59b8:037c:5159:3fec
        }
}

 , , ,

Legioner ()

unbound для ipsec клиентов, настроить фаервол

Форум — Admin

CentOS 7. Настраиваю VPN. Настроил strongswan, клиенты соединяются, настроил NAT, всё хорошо. Единственный момент - с сервера не могу пинговать клиентов. Теперь хочу запустить unbound на сервере конкретно для этих клиентов и ни для кого более. Если я его открою для всего интернета, то проблем нет, всё работает. Но я хочу, чтобы к нему соединялись только впн-клиенты. Внешний адрес у них может быть любой. Запрос на unbound приходит с их внешним адресом (т.к. у клиентов на сервер отдельный роут прокинут).

Когда я делал VPN через OpenVPN, с этим не было никаких проблем: он создавал отдельный интерфейс tun со своим адресом, я вешал сервер на этот адрес и всё работало. Тут никакого отдельного интерфейса нет.

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

Вообще подозреваю, что исходная проблема в том, что сервер почему-то не пингует клиентов, возможно по той же причине и ответы от unbound не доходят. Фаервол тому не причина, пробовал его отключать, всё равно ничего не доходит.

Конфиги:

# cat /etc/strongswan/ipsec.conf
config setup
    plutostart = no

conn vpn
    keyexchange = ikev2
    ike = aes128-sha256-modp1024
    dpdaction = clear
    left = %any
    leftsubnet = 0.0.0.0/0
    leftauth = pubkey
    leftcert = /etc/letsencrypt/live/mysite.com/cert.pem
    leftid = @mysite.com
    leftsendcert = always
    right = %any
    rightsourceip = 10.77.30.0/24
    rightdns = 1.1.1.1
    rightauth = eap-mschapv2
    rightsendcert = never
    eap_identity = %any
    auto = add
# firewall-cmd --info-zone=public
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  services: ssh dhcpv6-client http https ipsec
  masquerade: yes

 ,

Legioner ()

Qazaqstan alǵa!

Форум — Talks

MITM для всех, даром, и пусть ничто не уйдёт зашифрованным!

Делайте ваши ставки, господа, когда Россия последует передовому примеру южного соседа и защитит своих граждан от злобных американских хакеров?

 ,

Legioner ()

Какие ICMPv6 пакеты нужно разрешить на фаерволе?

Форум — Admin

На интерфейс прилетают кучи странных пакетов со странными адресами источника и получателя вида fe80:.... Я не совсем до конца понимаю, как это всё работает, не будет ли вреда, если я запрещу весь ICMP 6 кроме пинг-запросов на мой IP? Там всякие ndp не сломаются? У меня тупо один адрес (не подсеть), сконфигурированный статически, никакими броадкастами не пользуюсь, по крайней мере осознанно. NDP мне вроде бы тоже не нужен, но я не уверен.

 ,

Legioner ()

Лишние логи в pflog

Форум — Admin

Хочу настроить pf так, чтобы логгировались все незаматченные пакеты (чтобы было видно, что я ещё не учёл). Заметил, что на интерфейсе много каких-то icmp6 пакетов и попытался их заматчить по типу. Получился такой вот набросок

set skip on lo

pass log

pass in on vio0 inet6 proto icmp6 icmp6-type {listqry listenrep neighbrsol}

Идея в том, что те пакеты, которые проходят по последнему правилу, логгироваться не должны (т.к. я не указал там log).

Однако по факту они вполне себе логгируются. Причём в правило они, вроде, попадают. Пробовал ставить quick (во втором правиле), то же самое получается. Ещё странность в том, что IP-адреса на этих пакетах по-моему вообще не принадлежат ни мне, ни роутеру, не знаю, влияет ли это на что-либо. Ещё странность в том, что с дефолтным pf.conf-ом, в котором нет никакого упоминания про log, всё равно создаётся /var/log/pflog и туда чего-то там логгирует. В общем не пойму я, как это всё работает.

Пример заматченного пакета

12:51:17.333964 rule 2/(match) pass in on vio0: fe80::225:90ff:fe04:ac74 > ff02::1:ff00:122: HBH icmp6: multicast listener report  [hlim 1]
  0000: 6000 0000 0020 0001 fe80 0000 0000 0000  `.... ..........
  0010: 0225 90ff fe04 ac74 ff02 0000 0000 0000  .%.....t........
  0020: 0000 0001 ff00 0122 3a00 0502 0000 0100  .......":.......
  0030: 8300 4240 0000 0000 ff02 0000            ..B@........
Разбирал его по байтам, вроде обычный пакет, тип 0x83 == 131 == listenrep.

Собственно сделал вообще простейший pf.log с одной строкой: set skip on lo и в логах всё равно пишутся пакеты. Причём вида 13:10:07.313586 rule def/(match) pass in on vio0: fe80::225:90ff:fea1:3104 > ff02::1:ffa1:3104: HBH icmp6: multicast listener report [hlim 1], т.е. тут какое-то правило match по умолчанию стоит. Что за правило такое, где его можно найти и как отключить?

 , , ,

Legioner ()

Как сделать красивый бэкап конфигурации?

Форум — Admin

Система RHEL/CentOS. В идеале хочется следующего:

скрипт pre:

yum install -y p1 p2 p3 ...

далее идут модификации конфигурационных файлов

patch /etc/f1 -i ./etc/f1.diff
...
cp ./etc/f2 /etc/f2

далее идёт скрипт post:

firewall-cmd --permanent --add-service=http
systemctl enable bla
...

В общем грубо говоря то, что сделал бы человек, настраивая сервер по какой-то инструкции. Но всё скриптуемо и все эти скрипты наглядные. И хочется этот скрипт сгенерировать из текущего сервера. Например взять список пакетов, найти те пакеты, которые были установлены после установки minimal ОС, написать на них yum install, пройтись по /etc и сравнить файлы с теми, что в rpm, если файла нет, значит он копируется, если файл есть, значит делаем diff, если файла нет, а в rpm есть, значит удаляем.

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

Возможно есть другие подходы с похожим результатом? ansible всякие, не шарю в них, подскажите, куда копать.

 ,

Legioner ()

Минусы IPv6 NAT

Форум — Admin

Всю жизнь использовал IPv4 NAT но в принципе нынче вроде ничего не мешает использовать IPv6 NAT. Из плюсов - во-первых доступ к, собственно, IPv6 серверам, во-вторых большое адресное пространство позволяет делать всякие прикольные штуки вроде тривиального отображения onion-адресов. Ну главный минус очевиден - нельзя принимать соединения из интернета без проброса порта, это понятно. Есть какие-то ещё неочевидные минусы и проблемы? Использовать планируется современные ОС вроде Windows 10, iOS 12, Android 9 и тд, вроде у них уже IPv6 должен быть нормально реализован.

 ,

Legioner ()

Непонятные ошибки в таблице роутинга ipv6

Форум — Admin

Centos 7.6, интерфейс настраивал через nmcli просто указав адрес с подсетью и шлюз. Вывод nmcli:

[root@msk ~]# nmcli
eth0: connected to eth0
        "Red Hat Virtio"
        ethernet (virtio_net), 52:54:00:18:80:F7, hw, mtu 1500
        ip4 default, ip6 default
        inet4 194.113.107.147/32
        route4 194.113.107.147/32
        route4 194.113.107.129/32
        route4 0.0.0.0/0
        inet6 2a07:14c0:1:1810:550:5e4d:9634:1cf1/64
        inet6 fe80::66ee:1640:67cc:5d0c/64
        route6 2a07:14c0:1:1810::/64
        route6 ff00::/8
        route6 fe80::/64
        route6 ::/0

lo: unmanaged
        "lo"
        loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536

DNS configuration:
        servers: 1.1.1.1
        interface: eth0

Если написать ip -6 route, выходит что-то непонятное:

unreachable ::/96 dev lo metric 1024 error -113 pref medium
unreachable ::ffff:0.0.0.0/96 dev lo metric 1024 error -113 pref medium
unreachable 2002:a00::/24 dev lo metric 1024 error -113 pref medium
unreachable 2002:7f00::/24 dev lo metric 1024 error -113 pref medium
unreachable 2002:a9fe::/32 dev lo metric 1024 error -113 pref medium
unreachable 2002:ac10::/28 dev lo metric 1024 error -113 pref medium
unreachable 2002:c0a8::/32 dev lo metric 1024 error -113 pref medium
unreachable 2002:e000::/19 dev lo metric 1024 error -113 pref medium
2a07:14c0:1:1810::/64 dev eth0 proto kernel metric 100 pref medium
unreachable 3ffe:ffff::/32 dev lo metric 1024 error -113 pref medium
fe80::/64 dev eth0 proto kernel metric 100 pref medium
default via 2a07:14c0:1:1810::1 dev eth0 proto static metric 100 pref medium
При этом ipv6 нормально работает, пинги туда-сюда идут по крайней мере. Хотелось бы понять, что это там такое в таблице роутинга, что за ошибки и откуда.

 , ,

Legioner ()

Посмотреть, что было сделано после установки

Форум — Linux-install

Есть Ubuntu 18.04, в которой после установки что-то сделали. Хочется понять: 1. Список пакетов, который был установлен установщиком (вероятно минимальный). 2. Список пакетов, который был установлен после установки. 3. Список изменённых файлов (т.е. тех файлов, которые отличаются от файлов в пакетах, добавленных, удалённых и тд).

Как такое сделать?

 

Legioner ()

Оставлю для гугла: online.net ipv6 ubuntu 18.04

Форум — Talks

Тут поковырялся с сабжем, там не всё так просто, как кажется, в итоге вроде разобрался, напишу тут, может кому поможет. В панели получаете сеть /48, при желании делите на подсети, я себе зароутил всю /48. Придумываете себе любой адрес с вашим префиксом, я просто сделал hexdump -n 10 /dev/urandom. Далее пишете такие конфиги и скрипты (где dhcp6.client-id там будет ваш DUID из панели управления):

root@onl:~# cat /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s20:
      dhcp4: yes
      addresses:
        - 2001:bc8:3d28:511a:4670:c4d4:18ba:6998/48

root@onl:~# cat /etc/dhcp/dhclient-6.conf
interface "enp0s20" {
    send dhcp6.client-id 00:xx:xx:xx:xx:xx:xx:xx:xx:77;
}

root@onl:~# cat /etc/systemd/system/dhclient-6.service
[Unit]
Wants=network-pre.target
After=network-pre.target
Before=systemd-networkd.service

[Service]
Type=forking
PIDFile=/run/dhclient-6.pid
ExecStart=/sbin/dhclient -6 -P -pf /run/dhclient-6.pid -cf /etc/dhcp/dhclient-6.conf enp0s20

[Install]
WantedBy=multi-user.target

ну и стандартно

systemctl daemon-reload
systemctl enable dhclient-6
systemctl reboot

вроде нормально работает. Долго ковырялся пытаясь сделать по уму, через этот netplan с networkd но не осилил, кажется не умеют они такого, пришлось колхозить запуск dhclient отдельным сервисом. Если вдруг кто подскажет, как это сделать кошерно, буду благодарен.

 , ,

Legioner ()

CentOS: WARNING jump label: negative count!

Форум — General

При загрузке пишется что-то вроде

WARNING: CPU: 0 PID: 0 at kernel/jump_label.c:90 __static_key_slow_dec+0xa6/0xb0
jump label: negative count!
Modules linked in:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.10.0-957.12.2.el7.x86_64 #1
Hardware name: Online Labs SR/SR, BIOS 00.00.00.0012 01/17/2018
Call Trace:
 [<ffffffff90d63041>] dump_stack+0x19/0x1b
 [<ffffffff906976e8>] __warn+0xd8/0x100
 [<ffffffff9069776f>] warn_slowpath_fmt+0x5f/0x80
 [<ffffffff907b3d16>] __static_key_slow_dec+0xa6/0xb0
 [<ffffffff907b3d42>] static_key_slow_dec+0x22/0x50
 [<ffffffff90640bce>] arch_smt_update+0x7e/0x110
 [<ffffffff913954f9>] check_bugs+0x2de/0x33a
 [<ffffffff9138619d>] start_kernel+0x422/0x46c
 [<ffffffff91385b7b>] ? repair_env_string+0x5c/0x5c
 [<ffffffff91385120>] ? early_idt_handler_array+0x120/0x120
 [<ffffffff9138572f>] x86_64_start_reservations+0x24/0x26
 [<ffffffff91385885>] x86_64_start_kernel+0x154/0x177
 [<ffffffff906000d5>] start_cpu+0x5/0x14

Что это и стоит ли беспокоиться? Появилось вроде после обновления ядра на эту уязвимость MDS. CentOS 7, Atom C2350.

 ,

Legioner ()

На что влияет галочка Enable SELinux в CentOS 7?

Форум — Linux-install

В инсталлере есть галочка Enable SELinux. На что она влияет в конечной системе? Конкретно интересует, как его правильно включить после установки, если галочка была снята.

Про /etc/selinux/config SELINUX=disabled поменять на enforcing знаю. Ещё на что-то может влиять?

 ,

Legioner ()

Почему в торрентах не раздают видео, аудио и субтитры отдельно?

Форум — Talks

Качаю, например, GoT с какого-нибудь трекера. Если бы всё было как в сабже, я легко мог бы это раздавать на том же рутрекере, звуковые дорожки на сотню мегабайтов подкачались бы и всё, а основной размер в видеопотоке оставался бы в оригинальном файле (например хардлинками). Да и в целом все эти странные форматы вроде матроски просто не нужны, положить в папочку все нужные файлики и всё! Какие ещё матроски.

 ,

Legioner ()

Скрипт для билда: обновление во время билда

Форум — Development

Делаю скрипт, который будет дёргаться при изменении в репозитории. Смысл в том, чтобы сделать pull, собрать новую версию, установить куда положено. Как обрабатывать ситуацию, когда событие произошло во время билда? Второй билд запускать не хочу. Собственно хочу, чтобы билд дошёл до конца, а потом запустился ещё раз, сбилдив на сей раз последнюю версию.

Пока делаю примерно так:

if [ -e build-in-progress ]; then
  touch rebuild
  exit
fi
touch build-in-progress
...
if [ -e rebuild ]; then
  rm rebuild
  exec $*
fi
rm build-in-progress

но как-то всё это ненадёжно, всякие там гонки могут быть, если запрос придёт прям в то время, когда проверка выполняется.

Есть ли какой-нибудь способ сделать это всё по уму, который будет работать железобетонно?

 

Legioner ()

Ищу VPS, который даёт маршрутизируемую /56 IPv6 подсеть

Форум — Talks

Собственно сабж. Очень желательно Нидерланды, но в крайнем случае можно и другие европейские страны, можно и российский, если на их серверы не действует великий российский фаервол.

Из известных мне: online.net вроде бы, но там нужно покупать дорогой выделенный сервер, зато даёт /48 на аккаунт. Вроде хвалили linode но просто так не дают, просят обосновать, я попросил, они вроде и не отказывают но автоматом не дают, а настаивать я стесняюсь.

PS неужели IPv6 такой дорогой? У меня сервер с IPv4 арендуется меньше чем за евро в месяц (по акции, правда, но сомневаюсь, что они в минус работают). Я бы тот же бакс в месяц за /48 платил без проблем.

 ,

Legioner ()

Очередной поиск замены микросерверу

Форум — Talks

В очередной раз интересуюсь заменой Microserver Gen8. Сейчас придумал такой план. Во-первых есть бесшумные компьютеры маленького фактора (вроде Intel NUC, но других производителей), даже без вентиляторов есть. Во-вторых сегодня обнаружил такой класс продуктов, как SATA Backplane. Как я понял, это во-первых корзина для дисков, во-вторых там сзади стоит какая-то микросхема, которая магическим образом соединяет все диски в один шнурок и втыкается куда-то там в компьютер. Информации по такому чудо устройству мало и хотелось бы почитать более детально, если кто знает:

1. Я вообще правильно пишу или что-то путаю?

2. Как это подключается? Можно ли подключить по USB? Для четырёх дисков требуется немалое питание, как его подключать?

3. Требуется ли специальное охлаждение для четырёх дисков? Никогда этим не заморачивался, но четырёх дисков в ряд у меня и не было. В идеале хочется, чтобы всё работало без единого вентилятора. Диски обычные HDD 3.5 класса WD Red или подобного (5400 оборотов в секунду).

4. Как линукс увидит всё это? Просто как 4 обычных диска, а дальше уже моё дело? Не потребует ли это каких-нибудь треклятых проприетарных драйверов?

5. Есть ли дешёвые способы сделать удалённое управление для не-сервера? Т.е. чтобы я мог установить Linux тот же по сети, не таская монитор с клавиатурой туда-сюда?

 ,

Legioner ()

Простой неблокирующий HTTP-стек для Java

Форум — Development

Есть ли такой в природе? В первую очередь интересен Android. Вроде nio есть, то бишь неблокирующий код можно писать, но популярная библиотека Volley держит пул потоков (ещё и довольно маленький) для каждого запроса. В том числе DNS, я так понимаю, он по дефолту в жаве блокирует поток, поэтому нужна альтернативная реализация. Какая-то странная ситуация выходит. Ладно серверы, там гонять потоки не проблема, а в мобильном приложении во-первых неблокирующий АПИ позволит убрать всю синхронизацию, т.к. всё будет в одном потоке, во-вторых там же вроде как в принципе должны все экономить циклы, а тут пускаем кучу потоков, жрём память, не нужно ведь всё это. Интересует и сервер и клиент (HTTP везде примерно одинаковый, поэтому по идее разницы большой не должно быть).

 , , ,

Legioner ()

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