Новый сервер с игрищами и блудницами – 5

Или баррикадируемся от подборщиков паролей.

Захожу я утром на свой сервер, а мне добрая система сообщает

Last failed login: Sat Jan 23 10:23:49 MSK 2016 from 183.3.202.106 on ssh:notty
There were 5278 failed login attempts since the last successful login.

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

-A INPUT -p tcp -m state --state NEW --dport 22 -m recent --update --seconds 20 -j DROP
-A INPUT -p tcp -m state --state NEW --dport 22 -m recent --set -j ACCEPT
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

Как это работает, можно почитать на хабре в комментах.

Поглядел в логи – ляпота и чистота.

Теперь (лично мне) надо поставить 6ю центось. Надо по двум причинам: попробовать графическую консоль (ибо в полном тексте как 7я оно не ставится), и надо для OpenVZ, у которой опять же с 7й еще есть проблемы.

Поначалу я попробовал SPICE, предлагаемый по умолчанию. Тормозит дико. Даже на толстых каналах. Плюс клиентов нет под всякие разные операционки. Попробовал vnc – вот это другое дело. Не скажу, что прямо как “на настоящем”, но работать вполне можно.

virt-install --name openvz --ram 8912 --disk path=/vm/openvz.qcow2,size=8,bus=virtio,cache=none --vcpus 4 --os-type linux --network bridge=virbr0,model=virtio -c /vm/iso/CentOS-6.7-x86_64-minimal.iso --accelerate --noautoconsole --graphics vnc,password=test,listen=10.100.0.254 -v --input tablet,bus=usb

Теперь ssh -L 5900:10.100.0.254:5900 root@host и любым VNC клиентом на 127.0.0.1:5900. Пароль, как видно из команды – test. Просто, удобно и понятно.

Но мне понравилось, что можно в машину забраться и через virsh console. В винтуальной машине делаем

cat /etc/init/ttyS0.conf
stop on runlevel[016]
start on runlevel[345]
respawn
instance /dev/ttyS0
exec /sbin/mingetty /dev/ttyS0

В самый конец /etc/securetty добавляем
ttyS0

И запускаем

initctl start ttyS0

И в общем, должны попасть через virsh console. Для логов загрузки, для kernel в /etc/grub.conf добавляем

console=ttyS0

У меня все получилось. Дальше иду как написано в вики OpenVZ. Ставлю, мигрирую и так далее.

Новый сервер с игрищами и блудницами – 4

Прошлый раз я закончил на том что мне удалось завести сертификат для vsemoe.com. Вручную, но тем не менее. Но доменчиков у меня целая куча и руками для них запрашивать сертификаты каждые три месяца … я слишком ленивый для этого. Да и интернет предлагает разные варианты решения этой проблемы.

Первым делом конфигурирую домены vsemoe.org и kaloshina.com аналогично vsemoe.com

bash-3.2$ host vsemoe.com
vsemoe.com has address 136.243.151.196
vsemoe.com has IPv6 address 2a01:4f8:171:1a43:5054:ff:fee4:b6d1
vsemoe.com mail is handled by 10 mail.multik.org.
bash-3.2$ host kaloshina.com
kaloshina.com has address 136.243.151.196
kaloshina.com has IPv6 address 2a01:4f8:171:1a43:5054:ff:fee4:b6d1
kaloshina.com mail is handled by 10 mail.multik.org.
bash-3.2$ host vsemoe.org
vsemoe.org has address 136.243.151.196
vsemoe.org has IPv6 address 2a01:4f8:171:1a43:5054:ff:fee4:b6d1
vsemoe.org mail is handled by 10 mail.multik.org.

В конфиг nginx добавил

location '/.well-known/acme-challenge' {
default_type "text/plain";
root /tmp/letsencrypt-auto;
}

и попробовал заказать сертификат

./letsencrypt-auto certonly --server https://acme-v01.api.letsencrypt.org/directory -a webroot --agree-tos --webroot-path=/tmp/letsencrypt-auto/ -d kaloshina.com

Фигу. Создал там файлик test. Сервер в логах упорно ругается

[error] 1346#0: *3 open() "/tmp/letsencrypt-auto/.well-known/acme-challenge/test" failed (2: No such file or directory), client: 91.195.22.23, server: kaloshina.com, request: "GET /.well-known/acme-challenge/test HTTP/1.1", host: "kaloshina.com"

Хотя если проверить вручную, то этот фаил есть

cat /tmp/letsencrypt-auto/.well-known/acme-challenge/test
BLYA

Прочитал про пакость от systemd про приватные /tmp. Сменил

/lib/systemd/system/nginx.service
PrivateTmp=false

Не помогло.

Плюнул и создал каталог /opt/letsencrypt и переместил все туда

./letsencrypt-auto certonly --server https://acme-v01.api.letsencrypt.org/directory -a webroot --agree-tos --webroot-path=/opt/letsencrypt/ -d vsemoe.org
Updating letsencrypt and virtual environment dependencies......
Requesting root privileges to run with virtualenv: /root/.local/share/letsencrypt/bin/letsencrypt certonly --server https://acme-v01.api.letsencrypt.org/directory -a webroot --agree-tos --webroot-path=/opt/letsencrypt/ -d vsemoe.org

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/vsemoe.org/fullchain.pem. Your cert will
expire on 2016-04-18. To obtain a new version of the certificate in
the future, simply run Let's Encrypt again.
- If you like Let's Encrypt, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Сразу же скриптуем это 🙂

# cat /opt/ssl_get
#!/bin/bash
cd /root/letsencrypt
./letsencrypt-auto certonly --server https://acme-v01.api.letsencrypt.org/directory -a webroot --agree-tos --webroot-path=/opt/letsencrypt/ -d $1

и для обновления

# cat ssl_renew
#!/bin/bash
cd /root/letsencrypt
./letsencrypt-auto --renew certonly --server https://acme-v01.api.letsencrypt.org/directory -a webroot --agree-tos --webroot-path=/opt/letsencrypt/ -d $1
service nginx restart

Проверяем. У меня работает. При этом автоматом включился SNI и прекрасно раздает с одного ип-адреса много https сайтов.

Отлично, теперь пора переносить контент сайтов.

Новый сервер с игрищами и блудницами – 3

TL;DR; Статья грустная, в которой ничего почти не получилось, зато узнано много нового.

Почти вся полезная нагрузка сервера – это веб-сервера. Маленькие и не очень, требующие много места и просто пустышки. Так как я хочу сделать так, что бы все сервера были видны из интернета по SSL, то придется сделать ход конем.

Все запросы на http/https будут приходить на nginx. А тот будет работать SSL-декриптором и общаться с серверами уже по чистому http. Делать двойное шифрование-расшифрование я смысла не вижу – только трата процессорного времени. А те, кто знает про ipv6 – получат прямой доступ.

Из особенностей: машинам присваиваю имена сразу в полном формате: nginx.local.multik.org. При этом домен не пересекается с реальным, но является субдоменом. Потом, когда я буду поднимать единую систему авторизации, это сильно облегчит жизнь.

Делаем машинку для nginx

virt-install --name nginx --ram 1024 --disk path=/vm/nginx.qcow2,size=8,bus=virtio,cache=none --vcpus 2 --os-type linux --network bridge=virbr0,model=virtio --location /vm/iso/CentOS-7-x86_64-DVD-1511.iso --extra-args='console=tty0 console=ttyS0,115200n8 serial' --nographics --accelerate

и для первого сервера vsemoe.com, на котором буду тренироваться.

virt-install --name vsemoe.com --ram 1024 --disk path=/vm/vsemoe.com.qcow2,size=8,bus=virtio,cache=none --vcpus 1 --os-type linux --network bridge=virbr0,model=virtio --location /vm/iso/CentOS-7-x86_64-DVD-1511.iso --extra-args='console=tty0 console=ttyS0,115200n8 serial' --nographics --accelerate

На всякий случай проверяем, что машинки в автозапуске

virsh autostart nginx
virsh autostart vsemoe.com

На nginx – обновляемся, ставим epel-release, nginx, проколупываем дырки и ребутимся

yum update
yum install epel-release
yum install nginx
systemctl enable nginx
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https

на vsemoe – обновляемся, ставим апач и далее по тексту

yum update
yum install httpd
systemctl enable httpd
firewall-cmd --permanent --zone=public --add-service=http

Nginx получил адреса 10.100.0.186 и 2a01:4f8:171:1a43:5054:ff:fee4:b6d1
vsemoe.com 10.100.0.178 и 2a01:4f8:171:1a43:5054:ff:fe51:f70e

Теперь иду на DNS и делаю так, что бы все видели vsemoe.com по правильным адресам

$ host vsemoe.com
vsemoe.com has address 136.243.151.196
vsemoe.com has IPv6 address 2a01:4f8:171:1a43:5054:ff:fe51:f70e

Добавляем на хосте

firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toaddr=10.100.0.186 --permanent

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload

И ничего не работает. Вернее, все попытки возвращаются как connection refused. Однако если на хосте поднять nc -l 80, то все получается. Вывод – не работает порт-форвардинг.

Проверяю

[root@tower ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
[root@tower ~]# cat /proc/sys/net/ipv4/ip_forward
1

Все на месте. Проверяю “ручной режим”

systemctl stop firewalld
iptables -t nat -A PREROUTING -d 136.243.151.196 -i eth0 -p tcp -m multiport --dports 80 -j DNAT --to-destination 10.100.0.186

Работает. Значит где-то проблема в правилах. Читаем вывод iptables -S и натыкаемся на баг 1079088

iptables -D FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable

и все заработало. По крайней мере я увидел в браузере заставку от nginx.

firewall-cmd --permanent --zone=public --add-service=https --permanent
firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toaddr=10.100.0.186 --permanent

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

[root@tower ~]# cat > /usr/bin/firewall-restart
#!/bin/bash
firewall-cmd --reload && sleep 1 && iptables -D FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
[root@tower ~]# chmod +x /usr/bin/firewall-restart

Пробуем телнетом

[root@outpost ~]# telnet vsemoe.com 80
Trying 2a01:4f8:171:1a43::2...
telnet: connect to address 2a01:4f8:171:1a43::2: Connection refused
Trying 136.243.151.196...
Connected to vsemoe.com.
Escape character is '^]'.

Так как ipv6 порты не форвардятся, то меняем адрес vsemoe.com на нормальный и пробуем

[root@outpost ~]# telnet vsemoe.com 80
Trying 2a01:4f8:171:1a43:5054:ff:fe51:f70e...
Connected to vsemoe.com.
Escape character is '^]'.
^]

Все, как и полагается. ipv4 идет на nginx, а ipv6 – напрямую на сервер.

Теперь правим nginx. Мне надо, что бы в логах указывалось, к какому серверу изначально был запрос. Добавляю “$server_name” в log-format

Добавляю описание сайта

# cat /etc/nginx/conf.d/vsemoe.com.conf
server {
listen 80;
server_name vsemoe.com www.vsemoe.com;

location ~ /.svn/ {
deny all;
}

location / {
proxy_pass http://10.100.0.178;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_buffer_size 4K;
proxy_buffers 64 4K;
}
}

Перезагружаю и вижу в браузере уже заставку apache. Значит, сработало. Сходил с ipv6 машинки – опять показало. Ура, значит еще один шаг сделан. Теперь надо зашифроваться.

Покупать сертификаты я пробовал – чертовски невыгодная штука. Но благодаря разным людям появился проект Let’s Encrypt, который позволяет получить сертификат бесплатно.

Что бы не мучаться с заставками, на vsemoe.com создал маленькую страничку

cat > index.html
this is vsemoe.com site
[root@outpost ~]# curl -4 vsemoe.com
this is vsemoe.com site
[root@outpost ~]# curl -6 vsemoe.com
this is vsemoe.com site

Опять же работает. Пора пробовать letsencypt

yum install git
git clone https://github.com/letsencrypt/letsencrypt letsencrypt

И тут я обнаруживаю, что интернет в виртуальных машинах не работает. Пинги идут, но все соединения вылетают по тайм-ауту.

Убираю правила

firewall-cmd --zone=public --remove-forward-port=port=443:proto=tcp:toaddr=10.100.0.186 --permanent
firewall-cmd --zone=public --remove-forward-port=port=80:proto=tcp:toaddr=10.100.0.186 --permanent

И все работает. Добавляю – падает. Читаю вывод iptables -S и понимаю, что там тупо все пакеты пытаются завернуться на nginx. Ни слова про интерфейс или адрес. Читаю маны и понимаю, что оно должно, но не работает. Пробую создать спец-правила

firewall-cmd --add-rich-rule='rule family="ipv4" destination address="136.243.151.196" forward-port to-addr="10.100.0.186" to-port="80" protocol="tcp" port="80"' --permanent
firewall-cmd --add-rich-rule='rule family="ipv4" destination address="136.243.151.196" forward-port to-addr="10.100.0.186" to-port="443" protocol="tcp" port="443"' --permanent

Интернет пропадает …

firewall-cmd --remove-rich-rule='rule family="ipv4" destination address="136.243.151.196" forward-port to-addr="10.100.0.186" to-port="80" protocol="tcp" port="80"' --permanent
firewall-cmd --remove-rich-rule='rule family="ipv4" destination address="136.243.151.196" forward-port to-addr="10.100.0.186" to-port="443" protocol="tcp" port="443"' --permanent

… и появляется. В конфигах (/etc/firewalld) все правильно, а в реальных правилах – ни слова про адреса. А день потерян …

Выкидываем firewalld и ставим старый добрый iptables

systemctl stop firewalld
yum -y install iptables-services
systemctl enable iptables
systemctl enable ip6tables
systemctl start iptables
systemctl start ip6tables
iptables -t nat -A PREROUTING -d 136.243.151.196 -i eth0 -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 10.100.0.186
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to-source 136.243.151.196
iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited
ip6tables -D FORWARD -j REJECT --reject-with icmp6-adm-prohibited
service iptables save
service ip6tables save
yum remove firewalld

И отправляю машину в ребут, что бы проверить. Вижу кучу лишних правил, которые насовал kvm, что бы выпустить машины в интернет.

virsh net-destroy default
virsh net-edit default
virsh net-start default

Но правила все равно продолжают добавляться. Нашел еще один баг 433484. Там предлагают на хуки повешать все.

Лень. Проще в /etc/rc.d/rc.local добавить строчки


echo "Waiting for libvirt start"
sleep 5
service iptables restart
service ip6tables restart

Теперь вроде работает. Все и везде.

git clone https://github.com/letsencrypt/letsencrypt letsencrypt
cd letsencrypt/
./letsencrypt-auto

Поставит дикую кучу всего, после чего завершится со словами

Creating virtual environment...
Updating letsencrypt and virtual environment dependencies......
Requesting root privileges to run with virtualenv: /root/.local/share/letsencrypt/bin/letsencrypt
No installers are available on your OS yet; try running "letsencrypt-auto certonly" to get a cert you can install manually

Ну хорошо, торможу nginx

service nginx stop

И пускаю скриптик

./letsencrypt-auto certonly

Он у меня спрашивает разные вещи (типа емайла или домена) и завершается с

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/vsemoe.com/fullchain.pem. Your cert will
expire on 2016-04-16. To obtain a new version of the certificate in
the future, simply run Let's Encrypt again.
- If you like Let's Encrypt, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Быстренько копирую конфиг для сервера

cat vsemoe.com.conf
server {
listen 80;
listen [::]:80;
server_name vsemoe.com www.vsemoe.com;

location ~ /.svn/ {
deny all;
}

location ~ /.ht {
deny all;
}

location '/.well-known/acme-challenge' {
default_type "text/plain";
root /tmp/letsencrypt-auto;
}

location / {
return 301 https://$server_name$request_uri;
}
}

server {
listen 443 ssl spdy;
listen [::]:443 ssl spdy;

ssl_certificate /etc/letsencrypt/live/vsemoe.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/vsemoe.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/vsemoe.com/fullchain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;

# openssl dhparam -out /etc/nginx/dhparam.pem 2048
ssl_dhparam /etc/nginx/dhparam.pem;

# What Mozilla calls "Intermediate configuration"
# Copied from https://mozilla.github.io/server-side-tls/ssl-config-generator/
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;

# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;

resolver 8.8.8.8 8.8.4.4 valid=86400;
resolver_timeout 10;

location / {
proxy_pass http://10.100.0.178;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_buffer_size 4K;
proxy_buffers 64 4K;
}
}

Генерирую требуемое (долго идет)

openssl dhparam -out /etc/nginx/dhparam.pem 2048

Перезапускаю nginx, захожу браузером … и ляпота!

Screenshot 2016-01-17 20.37.26

Ну и проверка …

Screenshot 2016-01-17 20.47.00

Следующим шагом разрулим ситуацию с ipv6.

Новый сервер с игрищами и блудницами – 2

Итак, надо виртуализироваться. Виртуализироваться будем через KVM потому что опять же продвигается редхатом, всеми поддерживается и так далее и тому подобное.

Для начала ставим кучку жутко “необходимого” софта: yum install qemu-kvm libvirt python-virtinst bridge-utils

Затем запускаем установленное

systemctl start libvirtd
systemctl enable libvirtd

Опять же, ничего такого вроде не появилось, за исключением пары интерфейсов с названиями virbr и адресом 192.168.122.1/24.

3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
link/ether 52:54:00:ba:d8:82 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 500
link/ether 52:54:00:ba:d8:82 brd ff:ff:ff:ff:ff:ff

Первым делом мне надо добавить ipv6 адрес. Только не вздумайте искать по совпадениям и править руками. Есть гораздо более приятные средства.

