<?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>bash &#8211; Carnet de notes</title>
	<atom:link href="https://jb.vioix.fr/tag/bash/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>
		<item>
		<title>Configuration de cntlm</title>
		<link>https://jb.vioix.fr/configuration-de-cntlm/</link>
					<comments>https://jb.vioix.fr/configuration-de-cntlm/#respond</comments>
		
		<dc:creator><![CDATA[jb]]></dc:creator>
		<pubDate>Tue, 04 Nov 2014 13:42:46 +0000</pubDate>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[cntlm]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[proxy]]></category>
		<guid isPermaLink="false">http://jb.vioix.fr/?p=751</guid>

					<description><![CDATA[La gestion des passerelles authentifiantes sous bash est souvent problématique. Configurer la &#160;passerelle se fait alors par un&#160;export http_proxy dans lequel le mot de passe est en clair. Il est évident que cette solution n&#8217;est pas satisfaisante. Dans la suite de ce billet ja vais présenter l&#8217;installation de cntlm qui permet de régler ce problème&#8230; <a href="https://jb.vioix.fr/configuration-de-cntlm/" class="more-link">Lire la suite <span class="screen-reader-text">Configuration de cntlm</span></a>]]></description>
										<content:encoded><![CDATA[
<p>La gestion des passerelles authentifiantes sous <code>bash</code> est souvent problématique. Configurer la &nbsp;passerelle se fait alors par un&nbsp;<code>export http_proxy</code> dans lequel le mot de passe est en clair. Il est évident que cette solution n&rsquo;est pas satisfaisante. Dans la suite de ce billet ja vais présenter l&rsquo;installation de <code>cntlm</code> qui permet de régler ce problème de manière simple et sécurisée.</p>



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



<h1 class="wp-block-heading">Installation et configuration de cntlm</h1>



<h2 class="wp-block-heading">Informations nécessaires</h2>



<p>Avant de commencer, il faut connaitre son nom d&rsquo;utilisateur, son mot de passe et le domaine dans lequel on travail. Dans la suite de cette explication ils seront remplacés par <em>name</em>, <em>password</em> et <em>domain</em>.</p>



<p>Évidement il faudra aussi connaitre l&rsquo;adresse IP de la passerelle utilisée par le système, sous Windows on l&rsquo;obtient avec la commande <code>ipconfig</code>.</p>



<h2 class="wp-block-heading">Installation de cntlm</h2>



<p>Sous Ubuntu (et les descendants comme Mint,&#8230;) <code>cntlm</code> est dans les dépôts :</p>



<p><code>sudo apt-get install cntlm</code></p>



<p>Dès l&rsquo;installation le service cntlm est lancé, la configuration n&rsquo;étant pas faite, il faut commencer par arrêter le service (<code>sudo service cntlm stop</code>). Il reste à configurer les principaux éléments en éditant le fichier <code>/etc/cntlm.conf</code> en superutilisateur &nbsp;(par exemple <code>sudo gedit /etc/cntlm.conf &amp;</code>). Les éléments importants du fichier sont les suivants :</p>



<pre class="wp-block-preformatted">#
# Cntlm Authentication Proxy Configuration
#
# NOTE: all values are parsed literally, do NOT escape spaces,
# do not quote. Use 0600 perms if you use plaintext password.
#

Username&nbsp;&nbsp; &nbsp;name
Domain&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;domain
Auth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
PassNT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

Proxy&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 192.168.1.5:8080
NoProxy&nbsp;&nbsp; &nbsp;&nbsp;localhost, 127.0.0.*, 10.*, 192.168.*

Listen&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;3128</pre>



<p>Les différents champs sont assez explicites. Pour l&rsquo;instant les champs <code>Auth</code> et <code>PassNT</code> sont laissés vierges.</p>



<p>Le champ <code>Listen</code> correspond au port qui sera utilisé par <code>cntml</code>, sauf si vous utilisez déjà ce port, ne le changez pas.</p>



<p>Il reste à remplir le mot de passe avec son condensé (<em>hash</em>). La solution la plus simple (qui permet en même temps de tester le reste de la configuration) et d&rsquo;utiliser <code>cntlm</code> en ligne de commande :</p>



<p><code>sudo cntlm -v -I -M http://www.google.fr</code></p>



<p>Le mot de passe doit être saisit ensuite et le résultat doit contenir les lignes suivantes (bien entendu les valeurs de condensés (<em>hash</em>) ne seront pas les mêmes) :</p>



<pre class="wp-block-preformatted">Config profile&nbsp; 1/4... Connection closed
Config profile&nbsp; 2/4... OK (HTTP code: 200)
----------------------------[ Profile&nbsp; 1 ]------
Auth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NTLM
PassNT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FF72C0DFC1C0D237CCEA5F7D53A17557
PassLM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 48AC20D4C99F6423D42DDF2A2C6D325A
------------------------------------------------</pre>



<p>On ferme tous&nbsp;les terminaux et on relance dans un nouveau terminal (<code>sudo cntlm -v</code> pour voir ce qui passe par le proxy).Sous Mint (sous les autres interfaces on retrouvera les mêmes principes) on utilise l&rsquo;applet réseaux pour configurer un serveur mandataire pour tout le système en <a href="http://127.0.0.1:3128">http://127.0.0.1:3128</a>.</p>



<p>Il est aussi possible de relancer le service mais dans ce cas, rien ne sera visible en cas de problème (<code>sudo service cntlm start</code>).</p>



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



<p>Si le service est lancé au démarrage, rien à faire. Sinon le lancer dans un terminal qui restera ouvert comme ci-dessous.</p>



<h1 class="wp-block-heading">Références</h1>



<ul class="wp-block-list">
<li><a href="http://www.howtoforge.com/linux-ntlm-authentication-proxy-isa-server-with-cntlm">http://www.howtoforge.com/linux-ntlm-authentication-proxy-isa-server-with-cntlm</a></li>



<li><a href="http://www.leslamas.net/index.php?post/2012/08/20/Cntlm-Authentication-Proxy">http://www.leslamas.net/index.php?post/2012/08/20/Cntlm-Authentication-Proxy</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://jb.vioix.fr/configuration-de-cntlm/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">751</post-id>	</item>
	</channel>
</rss>
