17.06.15

crudini

crudini
description : A utility for easily handling ini files from the command line and shell scripts.

$ crudini --set [OPTION]...   config_file section   [param] [value]

05.06.15

Consistent network device naming in debian 7 and 8

Consistent network device naming use udev, systemd on newer systems and biosdevname which unfortunatly doesn't exist in debian repositories. There is a solution for turning on consistent network device naming on debian 7and 8:

1) The first we need to install the biosdevname util. There is two way: a) package from ubuntu, b) source from dell
a) ubuntu packages: 
precise (12.04LTS) package for debian 7 (wheezy):
#   wget http://mirrors.kernel.org/ubuntu/pool/main/b/biosdevname/biosdevname_0.3.11-0ubuntu1_amd64.deb
# dpkg -i biosdevname_0.3.11-0ubuntu1_amd64.deb

trusty (14.04LTS) package for debian 8 (jessie):
# wget http://mirrors.kernel.org/ubuntu/pool/main/b/biosdevname/biosdevname_0.4.1-0ubuntu6_amd64.deb
# dpkg -i biosdevname_0.4.1-0ubuntu6_amd64.deb

b) or source from dell:
# apt-get install build-essential libzip-dev pciutils-dev

# wget http://linux.dell.com/biosdevname/biosdevname-0.6.2/biosdevname-0.6.2.tar.gz
# tar xvzf /biosdevname-0.6.2.tar.gz
or
# git clone git://linux.dell.com/biosdevname.git

# cd biosdevname-X
# ./configure
# make && make install

2) Kernel boot params: biosdevname=1 and net.ifnames=1 (or biosdevname0 and net.ifnames=1)
#cat /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet  biosdevname=1 net.ifnames=1"
...
or
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet  biosdevname=0 net.ifnames=1"
...

# grub-mkconfig -o /boot/grub/grub.cfg
# reboot  

3) Delete old udev rules:
# rm /etc/udev/rules.d/70-persistent-net.rules

4) But it's not the all for debian 7. On wheezy udev version doesn't work with biosdevname and the solution is the backports:

# echo "deb http://http.debian.net/debian wheezy-backports main" >> /etc/apt/sources.list
# apt-get update
# apt-get -t wheezy-backports install "udev"
# reboot

Result is consistent network device names like in fedora and RHEL lol:) (eth0 is a libvit virtio network device, another 3 is e1000):
root@debian:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:a0:0a:e7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.254/24 brd 192.168.122.255 scope global eth0
    inet6 fe80::5054:ff:fea0:ae7/64 scope link 
       valid_lft forever preferred_lft forever
3: ens9: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 52:54:00:3b:1a:9f brd ff:ff:ff:ff:ff:ff
4: ens10: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 52:54:00:23:6e:6e brd ff:ff:ff:ff:ff:ff
5: ens11: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 52:54:00:36:e5:1a brd ff:ff:ff:ff:ff:ff


Info links:

20.05.15

gsarplot

I'm learning to code python, python Gtk+3 and git at the moment and wrote a simple sar wrapper/plotter - gsarplot, https://github.com/goloshubov/gsarplot It could help with performance observation.


09.05.15

Open MPI. Portable Hardware Locality (hwloc)

# yum install hwloc
# hwloc-ls
Machine (15GB)
  Socket L#0 + L3 L#0 (4096KB)
    L2 L#0 (256KB) + L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0
      PU L#0 (P#0)
      PU L#1 (P#1)
    L2 L#1 (256KB) + L1d L#1 (32KB) + L1i L#1 (32KB) + Core L#1
      PU L#2 (P#2)
      PU L#3 (P#3)
  HostBridge L#0
    PCI 8086:0a16
      GPU L#0 "card0"
      GPU L#1 "renderD128"
      GPU L#2 "controlD64"
    PCIBridge
      PCI 8086:08b1
        Net L#3 "wlp2s0"
    PCIBridge
      PCI 10ec:8168
        Net L#4 "p5p1"
    PCIBridge
      PCI 10de:0fe4
    PCI 8086:9c03
      Block L#5 "sda"
      Block L#6 "sr0"

