Networking creare un bridge su debian 9 per KVM

La creazione di un bridge di rete serve per soddisfare più esigenze. Dal punto di vista terminologico un bridge di rete è un elemento hardware o software che connette due o più reti in modo che possano comunicare tra di loro.

  • E’ possibile ad esempio create un bridge tra due schede di rete  e filtrare il traffico con un firewall.
  • Poichè un bridge è in grado di gestire più connessioni viene usata nella virtualizzione KVM per consentire alle macchine virtuali di comunicare con altri computer. La configurazione di default infatti consente la navigazione internet ma non permette la comunicazione con altri computer.

Bridge su singola scheda

Per creare il il bridge è necessaria la presenza del pacchetto bridge-utils

apt install bridge-utils

Il file di configurazione è il solito

/etc/network/interfaces

Di seguito il file di configurazione di un doppio bridge su un pc con due schede di rete standard: Realtek e Intel .

Network:   Card-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller driver: r8169
           IF: enp7s0 state: up speed: 1000 Mbps duplex: full mac: 00:e0:e4:69:01:43
           Card-2: Intel 82572EI Gigabit Ethernet Controller (Copper) driver: e1000e
           IF: enp8s0 state: up speed: 1000 Mbps duplex: full mac: 00:11:11:b1:16:b6

Il nome delle schede di rete enp7s0 è basato sul Predictable Network Interface Names utilizzato a partire dalla v197 di systemd.

dmesg | grep enp
[ 1.180950] r8169 0000:07:00.0 enp7s0: renamed from eth0
[ 1.326320] e1000e 0000:08:00.0 enp8s0: renamed from eth0

abilitare l’autoconfigurazione della schede e dei bridge con auto :
auto enp7s0
auto br0

manual per assicurarsi che ottengano indirizzi sul dispositivo se non quelli manuali indicati

iface enp7s0 inet manual

Le impostazioni riportate di seguito riguardano la configurazione di due bridge statici sulle due schede presenti.
I settaggi tengono conto anche di di ipv6

:~$ cat /etc/network/interfaces 
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# Network interfaces
allow-hotplug enp7s0
allow-hotplug enp8s0

# abitilità la configurazione automatica  
auto enp7s0 

iface enp7s0 inet manual
iface enp7s0 inet6 manual

# set up bridge0 and give it a static ip
auto br0
iface br0 inet static
 address 192.168.1.121
 netmask 255.255.255.0
 network 192.168.1.0
 broadcast 192.168.1.255
 gateway 192.168.1.1
 bridge_ports enp7s0 #eth0
 bridge_stp off
 bridge_fd 0
 bridge_maxwait 0
 dns-nameservers 8.8.8.8

#allow autoconf for ipv6
iface br0 inet6 auto
       accept_ra 1

...
...

in caso di modifiche per riavviare il bridge

systemctl  start mode-bridge

File di configurazione in debian con il settaggio del bridge di tipo static su enp8s0

cat /etc/network/interfaces

:~$ cat /etc/network/interfaces 
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

....
....
auto enp8s0
...
iface enp8s0 inet manual
iface enp8s0 inet6 manual
...
# enp8s0 network interface 
# set up bridge and give it a static ip
auto br1
iface br1 inet static
 address 192.168.2.141
 netmask 255.255.255.0
 network 192.168.2.0
 broadcast 192.168.2.255
 gateway 192.168.2.1
 bridge_ports enp8s0 #eth1
 bridge_stp off
 bridge_fd 0
 bridge_maxwait 0
 dns-nameservers 8.8.8.8

#allow autoconf for ipv6
iface br1 inet6 auto
        accept_ra 1

 

Riavvio Bridge

per riavviare un bridge in genere si ricorre a mode-bridge
il comando varia a seconda che sia attivo il gestore di sistema e di servizi systemd o SysV

Debian/Centos/linux
- systemd
systemctl stop mode-bridge  
e
systemctl start mode-bridge 
- System V init (initscript) 
/etc/init.d/mode-bridge stop     
e 
/etc/init.d/mode-bridge start

 

Configurazione Bridge  su Pc desktop

La gestione della connessioni di rete in un pc desktop debian attualmente è demandata a NetworkManager.

