<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>wifi &#8211; Carnet de notes</title>
	<atom:link href="https://jb.vioix.fr/tag/wifi/feed/" rel="self" type="application/rss+xml" />
	<link>https://jb.vioix.fr</link>
	<description>Diverses notes en électronique et informatique</description>
	<lastBuildDate>Fri, 19 Apr 2024 05:37:43 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.2</generator>
<site xmlns="com-wordpress:feed-additions:1">232311113</site>	<item>
		<title>Résolution de nom d&#8217;hôte en fonction du réseau</title>
		<link>https://jb.vioix.fr/resolution-de-nom-dhote-en-fonction-du-reseau/</link>
					<comments>https://jb.vioix.fr/resolution-de-nom-dhote-en-fonction-du-reseau/#respond</comments>
		
		<dc:creator><![CDATA[jb]]></dc:creator>
		<pubDate>Tue, 28 Feb 2017 08:41:55 +0000</pubDate>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mint]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[wifi]]></category>
		<guid isPermaLink="false">https://jb.vioix.fr/?p=1278</guid>

					<description><![CDATA[Les boxs internet gèrent souvent mal l&#8217;accès aux serveurs configurés par un service de DNS dynamique qui sont sur leurs réseaux. Sur Linux il est simple de résoudre le problème en ajoutant des entrées dans /etc/hosts. Pour un portable cette solution n&#8217;est pas satisfaisante, car dès que l&#8217;on quitte le réseau de la box, la&#8230; <a href="https://jb.vioix.fr/resolution-de-nom-dhote-en-fonction-du-reseau/" class="more-link">Lire la suite <span class="screen-reader-text">Résolution de nom d&#8217;hôte en fonction du réseau</span></a>]]></description>
										<content:encoded><![CDATA[
<p>Les boxs internet gèrent souvent mal l&rsquo;accès aux serveurs configurés par un service de DNS dynamique qui sont sur leurs réseaux. Sur Linux il est simple de résoudre le problème en ajoutant des entrées dans <code>/etc/hosts</code>. Pour un portable cette solution n&rsquo;est pas satisfaisante, car dès que l&rsquo;on quitte le réseau de la box, la résolution devient bloquante. Une solution consiste à modifier le fichier <code>/etc/hosts</code> en fonction du réseau sur lequel la machine est connectée.</p>



<span id="more-1278"></span>



<p>La grande majorité des opérations se fait en super-utilisateur ; deux conséquences : il est facile de faire des erreurs et si on ne comprend pas ce que l&rsquo;on fait, on ne le fait pas ! Ceci était dit, passons au travail&#8230;</p>



<h1 class="wp-block-heading">Fichiers de configuration</h1>



<p>Avant de faire une bêtise, le fichier <code>/etc/hosts</code> est sauvegardé avec la commande <code>cp /etc/hosts /etc/hosts.backup</code>. En cas de problème, on pourra revenir à la version initiale du fichier avec <code>mv /etc/hosts.backup /etc/hosts</code></p>



<h2 class="wp-block-heading">Configuration par défaut du réseau</h2>



<p>Le fichier par défaut sera celui utilisé lorsque la machine n&rsquo;est pas sur le réseau de la maison. Une copie du fichier <code>hosts</code> initial est faite pour cela <code>cp /etc/hosts /etc.hosts.default</code></p>



<h2 class="wp-block-heading">Configuration du réseau pour la maison</h2>



<p>Le fichier de configuration pour la maison est construit à partir du fichier par défaut, on fait donc une copie avec <code>cp /etc/hosts /etc/hosts.home</code>. Il est ensuite édité (par exemple avec <code>vim /etc/hosts.home</code>) pour ajouter les résolutions locales :</p>



<pre class="wp-block-preformatted">127.0.0.1	localhost
127.0.1.1	linux

192.168.5.3	serveur1.chezmoi.local
192.168.5.3	serveur2.chezmoi.local
192.168.5.3	serveur3.chezmoi.local

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
</pre>



<p>Les trois sites webs pointent vers le même serveur, c&rsquo;est Nginx qui gère la résolution des différents sites.</p>



<h1 class="wp-block-heading">Gestion des événements de NetworkManager</h1>



<p>La gestion des cartes réseaux est assurée par NetworkManager sous la très grande majorité des systèmes Linux (en tout cas ça marche sur mon Linux Mint !). Une des qualités de NetworkManager est de proposer de gérer les événements associés aux changements d&rsquo;états des cartes réseaux de manière très simple.</p>



<p>Les scripts traitant les événements doivent être placés dans le répertoire <code>/etc/NetworkManager/dispatcher.d</code>. Le script peut être sauvegardé avec n&rsquo;importe quel nom (pour respecter la notation générale, je l&rsquo;ai sauvegardé sous le nom <code>02home</code>) mais il doit avoir les droits d’exécution pour tous les utilisateurs et doit être la propriété de <code>root</code> (mais comme il faut être super utilisateur pour pouvoir écrire dans ce répertoire ça se fait tout seul&#8230;).</p>



<p>Les scripts de changement d&rsquo;états de NetworkManager doivent traiter deux paramètres lors de l&rsquo;appel qui sont le nom de la carte réseau concernée et le statut (arrêt, démarrage,&#8230;). La carte wifi de mon ordinateur est repérée par <code>wlp1s0</code> et l’événement qui nous intéresse est la mise en marche de la carte (événement <code>up</code>).</p>



<p>Le script est ensuite assez simple à écrire :</p>



<pre class="wp-block-prismatic-blocks"><code class="language-bash">#!/bin/bash -e
IF=$1
STATUS=$2

if [[ $IF = &quot;wlp1s0&quot; ]] &amp;&amp; [[ $STATUS = &quot;up&quot; ]]
then
	wifi=`iwlist wlp1s0 scan | grep SSID`
	if [[ $wifi == *&quot;MonWifi&quot;* ]]
	then

	cp /etc/hosts.home /etc/hosts
	fi
else
	#Use the normal host file
	cp /etc/hosts.default /etc/hosts
fi</code></pre>



<p>Le nom du réseau WiFi est obtenu avec la commande <code>iwlist</code> et un <code>grep</code>. On vérifie ensuite que le nom du réseau local (<code>MonWifi</code>) est présent dans la chaîne. Dans ce cas, on copie le fichier de configuration pour la maison dans le fichier <code>/etc/hosts</code>.</p>



<p>Si un autre événement (arrêt, &#8230;) se produit sur la carte, le fichier de configuration par défaut est recopié sur <code>/etc/hosts</code> pour tout remettre à la configuration par défaut.</p>



<h1 class="wp-block-heading">Bilan</h1>



<p>Pour l&rsquo;instant aucun problème ! Je suis toujours surpris par le côté « bien pensé » de Linux et la puissance de petits scripts tout simples&#8230;</p>



<h1 class="wp-block-heading">Bibliographie</h1>



<ul class="wp-block-list">
<li><a href="https://stackoverflow.com/questions/3427872/whats-the-difference-between-and-in-bash">La différence entre les opérateurs <code>[ ]</code> et <code>[[ ]]</code> en bash</a></li>



<li><a href="http://sysadminsjourney.com/content/2008/12/18/use-networkmanager-launch-scripts-based-network-location/">Un exemple de script </a></li>



<li><a href="https://ubuntuforums.org/showthread.php?t=1555752">L&rsquo;idée générale</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://jb.vioix.fr/resolution-de-nom-dhote-en-fonction-du-reseau/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1278</post-id>	</item>
	</channel>
</rss>