# yum install hwloc-gui
# lstopo

07.05.15

Performance Co-Pilot (PCP)

PCP gives more powerfull (than classic sysstat) observation tool which can help with performance issue investigations. Fully supported in RHEL6.6, 7

http://pcp.io

Installation (tested on F21):
$ yum install pcp pcp-gui pcp-webapi pcp-webjs

Enable and start services:
$ systemctl enable pmcd
$ systemctl enable pmlogger
$ systemctl enable pmwebd
$ systemctl start pmcd
$ systemctl start pmlogger
$ systemctl start pmwebd

Web apps accessible on:
http://localhost:44323

Enable external access to web apps:
$ firewall-cmd --add-service=pmwebapi
$ firewall-cmd --permanent --add-service=pmwebapi

Important PCP tools: pmchart, pmclient, pmstat, pmiostat, pminfo, pmlogsummary.

Some one-liners:
$ pmstat -a /var/log/pcp/pmlogger/server.example.com/20150507.17.18.0 -S @17:20 -s 10
$ pmchart -a /var/log/pcp/pmlogger/server.example.com/20150507.17.18.0
$ pmval -a /var/log/pcp/pmlogger/server.example.com/20150507.17.18.0 network.interface.in.drops

+ additional info at redhat knowledge base:
https://access.redhat.com/articles/1145953

Nested KVM

Nested KVM is the running performant VMs inside another VM. Not enabled by default.

List all kvm kernel module params for specific cpu (intel or amd):
# modinfo kvm_intel
...
parm:           nested:bool
...

Check nested state:
# cat /sys/module/kvm_intel/parameters/nested
N

Create configuration file with module options:
# cat /etc/modprobe.d/kvm_intel.conf
options kvm-intel nested=y

Reload kvm modules (or just reboot):
# lsmod | grep kvm
# modprobe -r kvm_intel kvm
# modprobe kvm_intel

Check nested state:
# cat /sys/module/kvm_intel/parameters/nested
Y

VM must have cpu mode set to "host-passthrough". (Alternate is "host-model" or just set "Copy host CPU configuration" checkbox in the virt-manager's GUI)

There is some variants to check nested kvm (hardware virtualization) in VM:
1) check load status of kvm module for specific cpu or just check existence of /dev/kvm file.
2) run virt-host-validate command which part of libvirt-client package in fedora, or libvirt-bin in ubuntu. Checks for hardware virtualization and /dev/kvm device should be passed:

# virt-host-validate
  QEMU: Checking for hardware virtualization                                : PASS
  QEMU: Checking for device /dev/kvm                                         : PASS
  QEMU: Checking for device /dev/vhost-net                                  : PASS
  QEMU: Checking for device /dev/net/tun                                      : PASS
  LXC: Checking for Linux >= 2.6.26                                             : PASS

14.04.15

Zabbix Share

Finaly there is the Zabbix Share portal wich aims to share templates, modules and etc. Well done!!!
https://share.zabbix.com

17.03.15

perf-tools

https://github.com/brendangregg/perf-tools
http://www.brendangregg.com/blog/2015-03-17/linux-performance-analysis-perf-tools.html

Parallel shell

Idea to execute command or script on many servers in parallel is inspiring. Of course there is configuration management systems like puppet or chef, but for periodical ad hoc tasks agentless software may be better choice.

1) Ansible
http://docs.ansible.com is good start.

$sudo yum install ansible
$sudo yum install sshpass

Disable key checking is good for testing but not so good in production environment:
$cat ~/.ansible.cfg
[defaults]
host_key_checking = False

or
$cat /etc/ansible/ansible.cfg:
...
host_key_checking = False
...