In generale network-manager gestisce solamente le interfacce di rete che non risultano dichiarate in /etc/network/interfaces

Tuttavia qualora si installi KVM su pc desktop con attivo Network-Manager potrebbe inzialmente risultare comoda o necessaria anche la disabiltazione manuale della scheda di rete da usare per il bridge.

 

Risorse:

Annunci

KVM Utilizzare virt-manager da remoto

Per controllare un sever KVM risulta molto comodo il tool a interfaccia grafica virt-manager.

Nel caso di desideri controllare un server KVM-QEMU da remoto  oltre al pacchetto specifico è necessario installare anche openssh-askpass o ssh-askpass-gnome.

Il pacchetto ssh-askpass-gnome consente di immettere la password per la connessione al server remoto.

In debian/ubuntu linux il pacchetto da installare e ssh-askpass-gnome

 apt install virt-manager ssh-askpass-gnome

In assenza del pacchetto si otterrà l’errore

You need to install openssh-askpass or similar to connect to this host

Utilizzare virt-manager senza openssh-askpass

Se non si installa ssh-askpass-gnome è comunque possibile connettersi al server remoto immettendo  da terminale  il comando

su  
virt-manager --no-fork

e digitando la password sempre a livello di terminale

Nell’esempio che segue la distribuzione usata è manjaro 17.xx

virt-manager--no-fork

virt-manager continuo prompt password  all’apertura della VM

Se la macchina virtuale in Display Spice ha Address impostato a Local host. Verrà richiesta la password di root una decina di volte quando si accede alla macchina virtuale.

virt-manager continue root prompt

virt-manager continuous root prompt

Per evitare il promp continuo con la richiesta della  password di root all’open dell VM selezionare in Address All interfaces e riavviare la macchina

Display_change_localhost_all_interfaces

Cambiare Display Spice Address

 

Qualora all’avvio si presenti il Connection failure

Connection refused. Connection reset by peer

E opportuna controllare che sul server remoto i servizi sshd e libvirtd non risultino inattivi

systemctl status sshd
● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enab
   Active: active (running) since Sun 2017-01-21 19:36:45 CET; 1 day 18h ago
  Process: 20575 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
 Main PID: 20578 (sshd)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/ssh.service
           └─20578 /usr/sbin/sshd -D
    ...

Se un servizio risulta inattivo può essere reso attivo  con

systemctl enable sshd

Risorse:

 

virt-manager remote continuous prompt password

To avoid continuos prompt ( about 10 times )  for ssh when you use virt-manager from remote and open a virtual machine set All Interfaces in  Address – section Display  Spice.

The restart Virtual machine.

more details:  Utilizzare virt-manager da remoto 


Display_change_localhost_all_interfaces

Change Display Spice Address

Risorse:

 

installare Postgresql 9.6 su Centos 7.4 64 bit

postgresql  go to:  PostgreSQL nel blog 

Default postgresql server in Centos 7 x86 64 is version 9.2.x

to install postgresql 9.6.x use   Postgresl yum repository.

https://www.postgresql.org/download/linux/redhat/

su -

Download and install the yum rpm PostgreSQL Repository

yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

We can use yum list to check the package now available.

yum list postgresql*

you have to see many postgresql96 packages

Install, inizialize and start postgresql 9.6.

install the client

yum install postgresql96

Install th server postgresql 9.6 with contrib package.

yum install postgresql96-server postgresql94-contrib

Than we initialize and start postgresql-9.6

#/usr/pgsql-9.6/bin/postgresql96-setup initdb
Initializing database ... OK
# systemctl enable postgresql-9.6
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-9.6.service to /usr/lib/systemd/system/postgresql-9.6.service.

# systemctl start postgresql-9.6

postgresql-9.6 /bin /lib /doc /share are in directory

/usr/pgsql-9.6

postgresql-9.6 data are in directory

/var/lib/pgsql/9.6

check that everything is OK

su - postgres  
pslq -l

we have to see a list of 3 databases

Firewall

Open postgresql port 5432 in Iptables Firewall

with editord vi, cmedit nano edit file /etc/sysconfig/iptables  :
vi -w /etc/sysconfig/iptables

# add next commit row

-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT

restart iptables firewall

Configure postgres set superuser postgres password

# switch to postgres user

  su - postgres

