dijous, 26 de novembre de 2015

Access.log: The Ten IPs accessing more our web server

Una de les tasques amb la que ens podem trobar és tenir que revisar quines son les 10 IPs que més accedeixen la nostra pàgina web. Aquesta informació és útil a l'hora de prendre decisions en l'administració del servidor web. Aquesta tasca es relativament senzilla si tenim access al log access.log d'Apache.
...
192.168.122.4 - - [22/Dec/2015:11:35:42 -0500] "GET / HTTP/1.1" 200 \
              115 "-" "ELinks/0.12pre6 (textmode; Linux; 140x37-2)"
192.168.122.1 - - [22/Dec/2015:11:36:33 -0500] "GET / HTTP/1.1" 200 \
              115 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:38.0)\
              Gecko/20100101 Firefox/38.0"
192.168.122.1 - - [22/Dec/2015:11:38:00 -0500] "GET / HTTP/1.1" 200 \
              115 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:38.0) \
              Gecko/20100101 Firefox/38.0"
...
Per obtenir les 10 IPs que més han accedit a la nostra plana web i el contador del nombre de voltes que l'han visitada utilitzarem la següent comanda:
cat access.log  |  grep \"\ 200 | cut -d" " -f1 | sort -n | uniq \
                -c | head -n10
Una volta tenim aquesta comanda es relativament fàcil extraure els navegadors que més visiten el nostre lloc web, el codis HTTP que ha donat el servidor web, ..., realitzant modificacions sencilles sobre la mateixa.

Enllaços:

http://i-heart-geek.blogspot.co.uk/2011/10/top-command-line-tips-apache-access-log.html

divendres, 13 de novembre de 2015

MariaDB 10 Master-Slave Replication on Debian 8.2

Introducció:

En aquest tutorial configurarem dues màquines amb MariaDB amb una configuració master-slave i comprobarem que funcionen correctament.

Configuracio Bàsica de les màquines:

Les màquines que utilitzarem per a realitzar la proba tindran els segûents hostnames:
  • king (master)
  • plebeian (slave)
Les màquines tenen instal·lada una distribució Debian 8.2 amb tots els paquets actualitzats.
cat /etc/debian_version
8.2
Les dues màquines estan a la mateixa subxarxa i són capaces de realitzar-se ping entre elles. La configuració de la xarxa es la següent:
#KING
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
 address 192.168.122.2
 netmask 255.255.255.0
 gateway 192.168.122.1
#PLEBEIAN
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
 address 192.168.122.3
 netmask 255.255.255.0
 gateway 192.168.122.1 
No hi ha cap firewall activitat.

MariaDB

En ambdues màquines instal·lem la base de dades mariadb.
apt-get install mariadb-server
I executem la següent comanda per securitzar la instal·lació tb a les dues màquines:
# /usr/bin/mysql_secure_installation
Enter current password for root (enter for none):
...
Set root password? [Y/n] Y
...
Remove anonymous users? [Y/n] Y
...
Disallow root login remotely? [Y/n] Y
...
Remove test database and access to it? [Y/n] Y
...
Reload privilege tables now? [Y/n] Y
A partir d'ací tota la configuració i passos del tutorial es realitzaran sobre la maquina king. El primer que farem sera connectar-nos a la base de dades i crear una base de dades i afegir dades.
mysql -u root -p 

MariaDB [(none)]> create database test;
MariaDB [(none)]> use test;
MariaDB [(none)]> create table  \
                  t1 (id INT not null, name CHAR(15), age INT);
MariaDB [(none)]> insert into t1 values (1, "Joan", 25);
MariaDB [(none)]> insert into t1 values (2, "Laia", 28);
Creem un usuari anomenat "slave_user" li proporcionem un password i li concedim per permis de replicació per a que puga replicar la base de dades al host plebeian.
mysql -u root -p 
MariaDB [(none)]> grant replication slave \
                  on *.* to slave_user@´%´ identified by 'qwerty'; 