The first thing what we should do is hosts file:
$cat /etc/ansible/hosts
...
[server-group01]
server-node01
server-node02      ansible_ssh_host=10.0.1.3
server-node03      ansible_ssh_host=10.0.1.4 ansible_ssh_user=root   ansible_ssh_pass=SecretPassword0

[server-group01:vars]
ansible_ssh_user=root
ansible_ssh_pass=SecretPassword1

[server-group02]
server-g2-node[01:08]

[server-group02:vars]
ansible_ssh_user=root
ansible_ssh_pass=SecretPassword2

[allservers:children]
server-group01
server-group02
...

$ ansible server-node01 -m shell -a 'uptime'
$ ansible server-group01 -m shell -a 'uptime'
$ ansible allservers -m shell -a 'uptime'


Ansible is more powerfull with playbooks. Playbook is script with tasks.
$ cat playbook-file01.yml
---
- hosts: server-group01
  remote_user: root
  tasks:
    - name: copy RPM
      copy: src=/tmp/file.rpm dest=/root/file.rpm
    - name: install RPM
      shell: yum -y localinstall /root/file.rpm

Run playbook:
$ ansible-playbook -i /etc/ansible/hosts playbook-file01.yml

If playbook run failed on some hosts .retry file will be created:
$ cat playbook-file01.retry
server-node01

2) Salt
TODO...

3) pssh
$ pssh -i -l root -H "10.0.1.11 10.0.1.12 10.0.1.13" "uname"
$ pssh -i -l root -h ~/pssh_hosts "uname"
$ cat ~/pssh_hosts
root@10.0.1.14:22
root@10.0.1.15
10.0.1.16

4) pdsh (AIX's dsh analogue)
$ pdsh -l root -w 10.0.1.[111-114] uname

File access monitoring

Tools that can help to observe file access activity.

1) inotify-tools
Next command shows read-write statistics in /etc/ directory:
# inotifywatch -r /etc
Establishing watches...
Finished establishing watches, now collecting statistics.
^Ctotal  access  close_nowrite  open  filename
212    51      81             80    /etc/
78     30      24             24    /etc/modprobe.d/
49     17      16             16    /etc/yum.repos.d/
9      3       3              3     /etc/rpm/
6      2       2              2     /etc/dnf/
3      1       1              1     /etc/groff/site-tmac/


2) auditd
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html-single/Security_Guide/index.html#chap-system_auditing

For the first lets add new rule:
#auditctl -w /etc -p wa

And after we can find rule hits:
#ausearch -f /etc
....
----
time->Tue Mar 17 13:14:02 2015
type=PROCTITLE msg=audit(1426587242.156:3804): proctitle=76696D002F6574632F6578706F727473
type=PATH msg=audit(1426587242.156:3804): item=1 name="/etc/exports~" inode=5506335 dev=fd:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:exports_t:s0 nametype=DELETE
type=PATH msg=audit(1426587242.156:3804): item=0 name="/etc/" inode=5505025 dev=fd:01 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 nametype=PARENT
type=CWD msg=audit(1426587242.156:3804):  cwd="/root"
type=SYSCALL msg=audit(1426587242.156:3804): arch=c000003e syscall=87 success=yes exit=0 a0=204a9e0 a1=2045490 a2=5c9259 a3=7f09a02781b0 items=2 ppid=19897 pid=30146 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=1 comm="vim" exe="/usr/bin/vim" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null)
...

3) SystemTap
$ sudo yum install systemtap
$ sudo stap-prep

Standard SystemTap example iotime.stp already pretty good for file acces monitoring:
https://sourceware.org/systemtap/SystemTap_Beginners_Guide/iotimesect.html

$ stap /usr/share/doc/systemtap-client/examples/io/iotime.stp
...
23235900 26564 (vim) access /etc/exports read: 0 write: 0
23235993 26564 (vim) access /etc/exports read: 2 write: 0
...
27436262 26564 (vim) access /etc/.exports.swp read: 0 write: 12288
27436264 26564 (vim) iotime /etc/.exports.swp time: 70
...