# open postgresql cli as postgres and connect to the postgres database

  psql postgres

# set the password of user postgres using alter

 ALTER USER postgres WITH PASSWORD 'your-postgres-password';

Setting pg_hba.conf
pg_hba.conf say postgresql which users can access which databases and how they can do. ( centos/redhat location /var/lib/pgsql/9.4/data/pg_hab.conf)

so we change METHOD to md5 for IPv4 and IPv5 local connections
then we can add other ipv4 connection as

host    all         all         192.168.1.0/24        md5

at the end we can have something like this

# TYPE  DATABASE    USER        CIDR-ADDRESS               METHOD                    
                                                                                
# "local" is for Unix domain socket connections only                            
local   all         all                                      peer    
# IPv4 local connections:                                                       
host    all         all           127.0.0.1/32               ident
host    all         all           192.168.1.0/24             md5      
# IPv6 local connections:                                                       
host    all         all           ::1/128                    ident                     
# Allow replication connections from localhost, by a user with the              
# replication privilege.                                                        
#local   replication     postgres                            peer           
#host    replication     postgres        127.0.0.1/32        ident          
#host    replication     postgres        ::1/128             ident  

In order for the change to take effect we have to

reload pg_hba.conf
from the postgresql cli

 postgres=# select pg_reload_conf();

from the shell as postgres user ( su – postgres ) pg_ctl reload

Setting postgresq.conf
In this file we can configure remote access to postgresql
(centos/redhat location: /var/lib/pgsql/9.4/data/postgresql.conf  )

look for listen_address in connections and authentication section.
to enable remote connections uncomment and change listen_address that by default is ‘localhost’ so access is limited to local machine.
So at the and listen_addresses look like*

listen_addresses = '*'

It is possible to set the listen_address to specific IPs using a comma separate list.

Restart postgresql con

servicectl  postgresql restart

Now if you want you can change post value

port=  5432
Change port value 
Default port value for postgresql is 5432
Usually to change port value (ex:5433 ) we have to uncomment and to modify
# port= 5432
to
port= 5433
in Centos 7 we have to do another step we have to create the file /etc/sysconfig/pgsql/postgresql-9.4 with
PGPORT=5433
export PGPORT
touch /etc/sysconfig/pgsql/postgresql-9.6
echo ‘PGPORT=5433’ >> /etc/sysconfig/pgsql/postgresql-9.6
echo ‘export PGPORT’ >> /etc/sysconfig/pgsql/postgresql-9.6

If port change you have to change iptables firewall setting and restart postgresql.

we can check changes in postgesql cli :

# show listen_addresses;
# show port;

we can also do another check as root with

# netstat -nxl | grep PGSQL
netstat -nlp | grep PGSQL
unix 2 [ ACC ] STREAM LISTENING 263035 /var/run/postgresql/.s.PGSQL.5432
unix 2 [ ACC ] STREAM LISTENING 263037 /tmp/.s.PGSQL.5432

and

# netstat -nlp | grep 5432
netstat -nlp | grep 5432
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 28083/postmaster 
tcp6 0 0 :::5432 :::* LISTEN 28083/postmaster 
unix 2 [ ACC ] STREAM LISTENING 263035 28083/postmaster /var/run/postgresql/.s.PGSQL.5432
unix 2 [ ACC ] STREAM LISTENING 263037 28083/postmaster /tmp/.s.PGSQL.5432

Postgres blog’s post:

Ftp server installare e configurare svftpd in Debian 8.xx

Un server ftp efficace e veloce con poche richieste in termini di risorse e sufficentemente sicuro e vsftpd ( Very Secure FTP ). L’installazione  e la configurazione del server ftp da terminale è in genere agevole. Di seguito i comandi di base per installare e configurare vsftpd in Debian Jessie 8.xx .

Installare vsftpd con

su
apt-get install vsftpd

Come conseguenza il server ftp viene avviato automaticamente. E’ possibile controllare che è avviato e in ascolto sulla classica porta 21 con:

netstat -npl | grep ":21"
tcp6      0    0 :::21         :::*         LISTEN           14541/vsftpd 

Viene creato un nuovo user ftp e il gruppo ftp.

Il file di configurazione è

/etc/vsconf.conf

Accesso anonimo