virsh net-destroy default
virsh net-edit default

Screenshot 2016-01-16 15.18.40

И добавим еще одно определение сети.

Screenshot 2016-01-16 15.27.38

virsh net-start default

Screenshot 2016-01-16 15.30.24

а в логах должно быть что-то похожее на

Jan 16 13:28:36 tower dnsmasq-dhcp[3544]: DHCP, IP range 10.100.0.100 -- 10.100.0.200, lease time 1h
Jan 16 13:28:36 tower dnsmasq-dhcp[3544]: DHCPv6, IP range 2a01:4f8:171:1a43:8000::1000 -- 2a01:4f8:171:1a43:8000::2000, lease time 1h
Jan 16 13:28:36 tower dnsmasq-dhcp[3544]: router advertisement on 2a01:4f8:171:1a43::
Jan 16 13:28:36 tower dnsmasq-dhcp[3544]: IPv6 router advertisement enabled

Откуда появился 2a01:4f8:171:1a43:8000::2/96 ?

Дело в том, что hetzner выдал мне ipv6 адрес 2a01:4f8:171:1a43::2/64. Типа подсеть на хост и все такое. Я взял с серединки (:8000) кусочек в 32 бита (128-96) или 4 миллиарда адресов. Ну или столько, сколько сейчас адресов в интернете 🙂 Из этого диапазона я выделил малюсенький кусочек в тысячу адресов для виртуалок. Думаю, что мне этого хватит 🙂 Ну и заодно поменял адрес для ipv4 на более подходящий мне.

Теперь самое время проверить доступность с другого хоста.

[root@outpost ~]# ping6 2a01:4f8:171:1a43:8000::2 -c 2
PING 2a01:4f8:171:1a43:8000::2(2a01:4f8:171:1a43:8000::2) 56 data bytes
64 bytes from 2a01:4f8:171:1a43:8000::2: icmp_seq=1 ttl=59 time=0.864 ms
64 bytes from 2a01:4f8:171:1a43:8000::2: icmp_seq=2 ttl=59 time=0.490 ms

--- 2a01:4f8:171:1a43:8000::2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.490/0.677/0.864/0.187 ms
[root@outpost ~]# ping6 2a01:4f8:171:1a43::2 -c 2
PING 2a01:4f8:171:1a43::2(2a01:4f8:171:1a43::2) 56 data bytes
64 bytes from 2a01:4f8:171:1a43::2: icmp_seq=1 ttl=59 time=0.341 ms
64 bytes from 2a01:4f8:171:1a43::2: icmp_seq=2 ttl=59 time=0.452 ms

--- 2a01:4f8:171:1a43::2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.341/0.396/0.452/0.058 ms

В общем, все как в ipv4, только маски дикие по размерам и не привычные.

Теперь надо поднять какую-нибудь виртуалку, что бы протестировать роутинг и прочие штуки.

Добавляем полезную утилиту для лентяев yum install virt-install virt-viewer

И останавливаемся. Потому что нам надо выделить немножко места для виртуалок.

lvcreate -L 100G -n vm vg0
mkfs.xfs /dev/vg0/vm
mkdir /vm
mcedit /etc/fstab
mount /vm

100Гб для начала хватит, а потом по необходимости растяну.

Так как я хардкорничаю, то добавляю необходимое для selinux

yum install policycoreutils-python
semanage fcontext -a -t virt_image_t "/vm(/.*)?"
restorecon -R /vm

И выкачиваю дистрибутив CentOS (Тут немного бальзама: качается по ipv6. Мелочь, а приятно)

mkdir /vm/iso
cd /vm/iso
wget http://ftp.funet.fi/pub/mirrors/centos.org/7/isos/x86_64/CentOS-7-x86_64-DVD-1511.iso

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

virt-install --name test --ram 1024 --disk path=/vm/test.qcow2,size=8 --vcpus 1 --os-type linux --network bridge=virbr0 --location /vm/iso/CentOS-7-x86_64-DVD-1511.iso --extra-args='console=tty0 console=ttyS0,115200n8 serial' --nographics

Значение каждого параметра либо понятны сразу, либо описаны в документации или интернете. Если все сделали правильно (я каюсь, не сразу все сделал правильно, но это оставим за скобками), то вы должны увидеть текстовый интерфейс, очень похожий расположением элементов на графический. Инсталлятор понятен любому, кто хоть раз ставил центось. В общем, после указания всех шагов получим наглядную иллюстрацию процесса инсталляции.

Screenshot 2016-01-16 16.40.05

После установки мы увидим консоль сервера и может туда залогиниться и даже попинговать ipv4 адреса. ipv6 не пингуется, потому что на интерфейсе сидит только локальный адрес.

Screenshot 2016-01-16 17.37.01

Более того, можно даже немного поэстетствовать и использовать графический virt-manager. Правда, придется добавить немного пакетов, что бы графическая часть морды не ругалась.

yum install xauth libcanberra-gtk3 PackageKit-gtk3-module dejavu-lgc-sans-fonts dejavu-lgc-sans-mono-fonts

Если virt-manager ругается на то, что консоль занята, значит вы не отцепились (Ctrl-]) от текстовой в другом терминале

Ну и затем с любого линукса ssh -X на машину и я получаю вот это.

Screenshot 2016-01-16 17.50.45

В принципе, полный контроль над машинами. Иногда очень удобно, иногда нет.

Но я отвлекся. В виртуальной машине ipv4 есть, получен и даже работает, а ipv6 нет. И еще тормозит по диску уж больно жутко.

Диск лечится просто: тормозим машину, virsh edit test и где driver добавляем cache=’unsafe’ (для рабочих не надо так делать). После запускаем и видим вполне себе шустро бегающую машинку.

Теперь с сетью. Заходим на тестовую машину, запускаем dhclient -6 ens3 (ens3 это у меня сетевой интерфейс). И видим в логах

Jan 16 16:30:58 tower dnsmasq-dhcp[3544]: no address range available for DHCPv6 request via virbr0

Оппа! А почему? Вроде же определили все и выдали тоже все …

Прибиваем в тестовой машине адрес 2a01:4f8:171:1a43:8000::99 и пингуем – пингуется, но только с хоста. Это нормально.

Как прибить? В /etc/sysconfig/network-scripts/ifcfg-ens3

#IPV6_AUTOCONF=yes
IPV6ADDR=2a01:4f8:171:1a43:8000::1234

и перезапустить network

Так, раз пингуется, значит проблема не в адресе, а в настройках. Судя по аналогичным сообщениям, у меня проблемы с маской. Почитав еще немного интернетов, я дошел до такой конфигурации.

<ip family='ipv6' address='2a01:4f8:171:1a43:8000::2' prefix='64'>
<dhcp>
<range start='2a01:4f8:171:1a43:8000::100' end='2a01:4f8:171:1a43:8000::200'/>
</dhcp>
</ip>

Как видите, разница только в маске. Как ни странно, но в этом отношении ipv6 (вернее, его роутинг в линуксе) ведет себя немного “странней”, чем для ipv4. Но в любом случае, прочитанное оказалось верным и машина получила свой адрес.

Jan 16 18:03:01 tower dnsmasq-dhcp[5491]: DHCPREQUEST(virbr0) 10.100.0.141 52:54:00:81:5b:8f
Jan 16 18:03:01 tower dnsmasq-dhcp[5491]: DHCPACK(virbr0) 10.100.0.141 52:54:00:81:5b:8f test
Jan 16 18:03:03 tower dnsmasq-dhcp[5491]: RTR-SOLICIT(virbr0)
Jan 16 18:03:03 tower dnsmasq-dhcp[5491]: RTR-ADVERT(virbr0) 2a01:4f8:171:1a43::
Jan 16 18:03:03 tower dnsmasq-dhcp[5491]: DHCPCONFIRM(virbr0) 00:01:00:01:1e:2d:1e:b1:52:54:00:81:5b:8f
Jan 16 18:03:04 tower dnsmasq-dhcp[5491]: DHCPSOLICIT(virbr0) 00:01:00:01:1e:2d:1e:b1:52:54:00:81:5b:8f
Jan 16 18:03:04 tower dnsmasq-dhcp[5491]: DHCPADVERTISE(virbr0) 2a01:4f8:171:1a43:8000::13c 00:01:00:01:1e:2d:1e:b1:52:54:00:81:5b:8f
Jan 16 18:03:05 tower dnsmasq-dhcp[5491]: DHCPREQUEST(virbr0) 00:01:00:01:1e:2d:1e:b1:52:54:00:81:5b:8f
Jan 16 18:03:05 tower dnsmasq-dhcp[5491]: DHCPREPLY(virbr0) 2a01:4f8:171:1a43:8000::13c 00:01:00:01:1e:2d:1e:b1:52:54:00:81:5b:8f

Вывод ip addr