4) sysdig
After installing sysdig is good to check sysdig_probe kernel module. It should be loaded. Then we can run sysdig:

$ sysdig -p "%evt.datetime %12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name %evt.type" "evt.type=write and fd.typechar=f and fd.name contains /etc"
...
2015-03-17 11:46:35.281468277 root         22376  vim          4   f /etc/.exports.swp write
2015-03-17 11:46:38.074666073 root         22376  vim          3   f /etc/exports write
2015-03-17 11:46:38.074685219 root         22376  vim          3   f /etc/exports write
2015-03-17 11:46:38.113890001 root         22376  vim          4   f /etc/.exports.swp write
...

5) strace
Next example observing file activity for a concrete program:
$strace -e trace=file -p PIDNUM
....
open("/root/.viminfo.tmp", O_WRONLY|O_CREAT|O_EXCL|O_NOFOLLOW, 0600) = 5
stat("/root/.viminfo.tmp", {st_mode=S_IFREG|0600, st_size=7898, ...}) = 0
stat("/root/.viminfo", {st_mode=S_IFREG|0600, st_size=7898, ...}) = 0
unlink("/root/.viminfo")                = 0
rename("/root/.viminfo.tmp", "/root/.viminfo") = 0
unlink("/etc/.exports.swp")             = 0
+++ exited with 0 +++

6) opensnoop (from perf-tools by Brendan Gregg)
$ sudo ./opensnoop /etc
...
vim              6672    0x3 /etc/exports
vim              6672     -1 /etc/.exports.swp
vim              6672    0x4 /etc/.exports.swp
vim              6672     -1 /etc/.exports.swpx
vim              6672    0x5 /etc/.exports.swpx
vim              6672    0x4 /etc/.exports.swp
vim              6672    0x3 /etc/exports
...

17.01.15

Обновление для A-записи домена в DNS godaddy.

Обновление для A-записи домена в DNS godaddy, может пригодиться чтобы избавиться от сервисов динамического dns.

Для работы скрипта понадобятся дополнительные модули для python из PyPI, в debian - следующим образом:
# apt-get install python-pip
# pip install pif
# pip install pygodaddy

Сам скрпт, который можно будет запускать в cron по расписанию, обновляет запись host.example.com:
#!/usr/bin/env python2

import pif
import pygodaddy

username = "USERNAME"
password = "PASSWORD"

hostname = "host"
domain = "example.com"
fqdn = hostname + "." + domain

public_ip = pif.get_public_ip()

client = pygodaddy.GoDaddyClient()
client.login(username, password)

dns_records = client.find_dns_records(domain, record_type='A')
for record in dns_records:
if record.hostname == hostname and record.value != public_ip:
client.update_dns_record(fqdn, public_ip)

Работа с дисковой подсистемой

Рескан новых устройств SCSI:
# echo "- - -" > /sys/class/scsi_host/host<N>/scan

Рескан интерконнектов FC:
# echo "1" > /sys/class/fc_host/host<N>/issue_lip

В RHEL вместо двух команд выше можно использовать скрипт rescan-scsi-bus.sh:
# yum install sg3_utils
# /usr/bin/rescan-scsi-bus.sh

Рескан для существующего устройства (при изменении размера):
# echo 1 > /sys/block/sd<X>/device/rescan

Рескан изменения таблицы разделов:
#partprobe
#blockdev --rereadpt /dev/sd<X>


RHEL7:
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Storage_Administration_Guide/index.html
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Logical_Volume_Manager_Administration/index.html
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/DM_Multipath/index.html

RHEL6:
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/index.html
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/index.html
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/DM_Multipath/index.html

open-vm-tools. vmware tools для RHEL7 / CentOS7.

Установка vmware tools в RHEL7 / CentOS7:

# yum install open-vm-tools
# systemctl start vmtoolsd

http://partnerweb.vmware.com/GOSIG/RHEL_7.html