L’accesso anomino al server ftp in Debian 8.xx è disabilitato (in diverse versioni di è consentito di default). Per consentire l’accesso anonimo editare vsconf.conf e cambiare anonymus_enabled=NO in  :

anonymous_enabled=YES

La directory di default è:

/svr/ftp

L’upload da parte dello user anonimo non è consentito. Per abilitare la scrittura sul server  togliere il commento a

write_enables=YES

e

anon_upload_enable=YES

per creare directories

anon_mkdir_write_enable=YES

quindi riavviare ils ervizio vsftpd con

service vsftpd restart

Nella directory /svr/ftp non è consigliato e non è consentito l’upload.
Normalmente l’utente owner della cartella /svr/ftp è root group ftp i permessi sono

 wrx w-x w-x

Quindi per consentire l’upload anonymous si può creare un directory ad esempio e il proprietario come ftp:ftp.

mkdir /srv/ftp/pubblic
chown -R ftp:ftp /srv/ftp/pubblic

ovviamente è possibile creare altre dir a piacere

Quando viene caricato un file di norma i permessi sono

-rw------

Per cambiare i permessi dei file caricari dallo user anonymous   in

-rw-r--r--

impostare

anon_umask=022

per i file caricati da un local user utilizzare

local_umask=022

Accesso autenticato

Per consentire l’accesso agli utenti del server con user e password è necessario abiltare, elimindo il commento

local_enable=YES

Per consentire che i permessi in caso di upload e creazione directories siano opportunamente assegnati come già evidenziato togliere il commento

local_umask=022

Per limitare l’accesso di ciascun user alla propria directory  togliere il commento a

chroot_local_user=YES

A questo punto la configurazione di base può dirsi completata riavviare il servizio con

service vsftpd restart

Risorse:

x2Go per accesso a PC da remoto in Lubuntu 16.04 con windows manager awesome

X2go-logo  X2Go è un valido applicativo per l’accesso remoto che si fa particolarmente apprezzare per l’elevata fluidità. Fa piacere osservare che lo sviluppo continua nel tempo e aumentano le funzioni a disposizione degli utenti X2Go Desktop Sharing. Nel blog sono presenti diversi post dedicati a X2Go ad esempio: Accesso a PC da remoto: Installare e configurare x2go in ubuntu linux. Di seguito viene riportata la procedura per installazione in lubuntu 16.04 che non si discosta dalla versione 14.04. Per poter utilizzare X2Go che consta di diversi conponenti è necessario installare X2Go server nella macchina a cui si intende accedere e X2Go Client/PyHoca-Gui nella macchina client. L’applicativo in Ubuntu 16.04 si installa a partire dallo  specifico ppa (personal package archive ) per x2Go stable.

sudo add-apt-repository ppa:x2go/stable

sudo apt-get update

L’installazione di x2goserver-xsession massimizza la compatibilità delle applicazioni cosentendo a x2Go  di lanciare qualsiasi utility specificata in /etc/X11/Xsession.d , come un X11 display locale e un XDMCP display.

Aggiunto il ppa installare il server x2go nella macchina da raggiungere con

sudo apt-get install x2goserver x2goserver-xsession

Il traffico X2Go viene inoltrato via tunnel SSH. Non è necessario l’avvio di demoni l’ “X server” di x2Go viene avviato on-demand quando si connette un client x2Go. Ovviamente un sessione X2Go rimane attiva se si preme la X per disconettersi.

Le impostazioni si configurazione del server sono salvate in

/etc/x2go/x2goserver.conf

client x2go

Per connettersi ad un server x2go è necessario utilizzare lo specifico client multipiattaforma disponibile per windows, mac e linux

sudo apt-get install x2goclient
x2go ubuntu 1404

x2go client in ubuntu 1404

per l’uso e la configurazione del client fare riferimento al seguente post Accesso a PC da remoto: Installare e configurare x2go in ubuntu linux

Il client X2Go offre una molteplicità di tipi di sessione ( Linux – Desktop Manager e Windows Managers ) da aprire al momento della connessione al pc remoto:  KDE, GNOME, LXDE, XFCE, MATE, UNITY, CINNAMON, TRINITY, OPENBOX, ICEVM,  XDMCP, Custom Desktop, …