Editem el fitxer de configuració de MariaDB, /etc/mysql/my.cnf amb els següents valors:
bind-address            = 192.168.122.2
server-id               = 1
log_bin                 = /var/log/mysql/mysql-bin.log
binlog-ignore-db        = “mysql”
Una volta editar el fitxer reiniciem el daemon.
systemctl restart mysql
Preparem la base de dades per a realitzar un backup. La següent comanda estableix un read lock global, per tant ja no es poden llançar insert/update/delete/replace/alter, també tanca totes les taules obertes, aquestes no es tancara fins que els processos en acció no finalitzen la seua execució. Per últim bloqueja els commits.
MariaDB [(none)]> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
Una volta tenim la base de dades preparada per realitzar el backup, prenem noda de la posició dels binary logs i del fitxer que s'esta modificiant actualment.
MariaDB [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 |     1212 |              | mysql            |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
Realitzem el backup.
mysqldump -u root -p --databases test > kingdump.sql
Eliminem el lock que hem realitzat abans a la base de dades per a que tot puga seguir funcionant normalment.
MariaDB [(none)]> unlock tables;
Query OK, 0 rows affected (0.00 sec)
Transferim el backup de la base de dades a l'altra màquina.
scp kingdump.sql user@192.168.122.3:~/ 
Apartir d'ací tots els passos de configuració es realitzaran sobre la màquina plebeian, el servidor que actua com a slave.

Editem el fitxer de configuració de MariaDB, /etc/mysql/my.cnf amb els següents valors:
bind-address            = 192.168.122.3
server-id               = 2
log_bin                 = /var/log/mysql/mysql-bin.log
Reinicim MariaDB.
systemctl restart mysql
Restaurem el backup que hem fet de king en plebeian.
mysql -u root -p < kingdump.sql 
Parem el slave, si esta funcionant.
MariaDB [(none)]> stop slave;
Configurem la replicació del slave amb la IP i port de la base de dades del master, l'usuari i el password que hem configurat anteriorment i el fitxer dels binary logs i la posició apartir de la qual s'ha de recuperar la informació. Per últim configurem el temps passat el qual ha de tractar de tornar a connectar.
MariaDB [(none)]> change master to master_host='192.168.122.2', \
                  master_user='slave_user', master_password='qwerty', \
                  master_port=3306, master_log_file='mysql-bin.000004', \
                  master_log_pos=1212, master_connect_retry=60;
Una volta configurats els parametres ja podem arrancar el slave per a que comence la replicació.
MariaDB [(none)]> start slave;
Com podem veure l'slave ja està funcionant.
MariaDB [(none)]> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.122.2
                  Master_User: slave_user
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000009
          Read_Master_Log_Pos: 326
               Relay_Log_File: mysqld-relay-bin.000011
                Relay_Log_Pos: 613
        Relay_Master_Log_File: mysql-bin.000009
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 326
              Relay_Log_Space: 1198
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
                   Using_Gtid: No
                  Gtid_IO_Pos: 
1 row in set (0.00 sec)

Probes finals

Per últim per comprobar que la replicació realment funciona ja només ens queda fer unes últimes probes. Ens connectarem a la maquina king (master) i afegim dues files mes a la base de dades que hem creat.
MariaDB [(none)]> use test
MariaDB [(none)]> insert into t1 values (1, "Pere", 36);
MariaDB [(none)]> insert into t1 values (2, "Julia", 21);
Quan ens connectem a la màquina plebeian (slave) i realitzem una consulta podem veure que la informació s'ha replicat i que ja esta disponible també al slave.
MariaDB [(none)]> use test
MariaDB [test]> select * from t1;
+----+-------+------+
| id | name  | age  |
+----+-------+------+
|  1 | Joan  |   25 |
|  2 | Laia  |   28 |
|  1 | Pere  |   36 |
|  2 | Julia |   21 |
+----+-------+------+
4 rows in set (0.00 sec)

Enllaços:

: http://www.rackspace.com/knowledge_center/article/mysql-replication-masterslave
https://mariadb.com/kb/en/mariadb/setting-up-replication/
http://fromdual.com/how_to_setup_mysql_master-slave_replication
http://www.tecmint.com/how-to-setup-mysql-master-slave-replication-in-rhel-centos-fedora/
http://www.unixmen.com/setup-mariadb-master-slave-replication-in-centos-7/
http://mysqlha.blogspot.co.uk/2008/07/what-exactly-does-flush-tables-with.html

dimecres, 11 de novembre de 2015

Solarized Colors on Centos 7 Terminal

Fa uns mesos que hem vaig instal·lar un Centos 7.1 i un dels defectes mes grans que trobava era l'horroros esquema de colors del que disposa. Si la comparem a una distribució Ubuntu, aquesta te una paleta de colors mes agradable a la vista per treballar. Després de realitzar una cerca per Internet he trobat el projecte Solarized que permet dotar d'una paleta de colors molt agradable a la vista per a diferents ferramentes. Per a instal·lar aquesta paleta de colors en el gnome terminal hem de seguir els següents passos: 1. En primer lloc instal·lem GIT (aquest pas el fem com a usuari root).
yum install git  
2. Creem un directori on guardar el repositori que descarregarem (apartir d'ací tots els passos son amb usuari no privilegiat).
mkdir ~/Projectes/Solarized
cd ~/Projectes/Solarized
3. Descarreguem el repositori.
git clone https://github.com/sigurdga/gnome-terminal-colors-solarized.git
4. Executem l'script
cd gnome-terminal-colors-solarized/
./install.sh
5. Contestem totes les preguntes que ens demana l'script i quan tornem a executar un terminal ja tenim una paleta de colors acceptable sobre el Perfil que li hem dit que sobrescriga.

Enllaços:

http://www.if-not-true-then-false.com/2012/solarized-linux/
http://ethanschoonover.com/solarized

dimarts, 10 de novembre de 2015

Alternative Centos/RHEL 7 booting modes

Introducció:

En aquest article revisarem els diferents tipus de modes amb els que podem arrancar el sistema per diagnosticar i sol·lucionar problemes.

Rescue Mode:

El "Rescue Mode" es un entorn sigle-user que permet reparar el sistema quan aquest no es capaç d'arrancar. Quan el sistema arranca en "Rescue Mode" es monten tots els sistemes de fitxers locals i alguns sistemes basics pero no s'activen els serveis de xarxa ni es deixa accedir a mes usuaris al sistema. Es equivalent al "single user mode" i requereix el password de root.

Per a arrancar un sistema en "rescue mode" amb Redhat/CentOS 7, fem clic a la "e" quan apareix el menu de grub2 i afegim el següent.
systemd.unit=rescue.target
Hem d'afegir l'anterior parametre al final de la linia linux16 en sistemes basats en bios x86-64 o al final de la linia linuxefi en els sistemes UEFI. Per arrancar una volta modificada la linia cliquem Ctrl+X o si estem utilitzant un MacBook F10. En els MacBooks el grub mapeja les convinacions Ctrl+X amb F10 i Ctrl+C com a F2 (Per accedir al prompt del Grub).

Emergency Mode:

El "Emergency Mode" proporciona el mínim entorn possible i permet reparar el sistema en ocasions on no es pot accedir al "rescue mode". En aquest mode, el sistema només monta el sistema de fitxers de root en mode lectura i no intenta montar ningun altre sistema de fitxers local. Les interficies de de xarxa no son activades i només s'arranquen el serveis essencials. L'"emergency mode" requereix el password de root.

Per a arrancar un sistema en "emergency mode" amb Redhat/CentOS 7, fem clic a la "e" quan apareix el menu de grub2 i afegim el següent:
systemd.unit=emergency.target
Hem d'afegir el següent parametre al final de la linia linux16 en sistemes basats en bios x86-64 o al final de la linia linuxefi en els sistemes UEFI. Per arrancar una volta modificada la linia cliquem Ctrl+X o si estem utilitzant un MacBook F10. En els MacBooks el grub mapeja les convinacions Ctrl+X amb F10 i Ctrl+C com a F2 (Per accedir al prompt del Grub).

Enllaços:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sec-Terminal_Menu_Editing_During_Boot.html
http://www.certdepot.net/rhel7-boot-systems-different-targets-manually/

dijous, 1 d’octubre de 2015

Bridged KVM configuration

Introducció:

L'objectiu d'aquest tutorial és entendre com funcionen les xarxes en KVM i com es configuren sense virt-manager.

Xarxes:

Per fer funcionar KVM en una màquina haurem d'instal·lar els paquets de KVM, configurar un bridge, vincular el bridge a la màquina virtual i configurar el firewall de la màquina host (on esta configurat el KVM) per a que deixe passar tot el tràfic de la màquina virtual i configurar el NAT.

La configuració de les xarxes mitjançant dispositius bridge divergeix entre els derivats de Redhat i els de Debian, en aquesta seccció descriurem com es configuren.

Primer instal·larem el següent paquet per a la gestio del bridge amb ambdues distribucions a la màquina host:
yum install bridge-utils
I en Debian/Ubuntu
apt-get install bridge-utils
Per a crear un bridge a la màquina host amb Redhat/Centos 7 procedirem com següeix, afegim la següent linia de configuració en /etc/sysconfig/network-scripts/ifcfg-enp0s3, enp0s3 es el nostre adaptador de xarxa:
...
BRIDGE=br0
...
Configurem el dispositiu br0. Afegirem la següent configuració a /etc/sysconfig/network-scripts/ifcfg-br0:
DEVICE=br0
TYPE=Bridge
BOOTPROTO=none
IPADDR=192.168.0.1
NETMASK=255.255.255.0
ONBOOT=yes
Després reiniciem el procés que gestiona la xarxa.
systemctl restart network.service
Per a configurar un bridge a la màquina host amb Debian/Ubuntu procedirem com segueix, en primer lloc pararem el dimoni que gestiona la xarxa.
sudo /etc/init.d/networking stop
Afegirem al fitxer /etc/network/interfaces la següent configuració:
...
auto br0
iface br0 inet static
        address 192.168.0.1
        network 192.168.0.0
        netmask 255.255.255.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0
...
Tornarem a arrancar el dimoni que gestiona la xarxa per a que cree el dispositiu prèviament configurat.
sudo /etc/init.d/networking restart
Si creem una màquina virtual i la associem al bridge br0 que hem creat podrem aconseguir comunicar-la amb l'exterior.

Una volta arrancada la màquina veurem com es mostra el brdige associat a les dues interficies. Aquesta es l'eixida de pantalla de Redhat/CentOS
# brctl show
bridge name bridge id  STP enabled interfaces
br0  8000.000000000000 no  vnet0
virbr0  8000.525440030d05d yes  virbr0-nic
I aquesta la d'Ubuntu/Debian
# brctl show
bridge name bridge id  STP enabled interfaces
br0  8000.c42c0329b155 no  eth0 vnet0
virbr0  8000.525400693c7b yes  virbr0-nic
Per a que funcione correctament, la taula de rutes ha d'estar correctament configurada a la màquina host. Ací teniu exemples de les dues distribucions.

Amb la distribució Ubuntu tenim la següent taula de rutes a la màquina host.
# ip route show
default via 192.168.0.1 dev ens3 
default via 192.168.0.1 dev ens3  proto static  metric 1024 
192.168.0.0/24 dev ens3  proto kernel  scope link  src 192.168.0.6 
Amb la distribució Redhat/Centos tenim la següent taula de rutes a la màquina host.
# ip route show
default via 10.100.175.254 dev wlp2s0  proto static  metric 600 
9.9.9.9 via 10.100.175.254 dev wlp2s0  proto dhcp  metric 600 
10.100.168.0/21 dev wlp2s0  proto kernel  scope link  src 10.100.174.232 
                metric 600 
192.168.0.0/24 dev br0  proto kernel  scope link  src 192.168.0.1  
               metric 425 
192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1 
Si ens fixem amb les dues, les rutes importants són la 192.168.0.0/24 que comunica el bridge i la default gw que envia tot el tràfic al adaptador connectat a Internet.

També ens assegurem que en la màquina host el "ip forwarding" estiga configurat i tinga el valor 1.
# sysctl -a |  grep net.ipv4.ip_forward
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_use_pmtu = 0
Ens assegurem que tinguem dos dns configurats que funcionen correctament a la màquina virtual.
# cat /etc/resolv.conf 
; generated by /usr/sbin/dhclient-script
nameserver 8.8.8.8
nameserver 8.8.4.4 
Configurem el firewall amb la següent configuració en la màquina host, on tenim el KVM funcionant, per a ubuntu utilitzarem la següent configuració:
INPUT

iptables -A INPUT -p tcp --dport 53 -i br0 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -i br0 -j ACCEPT
iptables -A INPUT -p tcp --dport 67 -i br0 -j ACCEPT
iptables -A INPUT -p udp --dport 67 -i br0 -j ACCEPT

OUTPUT

iptables -A OUTPUT -p udp --dport 68 -o br0 -j ACCEPT

FORWARD

iptables -A FORWARD -o br0 -d 192.168.0.0/24 -m conntrack \
         --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i br0 -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -i br0 -o br0 -j ACCEPT
iptables -A FORWARD -i br0 -j REJECT --reject-with icmp-port-unreachable
iptables -A FORWARD -o br0 -j REJECT --reject-with icmp-port-unreachable

POSTROUTING

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 224.0.0.0/24 -j RETURN
iptables -t nat -A POSTROUTING \
         -s 192.168.0.0/24 -d 255.255.255.255 -j RETURN
iptables -t nat -A POSTROUTING -p tcp \
         -s 192.168.0.0/24 ! -d 192.168.0.0/24 -j MASQUERADE \
         --to-ports 1024-65535
iptables -t nat -A POSTROUTING -p udp \ 
         -s 192.168.0.0/24 ! -d 192.168.0.0/24 -j MASQUERADE \
         --to-ports 1024-65535
iptables -t nat -A POSTROUTING \
         -s 192.168.0.0/24 ! -d 192.168.0.0/24 -j MASQUERADE 
Amb Redhat/Centos utilitzarem la següent configuració, es la mateixa que abans pero utilitzarem include -I en lloc de append -A ja que al tenir preconfigurat un firewall volem que les regles es carreguen amb l'ordre correcte.
INPUT
iptables -I INPUT -p udp --dport 67 -i br0 -j ACCEPT
iptables -I INPUT -p tcp --dport 67 -i br0 -j ACCEPT
iptables -I INPUT -p udp --dport 53 -i br0 -j ACCEPT
iptables -I INPUT -p tcp --dport 53 -i br0 -j ACCEPT

OUTPUT

iptables -I OUTPUT -p udp --dport 68 -o br0 -j ACCEPT

FORWARD

iptables -I FORWARD -o br0 -j REJECT --reject-with icmp-port-unreachable
iptables -I FORWARD -i br0 -j REJECT --reject-with icmp-port-unreachable
iptables -I FORWARD -i br0 -o br0 -j ACCEPT
iptables -I FORWARD -i br0 -s 192.168.0.0/24 -j ACCEPT
iptables -I FORWARD -o br0 -d 192.168.0.0/24 -m conntrack \
         --ctstate RELATED,ESTABLISHED -j ACCEPT

POSTROUTING

iptables -t nat -I POSTROUTING \
         -s 192.168.0.0/24 ! -d 192.168.0.0/24 -j MASQUERADE 
iptables -t nat -I POSTROUTING -p udp \
         -s 192.168.0.0/24 ! -d 192.168.0.0/24 -j MASQUERADE \
         --to-ports 1024-65535
iptables -t nat -I POSTROUTING -p tcp \
         -s 192.168.0.0/24 ! -d 192.168.0.0/24 -j MASQUERADE \
         --to-ports 1024-65535
iptables -t nat -I POSTROUTING \
         -s 192.168.0.0/24 -d 255.255.255.255 -j RETURN
iptables -t nat -I POSTROUTING \
         -s 192.168.0.0/24 -d 224.0.0.0/24 -j RETURN
Una volta tenim tot açò configurat ja som capaços de realitzar pings desde la màquina virtual a Internet

Enllaços

http://www.tecmint.com/kvm-virtualization-basics-and-guest-administration/
https://help.ubuntu.com/community/KVM/Networking
http://jensd.be/?p=207
http://vitobotta.com/setting-up-kvm-lvm-virtual-machine-host/
http://www.dedoimedo.com/computers/kvm-bridged.html
http://www.linux-kvm.com/content/using-bridged-networking-virt-manager
http://askubuntu.com/questions/574548/ubuntu-kvm-guest-dns-problems
http://www.charleslabri.com/installing-and-working-with-centos-7-x64-and-kvm/

dimecres, 2 de setembre de 2015

Installing Centos 7.1 on a Macbook Pro 7,1 (2010)

Introducció:

Durant aquestes setmanes m'he dedicat a configurar una Centos 7.1 en un MacBook Pro de 2010. Concretament la següent màquina:
sudo dmidecode -s system-product-name
MacBookPro7,1
Tot i que ja han passat 5 anys des que va eixir al mercat el procés no ha resultat tot el senzill que deuria.

Instal·lació:

Per a la instal·lació he utilitzat la següent imatge. L'imatge l'he instal·lada en un llapis usb de 2Gb. El primer problema apareix amb l'instal·lador. L'instal·lador no soporta el sistema de fitxers HFS+ de Mac i Anaconda falla al començar a instal·lar el sistema operatiu. El problema ocorre perque RHEL/Centos 7 no inclouen les dependencies del sistema de fitxers HFS+ de Mac en Anaconda, llavors si tenim una particio d'aquest sistema de fitxers l'instal·lador finalitza amb un error. La sol·lució es la següent:
  1. Arranquem l'instal·lador amb el DVD
  2. Accedim al 2n virtual terminal vt2 (ctrl-alt-f2).
  3. Editem el fixer /usr/lib/python2.7/site-packages/blivet/formats/fs.py. Busquem la definicio de la clase "class HFSPlus". Comentem les següents linies _mkfs, _fsck, _packages, _formattable, i _check properties.
  4. Reiniciem anaconda amb: restart-anaconda.
Una volta hem instal·lat el sistema operatiu, hem d'accedir al OS X i instal·lar Refind de nou. Si mantenim pitjat Alt Dret, despres de sentir el soroll que fa el Mac al arrancar podrem arrancar-lo. Una volta tenim Refind instal·lat de nou, llavors realitzarem la instal·lació del sistema.
# yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
# yum update
I configurarem el runlevel 5 com el runlevel per defecte.
# ln -sf /lib/systemd/system/runlevel5.target \
  /etc/systemd/system/default.target

Configuració del Wireless

Aquest Macbook utilitza una tarjeta wireless Broadcom BCM4322. El controlador per a la seua gestió es privat. Per a configurar-lo procedirem com segueix: Instal·larem els següents paquets: [root@host ~]# yum install kernel-headers kernel-devel gcc patch En la següent url tenim el controlador. El descarreguem i utilitzem les següents comandes:
mkdir -p /usr/local/src/hybrid-wl
cd /usr/local/src/hybrid-wl
tar xvfz /path/to/the/tarball/hybrid-v35_64-nodebug-pcoem-6_30_223_248.tar.gz
chown -R someuser.somegroup /usr/local/src/hybrid-wl
Per a poder compil·lar el controlador en Centos 7 hi ha que descarregar 2 patchs. Apliquem el codi del primer patch.
[user@host hybrid-wl]$ patch -p1 < ../wl-kmod-fix-ioctl-handling.patch 
patching file src/wl/sys/wl_cfg80211_hybrid.c
patching file src/wl/sys/wl_linux.
Apliquem el codi del segon patch
[user@host hybrid-wl]$ patch -p1 < ../wl-kmod-rhel7_1.patch
patching file src/wl/sys/wl_cfg80211_hybrid.c
Hunk #1 succeeded at 1801 (offset -3 lines).
Hunk #2 succeeded at 1867 (offset -3 lines).
Hunk #3 succeeded at 2071 (offset -3 lines).
Hunk #4 succeeded at 2804 (offset -3 lines).
Ara ja podem compilar el codi sense problemes.
make -C /lib/modules/`uname -r`/build/ M=`pwd
Una volta compil·lat podem reduir la mida del modul amb strip.
[user@host hybrid-wl]$ strip --strip-debug wl.ko
Copiem el modul a un directori on el kernel el puga reconeixer.
[root@host hybrid-wl]# cp -vi /usr/local/src/hybrid-wl/wl.ko \ 
                          /lib/modules/`uname -r`/extra/
Calculem les dependencies de mòduls
[root@host ~]# depmod $(uname -r)
Carreguem el mòdul.
[root@host hybrid-wl]# modprobe wl
Configurem el sistema per a que carregue el modul durant la inicialització del sistema.
vi /etc/modules-load.d/wl.conf 
# Load wl.ko at boot
wl

Activar la tarjeta Nvidia:

Per a poder instal·lar els drivers de Nvidia necessitem que el sistema arranque en el mode EFI. Com els drivers no ho soporten configurarem el bus PCI-e inicialment per a que els drivers puguen inicialitzar-se sense problemes. Verifiquem que /sys/firmware esta creat, llavors vol dir que hem arrancat en EFI mode. Es necessari per a la correcta instsal·lació. Instal·lem la eina per a generar llistats de hardware.
yum install lshw
Llancem la següent comanda per a obtenir els BUS IDs de la tarjeta gràfica i del bridge PCI-E al que està connectat. Els 2 que ens interessen son els 2 ultims.
[root@localhost modules]# lshw -businfo -class bridge -class display
Bus info          Device  Class          Description
====================================================
pci@0000:00:00.0          bridge         MCP89 HOST Bridge
pci@0000:00:03.0          bridge         MCP89 LPC Bridge
pci@0000:00:0e.0          bridge         NVIDIA Corporation
pci@0000:00:15.0          bridge         NVIDIA Corporation
pci@0000:00:16.0          bridge         NVIDIA Corporation
pci@0000:00:17.0          bridge         MCP89 PCI Express Bridge
pci@0000:04:00.0          display        MCP89 [GeForce 320M]
Instal·lem els moduls adicionals de grub2.
yum install grub2-efi-modules
Copiem el modul setpci.mod a la particio efi per a poder carregar-lo després.
cp /usr/lib/grub/x86_64-efi/setpci.mod /boot/efi/EFI/centos/
Per a poder iniciar el sistema ambls dirviers de nvidia hi ha que activar la targeta Nvidia conectada al bus PCI i activar la entrada/eixida de la tarjeta nvidia i configurar el bus com a mater. Hi ha que canviar els valors de diversos registres com es descriu a continuació:
Enabling VGA on the PCI Bridge that the NVidia card is connected to
Setting Bridge Control Register (0x3e) to 8

Enabling NVidia Card "I/O Space Access" and setting it as Bus Master
Setting Command Register (0x04) to 7
Per a poder realitzar açò, crearem una configuració especial de grub que genera aquesta configuració.
[root@localhost modules]# cat /etc/grub.d/03_vga_efi.conf 
#!/bin/sh
set -e
echo "insmod /EFI/centos/setpci.mod"
echo "setpci -s 00:17.0 3e.b=8"
echo "setpci -s 04:00.0 04.b=7"
Configurem com a executable el script i regenerem la configuració de grub per a aplicar els canvis. Reiniciem el sistema.
chmod 755 /etc/grub.d/31_enable_vga.conf
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
reboot
Quan torna arrncar el sistema comprobem que els registres tinguen els valors correctes.
 ~$ sudo setpci -s "00:17.0" 3e.b
 08
 ~$ sudo setpci -s "04:00.0" 04.b
 07
Descarreguem el driver de nvidia i el copiem a /usr/local/src per centralitzar alli tots els codis. Seguidament editem /etc/default/grub i afegim el següent a final de la linia GRUB_CMDLINE_LINUX:
rd.driver.blacklist=nouveau nouveau.modeset=0
Actualitzem el grub i reiniciem el sistema.
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
Executem la següent comanda per a entrar en el runlevel 3 sense les X carregades.
init 3 
Fem login al sistema i accedim al lloc on hem copiat l'executable. En el nostre cas /usr/local/src. Executem el binary. Hem de tenir els kernel headers descarregats. En el nostre cas ja ho hem fet amb el wifi abans.
sh NVIDIA-Linux-x86_64-340.76.run
Realitzem un backup del ramdisk antic.
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname  -r)-nouveau.img 
Generem un ramdisk nou.
dracut /boot/initramfs-$(uname -r).img $(uname -r)
Arribats fins ací ja només queda eliminar el driver nouveau i reiniciar la màquina.
# yum remove xorg-x11-drv-nouveau
# reboot
I ja tenim funcionant les X a la maquina amb nvidia.

Brightness Key

En aquests moments no hi ha cap dispositiu gestionant el Brightness.
ls /sys/class/backlight/
Ens retorna directori buit, llavors procedirem com segueix: Per a fer funcionar la brightness key hem d'instalar la eina dkms per compilar el driver.
sudo yum install epel-release
yum install dkms
Descarreguem el driver
unzip nvidiabl-master
cd nvidiabl-master
yum install dkms
install/tarball/
dkms ldtarball --archive=nvidiabl-0.87-source-only.dkms.tar.gz build install
echo nvidiabl > /etc/modules-load.d/nvidiabl.conf
Editem el fitxer /etc/default/grub i afegim:
GRUB_CMDLINE_LINUX="[...] acpi_backlight=vendor"
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
Per últim editem el fitxer /etc/X11/xorg.conf en la seccio del driver de nvidia
Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    Option         "RegistryDwords" "EnableBrightnessControl=1"
EndSection

Problemes

En aquest moments tinc 1 problema per a sol·lucionar:
  • No funcionen les ttys amb el driver de nvidia.

Repositoris

No he probat utilitzar els paquets precompilats del driver wifi i nvidia per a centos pero seguint les instruccions d'aquest article i instal·lant els paquets en lloc de compil·lar haurien de funcionar.

Add-Ons

Instal·lem flash. Descarreguem el rpm de flash.
rpm -ivh adobe-release-x86_64-1.0-1.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux
yum -y install flash-plugin

Enllaços:

https://bugs.centos.org/view.php?id=7622
https://access.redhat.com/discussions/658253
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sec-Persistent_Module_Loading.html
http://www.dedoimedo.com/computers/centos-7-nvidia.html
https://www.linkedin.com/pulse/20140808222919-219659043-rhel-centos-7-and-nvidia-drivers
http://www.schotty.com/wordpress/?p=152
http://askubuntu.com/questions/264247/proprietary-nvidia-drivers-with-efi-on-mac-to-prevent-overheating
https://access.redhat.com/solutions/1155663
http://www.itzgeek.com/how-tos/linux/centos-how-tos/install-gnome-gui-on-centos-7-rhel-7.html
https://wiki.centos.org/HowTos/Laptops/Wireless/Broadcom?action=show
http://forums.macrumors.com/threads/win7-x64-booting-natively-via-efi-no-bios-emulation.696523/page-5#post-13898859
http://cosmicb.no/2014/05/18/nvidia-brightness-control-fix/

dilluns, 24 d’agost de 2015

KVM Virtual Network

Introducció:

L'objectiu d'aquest tutorial es la configuració d'una nova xarxa virtal amb KVM i la seua assignació a una maquina virtual.

Procés:

Llancem amb Virtual Machine Manager amb:
virt-manager &
Cliquem amb el botó secundari en l'opcio "Detalles".

En la següent finestra fem clic en el tab "Redes virtuales".

Una volta en aquesta finestra fem clic en "+".

Apareixerà l'assistent de creació de la xarxa virtual. Fem clic en "Adelante".

Elegim un nom per a la xarxa virtual, en el nostre cas "Testing". Fem clic en "Adelante".

Seleccionem un espai de direccions, en el nostre cas 192.168.100.0/24. Totes les VMs que utilitzen aquesta xarxa virtual tindran una IP dins d'aquest rang. Fem clic en "Adelante".

Activem el DHCP. Seleccionem la IP d'inici i la IP final en el rang d'assignació de la xarxa virtual. Fem clic en "Adelante".

En aquesta finestra seleccionarem si la xarxa estara aïllada o no. En el nostre cas no. Seleccionem com a destí "Cualquier dispositvo físico" i com a mode "NAT". Amb aquestes opcions tenim una xarxa interconectada a la xarxa del ordinador host, pero amb NAT. En l'enllaç de libvirt de final del tutorial hi ha mes informació sobre els modes de xarxa que es poden configurar a KVM. Fem clic a "Adelante".

La següent finestra mostra un resum de tot el que hem configurat. Fem clic en "Finalizar".

Com podem veure la xarxa ja esta configurada i pot ser utilitzada.

A baix nivel el que s'ha creat es un bridge nou per interconnectar les xarxes. Ho podem comprobar ací.
$brctl show
bridge name bridge id  STP enabled interfaces
virbr0  8000.fe5400427c45 yes  vnet0
virbr1  8000.525400693c7b yes  virbr1-nic
Per tant accedim als detalls del hardware virtual de la màquina virtual i canviem la xarxa assignada a l'adaptador de xarxa a "Testing". Aquesta és la xarxa que hem creat anteriorment.

Si accedim a la maquina virtual i mostrem els adaptadors de xarxa veurem com ens3 en el nostre cas té assignada ja una IP en el rang de la xarxa configurada i acces a Internet.
[root@localhost ~]# ip addr show
1: lo:  mtu 65536 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
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens3:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:04:e7:b7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.206/24 brd 192.168.100.255 scope global dynamic ens3
       valid_lft 3465sec preferred_lft 3465sec
    inet6 fe80::5054:ff:fe04:e7b7/64 scope link 
       valid_lft forever preferred_lft forever

Enllaços:

http://www.dedoimedo.com/computers/kvm-network.html
http://www.dedoimedo.com/computers/kvm-intro.html
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization_Administration_Guide/sect-Virtualization-Virtual_Networking-Creating_a_virtual_network.html
http://wiki.libvirt.org/page/VirtualNetworking
http://www.linuxnix.com/2013/02/kvm-virtualization-network-nat-configuration-in-kvm-hypervisor.html

divendres, 3 de juliol de 2015

SSH key based authentication

Introducció:

En aquest tutorial mostrarem com configurar l'acces per clau pública a una màquina ja siga per administrar-la o per configurar scripts que es conecten directament sense necessitar password.

Generació de claus:

La primera tasca a realitzar es generar les claus en la màquina amb la que accedirem a l'altre sistema
ssh-keygen -t rsa -b 4096 
Presionem Enter quan ens demana el password per a tots els casos. Mantenim la configuració per defecte.
/home/youruser/.ssh/
Si tot ha anat be en el directori anterior hi haurà dos fitxer id_rsa (clau privada) u id_rsa.pub (clau publica)

Transferència de la clau al servidor:

La forma més facil de transferir la clau pública es utilitzant
ssh-copy-id user@123.45.67.89
També podem transferir per scp la clau pública scp /home/youruser/.ssh/id_rsa.pub user@123.45.67.89:~/ Després accedim a la màquina destí i executem:
cat /home/youruser/id_rsa.pub >> /home/youruser/.ssh/authorized_keys
Si transferim la clau d'alguna altra manera ens hem d'assegurar que no hi han espais. Açò es pot comprovar fàcilment utilitzant el vim amb el mode nowrap.
set nowrap
Si apareix cada clau en una linia llavors es correcte. Després ens assegurem que els permisos sónn els següents(600 el authorized_keys i 700 el directori .ssh):
drwx------ 2 root root 4096 Jun 19 10:15 .
drwx------ 7 root root 4096 Jun 18 11:22 ..
-rw------- 1 root root  605 Jun 19 10:15 authorized_keys
I ja tenim configurat el access per claus.Si en algun moment hem de realitzar troubleshooting la següent comanda resulta de gran ajuda:
ssh -vvv user@123.45.67.89

Enllaços:

https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server

dimarts, 16 de juny de 2015

Centos 7, Configuring FTP repository with DVD packages

Introducció

Per a crear un repositori FTP primer necessitem obtenir els paquets. En el nostre cas utilitzarem el DVD d'instal·lació com a font dels paquets. El repositori servira per a proporcionar un repositori per a diferents sistemes que no disposen de connexio a Internet. En aquest cas assumirem que sobre la màquina que configurem el FTP hem configurat previament també el servei d'HTTP com es descriu en el tutorial previ d'aquest mateix blog.

Configuració del Servidor FTP

Per a la configuració del repositori instal·larem vsftpd. Com a root executarem la següent comanda:
yum install vsftpd

Copiem les dades i arranquem el dimoni

Crearem una carpeta per a guardar les dades de la ISO.
mkdir /var/ftp/pub/inst
Utilitzarem mount per remuntar una subsecció de l'arbre de directoris on prèviament haviem guardat el contingut de la ISO en l'article previ.
mount --bind /var/www/html/inst inst/
Si estem realitzant aquest tutorial sense haver realitzat el del repositori HTTP, abans podem realitzar el següents passos: El primer que farem serà montar la font dels paquets(cdrom o la iso, depenent de quin siga el nostre cas). Per montar el cdrom executarem:
mount /dev/cdrom /media
Per montar la ISO executarem:
mount -o loop Centos-7.0-1406-x86_64-DVD.iso /media
Copiem les dades al directori del ftp.
cp -ar /media/* /var/ftp/pub/inst
Després d'executar el mount --bind o la copia de fitxers de la ISO/cdrom, una volta tenim les dades al directori procedirem a arrancar el dimoni. Si no recordem com s'anomena el dimoni la següent ordre ens ajuda a trobar el nom del daemon, en aquest cas vsftpd.
ls /lib/systemd/system/*.service /etc/systemd/system/*.service | grep ftp
Arranquem el dimoni.
systemctl start vsftpd
Revisem que estiga funcionant correctament.
systemctl status vsftpd
Si el dimoni ha arrancat correctament, el configurarem per a que arranque cada volta que el sistema s'inicie.
systemctl enable vsftpd
Obrim el firewall per a que es puga accedir al servici sense problemes.
firewall-cmd --zone=public --add-service=ftp --permanent
firewall-cmd --reload

Verifiquem el repositori

Una volta el servidor esta funcionant correctament procedim a la configuracio del repositori. Per a que funcione correctament haurem de canviar els permisos dels fitxers
chown -R root:root /var/ftp/pub/inst/
Configurem el contexte SELinux per a tot el directory /var/ftp/.
chcon -R -t public_content_t /var/ftp/
Comprovem que el contexte s'ha aplibat corectament en /var/ftp/pub/
ls -Z /var/ftp/pub/
lrwxrwxrwx. root root unconfined_u:object_r:public_content_t:s0 \
    inst -> /var/www/html/inst/
Reiniciem el dimoni del FTP per a que es reflexen els canvis.
systemctl restart vsftpd

Errors

En la realització de l'article ens hem trobat el següent problema. Si utlitzavem soft links per utlitzar els fitxer descarregats amb l'article anterior en /var/www/html/inst, en lloc d'utilitzar mount --bind, el dimoni donava un error 550 al intentar accedir al directori del FTP.

Enllaços

https://radu.cotescu.com/vsftpd-and-symbolic-links/
http://vanishedintheshell.apsila.org/2015/05/centos-7-configuring-simple-http.html

divendres, 29 de maig de 2015

Bash I/O Redirections

Introducció:

L'objectiu d'aquest article es ajudar a comprendre com funcionen les redireccions d'entrada/eixida en bash i com es poden utilitzar amb bash. Si disposem de la versio 4.0 o posterior de bash, amb la següent comanda podem veure els descriptor de Linux associats a un pseudoterminal virtual /dev/pts/13.
lsof +f g -ap $BASHPID -d 0,1,2
COMMAND   PID USER   FD   TYPE FILE-FLAG DEVICE SIZE/OFF NODE NAME
bash    12135 root    0u   CHR     RW,LG 136,13      0t0   16 /dev/pts/13
bash    12135 root    1u   CHR     RW,LG 136,13      0t0   16 /dev/pts/13
bash    12135 root    2u   CHR     RW,LG 136,13      0t0   16 /dev/pts/13
Ací teniu un diagrama de com funciona un pseudoterminal en linux. La funció d'aquest article no es aprofundir sobre aquesta matèria sino ajudar a entendre millor el mecanisme.

El descriptors amb linux tenim el 0 per a l'entrada estandar, l'1 per a la eixida estandar i el 2 per a l'eixida d'errors. Quan es realitza un forc del process els descriptors s'hereden.
                  ---       +-----------------------+
standard input   ( 0 ) ---->| /dev/pts/13           |
                  ---       +-----------------------+

                  ---       +-----------------------+
standard output  ( 1 ) ---->| /dev/pts/13           |
                  ---       +-----------------------+

                  ---       +-----------------------+
standard error   ( 2 ) ---->| /dev/pts/13           |
                  ---       +-----------------------+

Redirigint l'eixida estandar

Les redireccions de entrada/eixida ens permeten redirigir la eixida estandar a un altre fitxer diferent de la pantalla. En el seguüent cas utilitzant l'operador ">" redirigim l'eixida estandar d'un programa a un fitxer de text.
ls -l / > output.txt
En aquest cas la distribucio dels descriptors queda com segueix
                  ---       +-----------------------+
standard input   ( 0 ) ---->| /dev/pts/13           |
                  ---       +-----------------------+

                  ---       +-----------------------+
standard output  ( 1 ) ---->| output.txt            |
                  ---       +-----------------------+

                  ---       +-----------------------+
standard error   ( 2 ) ---->| /dev/pts/13           |
                  ---       +-----------------------+
Per defecte l'operador de redirecció rescriu el fitxer desde l'inici. Açò es pot utilitzar per buidar un fitxer.
> output.txt
Si la nostra intencio es afegir mes informació a un fitxer utilitzem el doble operador ">>" per afegir la informació al final del fitxer anterior.
ls -l /etc >> output.txt
Si provoquem un error i redirigim l'eixida estandar a un fitxer no aconseguirem res ja que els errors utilitzen l'eixida d'errors que explicarem en el següent apartat.
ls -l /donotexist > output.txt
ls: cannot access /donotexist: No such file or directory

Redirigint l'eixida d'error

Per a redirigir errors hem de redirigir el discriptor numero 2 a un fitxer. La manera de realitzar-ho es com segueix:
ls -l /donotexists 2> error.txt
En aquest cas la distribucio dels descriptors queda com segueix:
                  ---       +-----------------------+
standard input   ( 0 ) ---->| /dev/pts/13           |
                  ---       +-----------------------+

                  ---       +-----------------------+
standard output  ( 1 ) ---->| /dev/pts/13           |
                  ---       +-----------------------+

                  ---       +-----------------------+
standard error   ( 2 ) ---->| error.txt             |
                  ---       +-----------------------+

Redirigit l'eixida estandar i l'eixida d'error

Per a realitzar la redirecció d'ambdós descriptor s'ha realitzat tradicionalment de la següent manera.
ls -l / > output.txt 2>&1
En aquest cas la distribucio dels descriptors queda com segueix:
                  ---        +-----------------------+
standard input   ( 0 ) ----->| /dev/pts/13           |
                  ---        +-----------------------+

                  ---        +-----------------------+
standard output  ( 1 ) ----->| output.txt            |
                  ---        +-----------------------+
                         
                  ---        +-----------------------+
standard error   ( 2 ) ----->| output.txt            |
                  ---        +-----------------------+
L'ordre es important, si ens equivoquem amb l'ordre
ls -l / 2>&1 > output.txt
El que provocarem es que l'eixida d'error segueixca vinculada a la pantalla, ja que quan copiarem el descriptor d'error amb el valor del descriptor d'eixida aquest encara tenia el valor inicial del terminal.
                  ---        +-----------------------+
standard input   ( 0 ) ----->| /dev/pts/13           |
                  ---        +-----------------------+

                  ---        +-----------------------+
standard output  ( 1 ) ----->| output.txt            |
                  ---        +-----------------------+
                         
                  ---        +-----------------------+
standard error   ( 2 ) ----->| /dev/pts/13           |
                  ---        +-----------------------+
En versions més actuals de bash, existeix l'abreviatura &>. Aquesta es una forma mes fàcil i comoda de realitzar la redireccio de l'entrada estandar i l'eixida a un mateix fitxer.
ls -l / &> output.txt
També podem utilitzar l'operador per a afegir com anteriorment.
ls -l / &>> output.txt

Enllaços

http://wiki.bash-hackers.org/howto/redirection_tutorial
http://sourceforge.net/projects/linuxcommand/files/TLCL/13.07/TLCL-13.07.pdf/download
http://en.wikipedia.org/wiki/Pseudoterminal

dilluns, 18 de maig de 2015

Centos 7, Configuring Simple HTTP Repository using installation DVD

Introducció

Per a crear un repositori HTTP primer necessitem obtenir els paquets. En el nostre cas utilitzarem el DVD d'instal·lació com a font dels paquets, i l'utilitzarem de repositori HTTP per a diferents sistemes que no disposen de connexio a Internet.

Montatge de la ISO

El primer que farem serà montar el cdrom o la iso, depenent de quin siga el nostre cas. Per montar el cdrom executarem:
mount /dev/cdrom /media
Per montar la iso executarem:
mount -o loop Centos-7.0-1406-x86_64-DVD.iso /media

Configuració del Servidor Web

Per a la configuració del repositori instal·larem Apache.
yum install httpd
També instal·larem elinks per a testejar que el servidor funciona correctament una volta instal·lat.
yum install elinks
Per a arrancar el dimoni de l'Apache amb systemd utilitzarem la següent comanda:
sudo systemctl start httpd
Si ha arrancant correctament amb la següent comanda veure els detalls relatius al dimoni.
sudo systemctl status httpd
Comprovem que esta funcionant i que mostra la pàgina web inicial.
elinks http://127.0.0.1
Si funciona i tenim accés, llavors configurem l'Apache per a que s'execute automàticament durant l'arranc.
sudo systemctl enable httpd
Configurem el firewall per a que siga accessible desde fora de la maquina virtual o en una xarxa local.
firewall-cmd --permanent --add-port=80/tcp
success
firewall-cmd --reload
success
Comprobem des d'una maquina virtual en la mateixa xarxa local que funcione. Ho podem probar amb qualsevol navegador. Suposarem que la maquina te la ip 192.168.1.101 i esta correctament configurada una xarxa local 192.168.1.0/24.
elinks http://192.168.1.101

Configuració del repositori

Creem el següent directori dins de l'estructura de directoris d'Apache.
mkdir /var/www/html/inst
Copiem les dades de la ISO dins del directori. Utilitzarem l'opció -r per a que siga recursiu i la opció -a per a que mantinga permisos i propietaris de tots els fitxers, així com els seus atributs.
cp -ar /media/. /var/www/html/inst/
Apliquem els contextos de SELinux als nous directoris.
chcon -R --reference=/var/www/html/ /var/www/html/inst/
I reiniciem l'Apache per a que aplique la configuració i el nou recurs estiga disponible.
sudo systemctl restart httpd

dilluns, 4 de maig de 2015

Centos 7 Configure Local CDROM repository

Per a crear un nou repositori hem d'editar la configuracio del yum. En el nostre cas configurarem el cdrom com a repositori per a un sistema que no dispose de connexió a Internet. El primer que farem serà montar el cdrom o la iso, depenent de quin siga el nostre cas. Per montar el cdrom executarem:
mount /dev/cdrom /media
Per montar la iso executarem:
mount -o loop Centos-7.0-1406-x86_64-DVD.iso /media
Una volta tenim el cdrom montat configurem un repositori en /etc/yum.repos.d/. Creem el fitxer local.repo i l'editem.
vi /etc/yum.repos.d/local.repo
Aquesta serà la configuració del repositori.
[LocalRepo]
name=Local Repository
baseurl=file:///media
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Una volta configurat comprovem quins repositoris tenim activats.
yum repolist all
Tots els que apareguen com a enabled i no siguen LocalRepo els deshabilitem. Només hem de tenir habilitat el local.repo. Configurem tots els repositoris com a deshabilitats, nomes hem de posar enabled=0 en el repositori en qüestió. Revisem tots els fitxers de /etc/yum.repos.d/ i afegim el enabled=0.

Per exemple:
...
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=0
...
Arribats a aquest punt ja podem instal·lar paquets!

Enllaços:

http://www.itzgeek.com/how-tos/linux/centos-how-tos/create-local-yum-repository-on-centos-7-rhel-7-using-dvd.html

Recover root password on RHEL/Centos 7

Introducció:

En aquest article farem un reset d'un password de root sobre una Centos7/RHEL 7. El resum del procés es el següent:
  • Editar el menu d'arranc de GRUB2 per entrar en single user mode
  • Remontar la partició / per permetre lectura/escritura
  • Canviar el password de root
  • Forçar un relabeling de SElinux despres del reinici
  • Reiniciar el sistema

Procés:

Una volta entenem el procés passarem a l'acció. Per a canviar el password amb Centos7/RHEL7 procedirem de la següent forma:

Arranquem la màquina, i quan apareix el menu de Grub2, cliquem "e", damunt de la opció de boot per defecte.


Una volta presionem la lletra apareixerà la següent pantalla, en la que hem d'identificar rhgb quiet


Una volta identificat rhgb quiet, hem de canviar-ho per init=/bin/bash. I presionar Ctrl+X per a que s'apliquen els canvis. El sistema arrancara en single mode.


Ja tenim access a la consola del single mode.


Una volta tenim accés a la màquina tenim la partició montada com a ro (Read Only). Com pots veure a la captura de pantalla de baix.
mount | grep systevg-slash



Remontem la partició per a poder escriure i llegir.
mount -o remount,rw /
Si tornem a revisar les opcions amb les que esta montada la partició veurem que ja esta montada correctament.
mount | grep systevg-slash



Ara ja podem executar la comanda passwd per canviar el password the root.
passwd



Per a que el canvi funcione, necessitem fer un relabel dels contextos de selinux. Si no realitzem aquest canvi no serem capaços de fer login amb el nou password. Per a realitzar el relabel durant el reinici executem la següent comanda:
touch /.autorelabel



Per últim reiniciem el sistema. Per a reiniciar el sistema executem:
exec /sbin/init



Enllaços

http://linuxconfig.org/recover-a-forgotten-root-password-on-redhat-7-linux-selinux-system
http://www.tecmint.com/reset-forgotten-root-password-in-centos-7-rhel-7/

dimarts, 21 d’abril de 2015

Centos 7 installation with LVM (and still alive)

Introducció:

L'objectiu d'aquest tutorial es configurar una maquina virtual amb KVM com a hipervisor i CentOS 7 amb LVM. La màquina virtual constara de 2 discs durs de 8Gb i de dos Volume Groups, un per a sistema i l'altre per a dades. Aquest tutorial ha sigut realitzat amb una màquina amb 4Gb de RAM i un Intel Core 2 Duo.

KVM

Per a la creació de les màquines virtuals KVM utilitzarem la ferramenta virt-manager. La màquina virtual que generarem seguidament tindrà la següent configuració.
  • 1 CPU
  • 1024mb RAM
  • 2 Disc durs de 8Gb
Per a crear una màquina cliquem amb el boto dret damunt de localhost(QEMU) i seleccionem "Nuevo".


En la següent pantalla li posem un nom a la màquina virtual, en el nostre cas test-lvm i seleccionem "Adelante".


A continuació seleccionem la imatge del DVD a instal·lar que per a nosaltres serà CentOS 7.


Seguidament seleccionarem la CPU i la RAM que assignarem a la màquina virtual. Per a nosaltres serà 1 CPU i 1024 Mb de RAM.


Tot seguit li assignem un disc dur de 8Gb.


En la següent pantalla marquen la casella de "Personalizar la configuración antes de instalar".


Seleccionem el Disc Dur i cliquem sobre "Añadir Hardware".


I afegim un segon disc dur de 8Gb de tipus SATA. Seleccionem finalitzar i en la següent pantalla cliquem "Iniciar la Instalación" en la part superior.


Una volta arribats ací ens apareixerà ja la pantalla d'instal·lació estàndar de Centos 7.

Configuració LVM

Al finalitzar aquesta secció el nostre objectiu es tenir una distribució centos instal·lada amb les següents particions:
  • Swap 1024 Mb
  • /boot 512 Mb en una particio estandar
  • / 6gb sobre un volume group anomenat systemvg que comparteix disc swap i amb boot. El volume podra ser expandit 600mb
  • /home 6Gb sobre un volume group anomenat datavg en el segon disc
Començarem la instal·lacio de la distribució. Seleccionarem Anglès com a l'idioma durant l'instal·lació i fem clic a "Continue"


Seleccionem la opció "Installation Destination".


A continuació seleccionem els dos discs en la secció "Local Standard Disks" i després marquem en la secció "Other Storage Options" la opció "I will configure partitioning".


Seguidament començarem amb la configuració de les particions amb LVM. Aquesta configuració ha resultat extremadament difícil. El programa de configuració es extremadament limitat. Seleccionem "LVM" i seleccionem "+".


Començarem configurant la particio /home, com a mount point introduïm /home i 6Gb serà l'espai reservat. Cliquem "Add Mount Point". Si no configurem primer aquest volume, l'instal·lador es torna boig i no funciona amb 2 volums. Per tant aquesta ha sigut l'unica forma de conseguir la configuració dessitjada.


Després fem clic a "Modify..." per configurar el volum.


Canviem el Name del volume a "datavg", seleccionem el 2n disc i marquem la Size Policy com a "As Large as possible". Cliquem "Save".


Seguidament fem clic a "Update Settings" i ens assegurem que el disc marca que té 2.18Gb per extendre. Seleccionem "+".


Seleccionem "swap" com a Mount Point i assignem 1024Mb a la mida de la partició. Fem clic en "Add Mount Point".


Tot seguit canviem el Device Type a "Standard Partition". Fem clic en "Update Settings".


Seleccionem la partion swap, cliquem en la clau anglesa(Configure Mount Point), elegim el primer disc i cliquem "Select".


A continuació fem clic en "Update Settings". El name el marcara com sda1. Cliquem en +.


Seleccionem /boot com a mountpoint i 512Mb com a la mida de la partició. Cliquem en Add mount point.


Si la partició /boot s'ha creat com a sda2. Cliquem en "+" per agregar l'última partició.

A continuació configurem "/" com a mount point i 1Mb com a mida de la partició.


Ens assegurem que el Device Type es "LVM". Fem clic a "Modify...".


Seleccionem el primer disc, mantenim "centos" com el nom del volume group. Fem clic a "Save".


Fem clic a Update Settings. Tornem a fer clic a "Modify...".


Configurem el name del volume group com a "systemvg" i configurem la size policy com a "As large as possible". Fem clic a "Save".


Configurem el Name com a "slash" i la mida de la particio com a 6Gb. Cliquem "Update Settings".


Seleccionem la partició /home i fem clic en "Modify...". Una volta dins del volum datavg seleccionem la size policy com "As large as possible". Després "Save".


Fem clic a "Update Settings" i revisem que tot estiga correcte. Una volta tot esta correcte fem clic en "Done".


Apareixerà un resum dels canvis i cliquem en "Accept Changes". Després seleccionem "Begin Installation".


Com es pot veure a l'accedir a la màquina virtual una volta instal·lada, la instal·lació es correcta:
[root@localhost ~]# pvs
  PV         VG       Fmt  Attr PSize PFree  
  /dev/sda2  systemvg lvm2 a--  6.50g 652.00m
  /dev/sdb1  datavg   lvm2 a--  8.00g   2.14g
[root@localhost ~]# vgs
  VG       #PV #LV #SN Attr   VSize VFree  
  datavg     1   1   0 wz--n- 8.00g   2.14g
  systemvg   1   1   0 wz--n- 6.50g 652.00m
[root@localhost ~]# lvs
  LV    VG       Attr       LSize Pool Origin Data%  Move Log Cpy%Sync Convert
  home  datavg   -wi-ao---- 5.86g                                             
  slash systemvg -wi-ao---- 5.86g      

Configurar la xarxa

Una volta tenim access a la màquina al finalitzar la instal·lació només hem d'editar la conifuació de xarxa per tenir accés desde la consola.
 vi /etc/sysconfig/network-scripts/ifcfg-ens3 
Editem el fitxer amb els següents parametres:
HWADDR=52:54:00:42:7C:45
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.122.50
NETMASK=255.255.255.0
NAME=ens3
UUID=01c931d2-236b-4fb9-b01c-c032137fee01
ONBOOT=no
Una volta configurat fem un up de la interficie amb:
ifup ens3
I ja està tot configurat i accessible desde fora com podem veure:
[user@localhost ~]$ ip addr show
1: lo:  mtu 65536 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
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens3:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:42:7c:45 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.50/24 brd 192.168.122.255 scope global ens3
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe42:7c45/64 scope link 
       valid_lft forever preferred_lft forever

Enllaços:

http://www.ictdude.com/howto/install-centos-7-software-raid-lvm/