14.10.14

The Practice of Cloud System Administration: Designing and Operating Large Distributed Systems, Volume 2

В прошлом месяце вышла книга "The Practice of Cloud System Administration: Designing and Operating Large Distributed Systems, Volume 2" (amazon link). Авторы - небезызвестные Thomas A. Limoncelli, Strata R. Chalup, Christina J. Hogan, авторы бестселлера "The Practice of System and Network Administration, Second Edition", он же Volume 1, книги, благодаря которой прививается правильный взгляд на системное и сетевое администрирование (IMHO). Ожидаю не меньшего и от второго тома!

30.09.14

ShellShock check

https://github.com/hannob/bashcheck


#!/bin/bash

r=`x="() { :; }; echo x" bash -c ""`
if [ -n "$r" ]; then
echo -e '\033[91mVulnerable to CVE-2014-6271 (original shellshock)\033[39m'
else
echo -e '\033[92mNot vulnerable to CVE-2014-6271 (original shellshock)\033[39m'
fi

cd /tmp;rm echo 2>/dev/null
X='() { function a a>\' bash -c echo 2>/dev/null > /dev/null
if [ -e echo ]; then
echo -e "\033[91mVulnerable to CVE-2014-7169 (taviso bug)\033[39m"
else
echo -e "\033[92mNot vulnerable to CVE-2014-7169 (taviso bug)\033[39m"
fi

bash -c "true $(printf '<<EOF %.0s' {1..79})" 2>/dev/null
if [ $? != 0 ]; then
echo -e "\033[91mVulnerable to CVE-2014-7186 (redir_stack bug)\033[39m"
else
echo -e "\033[92mNot vulnerable to CVE-2014-7186 (redir_stack bug)\033[39m"
fi

bash -c "`for i in {1..200}; do echo -n "for x$i in; do :;"; done; for i in {1..200}; do echo -n "done;";done`" 2>/dev/null
if [ $? != 0 ]; then
echo -e "\033[91mVulnerable to CVE-2014-7187 (nested loops off by one)\033[39m"
else
echo -e "\033[96mTest for CVE-2014-7187 not reliable without address sanitizer\033[39m"
fi

r=`a="() { echo x;}" bash -c a 2>/dev/null`
if [ -n "$r" ]; then
echo -e "\033[93mVariable function parser still active, likely vulnerable to yet unknown parser bugs like CVE-2014-6277 (lcamtuf bug)\033[39m"
else
echo -e "\033[92mVariable function parser inactive, likely safe from unknown parser bugs\033[39m"
fi

loop on f20.

echo loop > /etc/modules-load.d/loop.conf
systemctl status systemd-modules-load.service

echo options loop max_loop=10 > /etc/modprobe.d/loop.conf
dracut --force

Mounting a disk image using the loop device

losetup /dev/loop0 /pathto/file.img
fdisk -l /dev/loop0
losetup -d /dev/loop0

losetup /dev/loop0 /pathto/file.img -o 8704

13.09.14

SSD в f20,rhel7. базовый тюнинг

1) Блочный уровень
Глобально тип планировшика ввода-вывода можно задать в grub'e:
#vim /etc/default/grub
...
GRUB_CMDLINE_LINUX="vconsole.font=latarcyrheb-sun16 $([ -x /usr/sbin/rhcrashkernel-param ] && /usr/sbin/rhcrashkernel-param || :) elevator=noop rhgb quiet"
...

#grub2-mkconfig -o /boot/grub2/grub.cfg

Для отдельного диска можно воспользоваться rc-local:

#vim /etc/rc.d/rc.local
#!/bin/bash
echo noop > /sys/block/sdX/queue/scheduler

#chmod +x /etc/rc.d/rc.local
#systemctl enable rc-local
#systemctl start rc-local


2) Файловый уровень.
#tune2fs -o journal_data_writeback,user_xattr,acl /dev/sdX