Nel caso di LXDE il desktop manager si avvia con

exec startlxde

startlxde è presente nel pacchetto lxde-common.

Nel caso del windows manager awesome lo stesso si avvia con il comando awesome.

Pertanto per avviare con x2go una connessione di tipo awesome impostare in [Session Type]
Custom desktop e nel campo Command digitare awesome 
x2goclient_awesome_wm

 

 

 

Risorse:

Cambiare l’owner degli oggetti in un database postgresql: type, table, sequence, view, index,special, function

Una comoda query per modificare l’owner di tutti gli oggetti presenti in uno schema del database postreSQL.

La query è ripresa dal blog garysieling:  https://www.garysieling.com/blog/postgres-change-owner-all-objects-in-schema

Sono state apportate poche modifiche la principale per consentire l’utilizzo del maiuscolo nel nome degli oggetti e una diversa organizzazione degli oggetti type, table, sequence, index, view e special.

La query utilizza pg_class per visualizzare gli oggetti: tipo, tabella, sequenza, vista, indice e special.

Nel campo pg_class.relkind viene indicato il tipo di oggetto. Di seguito i codici presenti in relkind:

  • table ordinary = relkind = r
  • table TOAST  = t
  • table foreign = f
  • sequence = S
  • view = ‘v
  • index = ‘i
  • special = s
-- FUNCTION: public.__chown_object(character varying, character varying)

-- DROP FUNCTION public.__chown_object(character varying, character varying);

CREATE OR REPLACE FUNCTION public.__chown_object(
	in_schema character varying,
	new_owner character varying)
    RETURNS void
    LANGUAGE 'plpgsql'

    COST 100
    VOLATILE 
    --ROWS 0
AS $BODY$

DECLARE
  object_types VARCHAR[];
  object_classes VARCHAR[];
  object_type record;
 
  r record;
BEGIN
  -- modifica owner tipi, tabelle, sequenze, indici e viste
  object_types = '{type,table,table,sequence,index,view}';
  object_classes = '{c,t,r,S,i,v}';
 
  FOR object_type IN 
      SELECT unnest(object_types) type_name, 
                unnest(object_classes) code
  loop
    FOR r IN 
      EXECUTE '
          select n.nspname, c.relname 
          from pg_class c, pg_namespace n 
          where n.oid = c.relnamespace 
            and nspname = ''' || in_schema || '''
            and relkind = ''' || object_type.code || ''''
            
    loop 
      raise notice 'Changing ownership of % %.% to % %', 
                  object_type.type_name, 
                  r.nspname, r.relname, new_owner, object_type.code;
                     
             
     EXECUTE 
       'alter ' || object_type.type_name || ' '
                || r.nspname || '."' || r.relname 
                 || '" owner to ' || new_owner;
    END loop;
  END loop;
  -- end modifica owner tipi, tabelle, sequenze, indici e viste

  -- modifica owner funzioni 
  FOR r IN 
    SELECT  p.proname, n.nspname,
       pg_catalog.pg_get_function_identity_arguments(p.oid) args
    FROM    pg_catalog.pg_namespace n
    JOIN    pg_catalog.pg_proc p
    ON      p.pronamespace = n.oid
    WHERE   n.nspname = in_schema
  LOOP
    raise notice 'Changing ownership of function %.%(%) to %', 
                 r.nspname, r.proname, r.args, new_owner;
    EXECUTE 
       'alter function ' || r.nspname || '."' || r.proname ||
       '"(' || r.args || ') owner to ' || new_owner;
  END LOOP; 
  -- modifica owner funzioni 

  -- modifica owner particolari 
  FOR r IN 
    SELECT * 
    FROM pg_catalog.pg_namespace n
    JOIN pg_catalog.pg_ts_dict d 
      ON d.dictnamespace = n.oid
    WHERE n.nspname = in_schema
  LOOP
    EXECUTE 
       'alter text search dictionary ' || r.nspname || '.' || r.dictname || 
       ' owner to ' || new_owner;
  END LOOP;
  -- modifica owner particolari  -

END;

$BODY$;

ALTER FUNCTION public.__chown_object(character varying, character varying)
    OWNER TO postgresql;

Plpgsql 

Postgresql 

Postgresql cancella record duplicati

Creare eliminare database e tabelle