2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:81:5b:8f brd ff:ff:ff:ff:ff:ff
inet 10.100.0.141/24 brd 10.100.0.255 scope global dynamic ens3
valid_lft 3590sec preferred_lft 3590sec
inet6 2a01:4f8:171:1a43:8000::13c/128 scope global dynamic
valid_lft 3595sec preferred_lft 3595sec
inet6 fe80::5054:ff:fe81:5b8f/64 scope link
valid_lft forever preferred_lft forever

Как видно, сервер получил свой персональный ipv6 адрес, но ничего, кроме хоста пинговать не может. Причина простая как грабли – ipv6 не имеет NAT в принципе. Только роутинг.

Косвенным подтверждением является попытка попинговать адрес тестовой машины снаружи

[root@outpost ~]# ping6 2a01:4f8:171:1a43:8000::13c
PING 2a01:4f8:171:1a43:8000::13c(2a01:4f8:171:1a43:8000::13c) 56 data bytes
From 2a01:4f8:171:1a43::2 icmp_seq=1 Destination unreachable: Address unreachable
From 2a01:4f8:171:1a43::2 icmp_seq=2 Destination unreachable: Address unreachable

То есть пинг доходит до хоста, а тот отвечает, что не знает, куда роутить этот адрес. Аналогичное получим, если попытаемся напрямую с хоста попинговать. Ну нету этого адреса в таблице роутинга и все тут. Меняем маску на основном интерфейсе (64->128), что бы таблицу роутинга в порядок привести. Без перезагрузки

ip addr del 2a01:4f8:171:1a43::2/64 dev eth0
ip addr add 2a01:4f8:171:1a43::2/128 dev eth0

А с перезагрузкой в /etc/sysconfig/network-scripts/ifcfg-eth0

Что изменилось? С хоста началась пинговаться виртуалка и все. В общем, лично мне стало понятно, что ipv6 – это нифига не ipv4, только с бОльшими масками.

(чтение мануалов опущено)

В общем, с одной стороны все проще, а с другой – все сложнее. В ipv6 есть такая штука, как SLAAC, которая работает как некий навороченный DHCP сервер. Подробнее в маны.

Поэтому выкидываю нафиг все из настроек dnsmasq (virsh net-edit default) и оставляю только описание интерфейса.

<ip family='ipv6' address='2a01:4f8:171:1a43::3' prefix='64'>
</ip>

Ну и адрес попроще сделал. И сделал /etc/radvd.conf