#vim /etc/fstab:
...
UUID=XXX    /    ext4    defaults,noatime,data=writeback,barrier=0        1 1
...

#vim /etc/cron.daily/trim 
#!/bin/sh
/usr/sbin/fstrim -v /

#chmod +x /etc/cron.daily/trim

29.08.14

Укрощение HP Elitebook folio 9470m

Нужен был легкий ноутбук и почти решился купить Dell XPS 13, как в руки попал корпоративный HP Elitebook folio 9470m, не собственный, ну да какая разница) Первым делом решил избавиться от установленной ОС, сделав копию разделов. В системе 2 диска: hitachi hts72505 и samsung mzmpc032 (SSD), твердотельный использовался как кэш, что просто кошунство на мой взгляд). Проблема заключалась в том, что при установке fedora, anaconda не видела оба диска, решение нашлось почти сразу - отключение raid в bios и выполнение команды (в live режиме):
#dmraid -r -E

Теперь система на ssd, home на hdd, для шифрования home используется luks. wifi работает, звук тоже, в планах потестить fingerprint.


24.08.14

NetHogs

NetHogs позволяет вывести сетевую скорость по процессам.

21.08.14

Orange Book & CC

Классика)

TCSEC (Trusted Computer System Evaluation Criteria) aka "Orange Book"
http://csrc.nist.gov/publications/history/dod85.pdf
+
CC (common criteria), ISO/IEC 15408
http://www.commoncriteriaportal.org/cc/

10.06.14

Red Hat Forum 2014 & RHEL7

Сегодня посетил Red Hat Forum 2014, все было весьма интересно, как и на всех мероприятиях проводимых Red Hat или сообществом Fedora. Были обзоры практически всех продуктов компании, выступления партнеров и спонсоров (HP, IBM, Dell), общий акцент как уже принято на облака и big data, но самое главное это то, что в этот же день выходит долгожданный RHEL 7!!!

24.05.14

MySQL max_connection

#vim /etc/my.cnf

[mysqld]
...
max_connection=1000
...


(по умолчанию 151)

MySQL InnoDB

#vim /etc/my.cnf

[mysqld]
...
default-storage-engine=InnoDB
...

10.04.14

Узнать свой внешний IP (за NATом)

$curl ifconfig.me
$curl ident.me

PyPI:
$sudo pip install pif
$get-public-ip

Генераторы паролей

apg
$ apg -m 12 -M SNC

mkpasswd (пакет expect)
$ mkpasswd -l 12

pwgen
$ pwgen -cny

openssl
$ openssl rand -hex 10

24.01.14

HP Software Delivery Repository

HP Software Delivery Repository
This site provides yum and apt repositories for Linux-related software packages.

http://downloads.linux.hp.com/SDR/

20.10.13

Отключение IPv6

sysctl
net.ipv6.conf.all.disable_ipv6 = 1

opt:
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

RHEL6 (/CentOS6):
Отключаем модули ядра для ipv6:
#cat > /etc/modprobe.d/ipv6.conf << EOF
options ipv6 disable=1
alias net-pf-10 off
alias ipv6 off
install ipv6 /bin/true
EOF

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

Отключаем iptables для ipv6:
#chkconfig ip6tables off

Ubuntu 13.10:
#cat /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT=" ipv6.disable=1"
...

#update-grub2

21.09.13

Конференция «Дорога в облака»

Посетил конференцию «Дорога в облака»

* «Нестандартное использование Puppet в деплойменте» - Михаил Щербаков, Mirantis.
* «Как облачные технологии меняют Linux-дистрибутивы?» - Петр Леменков, Fedora Project.
* «Производительность и масштабируемость OpenStack» - Борис Павлович, Mirantis.
* «Configuration Management at large companies» (in English) - Matthew Mosesohn, Mirantis.
* «Развертывание OpenStack с помощью Fuel» - Михаил Щербаков, Mirantis.
* «Elliptics, отказоустойчивое распределенное KV-хранилище» - Евгений Поляков, Яндекс.
* «Облачные решения от Red Hat, и будущее» - Сергей Бугрин, Red Hat.
 

