# [RISOLTO] NetworkManager e X bisticciano

## Spiros

Credo che questo sia il problema più strano che io abbia mai avuto...

Capita, quando mi collego alla rete dal politecnico (solo dal politecnico! A casa mia e altrove funziona tutto a dovere), che nessuna applicazione grafica riesca ad avviarsi. In particolare, se sono al politecnico e avvio un'applicazione grafica prima di collegarmi a Internet tramite rete wireless o cavo, va tutto bene, ma se la avvio dopo aver attaccato il cavo o essermi connesso tramite wireless, non si avvia nulla. Le applicazioni aperte continuano a funzionare, ma nessuna nuova finestra può comparire.

Se avvio da terminale un'applicazione, mettiamo, kate, appare:

```

$ kate

No protocol specified

kate: cannot connect to X server :0

```

Il sunto è che non ci si riesce a connettere al server X.

Non appena chiudo la connessione, tutto torna a funzionare, almeno finché non la riattivo.

Dico che si tratta probabilmente di NetworkManager, perché uso knetworkmanager per connettermi alla rete (uso KDE4.4 da portage e knetworkmanager dall'overlay kde). Ma se lo chiudo e mi collego tramite i wireless tools o wpa_supplicant tutto questo problema non esiste.

E aggiungo che questo problema è piuttosto recente. Fino a un paio di settimane fa non l'avevo mai avuto.

----------

## riverdragon

Copia qui /etc/hosts

----------

## Spiros

Ecco qui:

```

127.0.0.1       hg-public-dock-210-dhcp.ethz.ch.        localhost.localdomain   localhost

# IPv4 and IPv6 localhost aliases

127.0.0.1       hg-public-dock-210-dhcp.ethz.ch.        localhost.localdomain   localhost

::1             localhost

```

Ovviamente si tratta solo della parte rilevante, senza commenti.

Ora che lo guardo mi rendo conto che c'è una riga, la prima, che contiene un indirizzo che riguarda appunto il politecnico. Hai qualche dritta da darmi?

----------

## riverdragon

La prima e la terza sono ridondanti, quindi una delle due non serve; togli anche l'indirizzo del politecnico, quello deve essere fornito dal server DNS.

In generale una corretta configurazione di /etc/hosts prevede solo la riga

```
127.0.0.1               localhost localhost.localdomain
```

ed eventualmente gli host per raggiungere i quali non esiste un server DNS apposito; il resto non serve e potrebbe essere dannoso (ne ho avuto la riprova poche settimane fa quando quella stessa riga presentava anche il mio hostname e le applicazioni Java RMI non riuscivano a funzionare).

----------

## Spiros

Grazie per la spiegazione. Ho provato, lasciando nel file solo la riga "locale". Solo che non appena knetworkmanager si aggancia alla rete modifica di conseguenza /etc/hosts come ho mostrato prima. Viene quindi cambiata la riga

```
127.0.0.1               localhost localhost.localdomain
```

in

```
127.0.0.1       hg-public-dock-210-dhcp.ethz.ch.        localhost.localdomain   localhost
```

Mi chiedo: /etc/hosts è un file di configurazione che rimane in genere invariato, oppure, come /etc/resolv.conf, viene spesso modificato anche da servizi che si scrivono sopra informazioni temporanee? Perché questo genere di file non si trova in /var?

----------

## riverdragon

Dovrebbe rimanere invariato. Con una ricerca su google penso di aver trovato la soluzione (che avresti dovuto leggere dopo l'installazione, la stampa l'ebuild  :Evil or Very Mad:  )

```
elog "Problems with your hostname getting changed?"

elog ""

elog "Add the following to /etc/dhcp/dhclient.conf"

elog 'send host-name "YOURHOSTNAME";'

elog 'supersede host-name "YOURHOSTNAME";'
```

----------

## Spiros

Come hai impostato la ricerca? Io non ho trovato niente per giorni...

Comunque io eseguo sempre le istruzioni post-installazione; è raro che me ne sfugga qualcuna.

Ad ogni modo: come client dhcp ho dhcpcd. Quegli elog a che pacchetto corrispondono? La directory /etc/dhcp non l'ho. Ho invece la directory /etc/dhcp3, all'interno del quale ho il file dhclient.conf, il cui contenuto è il seguente:

```

# Configuration file for /sbin/dhclient, which is included in Debian's

#       dhcp3-client package.

#

# This is a sample configuration file for dhclient. See dhclient.conf's

#       man page for more information about the syntax of this file

#       and a more comprehensive list of the parameters understood by

#       dhclient.

#

# Normally, if the DHCP server provides reasonable information and does

#       not leave anything out (like the domain name, for example), then

#       few changes must be made to this file, if any.

#

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

send host-name "<hostname>";

#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;

#send dhcp-lease-time 3600;

#supersede domain-name "fugue.com home.vix.com";

#prepend domain-name-servers 127.0.0.1;

request subnet-mask, broadcast-address, time-offset, routers,

        domain-name, domain-name-servers, domain-search, host-name,

        netbios-name-servers, netbios-scope, interface-mtu,

        rfc3442-classless-static-routes, ntp-servers;

#require subnet-mask, domain-name-servers;

#timeout 60;

#retry 60;

#reboot 10;

#select-timeout 5;

#initial-interval 2;

#script "/etc/dhcp3/dhclient-script";

#media "-link0 -link1 -link2", "link0 link1";

#reject 192.33.137.209;

#alias {

#  interface "eth0";

#  fixed-address 192.5.5.213;

#  option subnet-mask 255.255.255.255;

#}

#lease {

#  interface "eth0";

#  fixed-address 192.33.137.200;

#  medium "link0 link1";

#  option host-name "andare.swiftmedia.com";

#  option subnet-mask 255.255.255.0;

#  option broadcast-address 192.33.137.255;

#  option routers 192.33.137.250;

#  option domain-name-servers 127.0.0.1;

#  renew 2 2000/1/12 00:00:01;

#  rebind 2 2000/1/12 00:00:01;

#  expire 2 2000/1/12 00:00:01;

#}

```

Quindi, tralasciando tutti i commenti, il contenuto di questo file dovrebbe essere:

```

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

send host-name "hostname";

supersede host-name "hostname";

request subnet-mask, broadcast-address, time-offset, routers,

        domain-name, domain-name-servers, domain-search, host-name,

        netbios-name-servers, netbios-scope, interface-mtu,

        rfc3442-classless-static-routes, ntp-servers;

```

È giusto?

Ora sono a casa e quindi non potrò fare più prove fino a domani... Comunque grazie mille.

----------

## riverdragon

Per la ricerca ho fatto così http://tinyurl.com/ylm6ufc (scusa, mi diverto un sacco   :Laughing:  ), il quarto risultato è dal bugzilla di gentoo. Gli elog sono da networkmanager, ma noto che negli ultimi ebuild invece c'è un comando per polkit... che strano.

Anche io ho dhcpcd, la versione stabile (4.0.15) ma ho la cartella /etc/dhcp e non dhcp3. Le modifiche vanno bene, ma sei sicuro che il tuo hostname sia proprio "hostname" e non qualcos'altro? Il comando hostname che dice?

----------

## Spiros

Anch'io ho la versione stabile 4.0.15... Mah.

Comunque sì, sono sicuro che il mio hostname non sia "hostname"  :Smile:  Era solo un tentativo di mascherare agli occhi indiscreti degli utenti del forum informazioni essenziali per la mia privacy e la mia sicurezza...   :Twisted Evil: 

Farò sapere domani l'esito.

----------

## Spiros

Qui sta succedendo qualcosa di strano... Ho controllato networkmanager e ho visto che l'avevo emerso senza la USE dhcpcd. Così l'ho aggiunta e l'ho reinstallato. Tutto bene.

Ad ogni modo sono andato a prendere il file di cui parlavamo ieri e... ho scoperto che oggi la directory /etc/dhcp3 non esiste più! Non esiste neanche la directory /etc/dhcp. L'unica cosa che si avvicina al file /etc/dhcp/dhclient.conf è il file /etc/dhcpcd.conf, che però contiene righe abbastanza differenti rispetto al file (che oggi non esiste più, ma ieri sì) /etc/dhcp3/dhclient.conf.

Adesso provo ad aggiungere quelle righe al file dhcpcd.conf, ma se non funzionasse non saprei che pesci pigliare.

Ad ogni modo ho constatato che il mio hostname effettivamente cambia quando mi collego a internet qui: da "spib" (il mio vero hostname) diventa "hg-public-dock-210-dhcp.ethz.ch.". E questo sia che lo veda tramite il comando hostname, sia tramite la variabile d'ambiente $HOSTNAME. Ho anche provato a fare qualcosa come:

```

export HOSTNAME=spib

kate

```

per vedere se almeno da terminale potessi avviare un programma grafico tramite ila modifica della variabile d'ambiente, ma non funziona. L'errore ritornato è il solito...

EDIT:

Le righe 

```
send host-name "hostname"; 

supersede host-name "hostname"; 
```

 non vanno bene. dhcpcd si rifiuta di avviarsi a causa di questi errori nel file di configurazione. Ho dato un'occhiata a "man dhcpcd.conf", dove ho visto che esiste il comando "hostname spib" per il file di configurazione. Ce l'ho messo, ma non è cambiato nulla. L'hostname cambia quando mi connetto alla rete.

----------

## riverdragon

Ok, sto scoprendo un po' di cose: la cartella /etc/dhcp è un residuo vecchio e non serve; il file /etc/dhcpcd.conf è intatto. Potresti dover lanciare il comando specificato negli ebuild recenti

```
polkit-auth --grant org.freedesktop.network-manager-settings.system.modify --user "USERNAME"
```

Se non funziona nemmeno questo sono in difficoltà pure io.

----------

## Spiros

 *riverdragon wrote:*   

> Ok, sto scoprendo un po' di cose: la cartella /etc/dhcp è un residuo vecchio e non serve; il file /etc/dhcpcd.conf è intatto. Potresti dover lanciare il comando specificato negli ebuild recenti
> 
> ```
> polkit-auth --grant org.freedesktop.network-manager-settings.system.modify --user "USERNAME"
> ```
> ...

 

Questo l'ho già fatto, non appena installato NetworkManager...

Ad ogni modo credo che dhcpcd non sia la causa. Anzi, di sicuro, credo. Questo perché il fenomeno problematico avviene solo quando mi collego tramite knetworkmanager, che a sua volta usa networkmanager. Se invece mi collego tramite i wireless-tools:

```

iwconfig wlan0 essid ...

dhcpcd wlan0

```

va tutto bene. Allora si tratta o di networkmanager che usa dhcpcd in modo un po' strano, oppure di networkmanager che fa qualcos'altro in modo un po' strano. Oppure knetworkmanager che usa networkmanager in modo un po' strano...

Se va avanti così credo che troverò altre soluzioni, come wicd, da usare quando sono al politecnico, visto che knetworkmanager, a parte questo problema, sta funzionando davvero bene, soprattutto ora che gestisce perfettamente anche la connessione vpn che mi serve.

----------

## devilheart

stesso problema qui, solo che il problema di manifesta solo se avvio il servizio di NetworkManager dopo che è partito X (se lo avvio prima non ci sono queste interferenze). non uso dhcp

----------

## Spiros

 *devilheart wrote:*   

> stesso problema qui, solo che il problema di manifesta solo se avvio il servizio di NetworkManager dopo che è partito X (se lo avvio prima non ci sono queste interferenze). non uso dhcp

 

Nel tuo caso quindi sembra che si possa risolvere mettendo NetworkManager tra i servizi da avviare al boot. Che client usi? knetworkmanager come me? E anche a te succede che il tuo hostname cambia?

----------

## devilheart

 *Spiros wrote:*   

> Nel tuo caso quindi sembra che si possa risolvere mettendo NetworkManager tra i servizi da avviare al boot.

 non si tratta semplicemente di risolvere, si tratta di capire il perché di questo comportamento del tutto fuori luogo

 *Quote:*   

> Che client usi? knetworkmanager come me? E anche a te succede che il tuo hostname cambia?

 da me non cambia nulla. se lo avvio prima di X non ho il problema (ma comunque non mi trova nessuna rete mentre wicd si)

----------

## Spiros

Credo di aver trovato una possibile soluzione (spero...).

Visto che mi pare che abbiamo appurato che il problema riguardi NetworkManager, sono andato a spulciare la documentazione. E ho trovato che il file di configurazione può contenere informazioni che riguardano un "Persistent hostname". Per il caso generale, in cui si usa solo il plugin keyfile, è sufficiente aggiungere al file di configurazione (che in Gentoo è /etc/NetworkManager/nm-system-settings.conf) le seguenti righe:

```
[keyfile]

hostname=myhostname

```

Ad ogni modo il documento su cui ho letto ciò fa parte del wiki di NetworkManager: http://live.gnome.org/NetworkManager/SystemSettings. L'articolo ha avuto l'ultima modifica il 3.3.2010, quindi dovrebbe essere aggiornato.

Io non avrò modo di provare la soluzione prima di lunedì. Farò sapere gli esiti.

EDIT: risolto. Con quelle due righe nel file NetworkManager non mi cambia più l'hostname anche se (presumo) il server dhcp glielo chiede. In questo modo il problema è risolto.

@devilheart: tu hai provato?

----------

## devilheart

 *Spiros wrote:*   

> @devilheart: tu hai provato?

 no, ho mollato knm. non mi trovava neanche le reti

----------