interface virbr0
{
AdvSendAdvert on;
AdvManagedFlag off;
AdvOtherConfigFlag off;
prefix 2a01:4f8:171:1a43::/64
{
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
RDNSS 2001:db8:0:a0a1::add:1010
2001:db8:0:a102::add:9999
2001:db8:0:a111::add:9898
{
};
};

Затем

systemctl enable radvd.service
systemctl start radvd.service

и перезагрузка виртуалки. Вуаля! Магия ipv6 сработала и виртуалка получила свой адрес.

inet6 2a01:4f8:171:1a43:5054:ff:fe81:5b8f/64 scope global noprefixroute dynamic
valid_lft 86170sec preferred_lft 14170sec

И даже пинги ходят во все стороны. То, что и требовалось получить.

Для проверки я создал еще одну виртуалочку (теперь с сразу с “быстрым” диском)

virt-install --name test2 --ram 1024 --disk path=/vm/test2.qcow2,size=8,bus=virtio,cache=none --vcpus 1 --os-type linux --network bridge=virbr0 --location /vm/iso/CentOS-7-x86_64-DVD-1511.iso --extra-args='console=tty0 console=ttyS0,115200n8 serial' --nographics

И сеть в ней сразу заработала без каких-либо дополнительных команд. То, что и требовалось получить. Теперь можно и виртуалки клепать.

Как выдаются адреса? А очень просто: простым маппингом мак-адреса сетевой. Опять же за подробностями в документацию.

link/ether 52:54:00:e4:63:05 brd ff:ff:ff:ff:ff:ff
inet6 2a01:4f8:171:1a43:5054:ff:fee4:6305/64 scope global noprefixroute dynamic

Главное изменение теперь в “политике безопасности”.

Раньше: вся сетевая безопасность лежала на хосте. Гости получали уже отфильтрованный трафик, только на те порты, которые разрешены. Можно было спокойно открывать порты, не опасаясь ничего.

Теперь: каждый гость выставлен наружу “напрямую” и требует соответствующей защиты. И не важно, что ipv4 адреса из “приватной” сети. Фаирволл, обновление и выключение ненужного – наше все.

Не страшно и не сложно, но помнить надо.

Итак, считаю, что очередной шаг закрыт. Теперь надо переносить существующее (разумеется, с одновременным апгрейдом)

Новый сервер с игрищами и блудницами – 1

Пришла ко мне рассылка от hetzner. Дескать, дорогой валуабный клиент, сделали мы новую линейку серверов. Памяти больше, проц быстрее, диски толще а денег надо меньше. Приходи и заказывай. Походил я кругами и заказал. А то на старом уже диски сыпаться начали и своп образовываться.

Но просто так переносить сервисы абсолютно не интересно: на старом сервере у меня стоит OpenVZ и весь перенос будет заключаться в паре команд, да смене имен в DNS. Где же развитие и толчок вперед? В общем, потыкался я и решил:

– Сменить основную OS с CentOS 6 на CentOS 7. systemd, firewalld и прочие d в полном изобилии. Некий опыт есть, но чего-то в голову лезут пошлые мысли про RHCE.
– Привести в порядок DNS. Сейчас у меня часть серверов тут, часть там, часть вообще через одно место. Пусть все будет одинаковым и у меня.
– ipv6. Не очень-то и надо, но смотреть выше про развитие.
– SNI. Хватит тратить ipv4 адреса на каждый SSL сервер (да и дешевле будет).
– Да и вообще, надо все закриптовать. А то стыдоба – личный SVN голым ходит.
– Ну и KVM надо. Иногда жутко как требуется винда “в прекрасном и далеком”, а городить туннели не охота. Заодно получится бесплатный терминальный сервер для меня любимого.
– OwnCloud тоже не помешал бы, как и OpenVPN сервер для разностей нехороших.
– Ну и остальное по вкусу.

Практика прошлых лет показала, что принцип “ставим один сервер, выкидываем с него лишнее, а все сервисы в виртуалки” оправдал себя на все 100%. Да, при настройке чуть-чуть подумать надо, но зато потом абсолютно никаких проблем и заморочек. Ни с хакерами, ни с распределением нагрузки, ни с резервным копированием … да вообще ни с чем. Так буду и тут делать.

Идем в админку и заказываем новый сервер. Ждем получения письма, в котором пишут радостное:

Screenshot 2016-01-16 10.52.41

Заходим, нас пускают …

Screenshot 2016-01-16 10.52.57

Для приличия делаем passwd root и начинаем осматриваться. Сразу замечаю, что немцы стойко держат флаг “мы делаем нах ордунг” и сделали два больших рейда по 2Тб. Один отдали под /, другой под /home. Интересно, какой у них был сценарий использования? Но в любом случае, мне такое не надо.

Идем опять в консоль и перегружаемся в rescue

Screenshot 2016-01-16 11.04.38

Выглядит именно тем, что я и заказывал (каюсь, да, не посмотрел раньше). Поэтому сразу набираем installimage

Там нам дают в mcedit поправить конфиг. Там я меняю имя сервера на tower.multik.org и ниже я показал, как указываю 16 гигов свопа, 512 мегабайт для /boot и все остальное отдать в LVM. В LVM прошу создать раздел / размером в 16 гигов. Остальное оставить нетронутым. Почему так мало? Так потому что все остальное – в виртуалки! В корне сервера делать лишнему абсолютно нечего, тут будут только штуки, связанные с внешним миром типа фаирволла.

Screenshot 2016-01-16 11.42.58

Сохраняю (F2 или ESC-2), выхожу (ESC-0 или F10) и жду перезаливки сервера

Screenshot 2016-01-16 11.10.30

Потом reboot, снова захожу (про ключи и их смену не говорю) и вуаля! Я в новом сервере.

Screenshot 2016-01-16 11.23.09

Опять меняю пароль root.

Итак, на этом этапе я получил пустой и голый сервер. Что он умеет? Да ничего. Добрые немцы выкусили из образа вообще все (вот тут реально молодцы!) и на сервере есть только ssh и настроенная ipv4/ipv6 сеть.

Первым (опять первым, но тут все такое) делом обновляемся. yum update

Добавляем полезные программки yum install mc screen bind-utils iotop iftop

Включаем синхронизацию времени systemctl start ntpd && systemctl enable ntpd

и переходим к фаирволлу. yum install firewalld ; systemctl enable firewalld ; systemctl start firewalld (Почему firewalld? Потому что мне лень править правила для ipv4 и ipv6 одновременно. Ну и редхатом проталкивается)

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

systemctl status firewalld

Screenshot 2016-01-16 12.13.29

и побалуемся с командой firewall-cmd

Screenshot 2016-01-16 12.15.57

Если я правильно понял, то никаких активных правил нет, просто стоит public по умолчанию, в которой разрешен только dhcp-клиент и ssh. Все остальное запрещено. Вполне логичные правила, но опять же, мне не сильно подходят. Будем менять.

Для начала попробую

firewall-cmd --zone=public --change-interface=eth0 --permanent
firewall-cmd --get-active-zones

И вижу фигу. Ничего не изменилось. Оказывается, это фича. Скрипт видит, что зона public и так применена (ну и что, что по умолчанию, поэтому ничего не делает).

Меняю зону на home и обратно. Вот теперь показывает

Screenshot 2016-01-16 12.27.56

Но лично мне не нужно, что бы было правило для dhcp клиента

firewall-cmd --zone=public --remove-service=dhcpv6-client --permanent
firewall-cmd --list-all

Ну вот теперь хорошо. Ничего лишнего, все закрыто и замуровано. Остался последний шаг – применить все, что я тут натворил, в реальность

firewall-cmd --reload

Все, теперь и iptables показывает именно то, что полагается.

Как говорится, первый шаг сделан. Следующим – виртуализироваться. Но виртуализироваться хардкорно, поэтому ставим SELINUX=permissive для начала и перезагружаемся, проверяя правильность всего преднастроенного.

У меня выползла одна единственная проблема – предустановленный немцами chrony мешался ntpd. Удаляем его (yum remove chrony) и все.

PS В запоминалку: настроить монитор raid.

Кто дурак?

Любой из нас играл в дурака. Дома, в студенчестве, на картошке или в каптерке. Простой дурак, переводной, без масти и прочее, прочее, прочее.

Screenshot_2016-01-10-11-59-59

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

https://youtu.be/7c70EOho0yU

Эта версия игры наиболее проработанная. В ней и карты “правильные” и игроки не тупят, выбор большой да и если раззадоришься, можно и в онлайне сразиться с себе подобными.

Игра просит денежку малую, но это того стоит.

В общем, берем скорее: iOS Android

Свинья – лучший друг человека!

Все играли или пробовали играть в Angry Birds. Злобные птицы мешают милым зеленым поросятам спокойно жить в своих домиках. При этом нет ничего, что говорило бы про желание свиней питаться яйцами (кроме нагло смонтированных роликов). А ведь на самом деле свиньи умны, веселы и изобретательны!

Screenshot_2016-01-08-13-16-43

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

https://youtu.be/pH9FJM5yXCw

Если в птичках думать не надо (бери да швыряйся), то тут халява не проходит: надо “кумекать”, особенно на последних уровнях. Число собранных звездочек варьируется от времени работы двигателя, места посадки свиньи или варианта конструкции. Более того, собранное обожает разваливаться, рассыпаться, взрываться и улетать в самых разных направлениях.

Берем для iOS, Android и OS X

Надави побольше!

Больше таких игр не делают. Слишком не толерантно, слишком кроваво, слишком весело.

Screenshot_2016-01-07-11-26-30

Кармагеддон или “Кровь, кишки и машины”. Берем машину и давим всех, кто подвернется. Чем больше надавили, тем больше очков заработали. Выиграл тот, кто либо проехал быстрее, либо передавил всех пешеходов, либо поломал всех соперников.

https://youtu.be/dvd_0pJLfd8

Игра была запрещена во многих странах, но ФИДО и потом интернетики не дали завять такой штуке. Как ни странно, но игра официально 16+.

Взять для iOS, Android или Steam

PS Главное, не садитесь сразу после игры за руль!

Шарики черные, зеленые и белые …

… и все лезут не тогда, когда надо и не туда, куда надо. А потом из-за них всё ломается!

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

IMG_0012

Как и положено хорошей игре, всё происходит без доната и с постепенно увеличивающейся сложностью. Не поддающиеся уровни можно пропустить или просто перейти на другую карту, если шариков собрано достаточное количество.

Играть просто: черные шарики создают постоянные связи, а зеленые – временные, которые можно разрушить в любой момент. Красные шарики при выносе надуваются и тянут вверх, а белые умеют образовывать цепочки. Надо создать такую икебану, что бы достать одним из шариков до выхода, но не зацепить ничего лишнего. Уровень считается пройденным если шариков засосало достаточно. Просто, понятно и на последних уровнях неимоверно сложно.

Игра есть под все платформы, поэтому найти ее не составит труда. Поверьте, 250 рублей за такое не дорого.

World of Goo для iOS и Android и даже Steam

А потом мультик покажут!

Карманный размер, два батарейки, часы с будильником и игра в комплекте. Первая игровая консоль у многих детей моего времени. “Ну, погоди”, “Веселый Повар”, “Тайны Океана” … если эти названия для вас не просто набор слов, то у меня хорошие новости. Наконец-то появились нормальные ремейки этих игрушек.

nupogodi

Нормальные – это значит яйца падают так, как тогда и управление не заставляет мучаться. Да что я тут рассказываю, проще посмотреть …

В те годы ходила байка, что стоит набрать 1000 очков, как игра покажет мультик про волка и зайца. Я набирал. Мультика не было, игра просто начиналась сначала … Обидно было до жути.

iOS и Google

Да, версия для iOS платная, но она того стоит, ибо наиболее полная реализация игры из встречавшихся мне. Там даже волк “подмаргивает” во время звука, прямо как в оригинале. Сразу видно – люди играли.

PS. Есть куча версий для андроида, но эта вроде наиболее играбельная на мой вкус.

Хорошо быть рыцарем …

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

IMG_0009

Вторая версия этой игры появилась на PC в 1989 году и практически мгновенно завоевала популярность. По крайней мере я потратил на нее в 90-91 году ну очень много времени, сидя за древним 286м и делая вид, что занимаюсь работой.

Вам дают карту, один город и одного рыцаря. Ваша задача: завоевать как можно больше городов. Выигрышем считается тот момент, когда у противника не будет больше городов или рыцарей.

Каждый город приносит некий доход в виде золота и воинов с частотой “раз в Нцать ходов”. Воины могут охранять город (тогда им добавляется еденичка к “силе”) или атаковать противника. Если с воинами в группе рыцарь – то еще одна еденичка к силе. Чем чаще воин побеждает, тем опытней и сильнее он становится. Просто и понятно.

Спасибо авторам, они перенесли весь игровой мир на современную платформу без потерь. Играя, я практически не нашел отличий от оригинала и поэтому игра обоснованно поселилась в моем списке. Игра есть в обоих вариантах: платном и бесплатном, но я считаю правильным потратить 280 рублей ради удовольствия.

К сведению: средняя партия “один-на-один” длится примерно пару часов, партия “один против всех” – промерно пару дней, так что будьте осторожны. Есть возможность небольшого доната, но все играбельно и без него.

К сожалению, игра есть только для iOS. Берите в iTunes Store

Дави зомбей!

Иногда напрягать мозги совершенно нет никого желания. А поиграть охота. Во что-нибудь в меру простое и не требующее напряжения извилин: в метро или электричке или просто под настроение. Пару-тройку раундов по несколько минут и хорошо. Одной такой игрой для меня стал Earn to Die 2

unnamed

Сюжет игры простой: вам надо добраться из точки А в точку Б. В вашем арсенале есть машина, управляемая педалью газа и двумя кнопками балансировки (потом добавится ускоритель). Попыткам добраться в нужную точку мешают зомби и беспорядочно сваленные препятствия. Давим зомбей, разрушаем препятствия и доезжаем.

Просто? На первый взгляд да, на второй тоже … да третий сильно не поменяет точку зрения. Одно из главных отличий этой игры от подобных – возможность каждый раз ехать по-другому: где-то можно газануть и проскочить поверху, а где-то наоборот, притормозить и проехать ниже. В некоторых картах своевременное включение ускорителя способно помочь преодолеть на одном дыхании половину уровня. За каждую попытку “доезда” вам дают немного денег, которые можно потратить на обновление или усиление машины.

IMG_0003

Обновления довольно условные, но тем не менее разделены на четкие категории: двигатель, трансмиссия, колеса, оружие, ускоритель, баланс, защита и бензобак. Чем больше денег вливаете в соответствующую категорию, тем лучше машина себя ведет. Скажем, если больше денег в колеса, то машина будет легче преодолевать препятствия, а если в “баланс” – то можно будет проехать всю трассу, просто зажав педаль газа. А проехав – получить новую машину, еще круче и новую трассу.

Несмотря на всю кажущуюся простоту, в игрушку можно залипнуть надолго, благо авторы организовали все так, что игру можно пройти без каких-либо вливаний денег от слова совсем. Но для наиболее нетерпеливых есть возможность добавить денег и практически сразу перескочить на пару-тройку уровней вперед. Если надумали потратиться, то я рекомендую воспользоваться “money doubler”, который удваивает число получаемых денег. Стоит недорого и не “сгорает”.

Приятной игры!

Защищаемся от …

Вообще-то это целый жанр игр, который пошел от одной – Tower Defense. Суть игры простая – вам надо защитить от прохода/проезда/проплыва/прополза и пролета какую-либо точку. Защита организуется не менее просто – вам необходимо расставить на пути движения злодеев пушки/орудия/бластеры. Враги тоже не отличаются изысками – они тупые и прут по маршруту, не обращая внимания на то, что их уничтожают всеми доступными и недоступными способами.

Придумать тут что-либо новое сложно, поэтому враги попадают под следующие категории

– Простой. Убивается легко, приносит очков мало. Просто мясо для отвлечения пушек.
– Быстрый. Убивается так же легко, но быстрый. Имеет все шансы проскочить, пока пушки заняты.
– Крепкий. Движется медленно, но для убийства надо потратить кучу времени.

Ну и у летающих есть те же самые классы. Иногда добавляют врагов, которые могут уничтожать пушки или лишать их каких-либо особенностей.

Казалось бы, что может быть интересного в подобного рода играх? Расставил – уничтожил. И тут на сцену выходит его величество баланс. Большинство “новых” игр этого жанра построены по классической схеме: даём легко выиграть первые уровни, а затем начинаем задирать сложность до такой степени, что игроку просто невозможно пройти уровень честно, не покупая различные дополнения и улучшения. Плюс большинство авторов придерживаются канонического устройства игры: на карте есть дороги/реки, свернуть с которых невозможно. А ведь куда приятней “закрутить” врагов на карте, заставив пройти мимо одной и той же пушки несколько раз.

В результате всех игр у меня на планшете обосновалась игра Tower Madness HD, а на телефоне – Robo Defense. Tower Madness есть и на андроиде, но там он почему-то не очень играбельный на мой вкус. Но точно такой же, как и на иос

10389983_10153033126008930_8674888893737785096_n

В Tower Madness ваша задача защищать 10 овечек от злобных инопланетян, которые желают их утащить к себе на корабль. Перед игрой вам дают выбрать пушки, которыми вы будете обороняться. Баран в оружие не входит, но способен один раз уничтожить всех посягнувших на отару.

Robo Defense устроен проще – есть N входов и N же выходов. Всякие штуки пытаются пройти из входа в направлении выхода. В начале карьеры до проигрыша можно пропустить 10 врагов, но потом накопленные очки можно потратить на увеличение этого числа. Графика тут не такая красочная, как в tower madness, но не обращайте внимания – играбельность тут на уровне. Я посадил аккумулятор не на одном смартфоне и не один раз, играя “по 5 минуточек”.

Из отдельных плюсов Tower Madness – сохранение резервных копий достижений в iCloud. И даже сменив телефон или планшет, ваши достижения и открытые карты не исчезнут. Robo Defense так не умеет.

Хорошей игры!

PS Где найти? В магазинах приложений по имени.

ZFS, солярка и все-все-все …

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

Итак, некоторое время назад ко мне в руки попала инфраструктура, которая за 5 лет сменила пятерых же админов. Самым больным местом были стораджи, с них и начал разборки. Ситуация осложнялась тем, что сисадмины менялись то ли вместе с начальством, то ли у начальства были постоянно меняющиеся вектора “куда мы движемся” – мне выяснять лень.

Первым делом была проведена ревизия, чего же попало ко мне в руки.

– Стораджи на NetApp. Здесь был маленьких плюс: есть человек, которых ими управлял и какого-то внимания с моей стороны не требовал.
– Стораджи на ESX. То есть берем сервер с RAID контроллером, ставим туда ESX и вместе с хостингом виртуалок раздаем еще и диски.
– Стораджи на Nexenta. Некоторые с просроченными лицензиями.
– Стораджи на OmniTI. Некоторые с веб-мордами, некоторые “голые”.

И вот последних двух пунктов было много! Стал разбираться. Что нексента, что OmniTI построены на древнем ядре от solaris. Если кто-то из продаванов нексенты будет втирать, что они там что-то делали, модернизировали и так далее, не верьте – я из любопытства менял и ядра и библиотеки – никаких криков “ой, у меня тут сломалось” не было.

Все отличие нексенты от omniti/openindiana – это веб-мордочка с красивыми графиками, криво обкусанный шелл и всякие параметры по умолчанию.

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

Освободил один хост, обновил софт, обновил фирмварь … И все, солярка перестала загружаться – не может проинициализировать дисковый контроллер. Как говорится, оппа. Контроллеру 5 лет, солярка типа с последними обновлениями и не может. Побежал по инету – везде стоны про какое гавно ставит деллы в свои сервера. Поставил для проверки линукс – встал без каких-либо проблем.

Тут у меня поднялся флажочек: если солярка то не трогай фирмварь. 5 лет ей никто не занимался и больше заниматься не будет …

Ладно, благодаря новой политике у меня есть место, куда слить данные и освободить еще пару серверов для “на попробовать”.

Итак, два полностью одинаковых Dell R510. Вообще одинаковых – партнамберы из одной сотни. На одном – поставленная с нуля солярка, на другом – центось седьмая.

На солярке поднял zfs согласно лучшим шаманским методикам (там из духа “если число дисков четное и больше 9 – то лучше raidz3, иначе raidz2 и смотри не перепутай”), на линуксе – тупо software raid той же конфигурации, что и у солярки. И XFS поверх

И начал тупо заливать и сливать данные. NFS3, без каких-либо затей.

Солярка показала чистую, красивую и прибитую гвоздями “полку” на 3,5 гигабита. Линукс честно упирался в скорость сети и рисовал 10ку. Очень удивился. Ведь корпоративная система, типа ого-го и эге-гей!

Полез тюнить. А тюнить-то в общем и нечего. После линукса с его /sys и /proc солярка кажется очень бедным родственником. Методом последовательного теста выяснил, что у сети полка на 5 гигабит. И все – дальше проц умирает по загрузке. Древний драйвер, новее никто не делал.

В более низкой полке виноваты диски, вернее какие-то ядерные потроха этой ZFS. Потому что когда я поставил уже на третий сервер linux, прикрутил к нему zfs с теми же настройками, то он стал выдавать ту же 10ку.

Вывод: в стораджах солярке и ее производным делать нечего. Старый софт, никакой поддержки и теде и тепе. Если кто покажет на сайт соляриса, где типа недавно они выкатили новую версию, спешу огорчить, там то же самое ядро из 2010 года … я пробовал 🙂

Но может быть есть шанс ZFS завести под линуксом? Фигня вопрос: как раз приехал новый сервер. Ставим линукс, ставим ZFS, размечаем диски, запускаем туда клиентов … Поначалу все шло шикарно. Но внезапно клиенты стали жаловаться на то, что их машинки “умирают”. Пошел смотреть.

На сторадже занято примерно 65% диска, до обещанных ораклом 85% еще далеко. Решил посмотреть на производительность и немедленно поджег стул – 5 мегабайт в секунду. Представляете, 24 SAS диска и такая скорость? Сколько нервов я потерял, “раскидывая” этот сторадж и представить тяжело. Причем скорость выросла до приличных значений уже на практически пустом сторадже.

Попытался разобраться и не смог – по всем статьям, хаутушкам и прочим заклинаниям у нас должно быть более чем хорошо – и кешу место выделено и прочему раздано согласно документации. Ан нет – заливаешь на 40Тб сторадж 25ТБ и он “умирает”. И лежит “мертвым” до 5-10Тб занятого. Где-то какой-то глюк в драйверах zfs.

Стало понятно, что и ZFS на сторадже не жить. Перебилдил на софтверный raid, поставил xfs и все – все проблемы ушли.

Однако есть у меня место, где я недавно поставил пару новых хостов на солярке и аккуратно обновил старые. Это специальные хранилки, которые хранят снапшоты клиентских файловых систем. Вот там ZFS развернулась на всю катушку – и сжатие и дедупликация нужны как воздух. Опять же, я провел пару недель, гоняя данные между этими хостами (дедупликация работает гораздо лучше, когда одном сервере “давятся” одни и те же клиентские данные). В результате есть несколько … наблюдений

1. “Свежая” солярка, ZFS 28 и raidz3 – наше все. Оно даже на глаз быстрее работает того, что было 5 лет назад. Но линукс все равно быстрее.
2. Сжатие практически ничего не стоит для процессора, а давит в 1,5-2 раза. Можно включать.
3. Хочешь дедупликацию? Добавь памяти из расчета 1ТБ данных на диске – 5-6ГБ ОЗУ. Иначе будет тормозить.
4. Никогда (слышишь: никогда!) не забивай ZFS на 97-98%. Оно умирает даже на чтение до скоростей 100-200 килобайт в секунду. В принципе, мне именно поэтому не удалось забить на 100% – тесты умирали раньше. И вообще, для ZFS – 85% занятого – уже тревожный звонок.
5. Солярка в изучении чуть сложнее линукса, в основном из-за очень кривой и слабой документации. Изучать целенаправленно смысла нет, разве что в удовольствие.

Boulder Dash 30th Anniversary

… темные подвальные или полуподвальные помещения, уставленные цветными телевизорами, перед которыми торчат латанные-перелатанные черные пластмассовые джойстики с красными кнопками. И толпы хаотично клубящихся детей, наблюдающих за счастливчиками добывших правдами и неправдами денег и теперь тратящих их за право поиграть. В мое время стоимость игры составляла 15 копеек за минуту, так что очередь продвигалась довольно быстро.

Если владелец зала был в хорошем настроении, то его можно было попросить сменить игру – почему-то в моё время это считалось особым шиком. А если время близилось к вечеру, то можно было попросить поставить игру и посложнее, ибо к тому времени вся малышня уже расставалась с добытыми у родителей деньгами и больше не претендовала на место в очереди к джойстику.

Одной из этих игр “посложнее” был Boulder Dash.

Screenshot 2015-12-06 14.54.44

Суть игры простая: управляя прогрызающим ходы муравьем (сусликом? кротом?) необходимо было за определенное время собрать все алмазы и добраться до выхода. Главное – не дать камням попасть по башке и не столкнуться с жуками. Плевое дело!

Быстренько скачал эмулятор ZX Spectrum и нашел “тапочек” с игрой.

Да, она самая! Правда, на Atari за счет более продвинутого видеоконтроллера скроллинг был плавнее, но уровни те же самые, как и проблемы при их прохождении. И как “тогда”, я заклинился на третьем уровне. Банально не хватало алмазов для открытия дверей. Помучавшись некоторое время, я нашел подсказку и застрял теперь уже на четвертом уровне .. или пятом? Не важно: я застрял. Раз за разом я пытался пройти уровень, не желая сдаваться: ведь сохранений нет, да и денег за прохождение никто не просит.

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

Ну … не сказать, что скопировали, но переписали под современные рамки – это точно.

Псевдо-3D, обучалки, миссии, “открывашки за деньги” – все это присутствует в полной мере. Даже за старые уровни требуют доплатить 100 с лишним рублей. Буржуи и капиталисты!

Зато музыка ну очень похожа на ту самую, и уровни из Classic Pack вообще один-в-один. Доказательство на видео выше. И даже застреваешь на тех же местах и совершаешь те же самые ошибки, что и тогда.

Из замеченных минусов:
– К управлению приходится привыкать, особенно таким старперам как мне (ребенок освоился сразу). Но привыкнув, играешь спокойно.
– Мне кажется, что в оригинале размер экрана был “больше”. Больше элементов помещалось на экране и не надо было так судорожно мотаться по карте.

И только наигравшись до одури замечаешь, что эту игру выпустили в честь 30-ти летия. Но я взрослый и состоявшийся мужчина и могу позволить себе поиграть в такие игры (и не обращать внимания на возраст). Осталось теперь джойстик найти …

Стоит ли играть: да. Даже если и не играли в оригинал
Где взять: в магазинах приложений. Есть и платная и бесплатная версия.

Обновление: Оказывается, есть версия для браузеров, переделанная из версии для ZX Spectrum

Дело было вечером …

… и делать было нечего. Организм в достаточной мере отдохнул и к смене вида деятельности с “полежать на диване” на “поиграть во что-нибудь” отнесся довольно благосклонно.

Достал планшет, обновил все и решил посмотреть, что сейчас предлагает мобильная индустрия для развлечений таких, как я. Сначала попробовал на андроиде, затем на ios. Скачал пару игрушек, купил другую … И не сказать что меня это удивило, но создалось впечатление что современные игроделы рассчитывают, что играть в игры будут полные дебилы, для которых красивая картинка важнее сюжета. Не имеешь быстрых пальцев? Не беда – заплати или посмотри рекламу. А лучше и то и другое.

Например вот скриншот, снятый мной сегодня в магазине Apple Store.

Apple Store donat

Из 16 игр только две стоят каких-то денег и всего лишь одна не предлагает покупки в игре. Ну хорошо, я готов согласиться с такой монетизацией, тем более что на андроидах играть бесплатно вообще практически невозможно – там на каждый чих выпрыгивает реклама и войти во вкус очень тяжело.

Но где хоть какое-либо напряжение мозгов? Все игры кроме двух требуют от игроков только быстрой реакции и точных пальцев. Не, одноклеточным этого может и хватит, но мне – нет. Если посмотреть на оставшиеся игры то обнаружим, что они имеют корни “из тех времен”. Что SimCity, что Lara Croft в свое время были практически на любом компьютере.

Пробежался по интернету и не нашел ничего, что бы могло ответить на вопрос “во что можно поиграть взрослому мужику”. Да, тому самому, что вырос на Tetris, Formula One, Prehistorik, RiverRaid, Saboteur и Boulder Dash. Где были Atari 2600, ZX Spectrum и капелька Денди. И именно поэтому я органически не перевариваю бегалки типа Temple Run, где максимально развивается только связь “глаз-палец” …

Как известно, спасение утопающих – дело самих утопающих, поэтому я и решил открыть новый сайт, на котором буду делиться своими впечатлениями об играх, в которые не стыдно играть. Будет он развиваться или я его заброшу – узнаем лишь через некоторое время.

На чем играть? В принципе мне все равно – лишь бы игра была захватывающей. Да и беглый просмотр показывает, что большинство игр существуют сразу и под Android и iOS. И очень-очень редко случается так, что разработчик по сути только “столбит” место на одной из платформ, выпуская слабое подобие игры на другой. В общем, если не указано иное, то я буду играть на планшете с iOS, а с телефона на Android.

Места всегда мало! Или ищем место онлайн.

Мы сейчас находимся в период очень интересных ценовых войн за пользователя. Все сервисы пошли в интернет, вместо покупки предлагается подписка и прочее, прочее, прочее. И то, что сначала казалось прорывом, сейчас не вызывает никаких эмоций.

Вот и мне потребовалось найти немного места в онлайне. С одной стороны, искать мне место в онлайне … Ну странно как-то. Есть и свой сервер в германии, где как минимум терабайт простаивает и где можно развернуть тот же owncloud, а с другой стороны, на нем и так уже крутится куча всего полезного, которое неплохо было бы положить еще куда-нибудь.

Итак, что мне надо?

Мне надо некий сервис, в который я положу следующее

Примерно 200Гб всяких штучек, которые мне потерять нет желания.
Примерно 300Гб других штучек, которые мне дороги как память
Ну и примерно 20Гб фотографий.

Ну и как обычно, аппетиты приходят во время еды, поэтому сразу замахнусь на терабайт места.

Что мне надо?

Мне нужна поддержка всех трех платформ – linux, os x, windows. Пусть через нное место, но что бы все работало. Никаких браузеров, “у нас в разработке” и так далее.

Мне нужны “прокачанные” технологии. Сидеть как dropbox на плечах amazon’а конечно хорошо, но охота более прямого контакта. Зачем? Да просто так.

И мне не нужна “халява”. Если халява – значит никаких гарантий и никакой возможности хотя бы покачать права.

Для начала пойдем по отечественным сервисам.

Яндекс.Диск. 200 рублей за 1Тб в месяц. Есть прямой доступ до диска через dav_fs, что для меня является большим плюсом. Минус – как любая компания, живущая от рекламы, Яндекс собирает о пользователе все, до чего сможет дотянуться.

Облако mail.ru. Цен на сайте не нашел, другие сайты говорят про 499 рублей в месяц. Но я имею крайне печальный опыт работы с mail.ru, поэтому данная компания даже не рассматривается и здесь приведена из-за того, что она есть.

В общем-то на этом отечественные провайдеры кончаются, не успев начаться. Пойдем по импортным

Dropbox. Самый первый, самый широко поддерживаемый сервис. За 1Тб желают 10 долларов в месяц или 700 рублей.

iCloud. За терабайт хотят 19 долларов в месяц. Или 1400 рублей в месяц.

Microsoft OneDrive. 199 рублей в месяц. И добавляют еще лицензию на Office 365 (Word, Excel и прочие штуки).

Кажется, тут выбор очевиден. Тем более, я недавно попробовал Windows 10 … и знаете, она мне понравилась.

Update: капиталисты не смогли не подгадить и в итоге не 200 рублей в месяц, а целых 286. Я близок к разорению 🙂

Продолжаю искать музыку …

После обновления играющего мне в уши оборудования довольно-таки резко встала проблема “а что слушать?”. То, что раньше было собрано тяжким трудом, слушать стало невозможно. Когда знаешь, как оно должно звучать, мозг автоматом переключается с “слушать музыку” на “слушать, как воспроизводится”. Когда не знаешь, то и 320 kbps прокатывает на ура, хоть и вызывают подозрения.

Что делает воспитанный в пост-советских реалиях человек? Правильно, лезет на торрент, обнаруживает там залежи flac’ов и начинает качать. Я в процессе замены библиотеки докачал до буквы D и забил 2 терабайта.

А потом я начал слушать то, что накачал … Скажу сразу: стер практически 90% накачанного. Ибо к понятию “качественная запись” это не относилось ни с какой стороны. Итак, как понять, что запись стоит оставить в коллекции.

Первое, на что абсолютно не стоит обращаться внимание, так это на логи рипперов, анализаторов и прочей фигни. Все они рассчитаны на то, что бы обращающийся с ними хотя-бы понимал, что и зачем он делает. Любой граббер покажет “no errors” на свежезаписанный диск. Ему пофиг, что записанное – сильнозажатый mp3. Да и руками при желании эти текстовые файлики понабирать можно. А уж подделать картинку спектрограммы и делать нечего. Так же не стоит обращать внимание на цифры и “источник звука”: нам же музыку слушать надо, тем более и их легко можно накрутить/подделать. Плюс очень часто запись в 16/44 звучит гораздо лучше какой-нибудь 24/192 исключительно из-за качества оригинала и прямизны рук звукорежисера. Особенно это часто слышно на треках из iTunes Store, которые Apple специально пересводила.

Второе, что необходимо сделать сразу же: взять и послушать “наскоком”, просто перематывая в разные места. Через некоторое время “вау-эффект” пройдет и вы сможете практически “с лету” определять примерный источник записи. По динамическому диапазону, звучанию басов и высоких и так далее и тому подобное. Да, я наступаю на все мозоли аудиофилам и цифродрочерам, но стадию “винил или сидюк” я прошел где-то за неделю. Сейчас у меня стадия “сидюк – dvd|студия”, но сильно лажаюсь на концертах.

Какие основные симптомы для “надо выкидывать”?

1. Нет панорамы. Если слушать в наушниках, то все инструменты собраны в этакую кучу прямо перед носом. Нет ничего звучащего “левее” или “правее” – только четко впереди, слева или справа. Басы бьют внутри черепа. Все это признаки того, что “оригинал” был взят из mp3. Joint-stereo и так далее.

2. Все звуки “глухие”. Слушается так, как будто вы слушаете концерт по телевизору. Опять же, последствия mp3 или винила. Но (!) на всякий случай обратите внимание на дату записи. Очень может быть, что записи лучшего качества попросту нет. Или так изначально было записано. Ну тяжело ждать от записи 50-60х годов того, что можно услышать в современных.

3. Дефекты/артефакты. Скрипы, “песок”, “щелчки”, “звон” и так далее. Нет, они встречаются и в студийных записях, но гораздо реже, чем в сделанных самостоятельно. Да и любой студийный “артефакт” обязательно обсосан на форумах, найдено подтверждение того, что “да, лучшего качества нет” и так далее и тому подобное. Короче, это не bug, а feature.

4. Чрезмерное использование обработчиков звука. “Клиппинг”, “компрессии” и так далее и тому подобное. Опять же, через некоторое время слышится ну просто сразу. Ну и при сомнениях можно поглядеть на график громкости: если видите “прямую” – это оно. Да в некоторых случаях хватит просто посмотреть на индикатор уровня в течении 10-15 секунд. Вот просто для примера:

bad_music

good_music

Обратите внимание на поведение стрелок. Там, где все хорошо, стрелку колбасит практически по всей шкале. Там, где плохо, стрелка колеблется не сильно и “прилипает к нулю”. Особенно подобными “украшательствами” страдают студии в США, поэтому если есть возможность, послушайте тоже самое, но предназначенное для другого рынка – иногда бывает ну очень большая разница.

И наконец, самым последним шагом надо просто сесть/лечь и послушать. В спокойной обстановке, когда ничего не отвлекает и можно реально послушать музыку. И, особенно для хорошо знакомых дорожек, огребать увольствие лопатами, тележками и тазиками …

Резюмируя: если музыка нравится – оставляйте. Не нравится – удаляйте без жалости. Поверьте, в мире дофига хорошей музки, которую вы еще не слышали …

OS X 10.11 El Capitan & USB

Не надо никаких шаманств: теперь делатель флешек есть прямо в инсталляторе

sudo /Applications/Install OS X 10.11 Developer Beta.app/Contents/Resources/createinstallmedia --volume /Volumes/Untitled --applicationpath /Applications/Install OS X 10.11 Developer Beta.app --nointeraction

PS Это для девелоперской версии. Думаю, что для обычной надо будет убрать упоминания Developer Beta

Продолжение аудиофильства …

Торрент-клиент уже который раз докладывает, что места на диске больше нет, а я отмахиваюсь, ибо слушать не на чем. Нет, SGS+CX300II (см прошлый пост) отрабатывают свое на все 100%, но мне их не хватает.

Во-первых, я уже нашел мелодии (спасибо hdtracks.com), где я ясно слышу, что эта “аудиосистема” не тянет. Вот совсем чуть-чуть, но не тянет.
Во-вторых, SGS все-таки довольно старый. Большие и толстые треки проигрывать ему откровенно тяжело. Паузы и тормоза. Хорошо, что заиканий нет.

Вывод: надо идти менять “аудиосистему”. А на что менять? Возвращаясь с работы, зашел в магазин sony. Поспросил послушать какие-то супер-новые наушники (фиг его знает, что за марка, но в названии extra bass или как-то так). Услышал фигню какую-то вместо музыки. Пошел к соседям-маководам. Там послушал beats – еще хуже сонек. Немного поучаствовав в теологической дискуссии на тему “что вы можете услышать на 128кбит/c”, потребовал наушники от B&W (или от B&O – фиг их разберет). Они вроде заиграли более-менее прилично, но их цена мгновенно придавила мою жабу.

Промежуточный вывод: надо идти к аудиофилам. Там обычно горы всякой техники и дают послушать. Ну ок, быстрый чёс по интернетам привел к doctorhead.ru. Ну и что, что на другом конце Москвы? Главное – они в выходные работают.

Пока шел, сформулировал требования:
– Наушники должны быть закрытыми и накладными. Ибо метро, офис и дом автоматически ставят крест на открытых. Ну а “затычки” у меня уже есть.
– Наушники должны нормально сидеть на голове и нигде не давить, даже чуть-чуть, даже капельку. Наушники – не ботинки, разнашиваться не умеют.
– Наушники должны понравиться звуком. Пофиг на цену.

Наушники это хорошо, но должно быть что-то, что в них играет. На аудиофильском языке мне нужен DAC и Headphone AMP. Опять же, требования простые:
– Должен уметь играть звук, что бы мне понравилось.
– Должен уметь играть звук с ноутбука и андроида.
– Должен быть портативным, дабы с собой таскать.

В общем, зашел в магазин. Постоял, послушал депешей, зашел в фокус колонок, оценил звук. Подошедшему продавцу объяснил на пальцах требования и он притащил мне горку наушников. Сел я и не глядя на марки и ценники стал втыкать наушники в SGS. Какие-то наушники заиграли сразу, некоторым не хватало мощи SGS, а некоторые …. ну в общем фигней оказались. Постепенно получился этакий шорт-лист наушников, звучание которых не вызывало во мне возражений.

Теперь надо их раскачать, что бы точно быть уверенным, что они играют и старый SGS не портит мне малину. В общем, стал пробовать всякие коробочки. Одни не умеют в DAC, другие не умеют с андроидом, третьи гавном оказались … Всем моим хотелкам одновременно удовлетворил только iBasso D-Zero MK2. И название звучное и с подтекстом для русского языка.

Ну и теперь последний круг: из шорт-листа наушников “выслушиваю” те, которые играют лучше всего. Darren Hayes, Anne Dudley и треки с hdtracks. Потом я поймал себя на том, что пытаюсь придраться к слушаемому и не могу. Нет, я не стал тут же срывать наушники с головы и кричать “вот эти!”. Не, я переключился на B-Tribe, East-17, Depeche Mode и Keiko Matsui. И опять мне все понравилось.

И вот только после этого я снял наушники с головы. Представьте мое удивление, когда я увидел, что марка наушников – Sony. Sony MDR-1A. Осторожно интересуюсь ценой, ибо некоторые наушники продавец таскал из “пацанско-аудиофильской” части магазина и откуда эти – хз. Цена оказалась … довольно приличной, но реальной. А ибасса? Тоже не золотой! Хрен с ними, с деньгами – заверните! 🙂

Потом пошел посмотреть на цены тех наушников, которые отверг. В общем, я пока столько не готов тратить. Хотя когда увидел ценники, сразу возникло желание попонтоваться 🙂

Результат: сижу, слушаю накачанное и балдею. Половину уже удалил – слышу, что upscale из mp3.