07.09.13

RPi

Недавно переехал и сейчас задумался отказываться от yota в пользу полноценного интернета (и более дешевого) и заключая сегодня договор с провайдером, я отказался от услуг настройки оборудования и предложений о покупки роутера) мой RaspberryPi куда лучше всей этой шелухи. Geek's HandMade) Only GNU/Linux! Да, сейчас на фото ubuntu, а в Pi - raspbian, но можно и дубль два - будет fedora + pidora) ...дело вкуса...!!!)))

22.07.13

ubuntu edge

Вот телефон который я хочу, ubuntu edge, все остальные по сравнению с ним меркнут!















Очень жаль, что это пока только краудфандинг и поэтому хочется сказать следующее:

16.06.13

WIFI точка доступа в Linux (или WIFI-router из RaspberryPi)

WIFI точку доступа в linux можно настроить используя hostapd, dhcp сервер и поддерживаемый wifi-адаптер, драйвер которого сможет выступать в качестве AP. http://wireless.kernel.org
Один из поддерживаемых USB wifi-адаптеров - TP-LINK TL-WN722N(С) (http://www.tp-linkru.com/products/details/?categoryid=&model=TL-WN722N) им я и воспользовался.

Ниже описана конфигурация wifi точки доступа, собранной из RaspberryPi (raspbian), LTE-модема yota и уже упомянутого wifi-адаптера TP-LINK TL-WN722NС.


  • Настройка интерфейсов:
Устанавливаем resolvconf, необходим для работы опции "dns-nameservers":
#apt-get install resolvconf

Редактируем сами интерфесы:
#cat /etc/network/interfaces
auto lo
        iface lo inet loopback
        iface eth0 inet dhcp

#onboard ethernet
auto eth0
iface eth0 inet static
        address 172.16.0.10
        netmask 255.255.255.0

#yota
auto default eth1
iface eth1 inet dhcp
        dns-nameservers 8.8.8.8

#wifi
auto wlan0
iface wlan0 inet static
        address 192.168.0.1
        netmask 255.255.255.0
        dns-nameservers 8.8.8.8

  • Настройка dhcp:
Ставим dhcp сервер, я воспользовался стандартным:
#apt-get install isc-dhcp-server

Правим стандартную конфигурацию:
#cat /etc/dhcp/dhcpd.conf

ddns-update-style none;
#option domain-name "example.org";
#option domain-name-servers 8.8.8.8;

default-lease-time 600;
max-lease-time 7200;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.25 192.168.0.30;
  option domain-name-servers 8.8.8.8;
  option routers 192.168.0.1;
  interface wlan0
}
  • Настройка точки доступа hostapd:
Устанавливаем пакет:
#apt-get install hostapd

Создаем конфиг, в итоге должно получится следующее:
#cat /etc/hostapd/hostapd.conf

interface=wlan0
driver=nl80211
ssid=SSIDName
hw_mode=g
channel=11
wme_enabled=1
ieee80211n=1
ht_capab=[HT40-][SHORT-GI-40][DSSS_CCK-40]
wpa=2
wpa_passphrase=SecretPasswordPhrase
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
wpa_ptk_rekey=600
macaddr_acl=0

Здесь нужно заменить SSIDName на желаемое имя wifi сети, а SecretPasswordPhrase соответственно на пароль wifi сети.

Также необходимо подправить init-скрипт демона /etc/init.d/hostapd:
присвоить значение для
... 
DAEMON_CONF=/etc/hostapd/hostapd.conf
...
а также добавить управление интерфейсом wlan0 при старте, рестарте и останове демона:

...
#wlan iface
WLAN=wlan0
...
  start)
    #up wlan iface
    /sbin/ifup $WLAN

    log_daemon_msg "Starting $DESC" "$NAME"
    start-stop-daemon --start --oknodo --quiet --exec "$DAEMON_SBIN" \
        --pidfile "$PIDFILE" -- $DAEMON_OPTS >/dev/null
    log_end_msg "$?"
    ;;
  stop)
    log_daemon_msg "Stopping $DESC" "$NAME"
    start-stop-daemon --stop --oknodo --quiet --exec "$DAEMON_SBIN" \
        --pidfile "$PIDFILE"

    #down wlan iface
    /sbin/ifdown $WLAN

    log_end_msg "$?"
    ;;
...

  • Настройка файервола:

Включаем forwrding в sysctl.conf:
net.ipv4.ip_forward=1
В iptables разрешаем forwarding для беспроводного интерфейса и разрешаем masquerading для интерфейса подключенного к Интернет:
#iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
#iptables -A FORWARD -i eth1 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
#iptables -A FORWARD -i wlan0 -o eth1 -j ACCEPT
Плюс ко всему необходимо блокировать ненужный трафик.

Существует ряд способов применить настройки правил iptables при старте системы, в debian/ubuntu я пользуюсь iptables-persistent:
Ставим пакет, при установке можно не сохранять текущие правила, т.к. будут редактироваться:
#apt-get install iptables-persistent

Далее добавляем необходимые правила в файл:
#cat /etc/iptables/rules.v4

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth1 -j MASQUERADE
COMMIT

*filter
:INPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A INPUT -i wlan0 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i eth1 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan0 -o eth1 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Это необходимый минимум правил. Далее их можно добавлять и совершенствовать усиливая защиту, например добавив проверку по MAC адресам, установить IPS/IDS и т.д.

Такая реализация wifi-роутера меня лично больше устраивает чем скажем OpenWRT+поддерживаемый им роутер, чем я и пользовался ранее, в плане ПО уж точно.
Были опасения по поводу нагрева RaspberryPi в этом корпусе, но температура была вполне штатная 51'С и скорее всего установка радиаторов или отверстий в корпусе не потребуется.

TODO: аналогичная настройка, но на fedora.

12.06.13

Red Hat выпустила Red Hat Enterprise Virtualization 3.2


Вышла новая версия системы виртуализации RHEV 3.2. Основные новшества - полная поддержка Storage Live Migration и поддержка последних моделей процессоров Intel и AMD.

08.06.13

NetGWM

"NetGWM (Network Gateway Manager) — утилита для автоматического переключения сетевых шлюзов в случае недоступности интернет-подключения в операционной системе GNU/Linux. NetGWM позволяет с лёгкостью создавать отказоустойчивые подключения к глобальной сети.", flant.ru

Linux Advanced Routing & Traffic Control

http://lartc.org

06.06.13

Подключение yandex disk в nautilus 3.6+

Connect to Server:
davs://login@webdav.yandex.ru:443

01.06.13

семинар Red Hat продукты и технологии. IV. RHEV.

Тема семинара: Основы настройки и управления Red Hat Enterprise Virtualization 3.1:
  • установка базовой инфраструктуры, необходимой для развертывания системы виртуализации, основанной на Red Hat Enterprise Virtualization 3.1 (установка менеджера RHEV-M и хостов виртуализации);
  • настройка и управление менеджером и хостами виртуализации (настройка хранилищ, создание виртуальных машин, шаблонов виртуальных машин и так далее). 
Как и в предыдущих семинарах все было очень интересно! В этот раз добавилась еще и практическая часть!

08.05.13

Debian 7.0 multiarch

debian 7.0 multiarch quick start:
http://wiki.debian.org/Multiarch/HOWTO

На amd64 машине:
проверяем:
#dpkg --print-architecture
#dpkg --print-foreign-architectures
добавляем:
#dpkg --add-architecture i386
#vim /etc/apt/sources.list
...
deb [arch=amd64,i386] http://mirror.yandex.ru/debian/ wheezy main
...