\documentclass[a4paper,11pt]{report}

\usepackage[francais]{babel}
\renewcommand{\familydefault}{\rmdefault}
\usepackage[T1]{fontenc}
\usepackage{ucs}
\usepackage[utf8x]{inputenc}
\usepackage[a4paper]{geometry}
\geometry{verbose,tmargin=1.5cm,bmargin=2.5cm,lmargin=2cm,rmargin=2.5cm,headheight=.5cm,footskip=1.5cm}

\setlength{\parskip}{\medskipamount}
\setlength\parindent{0pt}
\renewcommand*\theenumi{\alph{enumi}}
\newcommand{\changefont}[3]{
\fontfamily{#1} \fontseries{#2} \fontshape{#3}
\selectfont}

\makeatletter
\usepackage{times}
\usepackage{listings}
\usepackage{listingsutf8}
\usepackage{abstract}
\usepackage{amsthm}
\usepackage{booktabs}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{enumerate}
\usepackage{tabularx}
\usepackage{graphicx}
\usepackage{titlesec}
\usepackage{pifont}
\usepackage{moreverb}
\usepackage{upquote}
\usepackage[dvipsnames,table]{xcolor}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{multirow}
\usepackage{multicol}
\usepackage{longtable}

\usepackage[unicode=true, pdfusetitle,
 bookmarks=true,bookmarksnumbered=false,bookmarksopen=false,
 breaklinks=false,pdfborder={0 0 1},backref=false,colorlinks=false]
 {hyperref}

\titleformat{\chapter}[display]
  {\normalfont\Large\raggedleft}
  {\MakeUppercase{\chaptertitlename}%
    \rlap{ \resizebox{!}{1.5cm}{\thechapter} \rule{5cm}{1.5cm}}}
  {10pt}{\Huge}
\titlespacing*{\chapter}{0pt}{30pt}{20pt}

\renewcommand{\thesection}{\arabic{section}}
\definecolor{lightgray}{gray}{0.9}

\theoremstyle{remark}
  \newtheorem*{rem*}{Remarque}
  \newtheorem*{ex*}{Exemple}
\theoremstyle{definition}
  \newtheorem*{def*}{Définition}
  \newtheorem*{prop*}{Proposition}
  \newtheorem*{lem*}{Lemme}
  \newtheorem*{not*}{Notation}
  \newtheorem{ques}{Question}

\def\type#1{\def\@type{#1}}

\newcommand{\HRule}[1]{\hfill \rule{0.2\linewidth}{#1}} 	% Horizontal rule

\definecolor{grey}{rgb}{0.9,0.9,0.9} 

\makeatletter							% Title
\def\printtitle{%						
    {\centering \@title\par}}
\makeatother									

\makeatletter							% Author
\def\printauthor{%					
    {\centering \large \@author}}				
\makeatother							


\title{	\fontsize{39}{42}\selectfont
	\vspace*{0.7cm}
	\hfill \textbf{PFRES} : \textbf{P}late\textbf{F}orme de la\\
	\hfill  spécialité \textbf{RES}eaux	\\[0.6cm]
	\fontsize{20}{25}\selectfont
	\hfill Manuel de l'utilisateur%
}

\author{
	\hfill Benjamin Bachelart (\textcolor{blue}{\href{mailto:ben@bashy.eu}{mail}}) • Benjamin Baron (\textcolor{blue}{\href{mailto:benjamin.baron@me.com}{mail}})\\
	\hfill Benjamin Gonzalez (\textcolor{blue}{\href{mailto:yapakmoi@gmail.com}{mail}}) • Alexandre Ragaleux (\textcolor{blue}{\href{mailto:alexandre.ragaleux@gmail.com}{mail}})\\	
	\hfill 2012\\	
}

\lstset{basicstyle=\small\ttfamily,
		columns=fullflexible,
		morecomment=[s][\color{YellowOrange}\ttfamily]{<}{>},
		morecomment=[l][\color{OliveGreen}]{\#},
		morecomment=[l][\color{OliveGreen}]{;},
		morecomment=[l][\color{Gray}]{!},
		stringstyle=\small\ttfamily,
		showstringspaces=false,
		breaklines=true, 
		tabsize=4,
		showtabs=false,
		extendedchars=false,
		literate={é}{{\'e}}1
		         {è}{{\`e}}1
		         {ù}{{\`u}}1
				 {à}{{\`a}}1
				 {ç}{{\c{c}}}1,
		aboveskip=0pt plus 2pt, 
		belowskip=0pt plus 2pt
}

\lstdefinelanguage{cisco}{
	basicstyle=\small\ttfamily\color{Gray},
	moredelim=*[l][\color{black}]{\#},
	morecomment=[l][\color{Gray}]{!},
	moredelim=**[s][\color{YellowOrange}\ttfamily]{<}{>}
}

\makeatletter
\renewenvironment{thebibliography}[1]
     {\chapter{\bibname}% <-- this line was changed from \chapter* to \section*
      \@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}%
      \list{\@biblabel{\@arabic\c@enumiv}}%
           {\settowidth\labelwidth{\@biblabel{#1}}%
            \leftmargin\labelwidth
            \advance\leftmargin\labelsep
            \@openbib@code
            \usecounter{enumiv}%
            \let\p@enumiv\@empty
            \renewcommand\theenumiv{\@arabic\c@enumiv}}%
      \sloppy
      \clubpenalty4000
      \@clubpenalty \clubpenalty
      \widowpenalty4000%
      \sfcode`\.\@m}
     {\def\@noitemerr
       {\@latex@warning{Empty `thebibliography' environment}}%
      \endlist}
\makeatother

\begin{document}
	
\thispagestyle{empty} % Remove page numbering on this page

\colorbox{grey}{
	\parbox[t]{1.0\linewidth}{
		\printtitle 
		\vspace*{0.7cm}
	}
}
\vfill
\printauthor % Print the author data as defined above
\HRule{1pt}
\clearpage

\setcounter{tocdepth}{1}
\tableofcontents

\chapter{Description générale de la plateforme}

\section{Introduction}

\subsection{Aperçu de l'ensemble de la plateforme}

\begin{minipage}[t]{0.50\textwidth}
	\centering
	\includegraphics[scale=.25]{img/rack1.pdf}
\end{minipage}
\quad\quad
\begin{minipage}[t]{0.50\textwidth}
	\centering
	\includegraphics[scale=.25]{img/rack2.pdf}
\end{minipage}

\begin{minipage}[t]{0.50\textwidth}
	\centering
	\includegraphics[scale=.25]{img/rack3.pdf}
\end{minipage}
\quad\quad
\begin{minipage}[t]{0.50\textwidth}
	\centering	
	\includegraphics[scale=.25]{img/rack4.pdf}
\end{minipage}

\clearpage
\subsection{Aperçu des équipements}

\rowcolors{1}{}{lightgray}
\noindent{\scriptsize
\begin{tabularx}{\textwidth}{>{\hsize=.1\hsize}X|>{\hsize=.23\hsize}X>{\hsize=.25\hsize}X>{\hsize=.23\hsize}X>{\hsize=.23\hsize}X}
 & \textbf{Armoire 1} & \textbf{Armoire 2} & \textbf{Armoire 3} & \textbf{Armoire 4}\\
\midrule
 & AS 1 (Entreprise) & AS 2 (Coeur) & AS 3 (Coeur) & AS 4 (Entreprise)\\
Alimentation & \multicolumn{4}{c}{Avocent PM 1000 (\emph{Power Distribution Unit})}\\
Contrôleur & \multicolumn{4}{>{\columncolor{lightgray}}c}{Cyclades ACS 5000 (\emph{Advanced Console Server})}\\
Commutateur & 1 Cisco WS-C3560-24PS & 1 Cisco WS-C2960G-24TC-L & 2 HP ProCurve 2900-24G & 1 Extreme x450e-24P\\
Routeur & 1 Cisco 2801 & 2 Cisco 3825 & 4 Juniper J4350 & 2 Juniper J2300\\
Serveur & 3 & 2 & 2 & 3\\
Firewall & 1 Cisco ASA 5510 & N/A & N/A & 2 Juniper SSG20\\
Matériel & \multicolumn{4}{c}{Téléphones IP Cisco SPA962}\\
\end{tabularx}}

\subsubsection{Routeurs}
\rowcolors{1}{}{lightgray}
\noindent{\scriptsize
\begin{tabularx}{\textwidth}{l|>{\centering\arraybackslash}X>{\centering\arraybackslash}X>{\centering\arraybackslash}X>{\centering\arraybackslash}X}
						   &  \textbf{Cisco 2801} 	     &  \textbf{Cisco 3825}     & \textbf{Juniper J4350} & \textbf{Juniper J2300}\\
\midrule                                                                            
		  Ethernet Gigabit &                   \ding{52} &            \ding{52}     &                      \ding{52} &                      \ding{52}\\
          IEEE 802.1q VLAN &                   \ding{52} &            \ding{52}     &                      \ding{52} &                      \ding{52}\\
                      IPv6 &                   \ding{52} &            \ding{52}     &                      \ding{52} &                      \ding{52}\\
                Routage IP &                   \ding{52} &            \ding{52}     &                      \ding{52} &                      \ding{52}\\
                       QoS &                   \ding{52} &            \ding{52}     &                      \ding{52} &                      \ding{52}\\
                       VPN &                   \ding{52} &            \ding{52}     &                      \ding{52} &                      \ding{52}\\
                 Multicast &                   \ding{52} &            \ding{52}     &                      \ding{52} &                      \ding{52}\\
                      MPLS &                   \ding{52} &            \ding{52}     &                      \ding{52} &                      \ding{52}\\
	Système d'exploitation & Cisco IOS 2801 v12.4(22)YB5 & Cisco IOS 3825 v12.4(22) &				   JUNOS 8.2R2.4 &				    JUNOS 8.2R1.7\\
				Interfaces &  			  2 FastEthernet &          32 FastEthernet &		      4 Gigabit Ethernet &			       2 FastEthernet\\
\rowcolor{white} 
						   &							 & 	     4 Gigabit Ethernet &							     &								 \\
\end{tabularx}
}

\subsubsection{Commutateurs}

\rowcolors{1}{}{lightgray}
\noindent{\scriptsize
\begin{tabularx}{\textwidth}{l|>{\centering\arraybackslash}X>{\centering\arraybackslash}X>{\centering\arraybackslash}X>{\centering\arraybackslash}X}
						   & \textbf{Cisco WS-C3560-24PS} & \textbf{Cisco WS-C2960G-24TC-L} & \textbf{HP ProCurve 2900-24G (J9049A)} & \textbf{Extreme Network Summit X450e-24p}\\
            \midrule
          Ethernet Gigabit &                               \ding{52} &                     \ding{52} &                 \ding{52} &                                   \ding{52}\\
          IEEE 802.1q VLAN &                               \ding{52} &                     \ding{52} &                 \ding{52} &                                   \ding{52}\\
                      IPv6 &                               \ding{52} &                     \ding{52} &                 \ding{52} &                                   \ding{52}\\
                     Trunk &                               \ding{52} &                     \ding{52} &                 \ding{52} &                                   \ding{52}\\
                Routage IP &                               \ding{52} &                     \ding{52} &                 \ding{52} &                                   \ding{52}\\
                       QoS &                               \ding{52} &                     \ding{52} &                 \ding{52} &                                   \ding{52}\\
                       VPN &                               \ding{52} &                     \ding{52} &                 \ding{52} &                                   \ding{52}\\
                       PoE &                               \ding{52} &                     \ding{52} &                 \ding{52} &                                   \ding{52}\\
	Système d'exploitation &	  	   Cisco IOS C3560 v12.2(25)SEB4 & Cisco IOS C2960 v12.2(25)SEE2 &		             T.12.06 &                   ExtremeWare XOS v1150b10 \\
				Interfaces & 		     			 24 FastEthernet &		 	 24 Gigabit Ethernet & 	     24 Gigabit Ethernet & 				          24 Gigabit Ethernet \\
\rowcolor{white} 
				 		   &	 	  			  2 Gigabit Ethernet &								 &		 (10/100/1000BASE-T) &					  	  (10/100/1000BASE-T) \\
\end{tabularx}
}

\subsubsection{Firewalls}

\rowcolors{1}{}{lightgray}
\noindent{\scriptsize
\begin{tabularx}{\textwidth}{l|>{\centering\arraybackslash}X>{\centering\arraybackslash}X}
                           & \textbf{Cisco ASA 5510 Series} &         \textbf{Juniper SSG20}\\
             \midrule
					   IPS &                      \ding{52} &                      \ding{52}\\
                       VPN &               SSL, DTLS, IPSec &                          IPSec\\
           IEEE 802.1x NAC &                      \ding{52} &                      \ding{52}\\
                      DHCP &                      \ding{52} &                      \ding{52}\\
                      IPv6 &                      \ding{52} &                      \ding{52}\\
                       NAT &                      \ding{52} &                      \ding{52}\\
                Routage IP &                      \ding{52} &                      \ding{52}\\
                       QoS &                      \ding{52} &                      \ding{52}\\
    Système d'exploitation &  Cisco Adaptive Security Appliance Software v7.1(2) &            ScreenOS v6.2.0r13.0\\
				Interfaces &       	         3 FastEthernet &                 4 FastEthernet\\
\end{tabularx}
}

\clearpage

\subsection{Adressage de la plateforme}

Les plages d'adresses utilisées pour chaque AS sont les suivantes :\newline

\rowcolors{1}{}{lightgray}
\begin{tabularx}{0.962\textwidth}{XXX}
	\textbf{Numéro de de l'AS} & \textbf{Adresse IPv4} & \textbf{Adresse IPv6} \\
	\midrule
	AS1 & \lstinline!23.7.100.0/24! & \lstinline!2a00:b82:8502::/48!\\
	AS2 & \lstinline!28.5.0.0/16! & \lstinline!2e70:13::/32!\\
	AS3 & \lstinline!13.8.0.0/16! & \lstinline!2d05:37::/32!\\
	AS4 & \lstinline!4.11.100/24! & \lstinline!2a00:285:42::/48!\\
	VLAN 999 & \lstinline!10.0.0.0/8! & N/A\\
\end{tabularx}
\rowcolors{1}{}{}

\vspace{10pt}
Les valeurs des deux premiers octets des \emph{NetID} correspondent aux différentes dates de naissances des participants du projet (c'est un bon moyen de se souvenir des anniversaires !). La valeur en décimale du troisième octet est à 100 si le réseau considéré est une entreprise et à 0 si le réseau est un FAI (dans ce cas le troisième octet fait d'ailleurs parti de l'\emph{HostId} de ce réseau).

Bien évidemment le découpage CIDR est utilisé pour IPv4 et les plages utilisées sont détaillés dans les présentations détaillées des AS.

\subsection{Connexion à Internet (VLAN 999)}

Le VLAN 999 interconnecte tous les systèmes autonomes à la passerelle \lstinline!gate-net.rsr.lip6.fr! :
\begin{itemize}
	\item Les contrôleurs de console (ACS 5016) sont interconnectés les uns aux autres via ce VLAN,
	\item Les serveurs de tous les AS peuvent accéder à Internet en configurant le proxy HTTP.
\end{itemize}

Les contrôleurs de console permettent de contrôler les équipements de chaque AS : il existe un contrôleur de console par AS.

La passerelle \lstinline!gate-net.rsr.lip6.fr! fait en effet office de proxy pour HTTP et HTTPS en utilisant Squid. Les serveurs ont alors accès à Internet sur leur Interface \lstinline!eth1!.

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.8]{img/AS/vlan999.pdf}
	\caption{Représentation du VLAN 999}
	\label{fig:AS_vlan999}
\end{figure}

\clearpage
\section{AS 1 : Entreprise 1}
\label{sec:as1}

Cet AS simule une entreprise moyenne connectée à un FAI (AS 2).

Cette entreprise est protégée du trafic entrant par un firewall avant que les paquets puissent atteindre l'unique \emph{gateway} de l'AS. Ce routeur délimite le réseau interne de l'entreprise composé de trois PC/serveurs.

\begin{figure}[htbp]
	\centering
	\subfloat[Visualisation de l'AS 1]{\includegraphics[scale=0.7]{img/AS/as1.pdf}}
	\subfloat[Administration de l'AS 1]{\includegraphics[scale=0.7]{img/AS/as1_admin.pdf}}
	\caption{AS 1}
\end{figure}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=0.7]{img/AS/com_as1.pdf}
	\caption{Commutateur AS 1}
	\label{fig:PFRES_AS_com_as1}
\end{figure}

Switch Cisco Catalyst 3560

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline
\midrule 
100 & N/A & N/A & \lstinline!23.7.100.33/28! & N/A\tabularnewline
\end{tabularx}

\vspace{10pt}
Routeur Cisco Catalyst 2801

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline
\midrule
100 & \lstinline!fa0/0.100! & 19 & \lstinline!23.7.100.34/28! & N/A\tabularnewline
111 & \lstinline!fa0/0! & 19 & \lstinline!23.7.100.30/27! & \lstinline!2a00:b82:8502:112::fffe/64!\tabularnewline
112 & \lstinline!fa0/0.112! & 19 & \lstinline!23.7.100.49/29! & N/A\tabularnewline
210 & \lstinline!fa0/1! & 20 & \lstinline!28.5.254.2/30! (AS 2) & \lstinline!2a70:13:254:210::2/64! (AS 2)\tabularnewline
\end{tabularx}

\clearpage
Firewall Cisco ASA5510

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline
\midrule
100 & \lstinline!man0/0! & 13 & \lstinline!23.7.100.35/28! & N/A\tabularnewline
210 & \lstinline!man0/1! & 14 & N/A & N/A\tabularnewline
\end{tabularx}

\vspace{10pt}
\lstinline!serveur1.ent1.org!

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline
\midrule
100 & \lstinline!eth2! & 1 & \lstinline!23.7.100.36/28! & N/A\tabularnewline
111 & \lstinline!eth0! & 3 & \lstinline!23.7.100.1/27! & IPv6 autoconfiguré\tabularnewline
112 & \lstinline!eth0.112! & 3 & \lstinline!23.7.100.50/29! & N/A\tabularnewline
999 & \lstinline!eth1! & 2 & \lstinline!10.40.130.11! & N/A\tabularnewline
\end{tabularx}

\begin{rem*}
	L'adresse IPv6 associée à l'interface \lstinline!eth0! est autoconfigurée et est la suivante :
	\vspace{-13pt}\begin{center}
		 \lstinline!2a00:b82:8502:112:215:17ff:fe29:e44c!
	\end{center}\vspace{-13pt}
	où \lstinline!00:15:17:29:e4:4c! est l'adresse MAC de l'interface \lstinline!eth1!.
\end{rem*}

\lstinline!serveur2.ent1.org!

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline
\midrule 
100 & \lstinline!eth2! & 4 & \lstinline!23.7.100.37/28! & N/A\tabularnewline 
111 & \lstinline!eth0! & 6 & \lstinline!23.7.100.2/27! & IPv6 autoconfiguré\tabularnewline
999 & \lstinline!eth1! & 5 & \lstinline!10.40.130.12! & N/A\tabularnewline
\end{tabularx}

\begin{rem*}
	L'adresse IPv6 associée à l'interface \lstinline!eth0! est autoconfigurée et est la suivante :
	\vspace{-13pt}\begin{center}
		 \lstinline!2a00:b82:8502:112:215:17ff:fe29:e414!
	\end{center}\vspace{-13pt}
	où \lstinline!00:15:17:29:e4:14! est l'adresse MAC de l'interface \lstinline!eth1!.
\end{rem*}

\vspace{10pt}
\lstinline!serveur3.ent1.org!

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline 
\midrule 
100 & \lstinline!eth2! & 7 & \lstinline!23.7.100.38/28! & N/A\tabularnewline 
111 & \lstinline!eth0! & 9 & \lstinline!23.7.100.3/27! & IPv6 autoconfiguré\tabularnewline
999 & \lstinline!eth1! & 8 & \lstinline!10.40.130.13! & N/A\tabularnewline
\end{tabularx}

\begin{rem*}
	L'adresse IPv6 associée à l'interface \lstinline!eth0! est autoconfigurée et est la suivante :
	\vspace{-13pt}\begin{center}
		\lstinline!2a00:b82:8502:112:215:17ff:fe29:e412!
	\end{center}\vspace{-13pt}
	où \lstinline!00:15:17:29:e4:12! est l'adresse MAC de l'interface \lstinline!eth1!.
\end{rem*}

\vspace{10pt}
Téléphone IP Phone SPA962

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline 
\midrule 
112 & \lstinline!eth0! & 11 & \lstinline!23.7.100.51/29! & N/A\tabularnewline 
\end{tabularx}

\vspace{10pt}
Mutualisation des ports sur les équipements :

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\textwidth}{l|XX}
	\textbf{VLAN} & \textbf{Routeur Cisco 2801} & \lstinline!serveur1.ent1.org!\\
	\midrule
	100 & Virtualisé \lstinline!fa0/0.100! & Dédié \lstinline!eth2!\\
	111 & Natif \lstinline!fa0/0! & Natif \lstinline!eth0!\\
	112 & Virtualisé \lstinline!fa0/0.112! & Virtualisé \lstinline!eth0.112!\\
	210 & Dédié \lstinline!fa0/1! & --
\end{tabularx}

\clearpage
Mots de passe :

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{>{\hsize=.32\hsize}X|>{\hsize=.17\hsize\centering}X|>{\hsize=.14\hsize\centering}X|>{\hsize=.15\hsize\centering}X|>{\hsize=.22\hsize\centering}X}
\textbf{Equipement} & \textbf{Login} & \textbf{Password} & \textbf{Accès} & \textbf{IPv4}\tabularnewline 
\midrule 
Avocent ACS 5000 & \lstinline!admin! & \lstinline!avocent! & ssh/telnet/http & \lstinline!10.40.130.10!\tabularnewline
Power Management & \lstinline!admin! & \lstinline!avocent! & telnet & console\tabularnewline
Switch Cisco Catalyst 3560 & \lstinline!cisco! & \lstinline!cisco! & ssh/telnet & \lstinline!23.7.100.33/28!\tabularnewline
Routeur Cisco Catalyst 2801 & \lstinline!cisco! & \lstinline!cisco! & ssh/telnet & \lstinline!23.7.100.34/28!\tabularnewline 
Firewall Cisco ASA5510 & N/A & N/A & ssh/telnet & \lstinline!23.7.100.35/28!\tabularnewline 
\lstinline!serveur1.ent1.org! & \lstinline!root! & \lstinline!password! & ssh/console & \lstinline!23.7.100.36/28!\tabularnewline
\lstinline!serveur2.ent1.org! & \lstinline!root! & \lstinline!password! & ssh/console & \lstinline!23.7.100.37/28!\tabularnewline 
\lstinline!serveur3.ent1.org! & \lstinline!root! & \lstinline!password! & ssh/console & \lstinline!23.7.100.38/28!\tabularnewline 
Nagios & \lstinline!nagiosadmin! & \lstinline!password! & http & \lstinline!23.7.100.37/28!\tabularnewline
Cacti & \lstinline!admin! & \lstinline!password! & http & \lstinline!23.7.100.37/28!\tabularnewline
\end{tabularx}

Services de l'AS 1 :

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{l|X}
\textbf{Equipement} & \textbf{Services}\tabularnewline 
\midrule 
Routeur Cisco & DHCP\tabularnewline
\lstinline!serveur1.ent1.org! & Apache, Asterisk, \lstinline!iperf!\tabularnewline
\lstinline!serveur2.ent1.org! & Apache, DHCP (VLAN 999), IPSec, Nagios/Cacti, VPN (OpenVPN)\tabularnewline 
\lstinline!serveur3.ent1.org! & Apache, DNS, FTP (\lstinline!ProFTPD!), NTP\tabularnewline 
\end{tabularx}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.7]{img/AS/acs_as1.pdf}
	\caption{Contrôleur de console MGMT1 de l'AS 1}
	\label{fig:AS_acs_as1}
\end{figure}

\clearpage
\section{AS 2 : Coeur 1}

L'AS 2 est un FAI connecté directement à la première entreprise (AS 1) ainsi qu'à un second FAI (AS3).\newline

Ce premier FAI est composé de deux routeurs, MIR et ISS. ISS est directement connecté à un routeur de bordure de l'AS 3 via une liaison point à point ainsi qu'à un des routeurs de l'AS 4 (la seconde entreprise). MIR est quant-à lui simplement relié à l'AS 1. Ces deux routeurs sont directement relié aux serveurs du FAI via un commutateur.

\begin{figure}[htbp]
	\centering
	\advance\leftskip-1cm
	\advance\rightskip-1cm
	\subfloat[Visualisation de l'AS 2]{\includegraphics[scale=0.7]{img/AS/as2.pdf}}\quad
	\subfloat[Administration de l'AS 2]{\includegraphics[scale=0.7]{img/AS/as2_admin.pdf}}
	\caption{AS 2}
\end{figure}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=0.7]{img/AS/com_as2.pdf}
	\caption{Commutateur AS 2}
	\label{fig:PFRES_AS_com_as2}
\end{figure}

Switch Cisco Catalyst 2960

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline 
\midrule 
200 & N/A & N/A & \lstinline!28.5.0.33/28! & N/A\tabularnewline 
\end{tabularx}

\vspace{10pt}
Cisco Catalyst 3825 (MIR)

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline 
\midrule 
200 & \lstinline!Gi0/1! & 11 & \lstinline!28.5.0.34/28! & N/A\tabularnewline 
210 & \lstinline!Gi0/0! & 12 & \lstinline!28.5.254.1/30! & \lstinline!2e70:13:254:210::1/64!\tabularnewline
221 & \lstinline!Gi1/0! & 13 & \lstinline!28.5.0.49/30! & \lstinline!2e70:13:0:221::1/64!\tabularnewline
222 & \lstinline!Gi2/0! & 14 & \lstinline!28.5.0.29/27! & \lstinline!2e70:13:0:222::fffd/64!\tabularnewline
\end{tabularx}

\vspace{50pt}
Cisco Catalyst 3825 (ISS)

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline 
\midrule 
200 & \lstinline!Gi0/1! & 17 & \lstinline!28.5.0.35/28! & N/A\tabularnewline 
221 & \lstinline!Gi1/0! & 19 & \lstinline!28.5.0.50/30! & \lstinline!2e70:13:0:221::2/64!\tabularnewline
222 & \lstinline!Gi2/0! & 20 & \lstinline!28.5.0.30/27! & \lstinline!2e70:13:0:222::fffe/64!\tabularnewline
320 & \lstinline!Gi0/0! & 18 & \lstinline!28.5.254.5/30! & \lstinline!2e70:13:254:320::1/64!\tabularnewline
420 & \lstinline!Fa1/0! & 16 & \lstinline!28.5.254.9/30! & \lstinline!2e70:13:254:420::1/64!\tabularnewline
\end{tabularx}

\vspace{10pt}
\lstinline!serveur1.core1.org!

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline 
\midrule 
200 & \lstinline!eth2! & 1 & \lstinline!28.5.0.36/28! & N/A\tabularnewline 
222 & \lstinline!eth0! & 3 & \lstinline!28.5.0.1/27! & \lstinline!2e70:13:0:222::1/64!\tabularnewline
999 & \lstinline!eth1! & 2 & \lstinline!10.40.130.21! & N/A\tabularnewline
\end{tabularx}

\vspace{10pt}
\lstinline!serveur2.core1.org!

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline 
\midrule 
200 & \lstinline!eth2! & 4 & \lstinline!28.5.0.37/28! & N/A\tabularnewline 
222 & \lstinline!eth0! & 6 & \lstinline!28.5.0.2/27! & \lstinline!2e70:13:0:222::2/64!\tabularnewline
999 & \lstinline!eth1! & 5 & \lstinline!10.40.130.22! & N/A\tabularnewline
\end{tabularx}

\vspace{10pt}
Mots de passe :

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{>{\hsize=.32\hsize}X|>{\hsize=.17\hsize\centering}X|>{\hsize=.14\hsize\centering}X|>{\hsize=.15\hsize\centering}X|>{\hsize=.22\hsize\centering}X}
\textbf{Equipement} & \textbf{Login} & \textbf{Password} & \textbf{Accès} & \textbf{IPv4}\tabularnewline 
\midrule 
Avocent ACS 5000 & \lstinline!admin! & \lstinline!avocent! & ssh/telnet/http & \lstinline!10.40.130.20!\tabularnewline
Power Management & \lstinline!admin! & \lstinline!avocent! & telnet & console\tabularnewline
Switch Cisco Catalyst 2960 & \lstinline!cisco! & \lstinline!cisco! & ssh/telnet & \lstinline!28.5.0.33/28!\tabularnewline
Cisco Catalyst 3825 (MIR) & \lstinline!cisco! & \lstinline!cisco! & ssh/telnet & \lstinline!28.5.0.34/28!\tabularnewline 
Cisco Catalyst 3825 (ISS) & \lstinline!cisco! & \lstinline!cisco! & ssh/telnet & \lstinline!28.5.0.35/28!\tabularnewline 
\lstinline!serveur1.core1.org! & \lstinline!root! & \lstinline!password! & ssh/console & \lstinline!28.5.0.36/28!\tabularnewline
\lstinline!serveur2.core1.org! & \lstinline!root! & \lstinline!password! & ssh/console & \lstinline!28.5.0.37/28!\tabularnewline 
Nagios & \lstinline!nagiosadmin! & \lstinline!password! & http & \lstinline!28.5.0.37/28!\tabularnewline
Cacti & \lstinline!admin! & \lstinline!password! & http & \lstinline!28.5.0.37/28!\tabularnewline
\end{tabularx}

\vspace{10pt}
Services de l'AS 2 :

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{l|X}
\textbf{Equipement} & \textbf{Services}\tabularnewline 
\midrule 
Routeur Cisco MIR (\lstinline!28.5.0.29/27!) & DHCP\tabularnewline
\lstinline!serveur1.core1.org! & Apache\tabularnewline
\lstinline!serveur2.core1.org! & Apache, NTP, DNS (Cacti/Nagios)\tabularnewline 
\end{tabularx}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.7]{img/AS/acs_as2.pdf}
	\caption{Contrôleur de console MGMT2 de l'AS 2}
	\label{fig:AS_acs_as2}
\end{figure}

\clearpage
\section{AS 3 : Coeur 2}
Ce second FAI est connecté à l'entreprise 2 par un premier routeur. Un second routeur est utilisé afin de relié directement le premier FAI (AS 2). Enfin un dernier routeur (routeur de cœur d'AS) est placé entre les deux routeurs de bordures, celui-ci a pour rôle de permettre aux clients d'accéder aux serveurs de ce FAI.\newline

\begin{figure}[htbp]
	\centering
	\advance\leftskip-2cm
	\advance\rightskip-2cm
	\subfloat[Visualisation de l'AS 3]{\includegraphics[scale=0.7]{img/AS/as3_.pdf}}
	\subfloat[Administration de l'AS 3]{\includegraphics[scale=0.7]{img/AS/as3_admin_.pdf}}
	\caption{AS 3}
\end{figure}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=0.7]{img/AS/com_as3_.pdf}
	\caption{Commutateur AS 3}
	\label{fig:PFRES_AS_com_as3_}
	\vspace{-25pt}
\end{figure}

Routeur Juniper 1

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline 
\midrule 
300 & \lstinline!ge-0/0/0! & HP1 9 & \lstinline!13.8.0.35/28! & N/A\tabularnewline 
331 & \lstinline!ge-0/0/3! & HP1 12 & \lstinline!13.8.0.30/27! & \lstinline!2d05:37:0:331::fffe/64!\tabularnewline
332 & \lstinline!ge-0/0/1! & HP1 10 & \lstinline!13.8.0.49/30! & \lstinline!2d05:37:0:332::1/64!\tabularnewline
333 & \lstinline!ge-0/0/2! & HP1 11 & \lstinline!13.8.0.53/30! & \lstinline!2d05:37:0:333::1/64!\tabularnewline
N/A & \lstinline!lo0.0!    & N/A    & \lstinline!10.255.3.1/32! & N/A\tabularnewline
\end{tabularx}

\vspace{10pt}
Routeur Juniper 2

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline 
\midrule 
300 & \lstinline!Ge-0/0/0! & HP1 15 & \lstinline!13.8.0.36/28! & N/A\tabularnewline 
332 & \lstinline!Ge-0/0/1! & HP1 16 & \lstinline!13.8.0.50/30! & \lstinline!2d05:37:0:332::2/64!\tabularnewline
320 & \lstinline!Ge-0/0/3! & HP1 18 & \lstinline!28.5.254.6/30! (AS 2) & \lstinline!2e70:13:254:320::2/64! (AS 2)\tabularnewline
N/A & \lstinline!lo0.0!    & N/A    & \lstinline!10.255.3.2/32! & N/A\tabularnewline
\end{tabularx}

\vspace{10pt}
Routeur Juniper 4

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline 
\midrule 
300 & \lstinline!Ge-0/0/0! & HP2 15 & \lstinline!13.8.0.38/28! & N/A\tabularnewline 
333 & \lstinline!Ge-0/0/1! & HP2 16 & \lstinline!13.8.0.54/30! & \lstinline!2d05:37:0:333::2/64!\tabularnewline
430 & \lstinline!Ge-0/0/3! & HP2 18 & \lstinline!13.8.254.1/30! & \lstinline!2d05:37:254:430::1/64!\tabularnewline
N/A & \lstinline!lo0.0!    & N/A    & \lstinline!10.255.3.4/32! & N/A\tabularnewline
\end{tabularx}

\vspace{10pt}
\lstinline!medial.core2.org!

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline 
\midrule 
300 & \lstinline!eth2! & HP2 1 & \lstinline!13.8.0.39/28! & N/A\tabularnewline 
331 & \lstinline!eth0! & HP2 3 & \lstinline!13.8.0.1/27! & \lstinline!2d05:37:0:331::1/64!\tabularnewline
999 & \lstinline!eth1! & HP2 2 & \lstinline!10.40.130.32! & N/A\tabularnewline
\end{tabularx}

\vspace{10pt}
\lstinline!pseudol.core2.org!

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline 
\midrule 
300 & \lstinline!eth2! & HP1 1 & \lstinline!13.8.0.40/28! & N/A\tabularnewline 
331 & \lstinline!eth0! & HP1 3 & \lstinline!13.8.0.3/27! & \lstinline!2d05:37:0:331::3/64!\tabularnewline
999 & \lstinline!eth1! & HP1 2 & \lstinline!10.40.130.31! & N/A\tabularnewline
\end{tabularx}

\vspace{10pt}
Mots de passe :

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{>{\hsize=.32\hsize}X|>{\hsize=.17\hsize\centering}X|>{\hsize=.14\hsize\centering}X|>{\hsize=.15\hsize\centering}X|>{\hsize=.22\hsize\centering}X}
\textbf{Equipement} & \textbf{Login} & \textbf{Password} & \textbf{Accès} & \textbf{IPv4}\tabularnewline 
\midrule 
Avocent ACS 5000 & \lstinline!admin! & \lstinline!avocent! & ssh/telnet/http & \lstinline!10.40.130.30!\tabularnewline 
Power Management & \lstinline!admin! & \lstinline!avocent! & telnet & N/A\tabularnewline
HP ProCurve 1 & \lstinline!root! & \lstinline!hp! & ssh/telnet & \lstinline!13.8.0.33/28!\tabularnewline
HP ProCurve 2 & \lstinline!root! & \lstinline!hp! & ssh/telnet & \lstinline!13.8.0.34/28!\tabularnewline 
Routeur Juniper 1 & \lstinline!admin! & \lstinline!Juniper! & ssh/telnet & \lstinline!13.8.0.35/28!\tabularnewline 
Routeur Juniper 2 & \lstinline!admin! & \lstinline!Juniper! & ssh/telnet & \lstinline!13.8.0.36/28!\tabularnewline 
Routeur Juniper 4 & \lstinline!admin! & \lstinline!Juniper! & ssh/telnet & \lstinline!13.8.0.38/28!\tabularnewline 
\lstinline!medial.core2.org! & \lstinline!root! & \lstinline!password! & ssh/console & \lstinline!13.8.0.39/28!\tabularnewline 
\lstinline!pseudol.core2.org! & \lstinline!root! & \lstinline!password! & ssh/console & \lstinline!13.8.0.40/28!\tabularnewline 
Nagios & \lstinline!nagiosadmin! & \lstinline!password! & http & \lstinline!13.8.0.40/28!\tabularnewline
Cacti & \lstinline!admin! & \lstinline!password! & http & \lstinline!13.8.0.40/28!\tabularnewline
\end{tabularx}

\vspace{10pt}
Services de l'AS 3 :

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{l|X}
\textbf{Equipement} & \textbf{Services}\tabularnewline 
\midrule 
Routeur Juniper 1 (\lstinline!13.8.0.30!) & DHCP\tabularnewline
\lstinline!medial.core2.org! & Apache\tabularnewline
\lstinline!pseudol.core2.org! & Apache, Cacti/Nagios, DNS, NTP\tabularnewline 
\end{tabularx}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.7]{img/AS/acs_as3.pdf}
	\caption{Contrôleur de console MGMT3 de l'AS 3}
	\label{fig:AS_acs_as3}
\end{figure}

\clearpage
\subsection*{Prise en compte du routeur Juniper 3 dans la topologie}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=0.7]{img/AS/as3.pdf}
	\caption{Visualisation de l’AS 3}
	\label{fig:PFRES_AS_as3}
\end{figure}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=0.7]{img/AS/com_as3.pdf}
	\caption{Commutateur AS 3 avec Juniper 3}
	\label{fig:PFRES_AS_com_as3}
\end{figure}

\clearpage
\section{AS 4 : Entreprise 2}
\label{sec:as4}

L'AS 4 simule une entreprise plus importante que celle de l'AS 1 et avec des moyens financiers plus importants.

Cette entreprise possède deux routeurs qui sont chacun connectés à un FAI différent afin d'améliorer la fiabilité de la connexion Internet (\emph{multi-homing}). Bien évidement ces routeurs tout deux protégés par un firewall matériel. Une DMZ (\emph{DeMilitarized Zone}) à été mise en place dans laquelle sont installés les serveurs publiques de l'entreprise susceptible d'être accédés depuis Internet sans entrer dans le véritable réseau de cette entreprise. Le réseau local de l'entreprise est constitué de deux serveurs/PC et d'un \emph{load balancer}. Ce dernier récupère tout le trafic sortant du réseau privé et le répartit entre les deux FAI selon la charge sur leur réseau par exemple.

\begin{figure}[htbp]
	\centering
	\advance\leftskip-1cm
	\advance\rightskip-1cm
	\subfloat[Visualisation de l'AS 4]{\includegraphics[scale=0.7]{img/AS/as4.pdf}}
	\subfloat[Administration de l'AS 4]{\includegraphics[scale=0.7]{img/AS/as4_admin.pdf}}
	\caption{AS 4}
\end{figure}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=0.7]{img/AS/com_as4.pdf}
	\caption{Commutateur AS 4}
	\label{fig:PFRES_AS_com_as4}
\end{figure}

Extreme Networks Summit

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline 
\midrule 
400 & N/A & N/A & \lstinline!4.11.100.33/28! & N/A\tabularnewline 
\end{tabularx}

\vspace{30pt}
Routeur Juniper 1

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline 
\midrule 
400 & \lstinline!fe-0/0/0.1! & 19 & \lstinline!4.11.100.34/28! & N/A\tabularnewline 
441 & \lstinline!fe-0/0/1.0! & 20 & \lstinline!4.11.100.54/29! & \lstinline!2a00:285:42:441::fffe/64!\tabularnewline 
442 & \lstinline!fe-0/0/1.1! & 19 & \lstinline!4.11.100.62/29! & \lstinline!2a00:285:42:442::fffe/64!\tabularnewline 
444 & \lstinline!fe-0/0/1.2! & 19 & \lstinline!4.11.100.65/28! & N/A\tabularnewline 
420 & \lstinline!fe-0/0/0.0! & 20 & \lstinline!28.5.254.10/30! (AS 2) & \lstinline!2e70:13:254:420::2/64!\tabularnewline
\end{tabularx}

\vspace{10pt}
Routeur Juniper 2

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline 
\midrule 
400 & \lstinline!fe-0/0/0.1! & 21 & \lstinline!4.11.100.35/28! & N/A\tabularnewline 
441 & \lstinline!fe-0/0/1.0! & 22 & \lstinline!4.11.100.53/29! & \lstinline!2a00:285:42:441::fffd/64!\tabularnewline 
442 & \lstinline!fe-0/0/1.1! & 22 & \lstinline!4.11.100.61/29! & \lstinline!2a00:285:42:442::fffd/64!\tabularnewline 
430 & \lstinline!fe-0/0/0.0! & 21 & \lstinline!13.8.254.2/30! (AS 3) & \lstinline!2d05:37:254:430::2/64!\tabularnewline
\end{tabularx}

\vspace{10pt}
Firewall Juniper 1

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline 
\midrule 
400 & \lstinline!eth0! & 10 & \lstinline!4.11.100.36/28! & N/A\tabularnewline 
420 & \lstinline!eth1! & 11 & N/A & N/A\tabularnewline 
421 & \lstinline!eth2! & 12 & N/A & N/A\tabularnewline 
\end{tabularx}

\vspace{10pt}
Firewall Juniper 2

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline 
\midrule 
400 & \lstinline!eth0! & 13 & \lstinline!4.11.100.37/28! & N/A\tabularnewline
430 & \lstinline!eth1! & 14 & N/A & N/A\tabularnewline 
431 & \lstinline!eth2! & 15 & N/A & N/A\tabularnewline 
\end{tabularx}

\vspace{10pt}
\lstinline!serveur1.ent2.org!

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline
\midrule
400 & \lstinline!eth2! & 1 & \lstinline!4.11.100.38/28! & N/A\tabularnewline
443 & \lstinline!eth0! & 3 & \lstinline!4.11.100.1/27! & \lstinline!2a00:285:42:443::1/64!\tabularnewline
444 & \lstinline!eth0.444! & 3 & \lstinline!4.11.100.66/28! & N/A\tabularnewline
999 & \lstinline!eth1! & 2 & \lstinline!10.40.130.41! & N/A\tabularnewline
\end{tabularx}

\vspace{10pt}
\lstinline!serveur2.ent2.org!

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline
\midrule 
400 & \lstinline!eth2! & 4 & \lstinline!4.11.100.39/28! & N/A\tabularnewline 
443 & \lstinline!eth0! & 6 & \lstinline!4.11.100.2/27! & \lstinline!2a00:285:42:443::2/64!\tabularnewline
999 & \lstinline!eth1! & 5 & \lstinline!10.40.130.42! & N/A\tabularnewline
\end{tabularx}

\vspace{10pt}
\lstinline!serveur3.ent2.org!

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline 
\midrule 
400 & \lstinline!eth2.400! & 7 & \lstinline!4.11.100.40/28! & N/A\tabularnewline 
441 & \lstinline!eth2.441! & 7 & \lstinline!4.11.100.49/29! & \lstinline!2a00:285:42:441::1/64!\tabularnewline
442 & \lstinline!eth1! & 8 & \lstinline!4.11.100.57/29! & \lstinline!2a00:285:42:442::1/64!\tabularnewline
443 & \lstinline!eth0! & 9 & \lstinline!4.11.100.3/27! & \lstinline!2a00:285:42:443::3/64!\tabularnewline
999 & \lstinline!eth1.999! & 9 & \lstinline!10.40.130.43! & N/A\tabularnewline
\end{tabularx}

\vspace{30pt}
Téléphone IP Phone SPA962

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{c|>{\hsize=.19\hsize\centering}X|c|>{\hsize=.35\hsize}X|>{\hsize=.46\hsize}X}
\textbf{VLAN} & \textbf{Interface} & \textbf{Switch} & \textbf{IPv4} & \textbf{IPv6}\tabularnewline 
\midrule 
444 & \lstinline!eth0! & 16 & \lstinline!4.11.100.67/28! & N/A\tabularnewline 
\end{tabularx}

\vspace{10pt}
Mutualisation des ports sur les équipements concernés :

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\textwidth}{l|XXXX}
	\textbf{VLAN} & \textbf{Routeur Juniper 1} & \textbf{Routeur Juniper 2} & \lstinline!serveur1! & \lstinline!serveur3!\\
	\midrule
	400 & Virtualisé \lstinline!0.1! & Virtualisé \lstinline!0.1! & Dédié \lstinline!eth2! & Virtualisé \lstinline!eth2.400!\\
	441 & Natif \lstinline!1.0! & Natif \lstinline!1.0! & -- & Natif \lstinline!eth2! (DMZ)\\
	442 & Virtualisé \lstinline!1.1! & Virtualisé \lstinline!1.1! & -- & Dédié \lstinline!eth1! (LB)\\
	443 & -- & -- & Natif \lstinline!eth0! & Dédié \lstinline!eth0! (LB)\\
	444 & Virtualisé \lstinline!1.2! & -- & Virtualisé \lstinline!eth0.444! & -- \\
	420 & Natif \lstinline!0.0! & -- & -- & -- \\
	430 & -- & Natif \lstinline!0.0! & -- & --
\end{tabularx}

\vspace{10pt}
Mots de passe :

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{>{\hsize=.32\hsize}X|>{\hsize=.17\hsize\centering}X|>{\hsize=.14\hsize\centering}X|>{\hsize=.15\hsize\centering}X|>{\hsize=.22\hsize\centering}X}
\textbf{Equipement} & \textbf{Login} & \textbf{Password} & \textbf{Accès} & \textbf{IPv4}\tabularnewline 
\midrule 
Avocent ACS 5000 & \lstinline!admin! & \lstinline!avocent! & ssh/telnet/http & \lstinline!10.40.130.40!\tabularnewline 
Power Management & \lstinline!admin! & \lstinline!avocent! & telnet & console\tabularnewline
Extreme Networks Summit & \lstinline!admin! & N/A & ssh/telnet & \lstinline!4.11.100.33/28!\tabularnewline
Routeur Juniper 1 & \lstinline!root! & \lstinline!Juniper! & ssh/telnet & \lstinline!4.11.100.34/28!\tabularnewline 
Routeur Juniper 2 & \lstinline!root! & \lstinline!Juniper! & ssh/telnet & \lstinline!4.11.100.35/28!\tabularnewline 
Firewall Juniper 1 & \lstinline!netscreen! & \lstinline!netscreen! & ssh/telnet & \lstinline!4.11.100.36/28!\tabularnewline 
Firewall Juniper 2 & \lstinline!netscreen! & \lstinline!netscreen! & ssh/telnet & \lstinline!4.11.100.37/28!\tabularnewline
\lstinline!serveur1.ent2.org! & \lstinline!root! & \lstinline!password! & ssh/console & \lstinline!4.11.100.38/28!\tabularnewline
\lstinline!serveur2.ent2.org! & \lstinline!root! & \lstinline!password! & ssh/console & \lstinline!4.11.100.39/28!\tabularnewline 
\lstinline!serveur3.ent2.org! & \lstinline!root! & \lstinline!password! & ssh/console & \lstinline!4.11.100.40/28!\tabularnewline
Nagios & \lstinline!nagiosadmin! & \lstinline!password! & http & \lstinline!4.11.100.40/28!\tabularnewline
Cacti & \lstinline!admin! & \lstinline!password! & http & \lstinline!4.11.100.40/28!\tabularnewline
\end{tabularx}

\vspace{7pt}
Services de l'AS 4 :

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{l|X}
\textbf{Equipement} & \textbf{Services}\tabularnewline 
\midrule 
\lstinline!serveur1.ent2.org! & Apache, Asterisk, IPSec, VPN (OpenVPN)\tabularnewline
\lstinline!serveur2.ent2.org! & Apache, Nagios/Cacti\tabularnewline 
\lstinline!serveur3.ent2.org! & Apache, DHCP, DNS, FTP (ProFTPD), \lstinline!iperf!, NTP\tabularnewline
\end{tabularx}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.7]{img/AS/acs_as4.pdf}
	\caption{Contrôleur de console MGMT4 de l'AS 4}
	\label{fig:AS_acs_as4}
\end{figure}

\clearpage
\section{Câblage des équipements}
\label{sec:cablage}

\begin{center}
\rowcolors{1}{}{lightgray}
\begin{longtable}{>{\bfseries}c|clllll}
    \multicolumn{1}{l}{\textbf{Câble}} 				& 
	\multicolumn{1}{l}{\textbf{AS}} 				& 
	\multicolumn{1}{l}{\textbf{Port source}} 		& 
	\multicolumn{1}{l}{\textbf{Port destination}} 	& 
	\multicolumn{1}{l}{\textbf{Adaptateur}} 			& 
	\multicolumn{1}{l}{\textbf{Couleur}}			& 
	\multicolumn{1}{l}{\textbf{Droit}}				\\ \midrule 
	\endfirsthead

	\multicolumn{7}{c}%
	{{\bfseries \tablename\ \thetable{} -- continué de la page précédente}} \\
	\multicolumn{1}{l}{\textbf{Câble}} 				& 
	\multicolumn{1}{l}{\textbf{AS}}					& 
	\multicolumn{1}{l}{\textbf{Port source}}		& 
	\multicolumn{1}{l}{\textbf{Port destination}}	& 
	\multicolumn{1}{l}{\textbf{Adaptateur}}			& 
	\multicolumn{1}{l}{\textbf{Couleur}}			& 
	\multicolumn{1}{l}{\textbf{Droit}}				\\ \midrule
	\endhead

	\midrule \multicolumn{7}{r}{{Continue sur la page suivante}} \\ \midrule
	\endfoot

	\hline
	\endlastfoot
	
	1 & 1 & C3560 port 1 & \lstinline!serveur1.ent1! port \lstinline!eth2! & N/A & Bleu & Droit \\
	2 & 1 & C3560 port 2 & \lstinline!serveur1.ent1! port \lstinline!eth1! & N/A & Bleu & Droit \\
	3 & 1 & C3560 port 3 & \lstinline!serveur1.ent1! port \lstinline!eth0! & N/A & Bleu & Droit \\
	4 & 1 & C3560 port 4 & \lstinline!serveur2.ent1! port \lstinline!eth2! & N/A & Bleu & Droit \\
	5 & 1 & C3560 port 5 & \lstinline!serveur2.ent1! port \lstinline!eth1! & N/A & Bleu & Droit \\
	6 & 1 & C3560 port 6 & \lstinline!serveur2.ent1! port \lstinline!eth0! & N/A & Bleu & Droit \\
	7 & 1 & C3560 port 7 & \lstinline!serveur3.ent1! port \lstinline!eth2! & N/A & Bleu & Droit \\
	8 & 1 & C3560 port 8 & \lstinline!serveur3.ent1! port \lstinline!eth1! & N/A & Bleu & Droit \\
	9 & 1 & C3560 port 9 & \lstinline!serveur3.ent1! port \lstinline!eth0! & N/A & Bleu & Droit \\
	10 & 1 & C3560 port 13 & ASA5510 port \lstinline!MGMT! & N/A & Bleu & Droit \\
	11 & 1 & C3560 port 14  & ASA5510 port \lstinline!eth1! & N/A & Bleu & Droit \\
	12 & 1 & C3560 port 15 & ASA5510 port \lstinline!eth2! & N/A & Bleu & Droit \\
	14 & 1 & C3560 port 19 & Cisco 2800 port \lstinline!fa0/0! & N/A & Bleu & Droit \\
	15 & 1 & C3560 port 20 & Cisco 2800 port \lstinline!fa0/1! & N/A & Bleu & Droit \\
	17 & 2 & C2960 port 1 & \lstinline!serveur1.core1! port \lstinline!eth2! & N/A & Bleu & Droit \\
	18 & 2 & C2960 port 2 & \lstinline!serveur1.core1! port \lstinline!eth1! & N/A & Bleu & Droit \\
	19 & 2 & C2960 port 3 & \lstinline!serveur1.core1! port \lstinline!eth0! & N/A & Bleu & Droit \\
	20 & 2 & C2960 port 4 & \lstinline!serveur2.core1! port \lstinline!eth2! & N/A & Bleu & Droit \\
	21 & 2 & C2960 port 5 & \lstinline!serveur2.core1! port \lstinline!eth1! & N/A & Bleu & Droit \\
	22 & 2 & C2960 port 6 & \lstinline!serveur2.core1! port \lstinline!eth0! & N/A & Bleu & Droit \\
	23 & 2 & C2960 port 11 & MIR port \lstinline!Ge0/1! & N/A & Bleu & Droit                 \\
	24 & 2 & C2960 port 12 & MIR port \lstinline!Ge0/0! & N/A & Bleu & Droit                 \\
	25 & 2 & C2960 port 13 & MIR port \lstinline!Ge1/0! & N/A & Bleu & Droit                 \\
	26 & 2 & C2960 port 14  & MIR port \lstinline!Ge2/0! & N/A & Bleu & Droit                \\
	27 & 2 & C2960 port 17 & ISS port \lstinline!Ge0/1! & N/A & Bleu & Droit                 \\
	28 & 2 & C2960 port 18 & ISS port \lstinline!Ge0/0! & N/A & Bleu & Droit                 \\
	29 & 2 & C2960 port 19 & ISS port \lstinline!Ge1/0! & N/A & Bleu & Droit                 \\
	30 & 2 & C2960 port 20 & ISS port \lstinline!Ge2/0! & N/A & Bleu & Droit                 \\
	13 & 2 & C2960 port 16 & ISS port \lstinline!Fa0/0! & N/A & Bleu & Droit          		 \\
	31 & 3 & HP1 port 1 & PSEUDOL port \lstinline!eth2! & N/A & Bleu & Droit                 \\
	32 & 3 & HP1 port 2 & PSEUDOL port \lstinline!eth1! & N/A & Bleu & Droit                 \\
	33 & 3 & HP1 port 3 & PSEUDOL port \lstinline!eth0! & N/A & Bleu & Droit                 \\
	34 & 3 & HP2 port 1 & MEDIAL port \lstinline!eth2! & N/A & Jaune & Droit                 \\
	35 & 3 & HP2 port 2 & MEDIAL port \lstinline!eth1! & N/A & Jaune & Droit                 \\
	36 & 3 & HP2 port 3 & MEDIAL port \lstinline!eth0! & N/A & Jaune & Droit                 \\
	40 & 4 & Summit port 1 & \lstinline!serveur1.ent2! port \lstinline!eth2! & N/A & Bleu & Droit \\
	41 & 4 & Summit port 2 & \lstinline!serveur1.ent2! port \lstinline!eth1! & N/A & Bleu & Droit \\
	42 & 4 & Summit port 3 & \lstinline!serveur1.ent2! port \lstinline!eth0! & N/A & Bleu & Droit \\
	46 & 4 & Summit port 4 & \lstinline!serveur2.ent2! port \lstinline!eth2! & N/A & Bleu & Droit \\
	47 & 4 & Summit port 5 & \lstinline!serveur2.ent2! port \lstinline!eth1! & N/A & Bleu & Droit \\
	48 & 4 & Summit port 6 & \lstinline!serveur2.ent2! port \lstinline!eth0! & N/A & Bleu & Droit \\
	49 & 4 & Summit port 7 & \lstinline!serveur3.ent2! port \lstinline!eth2! & N/A & Bleu & Droit \\
	50 & 4 & Summit port 8 & \lstinline!serveur3.ent2! port \lstinline!eth1! & N/A & Bleu & Droit \\
	51 & 4 & Summit port 9 & \lstinline!serveur3.ent2! port \lstinline!eth0! & N/A & Bleu & Droit \\
	52 & 4 & Summit port 10 & \lstinline!Firewall1.ent2! port 0/0 (\lstinline!eth0!) & N/A & Bleu & Droit \\
	53 & 4 & Summit port 11 & \lstinline!Firewall1.ent2! port 0/1 (\lstinline!eth1!) & N/A & Bleu & Droit \\
	54 & 4 & Summit port 12 & \lstinline!Firewall1.ent2! port 0/2 (\lstinline!eth2!) & N/A & Bleu & Droit \\
	55 & 4 & Summit port 13 & \lstinline!Firewall2.ent2! port 0/0 (\lstinline!eth0!) & N/A & Bleu & Droit \\
	56 & 4 & Summit port 14 & \lstinline!Firewall2.ent2! port 0/1 (\lstinline!eth1!) & N/A & Bleu & Droit \\
	57 & 4 & Summit port 15 & \lstinline!Firewall2.ent2! port 0/2 (\lstinline!eth2!) & N/A & Bleu & Droit \\
	58 & 4 & Summit port 19 & J2300-1 PORT0 (fe-0/0/0) & N/A & Blanc & Droit \\ 
	59 & 4 & Summit port 20 & J2300-1 PORT1 (fe-0/0/1) & N/A & Blanc & Droit \\ 
	60 & 4 & Summit port 21 & J2300-2 PORT0 (fe-0/0/0) & N/A & Blanc & Droit \\ 
	61 & 4 & Summit port 22 & J2300-2 PORT1 (fe-0/0/1) & N/A & Blanc & Droit \\ 
	70 & 1 & C3560 port 11 & IP Phone 1 port WAN & N/A & Jaune & Droit \\
	71 & 4 & Summit port 16 & IP Phone 2 port WAN & N/A & Jaune & Droit \\
	80 & 3 & HP1 port 9 & J1 port \lstinline!Ge-0/0/0! & N/A & Gris & Croisé \\
	81 & 3 & HP1 port 10 & J1 port \lstinline!Ge-0/0/1! & N/A & Gris & Croisé \\
	82 & 3 & HP1 port 11 & J1 port \lstinline!Ge-0/0/2! & N/A & Gris & Croisé \\
	83 & 3 & HP1 port 12 & J1 port \lstinline!Ge-0/0/3! & N/A & Gris & Croisé \\
	84 & 3 & HP1 port 15 & J2 port \lstinline!Ge-0/0/0! & N/A & Gris & Croisé \\
	85 & 3 & HP1 port 16 & J2 port \lstinline!Ge-0/0/1! & N/A & Gris & Croisé \\
	86 & 3 & HP1 port 17 & J2 port \lstinline!Ge-0/0/2! & N/A & Gris & Croisé \\
	87 & 3 & HP1 port 18 & J2 port \lstinline!Ge-0/0/3! & N/A & Gris & Croisé \\
	92 & 3 & HP2 port 15 & J4 port \lstinline!Ge-0/0/0! & N/A & Gris & Croisé \\
	93 & 3 & HP2 port 16 & J4 port \lstinline!Ge-0/0/1! & N/A & Gris & Croisé \\
	94 & 3 & HP2 port 17 & J4 port \lstinline!Ge-0/0/2! & N/A & Gris & Croisé \\
	95 & 3 & HP2 port 18 & J4 port \lstinline!Ge-0/0/3! & N/A & Gris & Croisé \\
	110 & 1 & C3560 port 18 & MGMT1 port \lstinline!10/100! & N/A & Bleu & Droit \\
	111 & 1 & MGMT1 port 1 & C3560 port \lstinline!console! & ADB0025 & Blanc & Droit \\
	112 & 1 & MGMT1 port 2 & Cisco 2800 port \lstinline!console! & ADB0025 & Noir & Droit \\
	113 & 1 & MGMT1 port 3 & ASA5510 port \lstinline!console! & ADB0025 & Blanc & Droit \\
	116 & 1 & MGMT1 port 6 & \lstinline!serveur1.ent1! port \lstinline!console! & ADB0039 & Blanc & Droit \\
	117 & 1 & MGMT1 port 7 & \lstinline!serveur2.ent1! port \lstinline!console! & ADB0039 & Blanc & Droit \\
	118 & 1 & MGMT1 port 8 & \lstinline!serveur3.ent1! port \lstinline!console! & ADB0039 & Blanc & Droit \\
	119 & 1 & MGMT1 port 16 & PDU-AS1 port \lstinline!console! & N/A & Noir & Droit    \\
	120 & 2 & C2960 port 7 & MGMT2 port \lstinline!10/100! & N/A & Bleu & Droit        \\
	121 & 2 & MGMT2 port 1 & C2960 port \lstinline!console! & ADB0025 & Blanc & Droit  \\
	122 & 2 & MGMT2 port 2 & MIR port \lstinline!console! & ADB0025 & Bleu & Droit     \\
	123 & 2 & MGMT2 port 3 & ISS port \lstinline!console! & ADB0025 & Bleu & Droit     \\
	127 & 2 & MGMT2 port 7 & \lstinline!serveur1.core1! port \lstinline!console! & ADB0039 & Blanc & Droit \\
	128 & 2 & MGMT2 port 8 & \lstinline!serveur2.core1! port \lstinline!console! & ADB0039 & Blanc & Droit \\
	129 & 2 & MGMT2 port 16 & PDU-AS2 port \lstinline!console! & N/A & Noir & Droit  \\
	130 & 3 & HP1 port 21 & MGMT3 port \lstinline!10/100! & N/A & Bleu & Droit       \\
	131 & 3 & MGMT3 port 1 & HP1 port \lstinline!console! & (ADB0039) & Bleu clair & Rollover \\
	132 & 3 & MGMT3 port 2 & HP2 port \lstinline!console! & (ADB0039) & Bleu clair & Rollover \\
	133 & 3 & MGMT3 port 3 & J1 port \lstinline!console! & ADB0025 & Bleu & Droit \\
	134 & 3 & MGMT3 port 4 & J2 port \lstinline!console! & ADB0025 & Bleu & Droit \\
	135 & 3 & MGMT3 port 5 & J3 port \lstinline!console! & ADB0025 & Bleu & Droit \\
	136 & 3 & MGMT3 port 6 & J4 port \lstinline!console! & ADB0025 & Bleu & Droit \\
	137 & 3 & MGMT3 port 7 & PSEUDOL port \lstinline!console! & ADB0039 & Blanc & Droit \\
	138 & 3 & MGMT3 port 8 & MEDIAL port \lstinline!console! & ADB0039 & Blanc & Droit  \\
	139 & 3 & MGMT3 port 16 & PDU-AS3 port \lstinline!console! & N/A & Noir & Droit     \\
	140 & 4 & Summit port 17 & MGMT4 port \lstinline!10/100! & N/A & Bleu & Droit       \\
	141 & 4 & MGMT4 port 1 & Summit port \lstinline!console! & (ADB0039) & Blanc & Rollover \\
	142 & 4 & MGMT4 port 2  & J2300-1 port \lstinline!console! & ADB0025 & Bleu & Droit  \\
	143 & 4 & MGMT4 port 3 & J2300-2 port \lstinline!console! & ADB0025 & Bleu & Droit   \\
	144 & 4 & MGMT4 port 4 & \lstinline!Firewall1.ent2! port \lstinline!console! & ADB0025 & Blanc & Droit \\
	145 & 4 & MGMT4 port 5 & \lstinline!Firewall2.ent2! port \lstinline!console! & ADB0025 & Blanc & Droit \\
	146 & 4 & MGMT4 port 6 & \lstinline!serveur1.ent2! port \lstinline!console! & ADB0039 & Blanc & Droit  \\
	147 & 4 & MGMT4 port 7 & \lstinline!serveur2.ent2! port \lstinline!console! & ADB0039 & Blanc & Droit  \\
	148 & 4 & MGMT4 port 8 & \lstinline!serveur3.ent2! port \lstinline!console! & ADB0039 & Blanc & Droit  \\
	149 & 4 & MGMT4 port 16 & PDU-AS4 port \lstinline!console! & N/A & Noir & Droit \\
	210 & 1/2 & C3560 port 23 & C2960 port 24 & N/A & Bleu & Droit \\
	320 & 2/3 & C2960 port 23 & HP1 port 24 & N/A & Bleu & Droit \\
	420 & 2/4 & C2960 port 22 & Summit port 23 & N/A & Bleu & Droit \\
	430 & 3/4 & HP2 port 24 & Summit port 24 & N/A & Bleu & Droit \\
	999 & 1 & C3560 port 22 & gate-net port \lstinline!eth3! & N/A & Bleu & Droit \\
	100 & -- & ROT26 11\#320 & \lstinline!gate-net! port \lstinline!eth4! & N/A & Bleu & Droit \\
	\bottomrule
\end{longtable}
\end{center}

\begin{rem*}
	L'adresse MAC du port \lstinline!eth4! de \lstinline!gate-net! est \lstinline!00:90:0B:00:A1:09!.
\end{rem*}

\section{Connexion à la plateforme}

Se connecter à la passerelle \lstinline!sphinx.lip6.fr!
\begin{lstlisting}
ssh <login>@sphinx.lip6.fr
\end{lstlisting}

Se connecter à la gateway \lstinline!gate-net.rsr.lip6.fr! :
\begin{lstlisting}
ssh [<login>@]gate-net.rsr.lip6.fr
\end{lstlisting}

Une fois connecté à la gateway \lstinline!gate-net!, les contrôleurs de console (ACS) relatifs à chaque AS ont les adresses IP suivantes :

\begin{center}
	\vspace{-10pt}
	\begin{tabular}{>{\bfseries}l|l}
		AS   & \textbf{Adresse IP du contrôleur de console} \\
		\midrule
		AS 1 & \lstinline!10.40.130.10! \\
		AS 2 & \lstinline!10.40.130.20! \\
		AS 3 & \lstinline!10.40.130.30! \\
		AS 4 & \lstinline!10.40.130.40! \\
	\end{tabular}
	\vspace{-5pt}
\end{center}

Donc pour se connecter à un ACS depuis la gateway \lstinline!gate-net! :
\begin{lstlisting}
ssh admin@10.40.130.x0
password: avocent
\end{lstlisting}

Pour se connecter à un équipement depuis l’ACS, utiliser la commande \lstinline!ts_menu! de l'ACS qui affiche les différents équipements connectés ainsi que leurs noms.

\begin{rem*}
	Pour se connecter aux contrôleurs de console physiquement, utiliser un câble croisé, le brancher sur l’interface 10/100BaseT de l’ACS et se donner l’adresse IP non réservée (\lstinline!10.40.130.50! par exemple).
	
	Il faut utiliser des câbles croisés pour relier les ACS avec les interfaces de la gateway \lstinline!gate-net!.
	
	Pour obtenir les \lstinline!<login>!, s’adresser aux administrateurs système qui administrent le réseau du LIP6.

	La gateway \lstinline!gate-net! est connectée sur le réseau du LIP6 à partir de l’interface \lstinline!eth4!.
\end{rem*}

Il est possible de se connecter à une contrôleur de console de l'AS $x$ directement avec la commande suivante :
\begin{lstlisting}
ssh -t <login>@sphinx.lip6.fr "ssh -t gate-net.rsr.lip6.fr 'ssh admin@10.40.130.x0'"
\end{lstlisting}

\subsection{Connexion physique à la plateforme}

Un serveur DHCP a été mis en place. Il s'agit du serveur \lstinline!serveur2.ent1.org!, sur l'interface \lstinline!eth1! à l'adresse IPv4 \lstinline!10.40.130.12!.

Pour se connecter à la plateforme, se connecter à l'aide d'un câble droit sur l'un des ports libres des \emph{switchs} des différents AS.

La configuration devra être effective à l'aide de DHCP.

\begin{rem*}
	L'instance DHCP définie sur \lstinline!serveur2.ent1.org! est la suivante (fichier \lstinline!/etc/dhcp/dhcpd.conf!) :
\begin{lstlisting}
subnet 10.40.130.0 netmask 255.255.255.0 {
	range 10.40.130.100 10.40.130.200;
	option routers 10.40.130.2;
}
\end{lstlisting}
Bien configurer le serveur DHCP pour fonctionner sur le port \lstinline!eth1! (éditer le fichier \lstinline!/etc/default/isc-dhcp-server!) :
\begin{lstlisting}
INTERFACES="eth1"
\end{lstlisting}
\end{rem*}

\subsection{Accès à distance aux contrôleurs de console (ACS) sans mot de passe}

Il y a plusieurs sauts avant d'atteindre les contrôleurs de console :
\begin{itemize}
	\item Le serveur \lstinline!sphinx.lip6.fr!
	\item Le serveur \lstinline!gate-net.rsr.lip6.fr!
	\item Les contrôleurs de console \lstinline!10.40.130.x0!
\end{itemize}

\vspace{7pt}
Dans la suite, nous allons éditer au fur-et-à-mesure le fichier \lstinline!~/.ssh/config! afin de simplifier encore plus la connexion SSH aux serveurs distants.\\
Nous allons commencer par les lignes suivantes qui concernent tous les hôtes :
\begin{lstlisting}
Host *
	ServerAliveInterval 120
	ServerAliveCountMax 30
\end{lstlisting}

Pour se connecter en SSH à un hôte distant configuré dans le fichier \lstinline!~/.ssh/config!, il suffit de taper la commande : \lstinline!ssh <host>!

\paragraph{Configuration pour le serveur Sphinx}\hfill\par
Il faut créer un couple clé publique/clé privée à l'aide de la commande \lstinline!ssh-keygen! sans taper de \emph{passphrse}, et en choisissant le nom \lstinline!.ssh/id_rsa_sphinx! :
\begin{lstlisting}
ssh-keygen -t rsa -f .ssh/id_rsa_sphinx
\end{lstlisting}
Une fois les clés créées, deux fichiers sont créés :
\begin{itemize}
	\item \lstinline!.ssh/id_rsa_sphinx! qui correspond à la clé privée,
	\item \lstinline!.ssh/id_rsa_sphinx.pub! qui correspond à la clé publique.
\end{itemize}

\vspace{7pt}
Ajouter alors la clé publique \lstinline!.ssh/id_rsa_sphinx.pub! sur le serveur \lstinline!sphinx.lip6.fr!, dans le fichier \lstinline!.ssh/authorized_keys2! :
\begin{lstlisting}
scp ~/.ssh/id_rsa_sphinx.pub <login>@sphinx.lip6.fr:.ssh/authorized_keys_
ssh <login>@sphinx.lip6.fr
cat .ssh/authorized_keys_ >> .ssh/authorized_keys2 && rm .ssh/authorized_keys_
\end{lstlisting}

La première connexion sans mot de passe vers le serveur \lstinline!sphinx.lip6.fr! devrait être fonctionnelle en utilisant le fichier \lstinline!.ssh/id_rsa_sphinx! :
\begin{lstlisting}
ssh -i .ssh/id_rsa_sphinx <login>@sphinx.lip6.fr
\end{lstlisting}

Il est alors possible d'ajouter les informations concernant le serveur \lstinline!sphinx.lip6.fr! dans le fichier \lstinline!~/.ssh/config! :
\begin{lstlisting}
Host sphinx
	user <login>
	port 22
	hostname sphinx.lip6.fr
	IdentityFile ~/.ssh/id_rsa_sphinx
\end{lstlisting}

Il est possible de tester la connexion SSH avec l'hôte \lstinline!sphinx.lip6.fr! : \lstinline!ssh sphinx!.

\paragraph{Configuration pour le serveur Gate-net}\hfill\par

Pour se connecter sur le serveur \lstinline!gate-net.rsr.lip6.fr!, il suffit de faire la même procédure que sur le serveur \lstinline!sphinx.lip6.fr! :
\begin{lstlisting}
sphinx$ ssh-keygen -t rsa -f .ssh/id_rsa_gate-net
sphinx$ cat .ssh/id_rsa_gate-net.pub >> .ssh/authorized_keys2
\end{lstlisting}

Tester ensuite la connexion vers \lstinline!gate-net.rsr.lip6.fr! : 
\begin{lstlisting}
sphinx$ ssh -i .ssh/id_rsa_gate-net <login>@gate-net.rsr.lip6.fr
\end{lstlisting}

\begin{rem*}
	Les deux serveur \lstinline!sphinx.lip6.fr! et \lstinline!gate-net.rsr.lip6.fr! partagent le même système de fichiers NFS, de ce fait, les blocs de commandes suivants sont équivalents :
\begin{lstlisting}
sphinx$ cat >> .ssh/authorized_keys2

sphinx$ scp ~/.ssh/id_rsa_sphinx.pub <login>@sphinx.lip6.fr:.ssh/authorized_keys_
sphinx$ ssh <login>@sphinx.lip6.fr
sphinx$ cat .ssh/authorized_keys_ >> .ssh/authorized_keys2 && rm .ssh/authorized_keys_
\end{lstlisting}
\end{rem*}

Il est alors possible d'ajouter les lignes suivantes dans le fichier \lstinline!~/.ssh/config! qui correspondent à l'hôte \lstinline!gate-net.rsr.lip6.fr! :
\begin{lstlisting}
Host gate
	user <login>
	port 22
	hostname gate-net.rsr.lip6.fr
	ProxyCommand ssh -W %h:%p sphinx
	IdentityFile ~/.ssh/id_rsa_gate-net
\end{lstlisting}

\begin{rem*}
	Le fichier d'identification (ou clé privée) \lstinline!~/.ssh/id_rsa_gate-net! se trouve sur votre ordinateur, en local. Il faudra donc la récupérer sur votre ordinateur à l'emplacement correspondant :
\begin{lstlisting}
scp <login>@sphinx.lip6.fr:~/.ssh/id_rsa_gate-net ~/.ssh/
\end{lstlisting}
\end{rem*}

\paragraph{Configuration sur les contrôleurs de console (Avocent ACS)}\hfill\par

Sur le serveur \lstinline!gate-net.rsr.lip6.fr!, créer un nouveau couple de clés à l'aide de la commande :
\begin{lstlisting}
gate-net$ ssh-keygen -t rsa -f .ssh/id_rsa_acs
\end{lstlisting}

Il faut alors transférer la clé publique \lstinline!.ssh/id_rsa_acs.pub! sur les contrôleurs de console à l'aide de la commande suivante :
\begin{lstlisting}
gate-net$ scp ~/.ssh/id_rsa_acs.pub admin@10.40.130.x0:~/.ssh/authorized_keys_
gate-net$ ssh admin@10.40.130.x0
[ACS]$ cat .ssh/authorized_keys_ >> .ssh/authorized_keys && rm .ssh/authorized_keys_
\end{lstlisting}
\begin{rem*}
	Sur les contrôleurs de console, le dossier \lstinline!~/.ssh! n'est pas forcément existant. Pour ce faire, se connecter sur la console en \lstinline!admin!, créer le dossier \lstinline!~/.ssh! et mettre les droits qui conviennent :
\begin{lstlisting}
[ACS]$ chmod go-w ~/
[ACS]$ chmod 700 ~/.ssh
[ACS]$ chmod 600 ~/.ssh/authorized_keys
\end{lstlisting}
\end{rem*}

Tester ensuite la connexion SSH avec le contrôleur de console :
\begin{lstlisting}
gate-net$ ssh -i .ssh/id_rsa_acs admin@10.40.130.x0
\end{lstlisting}

Si des problèmes persistent (\emph{permission denied}, prompt du mot de passe), éditer le fichier \lstinline!/etc/ssh/sshd_config! avec \lstinline!vi! en root et décommenter les lignes suivantes :
\begin{lstlisting}
RSAAuthentication yes                                                  
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
\end{lstlisting}

Forcer l'authentification avec un mot de passe (attention, l'option \lstinline!ChallengeResponseAuthentication! doit être positionnée à \lstinline!yes!) : 
\begin{lstlisting}
ssh -o PubkeyAuthentication=no <login>@<server>:<port>
\end{lstlisting}
\begin{rem*}
	Le contrôleur de console est également accessible en telnet
\end{rem*}

Redémarrer le service SSH : \lstinline!kill -HUP `cat /var/run/sshd.pid`!

Il est alors possible d'éditer le fichier \lstinline!~/.ssh/config! en ajoutant les informations correspondant au contrôleur de console :
\begin{lstlisting}
Host asx
	user admin
	port 22
	hostname 10.40.130.10
	ProxyCommand ssh -W %h:%p gate
	IdentityFile ~/.ssh/id_rsa_acs
\end{lstlisting}

\begin{rem*}
	De même que pour le serveur \lstinline!gate-net.rsr.lip6.fr!, il faut que le fichier \lstinline!~/.ssh/id_rsa_acs! se trouve sur votre ordinateur, en local. De ce fait, il est possible de le récupérer depuis le serveur \lstinline!sphinx.lip6.fr! (les deux serveurs utilisent le même serveur de fichiers NFS) :
\begin{lstlisting}
scp <login>@sphinx.lip6.fr:~/.ssh/id_rsa_acs ~/.ssh/
\end{lstlisting}
	Par ailleurs, il est possible d'utiliser le même couple de clés pour tous les contrôleurs de console.
\end{rem*}

\paragraph{Remarque pour les utilisateurs de Windows}\hfill\par
Pour se connecter en SSH sur un serveur distant, il existe le programme PuTTY. Il n'est donc pas possible d'effectuer la manipulation expliquée précédemment sur PuTTY. De ce fait, il faut se connecter au serveur \lstinline!sphinx.lip6.fr! et créer un fichier de configuration \lstinline!~/.ssh/config! qui permettra à l'utilisateur de se connecter sur le serveur \lstinline!gate-net.rsr.lip6.fr! et les différents contrôleurs de console.

Une fois connecté sur le serveur \lstinline!sphinx.lip6.fr!, créer le fichier \lstinline!~/.ssh/config! de configuration SSH qui contient les lignes suivantes (le serveur est assez restrictif, et ne propose pas l'option \lstinline!-W! pour SSH, et ne dispose pas de netcat non plus) :
\begin{lstlisting}
Host gate
	user <login>
	port 22
	hostname gate-net.rsr.lip6.fr
	IdentityFile ~/.ssh/id_rsa_gate-net
Host as1
	user admin
	port 22
	hostname 10.40.130.10
	ProxyCommand ssh gate 'exec 3<>/dev/tcp/%h/22; cat <&3 & cat >&3;kill $!'
	IdentityFile ~/.ssh/id_rsa_acs
Host as2
	user admin
	port 22
	hostname 10.40.130.20
	ProxyCommand ssh gate 'exec 3<>/dev/tcp/%h/22; cat <&3 & cat >&3;kill $!'
	IdentityFile ~/.ssh/id_rsa_acs
Host as3
	user admin
	port 22
	hostname 10.40.130.30
	ProxyCommand ssh gate 'exec 3<>/dev/tcp/%h/22; cat <&3 & cat >&3;kill $!'
	IdentityFile ~/.ssh/id_rsa_acs
Host as4
	user admin
	port 22
	hostname 10.40.130.40
	ProxyCommand ssh gate 'exec 3<>/dev/tcp/%h/22; cat <&3 & cat >&3;kill $!'
	IdentityFile ~/.ssh/id_rsa_acs
\end{lstlisting}

Les deux couples de clés (clé publique, clé privée) \lstinline!id_rsa_gate-net! et \lstinline!id_rsa_acs! ont été générés à l'aide de la commande \lstinline!ssh-keygen -t rsa! :
\begin{lstlisting}
sphinx$ ssh-keygen -t rsa -f .ssh/id_rsa_gate-net
sphinx$ ssh-keygen -t rsa -f .ssh/id_rsa_acs
\end{lstlisting} 

Par ailleurs, la clé publique \lstinline!id_rsa_gate-net.pub! aura été ajoutée dans le fichier \lstinline!~/.ssh/authorized_keys2! du serveur \lstinline!sphinx.lip6.fr! (qui utilise le même système de fichier NFS que \lstinline!gate-net.rsr.lip6.fr!) qui contient l'ensemble des clés publiques des hôtes autorisées à se connecter à ce compte par l'intermédiaire de RSA :
\begin{lstlisting}
sphinx$ cat ~/.ssh/id_rsa_gate-net.pub >> .ssh/authorized_keys2
\end{lstlisting}

Enfin, la clé publique \lstinline!id_rsa_acs! aura été ajoutée au fichier \lstinline!~/.ssh/authorized_keys! des contrôleurs de console à l'aide de la commande \lstinline!scp! :
\begin{lstlisting}
gate-net$ scp ~/.ssh/id_rsa_acs.pub admin@10.40.130.x0:~/.ssh/authorized_keys_
gate-net$ ssh admin@10.40.130.x0
[ACS]$ cat .ssh/authorized_keys_ >> .ssh/authorized_keys && rm .ssh/authorized_keys_
\end{lstlisting}

\begin{rem*}
	Le répertoire \lstinline!~/.ssh! doit être en mode 700 et les fichiers contenant les clés publiques \lstinline!~/.ssh/authorized_keys*! doivent être en mode 600.
\end{rem*}

Il est alors possible de se connecter directement aux contrôleurs de console, sans avoir ) taper de mot de passe depuis le serveur \lstinline!sphinx.lip6.fr! en ayant une connexion transparente au serveur intermédiaire \lstinline!gate-net.rsr.lip6.fr! :
\begin{lstlisting}
ssh asX
\end{lstlisting}

\clearpage
\chapter{Généralités sur les équipements}

\section{Introduction sur protocoles de base}

\subsection{Généralités sur les VLANs}

Afin de créer plusieurs sous-réseaux dans les AS, nous utiliserons des VLANs (\emph{Virtual Local Area Network}) qui permettent de créer des sous-réseaux virtuels au niveau d'un commutateur.

Standard 802.1Q (IEEE) : taille de l'entête de 4 octets, permet de supporter au maximum 4094 VLANs en mode \emph{trunk}.

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.7]{img/VLAN.pdf}
	\label{fig:img_VLAN}
\end{figure}

Terminologie :
\begin{itemize}
	\item \textbf{Trunking} : une même connexion physique peut supporter plusieurs VLANs
	\item \textbf{Native VLAN} : par défaut, les trames de ce VLAN sont \emph{untagged} quand elles sont transmises dans un \emph{trunk}.
	\item \textbf{Access VLAN} : le VLAN auquel un \emph{access port} est assigné.
	\item \textbf{Voice VLAN} : si configuré, il permet d'activer un \emph{trunking} minimal pour supporter le trafic de voix, en plus du trafic de données sur un \emph{access port}.
\end{itemize}

\subsection{IPv6}

Dans le but d'avoir une plateforme évolutive, nous allons utiliser à la fois IPv4 et IPv6. Le protocole IPv6 est configuré pour tous les VLANs, sauf celui d'administration (pour l'AS $x$, il s'agit du VLAN $x00$).

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.7]{img/IPv6.pdf}
	\label{fig:img_IPv6}
\end{figure}

Entête IPv6 (de taille 40 octets) :
\begin{itemize}
	\item \textbf{Version} (4 bits) : toujours positionné à 6.
	\item \textbf{Traffic Class} (8 bits) : une valeur de DSCP pour la QoS.
	\item \textbf{Flow Label} (20 bits) : identifie les flots uniques (optionnel).
	\item \textbf{Payload Length} (16 bits) : longueur du \emph{payload} en octets.
	\item \textbf{Next Header} (8 bits) : entête ou protocole encapsulé (suivant).
	\item \textbf{Hop Limit} (8 bits) : similaire au champ TTL \emph{Time To Live} de IPv4.
	\item \textbf{Source Address} (128 bits) : adresse IP de la source.
	\item \textbf{Destination Address} (128 bits) : adresse IP de la destination.
\end{itemize}

\vspace{7pt}

Type des adresses IPv6 :
\begin{itemize}
	\item \textbf{Unicast} : communication un-à-un.
	\item \textbf{Multicast} : communication un-à-plusieurs.
	\item \textbf{Anycast} : une adresse configurée sur plusieurs équipements.
\end{itemize}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.7]{img/EUI-64.pdf}
	\label{fig:img_EUI-64}
\end{figure}

\vspace{-10pt}
Formation de l'identifiant EUI-64 à partir de l'adresse MAC :
\begin{itemize}
	\item Insérer \lstinline!0xfffe! entre les deux moitiés de l'adresse MAC
	\item Positionner le 7\ieme~bit (universal/loacl flag) à 1.
\end{itemize}

\vspace{7pt}
\begin{minipage}[t]{0.50\textwidth}
	\centering
	\textbf{Préfixes réservés}
	
	\vspace{7pt}
	\rowcolors{1}{}{lightgray}
	\begin{tabular}{ll}
		\lstinline!::/0! & Default route\\
		\lstinline!::/128! & Unspecified\\
		\lstinline!::1/128! & Loopback\\
		\lstinline!FC00::/7! & Unique local\\
		\lstinline!FE80::/10! & Link-local unicast\\
		\lstinline!FF00::/8! & Multicast
	\end{tabular}
\end{minipage}
\quad\quad
\begin{minipage}[t]{0.50\textwidth}
	\centering
	\textbf{Multicast scopes}

	\vspace{7pt}
	\rowcolors{1}{}{lightgray}
	\begin{tabular}{ll}
		\lstinline!1! & Interface-local\\
		\lstinline!2! & Link-local\\
		\lstinline!4! & Admin-local\\
		\lstinline!5! & Site-local\\
		\lstinline!8! & Org-local\\
		\lstinline!E! & Global
	\end{tabular}
\end{minipage}

Extention Headers :

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{>{\bfseries}l>{\hsize=.35\hsize\bfseries}X>{\hsize=.65\hsize}X}
	0 & Hop-by-hop Options & Information additionnelle qui doit être examinée par chaque routeur du chemin\\
	43 & Routing & Routage à la source\\
	44 & Fragment & Inclus quand un paquet a été fragmenté par la source\\
	50 & Encapsulating Security Payload (ESP) & Permet le chiffrement du \emph{payload} (IPSec)\\
	51 & Authentication Header (AH) & Permet l'authentification du paquet (IPSec)\\
	60 & Destination Options & Information additionnelle qui ne concerne que la destination
\end{tabularx}

\clearpage
\section{Rapide prise en main des équipements}

\subsection{Comparaison de commandes entre Cisco IOS et Juniper JunOS}

\begin{minipage}[t]{0.50\textwidth}
	\begin{center}
		\textbf{Cisco IOS}
	\end{center}
\end{minipage}
\quad\vrule\quad
\begin{minipage}[t]{0.50\textwidth}
	\begin{center}
		\textbf{Juniper JunOS}
	\end{center}
\end{minipage}

Passer en mode configuration : 

\vspace{-10pt}
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
enable
conf[igure] t[erminal] # conf t
	\end{lstlisting}
\end{minipage}
\quad\vrule\quad
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
cli
congure
	\end{lstlisting}
\end{minipage}
\vspace{3pt}

Voir la configuration : 

\vspace{-10pt}
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
[do] show run[ning-config]
	\end{lstlisting}
\end{minipage}
\quad\vrule\quad
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
show configuration
	\end{lstlisting}
\end{minipage}
\vspace{3pt}

Remonter dans l'arborescence :

\vspace{-10pt}
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
exit
	\end{lstlisting}
\end{minipage}
\quad\vrule\quad
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
up
top # racine de l'arborescence
	\end{lstlisting}
\end{minipage}
\vspace{3pt}

Sauvegarder les changements : 

\vspace{-10pt}
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
wr[ite] me[mory] # wr me
	\end{lstlisting}
\end{minipage}
\quad\vrule\quad
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
commit check
commit
	\end{lstlisting}
\end{minipage}
\vspace{3pt}

Equivalent de la commande \verb!grep! :

\vspace{-10pt}
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
grep <motif>
	\end{lstlisting}
\end{minipage}
\quad\vrule\quad
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
match <motif>
# eg. [run] show route |match bgp
	\end{lstlisting}
\end{minipage}
\vspace{3pt}

Revenir dans les configurations enregistrées :

\vspace{-10pt}
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
configure replace target-url  [list] [force] [time seconds] [nolock]
	\end{lstlisting}
\end{minipage}
\quad\vrule\quad
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
rollback
	\end{lstlisting}
\end{minipage}
\vspace{3pt}

Exécuter une commande dans l'arborescence : 

\vspace{-10pt}
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
do <commande>
	\end{lstlisting}
\end{minipage}
\quad\vrule\quad
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
run <commande>
	\end{lstlisting}
\end{minipage}
\vspace{3pt}

Supprimer une entrée :

\vspace{-10pt}
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
no <commande>
	\end{lstlisting}
\end{minipage}
\quad\vrule\quad
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
delete <commande>
	\end{lstlisting}
\end{minipage}
\vspace{3pt}

Définir un nom à l'équipement :

\vspace{-10pt}
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
hostname <device name>
	\end{lstlisting}
\end{minipage}
\quad\vrule\quad
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
run <commande>
	\end{lstlisting}
\end{minipage}
\vspace{3pt}

Obtenir la version de l'équipement :

\vspace{-10pt}
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
show version
show hardware
	\end{lstlisting}
\end{minipage}
\quad\vrule\quad
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
show version
show system <option>
	\end{lstlisting}
\end{minipage}
\vspace{3pt}

Obtenir les \emph{logs} de l'équipement :

\vspace{-10pt}
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
show logging
	\end{lstlisting}
\end{minipage}
\quad\vrule\quad
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
show log messages
	\end{lstlisting}
\end{minipage}
\vspace{3pt}

Montrer le statut des interfaces configurées pour IP :

\vspace{-10pt}
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
show ip interface brief
	\end{lstlisting}
\end{minipage}
\quad\vrule\quad
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
show interface terse
	\end{lstlisting}
\end{minipage}
\vspace{3pt}

Montrer la configuration, le statut et les statistiques des interfaces :

\vspace{-10pt}
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
show interface [<interface>]
	\end{lstlisting}
\end{minipage}
\quad\vrule\quad
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
show interfaces [<interface>] detail
	\end{lstlisting}
\end{minipage}
\vspace{3pt}

Afficher les informations concernant un port physique de l'équipement :

\vspace{-10pt}
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
show controller <interface>
	\end{lstlisting}
\end{minipage}
\quad\vrule\quad
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
show interfaces <interface> extensive
	\end{lstlisting}
\end{minipage}
\vspace{3pt}

Afficher un résumé de la table de routage :

\vspace{-10pt}
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
show ip route
	\end{lstlisting}
\end{minipage}
\quad\vrule\quad
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
show route
	\end{lstlisting}
\end{minipage}
\vspace{3pt}

Vérifier si une destination est atteignable :

\vspace{-10pt}
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
ping dest
	\end{lstlisting}
\end{minipage}
\quad\vrule\quad
\begin{minipage}[t]{0.50\textwidth}
	\begin{lstlisting}
ping dest rapid # for cisco like output 
ping dest # for unix like output
	\end{lstlisting}
\end{minipage}


\subsection{Cisco IOS}

Visualiser les configurations existantes :
\begin{lstlisting}[language=cisco]
Switch# show vlan [id <vlan id>]
Switch# show interface [status | switchport]
Switch# show interface trunk
Switch# show running-config [int <interface>]
\end{lstlisting}

Création d'un VLAN :
\begin{lstlisting}[language=cisco]
Switch(config)# vlan <vlan id>
Switch(config-vlan)# name <vlan name>
\end{lstlisting}

Supprimer un VLAN :
\begin{lstlisting}[language=cisco]
Switch(config)# no vlan <vlan id>
\end{lstlisting}

Configuration \emph{access port} : 
\begin{lstlisting}[language=cisco]
Switch(config)# interface <interface>
Switch(config-if)# switchport mode access
Switch(config-if)# switchport nonegotiate
Switch(config-if)# switchport access vlan <vlan id>
Switch(config-if)# switchport voice vlan <voice vlan id>
\end{lstlisting}

Variante \emph{trunk port} :
\begin{lstlisting}[language=cisco]
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport trunk encapsulation dot1Q
Switch(config-if)# switchport trunk allowed vlan <vlan0, vlan2-vlan3>
Switch(config-if)# switchport trunk native vlan <native vlan>
\end{lstlisting}

Créer une interface virtuelle à un VLAN : 
\begin{lstlisting}[language=cisco]
Switch(config)# interface <interface>.<vlan id>
Switch(config-if)# encapsulation dot1Q <vlan id>
\end{lstlisting}

\emph{Port mirroring} sur une interface : 
\begin{lstlisting}[language=cisco]
Switch(config)# monitor session <session id> source {vlan <vlan id> | interface <interface>}
Switch(config)# monitor session <session id> destination interface <interface>
\end{lstlisting}

Copier en FTP les fichiers de configuration (switch ou routeur) : 
\begin{lstlisting}[language=cisco]
Router# configure terminal
Router(config)# ip ftp username adminftp
Router(config)# ip ftp password password
Router(config)# end
Router# copy running-config ftp:
! Address or name of remote host []? 4.11.100.3
\end{lstlisting}

\subsection{Juniper JunOS (routeurs)}

Afficher les commandes liés à une configuration :\lstinline!show | display set [relative]!\\
Le mot-clé \lstinline!relative! permet d'afficher les commandes à faire depuis le menu contextuel courant.

Comparer la configuration actuelle avec une configuration antérieure :
\begin{lstlisting}
show |compare rollback <1-9>
\end{lstlisting}

\begin{itemize}
	\item Désactiver une commande : \lstinline!deactivate <command>!
	\item Activer une commande : \lstinline!activate <command>!
	\item Redémarrer le routeur Juniper : \lstinline!request system reboot!
	\item Arrêter le routeur Juniper : \lstinline!request system poweroff!
\end{itemize}

Configuration de l’adressage IPv6 sans état autonome ou SLAAC (\emph{Stateless Address Autoconfiguration}). \\
Les serveurs construisent ainsi leur adresse avec le préfixe \lstinline!::IID/64! (où \lstinline!IID! correspond à l'identifiant d’interface EUI-64)
\begin{lstlisting}
edit protocols router-advertisement interface <interface>
set prefix <IID>::/64 # construit à partir de cette adresse
set no-managed-configuration # mettre en place autoconfiguration (flag M=0)
set no-other-stateful-configuration # pas serveur DHCP sur réseau (flag O=0)
\end{lstlisting}

Monter une clé USB formatée en FAT 16/32 : 
\begin{lstlisting}
user@router> start shell user root
root@router% mount_msdos /dev/da0s1 /mnt
root@router% ls /mnt
\end{lstlisting}
\begin{rem*}
	Il est possible de copier le système de fichier sur la clé USB de la manière suivante :
\begin{lstlisting}
cp /confif/juniper.conf.gz /mnt
\end{lstlisting}
\end{rem*}

Ou bien : utiliser FTP pour envoyer les fichier sur les serveurs des entreprises 1 et 2 :
\begin{lstlisting}
ftp serveur3.ent<1,2>.org
Connected to 4.11.100.3.
220 ProFTPD 1.3.3a Server (ftp-ent2) [::ffff:4.11.100.3]
Name (4.11.100.3:root): adminftp
331 Mot de passe requis pour adminftp
Password: <password>
ftp> send juniper.conf.gz 
ftp> exit
\end{lstlisting}

\begin{rem*}
	Le dossier FTP cible doit être accessible par tout le monde : \lstinline!chmod 777 .!
\end{rem*}

\subsection{Juniper ScreenOS (\emph{firewalls})}

\subsubsection{Configuration de l'interface d'administration}

Si \lstinline!eth0/z! est l’interface reliée au réseau d’admin, alors :
\begin{lstlisting}
set interface eth0/z ip <firewall IP on admin network>/<subnet mask>
\end{lstlisting}

Pour tester la connexion :
\begin{lstlisting}
set interface eth0/z manage ping 
\end{lstlisting}

Activer SNMP sur l’interface :
\begin{lstlisting}
Set interface eth0/z manage snmp
\end{lstlisting}

\subsubsection{Configuration du firewall en mode ``transparent''}

Soit \lstinline!vlan1! le VLAN  par défaut.

\begin{lstlisting}
set interface vlan1 ip <point-to-point link subnet IP>/<subnet mask>
set vrouter trust-vr route <trust zone network IP>/<network mask> interface <router internal IP> metric 1
\end{lstlisting}

\begin{rem*}
	Il faut d’abord enlever les interfaces des \lstinline!bgroup! par défault.

\begin{lstlisting}
set interface ethernet0/x ip 0.0.0.0/0 # ethernet0/x : -> zone trust
set interface ethernet0/x zone v1-trust
set interface ethernet0/y ip 0.0.0.0/0 # ethernet0/y : -> extérieur
set interface ethernet0/y zone v1-untrust
set vrouter trust-vr route 0.0.0.0/0 interface vlan1 gateway <router external IP> metric 1
\end{lstlisting}
\end{rem*}

Polices (\emph{policies}) :
\begin{lstlisting}
set policy from <zone 1> to <zone 2> <source address | any > <dest address | any > <service name>  < permit | deny | reject | tunnel >
\end{lstlisting}

Sauvegarder la configuration : \lstinline!save config!

Configurer SNMP :
\begin{lstlisting}
set snmp community public Read-Only
set snmp name firewall1
set snmp location Paris
set snmp contact "Olivier Fourmaux"
\end{lstlisting}

\subsection{Extreme Networks Summit}

Afficher la configuration : \lstinline!show configuration!

Créer un VLAN :
\begin{lstlisting}
create vlan <vlan name>
\end{lstlisting}

Ajouter un \emph{tag} (label) à un VLAN :
\begin{lstlisting}
configure vlan <vlan name> tag <vlan num>
\end{lstlisting}

Ajouter/supprimer des ports au VLAN :
\begin{lstlisting}
configure vlan <vlan name> <add|del> ports <port1>, <port2> <tagged|untagged>
\end{lstlisting}

Assigner une IP à un VLAN :
\begin{lstlisting}
configure valn <vlan name> ip <vlan IP> <vlan mask>
\end{lstlisting}

Activer le PoE (\lstinline!Power over Ethernet!) sur tous les ports [un port] :
\begin{lstlisting}
enable inline-power [port <port>]
\end{lstlisting}

Désactiver le PoE (\lstinline!Power over Ethernet!) sur tous les ports [un port] :
\begin{lstlisting}
disable inline-power [port <port>]
\end{lstlisting}

Configuration de SNMP :
\begin{lstlisting}
configure snmp sysName Switch-AS4
configure snmp sysLocation Paris
configure snmp sysContact "Olivier Fourmaux"
configure snmp add community readonly public
\end{lstlisting}

Configuration du \emph{port mirroring} :
\begin{lstlisting}
config mirroring {add | delete} ports <portlist>
disable mirroring
enable mirroring to <port> tagged
show mirroring # Montrer la configuration de port mirroring
\end{lstlisting}

\subsection{HP ProCurve}

Le HP ProCurve fournit par défaut une interface ``graphique''. Un menu CLI (\emph{Command-Line Interface}) est cependant accessible.

Menu de configuration :
\begin{lstlisting}
configure	
\end{lstlisting}

Sortir du contexte actuel :
\begin{lstlisting}
exit
\end{lstlisting}

Sauvegarde des configurations effectuées :
\begin{lstlisting}
write memory
\end{lstlisting}

Montrer les VLANs configurées :
\begin{lstlisting}
show vlans
\end{lstlisting}

Configurer l'adresse IP (prendre soin de rentrer dans le VLAN auparavant) :
\begin{lstlisting}
ip address <IP address>/<prefix>
\end{lstlisting}

Marquage 802.1q des ports pour qu'un port puisse supporter plusieurs VLANs (depuis le menu ``graphique'') : 7. VLAN Menu > 3. VLAN Port Assignment\\
Marquer les VLANs associés aux ports souhaités par \emph{Tagged} ; le VLAN natif est marqué par \emph{Untagged}. Prendre bien soin d'assigner le VLAN \emph{Default} à \emph{No} pour ces ports-ci.

\subsection{Serveur sous Debian}

\subsubsection*{Adresse IP}
Modification de l'adresse IP de la machine :
\begin{lstlisting}
vim /etc/network/interfaces
/etc/init.d/networking restart # prise en compte des paramètres changés
\end{lstlisting}

Différentes configurations pour les interfaces :
\begin{itemize}
	\item Configuration statique : \lstinline!iface <interface name> inet static!
	\item Configuration dynamique (avec DHCP) : \lstinline!iface <interface name> inet dhcp!
	\item Configuration pour IPv6 : \lstinline!iface <interface name> inet6 {static | dhcp}!
	\item Configuration automatique au démarrage du serveur : \lstinline!auto <interface name>!
\end{itemize}

\vspace{7pt}
Commandes pour les interfaces :
\begin{itemize}
	\item Afficher les interfaces actives : \lstinline!ifconfig! (option \lstinline!-a! pour afficher \textbf{toutes} les interfaces)
	\item Activer une interface : \lstinline!ifup <interface>!
	\item Désactiver une interface : \lstinline!ifdown <interface>!
\end{itemize}

\subsubsection{\emph{Load Balancer}}

\begin{lstlisting}
ip route add default scope global nexthop via 4.11.100.61 weight 1 nexthop via 4.11.100.62 weight 1
\end{lstlisting}

Ajout d'une règle de routage qui permet de choisir aléatoirement l'une des deux passerelles :
\begin{itemize}
	\item \lstinline!4.11.100.61! : routeur Juniper 2
	\item \lstinline!4.11.100.62! : routeur Juniper 1
\end{itemize}

\begin{rem*}
	A chaque fois que les interfaces sont modifiées ou que le serveur redémarre, il se peut que la règle par défaut ne soit plus présente (vérifier avec la commande \lstinline!ip route!). Pour ce faire, retaper la commande ci-dessus. Sinon, les serveurs de l'AS 4 ne seront plus accessibles et ne pourront plus accéder à l'ensemble du réseau.
\end{rem*}

\subsubsection{VLANs}

Il est possible d'associer une interface donnée à plusieurs VLANs différents.

Installer l'application \lstinline!vlan! : \lstinline!apt-get install vlan!

Configuration des VLANs : 
\begin{lstlisting}
vconfig add <interface> <vlan tag>
ifconfig <interface>.<vlan tag> up
\end{lstlisting}

Editer le fichier \lstinline!/etc/network/interfaces! pour ajouter le VLAN à l'interface correspondante :
\begin{lstlisting}

\end{lstlisting}

\subsubsection{Accès à Internet}
Connecter un serveur à Internet (via la gateway \lstinline!gate-net!).

Le serveur est connecté au VLAN 999 par l'interface \lstinline!eth1!. Le VLAN 999 permet aux serveurs d'accéder à Internet à l'aide d'un adresse privé de classe A.

Changer l’adresse IP du port \lstinline!eth1! du serveur pour correspondre à l’adresse IP du port de la gateway (\lstinline!10.40.130.2!). Editer le fichier \lstinline!/etc/network/interfaces! : 
\begin{lstlisting}
auto eth1
iface eth1 inet static
    	address 10.40.130.xy # serveur dans AS x
    	netmask 255.0.0.0
\end{lstlisting}

Activer l’interface \lstinline!eth1! : \lstinline!ifup eth1!

Mettre à jour le système pour prendre en compte le proxy \lstinline!10.40.130.2! (ie. l'adresse IP de l'interface \lstinline!eth4! de la gateway \lstinline!gate-net!) :

\begin{lstlisting}
export http_proxy="http://10.40.130.2:8080"
export https_proxy="http://10.40.130.2:8080"
\end{lstlisting}

\begin{rem*}
	Attention, cette règle ne sera valide que pour la session associée au terminal (pour une validité prolongée, placer ces deux lignes dans \lstinline!~/.bashrc! ou dans le fichier \lstinline!/etc/profile!).
\end{rem*}

\subsubsection{Port série}
Accéder à un serveur Debian sur le port série (ie. configuration du serveur pour y accéder depuis l'ACS) :
\begin{itemize}
	\item Dans le fichier \lstinline!/etc/default/grub! :
	\begin{lstlisting}
GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,9600n8"
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=9600 --unit=0 --word=8 --parity=no --stop=1"
	\end{lstlisting}
		\item Dans le fichier \lstinline!/etc/inittab! :
	\begin{lstlisting}
T0:23:respawn:/sbin/getty -L ttyS0 9600  vt100
	\end{lstlisting}
		\item Entrer la commande : \lstinline!update-grub!
		\item \emph{Reboot} du serveur.
\end{itemize}

\vspace{7pt}
Dans le cas d'un autre serveur sous un autre système d'exploitation :
\begin{itemize}
	\item Dans le fichier \lstinline!/etc/inittab!, au-dessus de la ligne \lstinline!1:2345:respawn.....! :
	\begin{lstlisting}
T0:23:respawn:/sbin/getty -L ttyS0 9600  vt100
	\end{lstlisting}
	\item Dans le fichier \lstinline!/boot/grub/menu.lst! (ou le fichier \lstinline!grub.conf! s'il n'existe pas), en-dessous des commentaires parlant de ``password md5'' au début du fichier :
	\begin{lstlisting}
serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1
terminal --timeout=10 serial console
	\end{lstlisting}
	\item Dans les entrées \lstinline!grub! du même fichier, tout en bas du fichier, à la fin de la ligne \lstinline!kernel! :
	\begin{lstlisting}
console=tty0 console=ttyS0,9600n8
	\end{lstlisting}
	\item \emph{Reboot} du serveur.
\end{itemize}

\begin{rem*}
	Pour accéder à un équipement à l'aide du port série, utiliser la commande \lstinline!screen! :
\begin{lstlisting}
screen /dev/ttyS0
# Quitter : CTRL+A MAJ+D MAJ+D
\end{lstlisting}

Pour installer \lstinline!screen! : visiter l'URL \url{http://packages.debian.org/squeeze/screen} et télécharger l'archive qui correspond (pour nous : architecture \lstinline!amd64!).\\
Installer l'archive \lstinline!<package>.deb! : \lstinline!sudo dpkg -i <package>.deb!
\end{rem*}

\subsubsection{Commande \lstinline!apt-get!}

Désactiver le CD-ROM comme source principale de \lstinline!apt-get!.\\
Editer le fichier \lstinline!/etc/apt/sources.list! : \lstinline![sudo] vim /etc/apt/sources.list!

Commenter la ligne commençant par \lstinline!deb cdrom! (\lstinline!#! devant).

Ajouter les sources :
\begin{lstlisting}
deb http://ftp.debian.org/debian/ squeeze-updates main contrib
deb http://http.fr.debian.org/debian/ squeeze contrib non-free main
deb-src http://http.fr.debian.org/debian/ squeeze contrib non-free main
deb-src http://ftp.debian.org/debian/ squeeze-updates main contrib
\end{lstlisting}

Mettre la jour la base de données locale des paquets de \lstinline!apt-get! : \lstinline!apt-get update!

\subsubsection{Wireshark}

Wireshark est un logiciel permettant de capturer du trafic sur des interfaces.

\begin{itemize}
	\item Installation de Wireshark : \lstinline!sudo apt-get install wireshark!
	\item Lancement de Wireshark : \lstinline!gksu wireshark! (en mode \emph{root} pour pouvoir accéder aux interfaces).
\end{itemize}


Configuration du logiciel pour lister toutes les interfaces en mode \emph{user} : 
\begin{itemize}
	\item Re-configuration de Wireshark : \lstinline!dpkg-reconfigure wireshark-common!
	\item Positionner le curseur sur ``OUI'' (pour autoriser tous les utilisateurs à accéder aux interfaces)
	\item Ajouter les droits d'exécution pour les \emph{users} sur le fichier \lstinline!/usr/bin/dumpcap! :\\
	\lstinline!sudo chmod +x /usr/bin/dumpcap!
	\item Lancer Wireshark depuis le lanceur d'application ou la commande \lstinline!wireshark!
\end{itemize}

\clearpage
\subsection{Avocent ACS 5016}

Contrôleur de consoles (ACS : \emph{Advanced Controller System}) de la série ACS 5000 comportant 16 ports RJ45 permettant, une fois reliés aux ports console des équipements, de les contrôler. Ils sont au nombre de quatre, un pour chaque système autonome et sont reliés au VLAN 999 présenté dans le chapitre 1. 

Le schéma suivant présente les branchements effectués entre le contrôleur de console \lstinline!MGNT1! et les équipements, ainsi que les branchements avec le \emph{power unit 1} pour l'AS 1.

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.6]{img/AS/acs1.pdf}
	\caption{Intégration du contrôleur de console \lstinline!MGNT1! dans l'AS 1}
	\label{fig:AS_acs1}
\end{figure}

Pour contrôler un équipement, utiliser la commande : \lstinline!ts_menu!, puis choisir l'équipement à contrôler.

Accéder au CLI (\emph{Command-Line Interface}) de l'ACS : \lstinline!CLI!

\emph{Reset} de l'ACS (\emph{Restore to factory defaults}) : \lstinline!cli> sudo restoreconf factory_default!

Changer l'alias d'un port \lstinline!<port>! : 
\begin{lstlisting}
cli> config physicalports <port> general alias <server alias>
\end{lstlisting}

Activer (ou désactiver) un port : 
\begin{lstlisting}
cli> config physicalports <port> enable {yes|no}
\end{lstlisting}

Modifier le protocole d'accès à un port : 
\begin{lstlisting}
cli> config physicalports <port> general protocol <telnet|sshv2|consolessh>
\end{lstlisting}

Sauvegarder les changements : \lstinline!cli> config savetoflash!

Sortir d'une console lorsque l'on est connecté en telnet : \lstinline!CTRL+<dollar>!

\begin{rem*}
	Configuration du terminal pour telnet : 9600 bauds, 8 (\emph{data bits}), N (\emph{parity}), 1 (\emph{stop bits}) et pas de \emph{flow control}.
\end{rem*}

Configuration de l'ACS via l'interface d'administration HTTP :
\begin{itemize}
	\item Utilisation du VLAN 999 qui permet l'administration à distance des équipements,
	\item Pour se connecter à l'ACS correspondant à l'AS \lstinline!x!, se connecter en ssh à l'adresse \lstinline!10.40.130.x0!, avec $0<\texttt{x}<4$, et pour nom d'utilisateur \lstinline!admin! (mot de passe : \lstinline!avocent!) :
\begin{lstlisting}
ssh admin@10.40.130.x0
\end{lstlisting}
\end{itemize}

\subsection{Avocent Power Management 1000}

Les Avocent Power Management 1000 (ou PM/PDU 1000) permettent d'effectuer diverses mesures sur les équipements branchés dessus. Par ailleurs, ils sont accessibles à l'aide des contrôleurs de console présentés précédemment.

Navigation dans le CLI : 
\begin{lstlisting}
--:-- / cli-> cd <path>
--:-- <path> cli-> cd / # haut de arborescence
\end{lstlisting}

Enregistrer les changements : 
\begin{lstlisting}
**:- <path> cli-> commit
--:*- [<path>] cli-> save
\end{lstlisting}

Changer le nom d'hôte :
\begin{lstlisting}
--:- / cli-> cd /network/settings/
--:- settings cli-> set hostname=<hostname>
**:- settings cli-> commit
\end{lstlisting}

Changer le nom d'un PDU : 
\begin{lstlisting}
--:- / cli-> cd power_management/pdus/
--:- / cli-> rename <pdu_id>
--:*- [pdus] cli-> set new_pdu_id=<new pdu name>
\end{lstlisting}

Changer le nom d'une prise de courant :
\begin{lstlisting}
--:- / cli-> cd /power_management/pdus/<pdu>/settings/outlets
--:- outlets cli-> set <outlet num> name=<outlet name>
\end{lstlisting}

Création d'un groupe de prises :
\begin{lstlisting}
--:- / cli-> cd power_management/outlet_groups/
--:- outlet_groups cli-> add
--:*- [outlet_groups] cli-> set group_name=<group name>
--:*- [outlet_groups] cli-> save
--:- outlet_groups cli-> add <group name>
--:*- [HUBBLE] cli-> set 
outlets=  pdu=      pdu_id=
\end{lstlisting}

Contrôler le courant sur une prise (seulement PM3000) :
\begin{lstlisting}
--:- / cli-> cd power_management/pdus/<PDU_ID>/outlets
--:- outlets cli-> [cycle|on|off|lock|unlock] <outlet_num[,..,outlet_num]>
\end{lstlisting}

Erreur : 
\begin{lstlisting}
Error: Outlet is metered only. It cannot be turned on, off or cycled. Action: ON. Outlet(s): PDU-AS2[1].
\end{lstlisting}

\begin{rem*}
	Voir la page suivante : \url{http://www.emersonnetworkpower.com/en-US/Products/ACPower/RackPDU/Pages/AvocentPM100020003000PDUs.aspx} (\emph{model comparison})
\end{rem*}

\subsection{Câbles et connexions entre les équipements}

Les deux types de câbles avec des terminaisons RJ-45 que l'on utilise sont les suivants :
\begin{itemize}
	\item Les câbles droits,
	\item Les câbles croisés.
\end{itemize}

La prise RJ-45 (\emph{Registered Jack}) est en fait un connecteur 8P8C (\emph{8 Position 8 contact}) utilisé généralement pour Ethernet sur des pairs torsadées. 

Les standards TIA/EIA-568 définissent (entre autres) les dispositions des pins pour les pairs torsadées : T568A et T568B. Les définitions T568A et T568B sont présentées au niveau des figures \ref{fig:patch-cable-a}, \ref{fig:crossover-cable-a}, \ref{fig:patch-cable-b} et \ref{fig:crossover-cable-b} suivantes pour des câbles droits et croisés.

Connexions des ports console des équipements :
\begin{itemize}
	\item Serveurs, Switch Summit, Switch ProCurve : câble \emph{rollover} (bleu clair) RJ45 $\to$ DB-9,
	\item Routeurs Juniper et Cisco: câble droit et adaptateur Cisco (ADB0039) branché sur l’équipement,
	\item Cyclades PDM : câble droit seul (option pour la gestion automatique dans l’interface web).
\end{itemize}

\begin{rem*}
	Les câbles \emph{rollover} (bleu clair) RJ45 $\to$ DB-9 peuvent être remplacés par un adaptateur ADB0025 YFDTE91 placé sur le port console DB-9 de l'équipement, puis en reliant un câble droit jusqu'au contrôleur de console.
\end{rem*}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.7]{img/patch-cable-a.pdf}
	\caption{Câble droit de la norme T568A}
	\label{fig:patch-cable-a}
\end{figure}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.7]{img/crossover-cable-a.pdf}
	\caption{Câble croisé de la norme T568A}
	\label{fig:crossover-cable-a}
\end{figure}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.7]{img/patch-cable-b.pdf}
	\caption{Câble droit de la norme T568B}
	\label{fig:patch-cable-b}
\end{figure}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.7]{img/crossover-cable-b.pdf}
	\caption{Câble croisé de la norme T568B}
	\label{fig:crossover-cable-b}
\end{figure}

\begin{minipage}[t]{0.50\textwidth}
	Avocent ACS 5000, Cyclades PM 1000
	
	\vspace{7pt}
	\rowcolors{1}{}{lightgray}
	\begin{tabular}{lll}
		\textbf{Patch Channel} & \textbf{Signal Type} & \textbf{RJ-45-Pin}\\
		\toprule
		RTS & Output & 1\\
		DTR & Output & 2\\
		TxD & Output & 3\\
		GND & Reference & 4\\
		CTS & Input & 5\\
		RxD & Input & 6\\
		DCD & Input & 7\\
		DSR & Input & 8 
	\end{tabular}
\end{minipage}
\quad\quad
\begin{minipage}[t]{0.50\textwidth}
	Routeurs Cisco, routeurs/firewalls Juniper Newtorks
	
	\vspace{7pt}
	\rowcolors{1}{}{lightgray}
	\begin{tabular}{lll}
		\textbf{Patch Channel} & \textbf{Signal Type} & \textbf{RJ-45-Pin}\\
		\toprule
		RTS & Output & 1\\
		DTR & Output & 2\\
		TxD & Output & 3\\
		GND & Reference & 4\\
		GND & Reference & 5\\
		RxD & Input & 6\\
		DSR & Input & 7\\
		CTS & Input & 8 
	\end{tabular}
\end{minipage}

\vspace{10pt}
\begin{minipage}[t]{0.50\textwidth}
	HP ProCurve, Extreme Summit x450e, serveurs

	\vspace{7pt}
	\rowcolors{1}{}{lightgray}
	\begin{tabular}{lll}
		\textbf{Patch Channel} & \textbf{Signal Type} & \textbf{DB-9-Pin}\\
		\toprule
		DCD & Input & 1\\
		RxD & Input & 2\\
		TxD & Output & 3\\
		DTR & Output & 4\\
		GND & Reference & 5\\
		DSR & Input & 6\\
		RTS & Output & 7\\
		CTS & Input & 8\\
		RI & Input & 9
	\end{tabular}
\end{minipage}
\quad\quad
\begin{minipage}[t]{0.50\textwidth}
	Abréviations

	\vspace{7pt}
	\rowcolors{1}{}{lightgray}
	\begin{tabular}{>{\bfseries}ll}
		CTS & \emph{Clear To Send}\\
		DCD & \emph{Data Carrier Detect}\\
		DSR & \emph{Data Set Ready}\\
		DTR & \emph{Data Termnal Ready}\\
		GND & \emph{Ground}\\
		RI & \emph{Ring Indicator}\\
		RTS & \emph{Request To Send}\\
		RxD & \emph{Receive Data}\\
		TxD & \emph{Transmit Data}
	\end{tabular}
\end{minipage}

\vspace{10pt}
Adaptateurs fournis : les adaptateurs fournis permettent de modifier les dispositions des différents signaux transmis par les ports des équipements. Ces derniers sont présentés aux figures \ref{fig:ADB0025} et \ref{fig:ADB0039} suivantes.

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.7]{img/ADB0025.pdf}
	\caption{Adaptateur ADB0025 permettant de connecter les équipements Cisco}
	\label{fig:ADB0025}
\end{figure}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.7]{img/ADB0039.pdf}
	\caption{Adaptateur ADB0039 permettant de connecter les équipements munis d'un port console DB-9}
	\label{fig:ADB0039}
\end{figure}

\chapter{Implémentation de fonctionnalités (routeurs)}

\section{Protocoles de routage}

\subsection{Routage statique}

\paragraph{Juniper JunOS}
Configuration statique des routes sur les routeurs Juniper (à partir du menu \lstinline![edit]!)

Configurer une route statique et spécifier l'adresse suivante à être utilisée quand le trafic est routé vers cette route statique : 
\begin{lstlisting}
set routing-options static route <destination prefix> next-hop <next-hop IP>
\end{lstlisting}

Configurer la route par défaut (\emph{default gatway}) :
\begin{lstlisting}
set routing-options static route 0.0.0.0/0 next-hop <gateway IP>
\end{lstlisting}

Options sur la route statique : 
\begin{lstlisting}
set routing-options static route <destination prefix> [options]
\end{lstlisting}
\begin{itemize}
	\item Toujours garder la route statique dans la table de routage (\emph{forwarding table}) : \lstinline!retain!
	\item Empêcher la route statique d'être re-annoncée (\emph{readvertised}) : \lstinline!no-readvertise!
	\item Enlever les routes inactives de la table de routage : \lstinline!active!
\end{itemize}

\paragraph{Cisco IOS}
Configuration statique des routes sur les routeurs Cisco

Configurer une route statique :
\begin{lstlisting}[language=cisco]
Router(config)#  route <interface> <destination prefix> <mask> <next-hop IP> [<distance>]
\end{lstlisting}
\begin{rem*}
	Le paramètre \lstinline!<distance>! est la distance administrative de la route (par défaut, elle est égale à 1 si aucune valeur n'est spécifiée).
\end{rem*}

Configurer la route par défaut (\lstinline!0.0.0.0/0!) : 
\begin{lstlisting}[language=cisco]
Router(config)# route <interface> {0 0 | 0.0.0.0 0.0.0.0} <gateway IP> [<distance> | tunneled]
\end{lstlisting}
\begin{rem*}
	Il est possible de remplacer \lstinline!0.0.0.0 0.0.0.0! par \lstinline!0 0! pour indiquer \\
	\lstinline!<destination prefix> <mask>!
\end{rem*}

\subsection{IGP (\emph{Internor Gateway Protocol})}
Par défaut, OSPF est implémenté sur l'ensemble des réseaux de la plateforme. Cependant, il est possible d'implémenter RIP ou IS-IS. L'ensemble des opérations à effectuer sont décrites dans les sections suivantes.

\subsubsection{OSPF (\emph{Open Shortest Path First})}

\begin{figure}[ht]
	\begin{minipage}{0.5\linewidth}
		\centering
	\begin{center}
		\rowcolors{1}{}{lightgray}
		\begin{tabular}{>{\bfseries}r|l}
			Type & Etat de liens\\
			Algorithme & Dijkstra\\
			Admin Distance & 110\\
			Métrique & $100\,000$ kbps/vitesse du lien\\
			Standards & RFCs 2328, 2740\\
			Protocoles & IP\\
			Protocole Transport & IP/89\\
			Authentification & \emph{Plaintext}, MD5\\
			AllSPF address & \lstinline!224.0.0.5!\\
			AllDR address & \lstinline!224.0.0.6!
		\end{tabular}
	\end{center}
	\end{minipage}
	\hspace{0.5cm}
	\begin{minipage}{0.5\linewidth}
		\centering
		\includegraphics[scale=.7]{img/ospf.pdf}
		\caption{Entête OSPF}
		\label{fig:img_ospf}
	\end{minipage}
\end{figure}

% Annonces d'état de liens : 
% \begin{itemize}
% 	\item \textbf{Router Link (Type 1)} : liste les routeurs voisins et le cout de chacun. Inondé dans une \emph{area}.
% 	\item \textbf{Network Link (Type 2)} : généralement généré par un DR (\emph{Designated Router}). Liste tous les routeurs sur un segment adjacent. Inondé dans une \emph{area}.
% 	\item \textbf{Network Summary (Type 3)} : généré par un ABR (\emph{Area Border Router}) et annoncé dans les \emph{areas}.
% 	\item \textbf{ASBR Summary (Type 4)} : injecté par un ASBR (\emph{AS Boundary Router}) dans le \emph{backbone} pour annoncer la présence d'un ASBR dans l'\emph{area}.
% 	\item \textbf{External Link (Type 5)} : généré par un ASBR (\emph{AS Boundary Router}) et inondé partout dans l'AS pour annoncer une route externe à OSPF.
% 	\item \textbf{NSSA External Link (Type 7)} : généré par un ASBR (\emph{AS Boundary Router}) dans une NSSA (\emph{not-so-stubby area}). Ce paquet est converti en une annonce d'état de lien (LSA) de type 5 par l'ABR (\emph{Area Border Router}) quand il quitte l'\emph{area}.
% \end{itemize}
% 
% \vspace{10pt}
% Types de routeurs :
% \begin{itemize}
% 	\item \textbf{Internal Router} : toutes ses interfaces sont dans la même \emph{area}.
% 	\item \textbf{Backbone Router} : une de ses interfaces est dans l'\emph{area 0} (\emph{backbone}).
% 	\item \textbf{Area Border Router (ABR)} : connecte au moins deux \emph{areas}.
% 	\item \textbf{AS Boundary Router (ASBR)} : connecte d'autres domaines de routage, typiquement dans le \emph{backbone}.
% \end{itemize}
% 
% \vspace{10pt}
% Types d'\emph{areas} :
% \begin{itemize}
% 	\item \textbf{Standard Area} : le type d'\emph{area} par défaut dans OSPF.
% 	\item \textbf{Stub Area} : les annonces d'état de liens \emph{External Link} (type 5) sont remplacées par une route par défaut.
% 	\item \textbf{Totally Stubby Area} : les annonces d'état de liens de types 3, 4, 5 sont remplacées par une route par défaut.
% 	\item \textbf{Not So Stubby Area (NSSA)} : une \emph{Stub Area} qui contient un ASBR (\emph{AS Boundary Router}). Les annonces d'état de liens de type 5 sont converties en type 7 dans l'\emph{area}.
% \end{itemize}
% 
% \vspace{10pt}
% Types de routes externes :
% \begin{itemize}
% 	\item \textbf{E1} : cout de l'annonce de ASBR plus le couT externe de la route
% 	\item \textbf{E2 (default)} : cout de la route vue par l'ASBR
% \end{itemize}
% 
% \vspace{10pt}
% Election du DR (\emph{Designated Router}) / BDR (\emph{Backup Designated Router}) :
% \begin{itemize}
% 	\item Le DR sert de point commun à tous les liens adjacents sur un segment comportant plusieurs accès.
% 	\item Le BDR maintient également des liens adjacents avec tous les routeurs dans le cas où le DR ne fonctionnerait plus.
% 	\item L'élection n'a pas lieu sur les liens point-à-point ou multi-points.
% 	\item La priorité par défaut (0-255) est 1. La priorité la plus haute gagne. Une priorité 0 ne peut pas donner lieu à une élection.
% 	\item La préemption du DR ne peut avoir lieu que lorsque le DR courant est remis à  zéro.
% \end{itemize}

\paragraph{Juniper JunOS}

JunOS gère à la fois OSPF et OSPFv3 qui permet l'utilisation de IPv6.

Dans le menu \verb![edit protocols ospf]!

\begin{lstlisting}
edit protocols ospf
set area 0.0.0.0 interface <interface> [passive]
\end{lstlisting}

Variante OSPFv3 pour IPv6 :
\begin{lstlisting}
edit protocols ospf3
set area 0.0.0.0 interface <interface> [passive]
\end{lstlisting}

\begin{rem*}
	Le mot-clé \verb!passive! permet d'annoncer la route sur le réseau interne, mais n'envoie pas de paquet OSPF \verb!hello!.
\end{rem*}

Afficher les voisins (\emph{neighbors}) OSPF : 
\begin{lstlisting}
run show ospf neighbor
\end{lstlisting}

\paragraph{Cisco IOS}

De même, Cisco IOS gère à la fois OSPF et OSPFv3. 

\begin{lstlisting}[language=cisco]
Router(config)# router ospf <num>
! Advertising other static protocols to OSPF
Router(config-router)# redistribute static subnets
! Backbone
Router(config-router)# network <network address> <reversed mask> area 0
\end{lstlisting}

Configuration d'une interface avec OSPF :
\begin{lstlisting}[language=cisco]
Router(config)# interface Ethernet0/1
Router(config-if)# description <description>
Router(config-if)# ip address <interface IP address> <mask>
Router(config-if)# ip ospf <num> area 0
! Optional MD5 authentication configured 
Router(config-if)# ip ospf authentication message-digest
Router(config-if)# ip ospf message-digest-key 1 md5 FooBar 
! Give the priority in DR election
Router(config-if)# ip ospf priority 100
\end{lstlisting}

Debug OSPF :
\begin{lstlisting}[language=cisco]
Router# show ip [route | protocols]
Router# show ip ospf interface
Router# show ip ospf neighbor
Router# show ip ospf border-routers
Router# show ip ospf virtual-links
Router# debug ip ospf [...]
\end{lstlisting}

\clearpage
\subsubsection{RIP (\emph{Routing Information Protocol})}

\begin{center}
	\rowcolors{1}{}{lightgray}
	\begin{tabular}{>{\bfseries}r|l}
		Type & Vecteur de distance\\
		Algorithme & Bellman-Ford\\
		Admin Distance & 120\\
		Métrique & \emph{Hop count} (max. 15)\\
		Standards & RFCs 2080, 2453\\
		Protocoles IP & IPv4, IPv6\\
		Protocole Transport & UDP\\
		Authentification & \emph{Plaintext}, MD5\\
		Multicast IP & \lstinline!224.0.0.9! / \lstinline!FF02::9!
	\end{tabular}
\end{center}


Implémentations de RIP :
\begin{itemize}
	\item \textbf{RIPv1} : implémentation originale, limitée à un routage par classes (\emph{classful routing}). \emph{Obsolète}.
	\item \textbf{RIPv2} : introduit pour permettre un routage sans classes (\emph{classless routing}), l'authentification, les mises à jours déclanchées (\emph{triggered updates}) et les annonces multicast (\emph{multicast announcements}).
	\item \textbf{RIPng, RIP Next Generation} : Etend RIPv3 pour le support du routage IPv6. Les fonctions sont similaires à RIPv2, et sont donc tout aussi limitées.
\end{itemize}

Comparaison des différentes implémentations : 

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{>{\bfseries}l|XXX}
	 & \textbf{RIPv1} & \textbf{RIPv2} & \textbf{RIPng}\tabularnewline 
	\midrule 
	IP & IPv4 & IPv4 & IPv6\tabularnewline
	Admin distance & 120 & 120 & 120\tabularnewline 
	Port UDP & 520 & 520 & 521\tabularnewline 
	Classless & Non & Oui & Oui\tabularnewline 
	Adresse d'avertissement & Broadcast & \lstinline!224.0.0.9! & \lstinline!FF02::9!\tabularnewline
	Authentification & Aucune & MD5 & Aucune\tabularnewline 
\end{tabularx}

Terminologie : 
\begin{itemize}
	\item \textbf{\emph{Split horizon}} : un routeur n'annonce pas une route au voisin par lequel il l'a apprise.
	\item \textbf{\emph{Route poisonning}} : quand le réseau devient injoignable, une mise-à-jour avec une métrique \emph{infinie} est générée pour annoncer explicitement que la route est injoignable.
	\item \textbf{\emph{Poison Reverse}} : un router annonce qu'un réseau est injoignable par l'interface par laquelle il l'a appris.
\end{itemize}

\paragraph{Juniper JunOS}
Configuration minimale pour le protocole RIP.

\begin{lstlisting}
[edit protocols rip]
# Créer le groupe <group name> et ajouter une interface
set group <group name> neighbor <interface name>
# Répéter pour chaque interface du groupe <group name>

[edit policy-options]
# Inclure la condition pour correspondre aux routes directes
set policy-statement advertise-rip-routes term from-direct from protocol direct
set policy-statement advertise-rip-routes term from-rip from protocol rip

# Accepter cette condition
set policy-statement advertise-rip-routes term from-direct then accept
set policy-statement advertise-rip-routes term from-rip then accept
\end{lstlisting}

Configuration minimale pour RIPng :
\begin{lstlisting}
[edit protocols ripng]
set group <group name> neighbor <interface name>
# Répéter pour chaque interface du groupe <group name>

[edit policy-options]
set policy-statement redist-direct from protocol direct
set policy-statement redist-direct the accept
\end{lstlisting}

\paragraph{Cisco IOS}

Cisco IOS est compatible avec RIPv2 et RIPng.

Configuration de RIPv2 :
\begin{lstlisting}[language=cisco]
! Enable RIPv2 IPv4 routing
Router(config)# router rip
Router(config-router)# version 2
 ! Disable RIPv2 automatic summarization
Router(config-router)# no auto-summary
 ! Designate RIPv2 interfaces by network
Router(config-router)# network <network>
 ! Identify unicast-only neighbors
Router(config-router)# neighbor <IP address>
 ! Originate a default route
Router(config-router)# default-information originate
 ! Designate passive interfaces
Router(config-router)# passive-interface {<interface> | default} 
 ! Modify timers
Router(config-router)# timers basic <update> <invalid> <hold> <flush>
\end{lstlisting}

Configuration des interfaces avec RIPv2 :
\begin{lstlisting}[language=cisco]
! Configure manual route summarization
Router(config-if)# ip summary-address rip <network mask>

! Enable MD5 authentication (RIPv2 only)
Router(config-if)# ip rip authentication mode md5
Router(config-if)# ip rip authentication key-chain <key-chain>
\end{lstlisting}

Configuration de RIPng :
\begin{lstlisting}[language=cisco]
! Enable IPv6 routing
Router(config)# ipv6 unicast-routing
! Enable RIPng IPv6 routing
Router(config)# ipv6 router rip <name>
 ! Toggle split-horizon and poison-reverse
Router(config-router)# [no] split-horizon
Router(config-router)# [no] poison-reverse
 ! Modify timers
Router(config-router)# timers basic <update> <invalid> <hold> <flush>
\end{lstlisting}

Configuration des interfaces avec RIPng :
\begin{lstlisting}[language=cisco]
! Enable RIPng on the interface
Router(config-if)# ipv6 rip <name> enable
! Configure manual route summarization
Router(config-if)# ipv6 rip <name> summary-address <prefix>
\end{lstlisting}

Debug :
\begin{lstlisting}[language=cisco]
Router# show ip[v6] protocols
Router# show ip[v6] rip database
Router# show ip[v6] route rip
Router# debug ip rip { database | events } 
Router# debug ipv6 rip [<interface>]
\end{lstlisting}

% \subsubsection{IS-IS (\emph{Intermediate System-to-Intermediate System})}

% \begin{figure}[ht]
% 	\begin{minipage}{0.5\linewidth}
% 		\centering
	% \begin{center}
	% 	\rowcolors{1}{}{lightgray}
	% 	\begin{tabular}{>{\bfseries}r|l}
	% 		Type & Etat de liens\\
	% 		Algorithme & Dijkstra\\
	% 		Admin Distance & 115\\
	% 		Métrique & Defaut (10)\\
	% 		Standards & ISO 10589\\
	% 		Protocoles & IP, CLNS\\
	% 		Protocole Transport & Couche 2\\
	% 		Authentification & \emph{Plaintext}, MD5\\
	% 	\end{tabular}
	% \end{center}
% 	\end{minipage}
% 	\hspace{0.5cm}
% 	\begin{minipage}{0.5\linewidth}
% 		\centering
% 		\includegraphics[scale=.7]{img/is-is-header.pdf}
% 		\caption{Entête IS-IS}
% 		\label{fig:img_is-is}
% 	\end{minipage}
% \end{figure}

% Adressage NSAP (\emph{Network Service Access Point})
% \begin{figure}[htbp]
% 	\centering
% 		\includegraphics[scale=.8]{img/is-is-NSPA.pdf}
% 	\label{fig:img_is-is-NSPA}
% \end{figure}
% \begin{itemize}
% 	\item \textbf{Interdomain Part (IDP)} : Portion de l'adresse utilisée dans le routage entre AS (assigné par ISO).
% 	\item \textbf{Domain-Specific Part (DSP)} : portion de l'adresse utile seulement dans l'AS local.
% 	\item \textbf{Authority and Format Identifier (AFI)} : identifie l'autorité qui décide du format de l'adresse.
% 	\item \textbf{Initial Domain Identifier (IDI)} : organisation appartenant à l'AFI 
% 	\item \textbf{High Order DSP (HODSP)} : l'\emph{area} dans l'AS.
% 	\item \textbf{System ID} : identifiant unique (48 bits pour les équipements Cisco, souvent déduit de l'adresse MAC).
% 	\item \textbf{NSAP Selector (SEL)} : identifie un service de la couche 3. Toujours NSAP Selector (SEL)0x00 dans une adresse NET.
% \end{itemize}
% 
% \vspace{10pt}
% Niveaux de routage :
% \begin{itemize}
% 	\item \textbf{Level 0} : utilisé pour localiser les terminaux.
% 	\item \textbf{Level 1} : routage dans une \emph{area}.
% 	\item \textbf{Level 2} : \emph{backbone} entre \emph{areas}.
% 	\item \textbf{Level 3} : routage inter-AS.
% \end{itemize}
% 
% \vspace{10pt}
% Terminologie :
% \begin{itemize}
% 	\item \textbf{Type-Length-Value (TLV)} : collection de données modulaires à longueur variable.
% 	\item \textbf{Link State PDU (LSP)} : contient les TLV contenant les informations d'état de liens.
% 	\item \textbf{Sequence Number Packet (SNP)} : utilisé pour demander et annoncer les LSPs. Peut être complet (CSNP) ou partiel (PSNP).
% 	\item \textbf{Hello Packet} : établit et maintient un lien entre voisins.
% 	\item \textbf{Designated Intermediate System (DIS)} : un pseudo-noeud responsable pour l'émulation de liens point-à-point et des segments multi-accès.
% \end{itemize}
% 
% \vspace{10pt}
% Pré-requis pour établir un lien entre voisins :
% \begin{itemize}
% 	\item Les MTUs des interfaces doivent être compatibles.
% 	\item Les \emph{levels} doivent être compatibles.
% 	\item Les \emph{areas} doivent être compatibles (if \emph{level} 1).
% 	\item Les systems IDs doivent être uniques.
% 	\item L'authentification doit avoir été réussie.
% \end{itemize}
% 
% \vspace{10pt}
% Election du DIS (\emph{Designated Intermediate-System}), dans l'ordre suivant :
% \begin{itemize}
% 	\item L'interface avec la plus grande priorité.
% 	\item Le plus haut SNPA (MAC/DLCI).
% 	\item Le plus haut System ID.
% 	\item La priorité par défaut des interfaces est de 64.
% 	\item Il peut avoir une préemption sur le DIS courant.
% \end{itemize}

% \paragraph{Juniper JunOS}
% \paragraph{Cisco IOS}
% Configuration de IS-IS sur les routeurs Cisco
% \begin{lstlisting}
% router isis
%  net <area ID/System ID>
%  is-type {level-1 | level-1-2 | level-2-only}
%  {end | commit}
% \end{lstlisting}
% 
% Configuration des interfaces pour IS-IS
% \begin{lstlisting}
% interface FastEthernet0/0
%  description Area 1
%  ip address <IP address> <mask> ip router isis
%  isis circuit-type level-<level num>
%  ! MD5 authentication (keychain not shown)
%  isis authentication mode md5
%  isis authentication key-chain <keychain>
% \end{lstlisting}
 
\subsection{EGP (\emph{Exterior Gateway Protocol})}

Utilisation du seul protocole de routage inter-domaine BGP (\emph{Border Gateway Protocol}).

\begin{center}
	\rowcolors{1}{}{lightgray}
	\begin{tabular}{>{\bfseries}r|l}
		Type & Vecteur de chemins\\
		eBGP Admin Distance & 20\\
		iBGP Admin Distance & 200\\
		Standards & RFC 4271\\
		Protocoles & IP\\
		Protocole Transport & TCP/179\\
		Authentification & MD5\\
	\end{tabular}
\end{center}

Terminologie :
\begin{itemize}
	\item \textbf{Autonomous System (AS)} : domaine logique sous le contrôle d'une seule et même entité.
	\item \textbf{External BGP (eBGP)} : liens BGP qui couvrent les bordures de l'AS.
	\item \textbf{Internal BGP (iBGP)} : liens BGP qui sont formés dans l'AS.
	\item \textbf{Synchronization Requirement} : une route doit être connue par un IGP avant qu'elle soit annoncée aux pairs BGP.
\end{itemize}

\vspace{10pt}
Attributs BGP :

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{>{\bfseries}l>{\bfseries\hsize=.3\hsize}X>{\hsize=.7\hsize}X}
	& \textbf{Nom} & \textbf{Description}\\
	\multicolumn{3}{>{\columncolor{lightgray}}l}{\emph{Well-known mandatory} : doit être supporté et propagé}\\
	1 & Origin & Type de l'origine (IGP, EGP, inconnu)\\
	2 & AS Path & Liste des AS que l'annonce a traversé\\
	3 & Next Hop & Pair extérieur dans l'AS voisin\\
	\multicolumn{3}{>{\columncolor{lightgray}}l}{\emph{Well-known Discretionary} : doit être supporté, propagation optionnelle}\\
	5 & Local preference & Métrique utile aux voisins locaux pour atteindre les destinations externes (par défaut : 100)\\
	6 & Atomic Aggregate & Inclut les AS qui ont été jetés à cause d'une agrégation de routes\\
	\multicolumn{3}{l}{\emph{Optional Transitive} : marqué comme partiel if non supporté par le voisin}\\
	7 & Aggregator & ID et AS de la route résumée\\
	8 & Community & Label de la route\\
	\multicolumn{3}{>{\columncolor{lightgray}}l}{\emph{Optional Nontransitive} : supprimé si non supporté par le voisin}\\
	4 & Multiple Exit Discriminator (MED) & Métrique utile aux voisins externes pour atteindre l'AS local (par défaut : 0)\\
	9 & Originator ID & Identifiant du noeud à l'origine de la \emph{route reflector}\\
	10 & Cluster List & Liste des identifiants des clusters\\
	13 & Cluster ID & Cluster source\\
	-- & Weight & Attribut propriétaire (Cisco) non communiqué aux pairs
\end{tabularx}


Sélection de la route :

\rowcolors{1}{}{lightgray}
\begin{tabularx}{\linewidth}{>{\bfseries}l>{\bfseries}lXl}
	& \textbf{Attribut} & \textbf{Description} & \textbf{Préférence}\\
	1 & Weight & Préférence administrative & Plus élevée\\
	2 & Local Preference & Communiquée entre les pairs d'un même AS & Plus élevée\\
	3 & Self-Originated & Préférer les chemins d'origine locale & Vrai\\
	4 & AS Path & Minimiser les sauts entre AS & Plus court\\
	5 & Origin & Préférer les routes apprises avec IGP plutôt que EGP, et EGP plutôt qu'inconnu & IGP\\
	6 & MED & Utilisé par les pairs externes pour entrer dans un AS & Plus petit\\
	7 & External & Préférer les routes eBGP plutôt que les routes iBGP & eBGP\\
	8 & IGP Cost & Considérer mes métriques IGP & Plus petit\\
	9 & eBGP Peering & Favoriser les routes stables & Plus vielle\\
	10 & Rouer ID & \emph{Tie Breaker} & Plus petit
\end{tabularx}

Etats de voisins :
\vspace{-12pt}
\begin{multicols}{2}
	\begin{itemize}
		\item \textbf{Idle} : voisin ne répond pas
		\item \textbf{Active} : tentative de connexion
		\item \textbf{Connect} : connexion TCP établie
		\item \textbf{Open Sent} : message \emph{Open} envoyé
		\item \textbf{Open confirm} : réponse reçue
		\item \textbf{Established} : lien établi
	\end{itemize}
\end{multicols}
\vspace{-12pt}

\subsubsection{iBGP (\emph{internal BGP})}
iBGP  est BGP utilisé en interne dans un AS comme un mécanisme pour échanger des informations entre plusieurs routeurs de bordure BGP.

Les routeurs parlant iBGP doivent être connecté en réseau maillé (\emph{full mesh}) pour éviter les boucles.

\paragraph{Juniper JunOS}
Pour tous les routeurs de l'AS.

Il faut utiliser les adresses IP \emph{loopback} des routeurs Juniper pour qu'ils puissent communiquer entre eux (pour la robustesse/disponibilité des routeurs, afin de prévenir qu'une interface soit inactive). Les adresses IP \emph{loopback} sont alors configurées de la manière suivante pour les routeurs de l'AS 3 :
\begin{itemize}
	\item Juniper 1 : \lstinline!10.255.3.1!
	\item Juniper 2 : \lstinline!10.255.3.2!
	\item Juniper 4 : \lstinline!10.255.3.4!
\end{itemize}

\vspace{7pt}
Configuration de l'adresse \emph{loopback} :
\begin{lstlisting}
edit interfaces lo0
set unit 0 family inet address 10.255.<AS number>.<router number>/32
\end{lstlisting}

Editer les options de routage :
\begin{lstlisting}
edit routing-options
set router-id <router loopback address>
autonomous-system <AS number>
\end{lstlisting}

Editer les paramètres du protocole BGP :
\begin{lstlisting}
edit protocols bgp group internal-peers
set type internal
set local-address <router loopback address>
export next-hop-self
neighbor <neighbor router loopback address>
\end{lstlisting}

Créer la règle \verb!next-hop-self! :
\begin{lstlisting}
edit policy-options policy-statement next-hop-self
edit term bgp 
# annonce des routes apprises avec BGP
set from protocol bgp 
# paramètre next-hop contient l'adresse du routeur (pour défauts de route)
set then next-hop self 
\end{lstlisting}

Debug BGP :
\begin{lstlisting}
# Lister les routes annoncées a un voisin
[run] show route advertising-protocol bgp IP_pair

# Voir les préfixes annoncés/reçus via les pairs :
[run] show bgp neighbor
\end{lstlisting}

\paragraph{Cisco IOS}

Configuration de iBGP pour les routeurs Cisco.

\begin{lstlisting}[language=cisco]
Router(config)# router bgp <AS number>
Router(config-router)# neighbor <neighbor IP> remote-as <same AS number>
\end{lstlisting}

\subsubsection{eBGP (\emph{external BGP})}

eBGP (\emph{External Border Gateway Protocol}) est utilisé pour transporter des données à d'autres systèmes autonomes qui utilisent BGP également.

\paragraph{Juniper JunOS}\hfill\par
\begin{lstlisting}
set routing-options autnonmous-system <AS number>
set roting-options static route <network address>/<network prefix> discard
\end{lstlisting}

Editer les paramètres du protocole BGP (\verb![edt protocol bgp]!) :
\begin{lstlisting}
edit protocols bgp group <group name>
set type external # E-BGP
set export TO-EXTERNAL # utilisation de la règle TO-EXTERNAL
set peer-as <neighbor AS number>
set neighbor <neighbor IP address>
\end{lstlisting}

Créer la règle \verb!TO-EXTERNAL! :
\begin{lstlisting}
edit policy-options policy-statement TO-EXTERNAL
edit term 1 # premier amendement
# annoncer une route configurée statiquement
set from protocol static 
# annonce des routes statiques concernant le préfixe de l'AS
set from route-filter <network address>/<network prefix> 
set then accept

up
edit term 2 # second amendement
set then reject # rien d'autre n'est annoncé
\end{lstlisting}

\begin{rem*}
	Pour un AS de transit, il faut en plus annoncer les routes apprises avec E-BGP : 
	\begin{lstlisting}
edit term 2 
set from protocol bgp
set then accept

up
edit term 3
set then reject
	\end{lstlisting}
\end{rem*}
 
\paragraph{Cisco IOS}

Configuration de eBGP pour les routeurs Cisco

\begin{lstlisting}[language=cisco]
Router(config)# router bgp <AS number>
Router(config-router)# bgp dampening # description
Router(config-router)# network <network address> <network mask>
Router(config-router)# neighbor <neighbor IP address> remote-as <neighbor AS number>
\end{lstlisting}

Ne pas oublier de créer la route vers \verb!null! (sinon la route ne sera pas annoncée avec BGP)
\begin{lstlisting}[language=cisco]
Router(config-router)# ip route <network address> <network mask> Null0
\end{lstlisting}

Debug / troubleshooting BGP :
\begin{lstlisting}[language=cisco]
Router# show ip bgp [summary]
Router# show ip bgp neighbors
Router# show ip route [bgp]
Router# clear ip bgp * [soft]
Router# debug ip bgp [...]
\end{lstlisting}

Influencer la sélection de chemins : 
\begin{lstlisting}[language=cisco]
Router(config-router)# neighbor 172.16.0.1 weight 200 ! weight
Router(config-router)# bgp default local-preference 100 ! local preference
Router(config-router)# default-metric 400 ! MED
Router(config-router)# neighbor 172.16.0.1 route-map Foo ! route map
Router(config-router)# bgp bestpath as-path ignore ! ignore AS path
\end{lstlisting}

Installer un attribut local-pref :
\begin{lstlisting}[language=cisco]
Router(config)# route-map LOCALPREF permit 10
Router(config-route-map)# set local-preference 500
Router(config-route-map)# router bgp <AS BGP number>
Router(config-router)# neighbor <BGP peer> route-map LOCALPREF in
\end{lstlisting}

\clearpage
\section{MPLS (\emph{MultiProtocol Label Switching})}
\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.8]{img/mpls.pdf}
	\caption{entête MPLS}
	\label{fig:img_mpls}
\end{figure}

Attributs :
\begin{itemize}
	\item \textbf{Label} (20 bits) : valeur unique de label
	\item \textbf{Traffic class/EXP} (3 bits): marquage de QoS (\emph{Quality of Service}) à l'aide d'un mappage de CoS (\emph{Class of Service})
	\item \textbf{Bottom of Stack} (1 bit) : indique que le label est le dernier dans la pile
	\item \textbf{Time to Live} (8 bits) : compteur de sauts mappé du champ TTL de IP	
\end{itemize}

\vspace{10pt}
Terminologie :
\begin{itemize}
	\item \textbf{Label Distribution Protocol (LDP)} : protocole de distribution de paquets (RFC 3036)
	\item \textbf{Resource reSerVation Protocol - Traffic Engineering (RSVP-TE)} : protocole de réservation de ressources sur un réseau IP, extension du protocole RSVP.
	\item \textbf{Label Switching Router (LSR)} : tout routeur effectuant un \emph{label switching}
	\item \textbf{Label-Switched Path (LSP)} : chemin unidirectionnel traversant un ou plusieurs LSR que prend un \emph{label-switched packet} qui appartient à une FEC
	\item \textbf{Forwarding Equivalence Class (FEC)} : groupe de paquets qui sont \emph{forwardés} de la même manière, typiquement à l'aide du préfixe de l'adresse destination et/ou de la classe de service (CoS)
	\item \textbf{Label Information Base (LIB)} : contient tous les labels appris par un LSR à l'aide d'un protocole de distribution de labels (RSVP, LDP, TDP\dots)
	\item \textbf{Label FIB (LFIB)} : base de donnée de routage pour des paquets étiquetés
\end{itemize}

\vspace{10pt}
L'implémentation de MPLS n'est possible que pour au moins trois routeurs interconnectés dans le même système autonome. 

Il est nécessaire de spécifier les rôles des routeurs pour un LSP donné (\emph{Label Switched Path}) :
\begin{itemize}
	\item Ingress router (LER, \emph{Label Edge Router})
	\item Egress router (LER, \emph{Label Edge Router})
	\item Transit routeurs (LSR, \emph{Label Switched Router})
\end{itemize}

\vspace{7pt}
Afin de faire de la qualité de service (QoS), nous allons surtout développer la manière dont MPLS est implémenté, en utilisant RSVP.

Le schéma \ref{fig:img_mpls-as3} suivant montre la manière dont MPLS est implémenté dans l'AS 3.
\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.8]{img/mpls-as3.pdf}
	\caption{MPLS dans l'AS 3, dans le sens J2 $\to$ J4}
	\label{fig:img_mpls-as3}
	\vspace{-20pt}
\end{figure}

\paragraph{Juniper JunOS}
Implémentation de MPLS/RSVP.

Activer MPLS et RSVP sur tous les routeurs mis en jeu :
\begin{lstlisting}
# Activer MPLS
edit protocols mpls
set interface all # activer MPLS sur toutes les interfaces
set interface <interface> disable # désactiver MPLS sur l'interface

# Activer RSVP
edit protocols rsvp
set interface all # activer RSVP sur toutes les interfaces
set interface <interface> disable # désactiver RSVP sur l'interface
\end{lstlisting}

Activer MPLS sur toutes les interfaces mises en jeu dans la topologie :
\begin{lstlisting}
set interfaces <interface> family mpls
\end{lstlisting}

Configurer un LSP (\emph{Label-Switched Path})
\begin{lstlisting}
edit protocol mpls
set label-switched-path <lsp name> to <egress router>
\end{lstlisting}

\begin{rem*}
	Il faut bien configurer le LSP sur chacun des routeurs LER (\emph{Label Edge Router}) afin que le LSP soit valide : 
	\begin{itemize}
		\item LSP de l'\emph{ingress router} vers l'\emph{egress router}
		\item LSP inversé de l'\emph{egress router} vers l'\emph{ingress router} (qui voient donc leurs rôles inversés)
	\end{itemize}
\end{rem*}

Attention à bien activer le \emph{Traffic Engineering} pour OSPF (quand OSPF est utilisé en tant que IGP) :
\begin{lstlisting}
edit protocols ospf
set traffic-engineering shortcuts lsp-metric-into-summary

up
edit protocols mpls
traffic-engineering bgp-igp
\end{lstlisting}

Debug MPLS/RSVP :
\begin{lstlisting}
show route table inet.3
show rsvp neighbor
show rsvp interface
show rsvp session detail
show mpls lsp extensive
\end{lstlisting}

\begin{rem*}
	Il est possible de créer un fichier de statistiques pour MPLS :
	\begin{lstlisting}
[protocols mpls]
mpls {
	statistics {
		file mpls-stats.txt;
		auto-bandwidth;
}
	\end{lstlisting}
	Le fichier de statistique est alors accessible par la commande : 
	\begin{lstlisting}
[run] file show /var/log/mpls-stats.txt
	\end{lstlisting}
\end{rem*}

\paragraph{Cisco IOS}

Configuration de MPLS pour les routeurs Cisco.

\begin{lstlisting}[language=cisco]
! Activer CEF
Router(config)# ip cef
! Selctionner un protocole de distibution de labels
Router(config)# mpls label protocol ldp
! Activer MPLS sur les interfaces
Router(config)# interface <interface name>
Router(config-if)# ip address <IP address> <mask>
Router(config-if)# mpls ip
! Augmenter la MTU de MPLS (multilabel stack)
Router(config-if)# mpls mtu 1512
\end{lstlisting}

Debug :
\begin{lstlisting}[language=cisco]
Router(config)# show mpls interfaces 
Router(config)# show mpls ldp bindings [detail] ! (LIB) 
Router(config)# show ip cef [detail] ! (FIB) 
Router(config)# show mpls ldp neighbors 
Router(config)# show mpls forwarding-table [detail] ! (LFIB)
Router(config)# debug mpls [...]
\end{lstlisting}

Implémentation de MPLS-TE avec RSVP, en s'appuyant sur RSVP :
\begin{lstlisting}[language=cisco]
Router(config)#  mpls traffic-eng area <area number>
Router(config)#  mpls traffic-eng router-id <loopback address> ! doit avoir un masque 255.255.255.255
Router(config)#  
Router(config)#  ip cef [distributed]
Router(config)#  mpls traffic-engineering tunnel

! Activer MPLS/RSVP sur les interfaces concernées
Router(config)# interface <interface name>
Router(config-it)# bandwidth <bandwidth>
Router(config-it)# ip address <IP address> <mask>
Router(config-it)# mpls traffic-engineering tunnel
Router(config-it)# ip rsvp bandwidth <bandwidth>

! Configuration d'un tunnel
Router(config)# interface <tunnel name>
Router(config-it)# ip unnumbered <loopback address>
Router(config-it)# tunnel destination <dest address>
Router(config-it)# tunnel mode mpls traffic-eng
! Annonce de la présence du tunne par le protocole de routage
Router(config-it)# tunnel mpls traffic-eng autoroute announce
\end{lstlisting}

\chapter{Implémentation de services (serveurs)}

\section{NTP (\emph{Network Time Protocol})}

NTP est un protocole permettant la synchronisation des horloges locales des systèmes d'exploitation des équipements d'un même réseau sujet à la gigue (\emph{jitter}).

NTP utilise UDP sur le port 123.

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.8]{img/NTP.pdf}
	\caption{Architecture NTP dans la plateforme}
	\label{fig:img_NTP}
\end{figure}


\paragraph{Debian}
Les serveurs ayant pour système d'exploitation Debian peuvent à la fois être utilisés en tant que serveur NTP, ainsi que client NTP.

\subparagraph{Configuration d'un serveur NTP}\hfill\par
Installation du serveur NTP (à partir du CD d'installation de Debian par exemple) :
\begin{lstlisting}
apt-get install ntp ntpdate
\end{lstlisting}

Le fichier de configuration du serveur NTP se trouve par défaut dans : \verb!/etc/ntp.conf! :
\begin{lstlisting}
server 127.0.0.1 # Spécifier le serveur NTP père (itself)
fudge 127.0.0.1 stratum 10 
\end{lstlisting}

Exécuter le \emph{deamon} \lstinline!ntp! : \lstinline!/etc/init.d/ntp start!

\subparagraph{Configuration d'un client NTP}

Vérifier que le \emph{deamon} \lstinline!ntp! n'est pas en marche (eg. commande \lstinline!top!).
 
Dans le cas échéant, supprimer le lien symbolique \lstinline!ntp! du dossier \lstinline!/etc/rc5.d! et stopper le \emph{deamon} \lstinline!ntp! : \lstinline!/etc/init.d/ntp stop!.

Installer le client NTP : \lstinline!apt-get install ntpdate!

Planifier une synchronisation périodique (eg. Tous les jours à 12:00) :
\begin{lstlisting}
$ crontab -e

# Editeur NANO
00 12 * * * /usr/sbin/ntpdate <NTP server IP>
\end{lstlisting}

Redémarrer cron : \lstinline!/etc/init.d/cron restart!

Utilisation de \lstinline!crontab! :

\begin{tabular}{ll}
	\lstinline!export EDITOR=vi! & Spécifier un éditeur pour le fichier \lstinline!crontab!\\
	\lstinline!crontab -e! & Editer un fichier \lstinline!crontab!, créé si besoin \\
	\lstinline!crontab -l! & Afficher le fichier \lstinline!crontab! \\
	\lstinline!crontab -r! & Supprimer le fichier \lstinline!crontab! \\
\end{tabular}

{\small
\begin{verbatimtab}
# Minute   Hour   Day of Month       Month          Day of Week        Command    
# (0-59)  (0-23)     (1-31)    (1-12 or Jan-Dec)  (0-6 or Sun-Sat)                
    0        2          12             *               0,6           <command>
\end{verbatimtab}
}

\begin{rem*}
	Il est possible de placer plusieurs commandes à la suite :
	\begin{itemize}
		\item En utilisant \lstinline!&&! pour qu'elles soient exécutées \emph{successivement},
		\item En utilisant \lstinline!;! pour qu'elles soient exécutées \emph{simultanément}.
	\end{itemize}
\end{rem*}

Afficher la date du système : \lstinline!date!

Fixer la date sur le système : \lstinline!date [MMjjhhmm[[CC]AA][.ss]]!


\paragraph{Juniper JunOS}
Configuration manuelle de la date/heure : 
\begin{lstlisting}
set system time-zone Europe/Berlin
set date 201001251115.00 # January 25, 2010 and 11:15:00 a.m
set date ntp <ntp server IP>
\end{lstlisting}

Configuration de NTP :
\begin{lstlisting}
set system ntp server <ntp server IP> version 4 prefer
set system ntp server <ntp server 2 IP> version 4
\end{lstlisting}

\paragraph{Cisco IOS}

Configuration de NTP en mode client :
\begin{lstlisting}
! Configurer l'adresse IP du serveur NTP 
set ntp server <ntp server IP>
! Activer le mode NTP client
set ntp client enable
! Vérifier la configuration NTP 
show ntp [noalias]
\end{lstlisting}

\section{DHCP (\emph{Dynamic Host Configuration Protocol})}

DHCP est un protocole qui permet d'assigner une adresse IP à un équipement, dès sa connexion sur un LAN où se trouve un serveur DHCP. 

\paragraph{Debian}
Installation de DCHP pour Debian : \lstinline!apt-get install isc-dhcp-server!

Editer le fichier de configuration \lstinline!/etc/dhcp/dhcpd.conf! :
\begin{lstlisting}
option domain-name "<domain name>";
option domain-name-servers <domain name server IP>;
subnet 192.168.1.0 netmask 255.255.255.0 {
	range <lowest IP address> <highest IP address>;
	option routers <router IP/name>;
}
\end{lstlisting}

Etablir des baux statiques :
\begin{lstlisting}
host <host name> {
	hardware ethernet <MAC address>;
	fixed-address <IP address>;
}
\end{lstlisting}

Redémarrer le service DCHP : \lstinline!/etc/init.d/isc-dhcp-server restart!

\begin{rem*}
	Pour configurer l'interface sur laquelle le serveur DHCP intervient, il faut éditer le fichier \lstinline!/etc/default/isc-dhcp-server! : 
\begin{lstlisting}
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth1"
\end{lstlisting}
\end{rem*}

\paragraph{Juniper JunOS}

Aller dans le menu de configuration DHCP :
\begin{lstlisting}
top
edit system services dhcp
\end{lstlisting}

Editer une plage (\emph{pool}) d'adresses à attribuer :
\begin{lstlisting}
edit pool <network>/<prefixe> 
set address-range low <lowest IP address> high <highest IP address>
set default-router <default router IP address>
\end{lstlisting}

Configurer des baux statiques :
\begin{lstlisting}
edit static-binding <MAC address> 
set fixed-address <fixed IP address>
set host-name <hostname>
\end{lstlisting}

\paragraph{Cisco IOS}
Exclure des plages d'adresses : 
\begin{lstlisting}[language=cisco]
Router(config)# ip dhcp excluded-address <start> [<end>]
\end{lstlisting}

Création d'une \emph{pool} d'adresses à attribuer :
\begin{lstlisting}[language=cisco]
Router(config)# ip dhcp pool <pool name>
Router(dhcp-config)# network <network address> <network mask>
Router(dhcp-config)# default-router <default router IP>
! Facultatif
Router(dhcp-config)# dns-server <DNS server IP>
Router(dhcp-config)# domain-name <domain name>
\end{lstlisting}

Configurer des baux statiques :
\begin{lstlisting}[language=cisco]
Router(dhcp-config)# host <host ip> <mask>
Router(dhcp-config)# {client-identifier|hardware-address} <MAC address>
Router(dhcp-config)# client-name <client name>
\end{lstlisting}
\begin{rem*}
	Pour créer des baux statiques, il faut avoir au préalable configuré une nouvelle \emph{pool} spécifique au \emph{mapping}.
\end{rem*}

Durée du bail :
\begin{lstlisting}[language=cisco]
Router(dhcp-config)# lease inifinte # bail inifini
Router(dhcp-config)# lease <days> <hours> <minutes>
\end{lstlisting}

Activer le service DHCP sur le routeur :
\begin{lstlisting}[language=cisco]
Router(config)# service dhcp
\end{lstlisting}

Commandes de debug : 
\begin{lstlisting}[language=cisco]
Router# show ip dhcp binding
\end{lstlisting}

\section{Serveur HTTP (Apache)}

HTTP est un protocole permettant d'afficher des pages web sur les navigateurs des clients via port TCP/80.

Un service HTTP est installé par défaut sur les serveurs Debian. Il est accessible depuis l'adresse \lstinline!localhost! (\lstinline!127.0.0.1!) depuis le serveur lui-même et depuis sont adresse dans le réseau depuis les autres serveurs.

Les fichiers HTML sont placés par défaut dans le dossier \lstinline!/var/www!.

Redémarrer le service Apache : \lstinline!/etc/init.d/apache2!.

\section{Serveur FTP (\emph{File Transfer Protocol})}

FTP est un protocole permettant le transfert de fichier. La signalisation se fait sur le port TCP/20 et le transfert de fichier proprement dit se fait sur le port TCP/21.

Installation de \lstinline!proftpd! : \lstinline!apt-get install proftpd!
Le serveur FTP utilise les comptes de Debian pour gérer les authentifications.

Editer le fichier \lstinline!/etc/proftpd.conf!. Dans notre cas, nous allons simplement autoriser les utilisateurs à écrire dans le dossier \lstinline!/mnt/ftp! par défaut :
\begin{lstlisting}
#Seul l'utilisateur adminftp a le droit d'écrire dans /mnt/ftp
<Directory /mnt/ftp>
	<Limit WRITE>
		AllowUser adminftp
		DenyAll
	</Limit>
</Directory>
\end{lstlisting}

\section{DNS (\emph{Domain Name Service})}

DNS est un protocole permettant de mettre en correspondance des adresses physiques et des adresses logiques. La structure logique des adresses est hiérarchique : \lstinline!<sous-domaine>.<domaine>.<tld>!. 

\subsection{Configuration sur un seul as (pas de hiérarchie)}

\subsubsection{Client}
Editer le fichier \lstinline!/etc/resolv.conf! :
\begin{lstlisting}
domain [<domain>.]<tld>
search [<domain>.]<tld>
nameserver <DNS server IP> 
\end{lstlisting}

\subsubsection{Serveur}
			
Dans le fichier \lstinline!/etc/hostname!, donner le nom complet de la machine. Par exemple : \lstinline!serveur3.ent1.org! où : \lstinline!serveur3! est le \lstinline!<host>!, \lstinline!ent1! est le \lstinline!<domain>! et \lstinline!org! est le \lstinline!<tld>!.

Redémarrer le service \lstinline!hostname.sh! :	\lstinline!/etc/init.d/hostname.sh start!

Dans le fichier \lstinline!/etc/host.conf!, définir la séquence de recherche pour la résolution de nom :
\begin{lstlisting}
order hosts, bind
multi on	
\end{lstlisting}

Editer le fichier \lstinline!/etc/hosts! (ce fichier permet de \emph{bypasser} la résolution de nom classique par serveur DNS) :
\begin{lstlisting}
127.0.0.1	localhost.<domain>.<tld>	localhost
23.7.100.3	<host>.<domain>.<tld>	<host>	
\end{lstlisting}
	
Editer le fichier \lstinline!/etc/resolv.conf! (ce fichier est utile à la résolution de noms du domaine) :
\begin{lstlisting}
domain <domain>.<tld>
search <domain>.<tld>
nameserver <DNS server IP>	
\end{lstlisting}
	
Installer le service \lstinline!bind! : \lstinline!apt-get install bind9!

Aller ensuite dans le dossier \lstinline!/etc/bind! (\lstinline!cd /etc/bind!) et copier le fichier \lstinline!db.local! pour le domaine \lstinline!<domain>.<tld>! qui nous intéresse (\lstinline!cp db.local db.<domain>.<tld>!)

Editer le ficher \lstinline!db.<domain>.<tld>! :
\begin{lstlisting}
; BIND data file for <interface> interface
;
$TTL    604800
@    IN    SOA    <host>.<domain>.<tld>. root.<domain>.<tld>. (
								2			; Serial
								604800		; Refresh
								86400		; Retry
								2419200		; Expire
								604800 )	; Negative Cache TTL
;
@    IN    NS    <host>.<domain>.<tld>.
<host>    IN    A    <host IP>
<Ajouter une ligne par machine du réseau>
\end{lstlisting}

Copier ensuite le fichier \lstinline!db.127! pour le domaine \lstinline!<domain>.<tld>! qui nous intéresse (\lstinline!cp db.127 db.<domain>.<tld>.inv!)

Editer le fichier \lstinline!db.<domain>.<tld>.inv! :
\begin{lstlisting}
; BIND reverse data file for <interface> interface
;
$TTL    604800
@    IN    SOA    <host>.<domain>.<tld>. root.<domain>.<tld>. (
                        		1			; Serial
		                     	604800		; Refresh
		                      	86400		; Retry
		                    	2419200		; Expire
		                     	604800 )	; Negative Cache TTL
;
@    IN    NS    <host>.
<host IP LSByte>     IN    PTR    <host>.<domain>.<tld>.	
<Ajouter une ligne par machine du réseau>
\end{lstlisting}

Editer le fichier \lstinline!named.conf.local! (et non le fichier racine \lstinline!named.conf!) :
\begin{lstlisting}
zone "<domain>.<tld>" {
	type master;
	file "/etc/bind/db.<domain>.<tld>";
	forwarders{};
};
zone "<reversed IP>.in-addr.arpa" {
	type master;
	file "/etc/bind/db.<domain>.<tld>.inv";
	forwarders{};
};
\end{lstlisting}

Redémarrez le service \lstinline!bind9! : \lstinline!/etc/init.d/bind9 restart!

\subsubsection{Debug}
On peut vérifier la syntaxe :
\begin{lstlisting}
named-checkzone webadonf.lan /etc/bind/db.webadonf.lan[.inv]
named-checkconf /etc/bind/named.conf[.options]
\end{lstlisting}

\subsection{DNS entre les AS}
Sur chaque serveur DNS, éditer le fichier \lstinline!/etc/bind/db.root!  et commenter toutes les lignes du fichier.

Les serveurs DNS de chaque AS doivent être indiqués. Pour cela, ajouter deux lignes pour chaque AS en les adaptant :
\begin{lstlisting}
.	360000	IN	NS	<domain>.<tld>.
<domain>.<tld>.	3600000	A	<AS DNS server IP>	
\end{lstlisting}

\begin{rem*}
	Il y a 4 AS, donc il faut ajouter 6 lignes dans le fichier \lstinline!db.root! de chaque serveur DNS.
\end{rem*}

\section{Supervision des équipements}

Afin de superviser l'ensemble des équipements, nous utilisons le protocole SNMP (\emph{Supervision Network Management Protocol}) qui utilise les ports UDP/161 et UDP/162 (pour les \emph{traps}).

\subsection{Installation et configuration de Nagios}
Nagios est un outil qui permet de superviser des équipements à l'aide du protocole SNMP (\emph{Simple Network Management Protocol}).

Installation de Nagios : \lstinline!apt-get install nagios3!

Définir les noms des machines administrées (éditer le fichier \lstinline!/etc/nagios3/conf.d/hosts.cfg!) :
\begin{lstlisting}
define host{
	host_name	<name>
	alias <alias>
	address	<ip>
	check_command <commande executée>
}
\end{lstlisting}
			
La liste des commandes que l’on peut exécuter se trouve dans les fichiers \lstinline!.cfg! présents dans le dossier \lstinline!/etc/nagios-plugins/config!, comme \lstinline!check-swithch-alive!, \lstinline!check-router-alive! ou \lstinline!check-host-alive!.
	
Définir les groupes de machines (éditer le fichier \lstinline!/etc/nagios3/conf.d/hostgroups_nagios2.cfg!) :
\begin{lstlisting}
define hostgroup{
	hostgroup_name <group name>
	alias	<alias>
	members	<member 1>, <member 2>, ...
} 
\end{lstlisting}

Définir les services supervisés sur les hôtes ou les groupes (éditer le fichier \lstinline!/etc/nagios3/conf.d/services_nagios2.cfg!) :
\begin{lstlisting}
define service{
	hostgroup_name <group> # ou host_name <host>
	service_description <description>
	check_command <command>
}
\end{lstlisting}

Les commandes disponibles sont présentes dans le dossier \lstinline!/etc/nagios-plugins/config!.
		
Afin de prendre en compte les configurations, il faut redémarrer le service : \lstinline!/etc/init.d/nagios3 restart!

\subsection{Configuration de SNMP (client)}

Afin de vérifier que SNMP est bien activé sur les routeurs, on doit utiliser l’utilitaire \lstinline!snmpwalk!.

Il faut tout d’abord veiller à ce que le paquet \lstinline!snmp! soit téléchargeable ; pour ce faire, il faut ajouter une source \lstinline!apt! dans le fichier \lstinline!/etc/apt/sources.list! :
\begin{lstlisting}
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
\end{lstlisting}

Il est alors possible d'installer \lstinline!snmp! à l'aide de la commande \lstinline!apt-get install snmp!.

Il est possible de tester le protocole SNMP sur les routeurs avec cet exemple :
\begin{lstlisting}
snmpwalk -c public -v 2c 13.8.0.36 1.3.6.1.4.1.2636.3.1.13.1.5
iso.3.6.1.4.1.2636.3.1.13.1.5.1.1.0.0 = STRING: "midplane"
iso.3.6.1.4.1.2636.3.1.13.1.5.4.1.0.0 = STRING: "Jseries CPU fan"
iso.3.6.1.4.1.2636.3.1.13.1.5.7.1.0.0 = STRING: "FPC: FPC @ 0/*/*"
iso.3.6.1.4.1.2636.3.1.13.1.5.8.1.1.0 = STRING: "PIC: 4x GE Base PIC @ 0/0/*"
iso.3.6.1.4.1.2636.3.1.13.1.5.9.1.0.0 = STRING: "Routing Engine"
iso.3.6.1.4.1.2636.3.1.13.1.5.9.1.1.0 = STRING: "USB Hub"
iso.3.6.1.4.1.2636.3.1.13.1.5.9.1.2.0 = STRING: "Removable Compact Flash"
\end{lstlisting}

\subsection{Configuration des équipements pour SNMP}

Cisco : 
\begin{lstlisting}[language=cisco]
Router(config)# snmp-server community public RO ! Read-Only
Router(config)# snmp-server community private RW ! Read-write
Router(config)# snmp-server location Paris
Router(config)# snmp-server contact Olivier Fourmaux
Router(config)# snmp-server enable traps
Router(config)# snmp host <snmp server> traps SNMPv2
\end{lstlisting}

Juniper :
\begin{lstlisting}
[edit snmp]
community public {
	authorization read-only;
	client {
		4.11.100.32/28; # seule autorisation
		0.0.0.0/0 restrict; # interdiction à tout le monde
	}
}
\end{lstlisting}

\subsection{Utilisation de Cacti}

\subsubsection{Introduction et installation}
Cacti est un outil open-source permettant de consulter aisément des mesures de performances effectuées ayant pour source des serveurs (et les services fonctionnant sur ceux-ci), ou autres équipements réseaux. Cacti communique généralement avec les équipements réseaux en utilisant le protocole SNMP.

Pour fonctionner convenablement, Cacti requiert la présence d'un serveur web HTTP (Apache, Nginx, Lighttpd, \dots), d'un serveur de base de donnée (plutôt de type MySQL), ainsi que de PHP.

Nous utilisons des distributions Debian, de ce fait, nous installons Cacti simplement grâce au gestionnaire de paquets aptitude, de la manière suivante : \lstinline!apt-get install cacti!.

\subsubsection{Configuration BDD/Utilisateurs}

Il faut ensuite configurer Cacti (via un navigateur) afin de lui permettre d'utiliser MySQL.
L'installation est simple, puisque tout est quasiment automatique\dots\\
Il faut se rendre à l'adresse \lstinline!http://localhost/cacti/! et procéder de la manière suivante :
\begin{itemize}
	\item Sélectionner ``New Install'', puis ``Next'',
	\item On arrive ensuite sur une page qui vérifie que les outils requis par Cacti sont présents sur la machine (tout doit être vert). Cliquer enfin sur ``Finish'',
	\item Ensuite on arrive sur la page de \emph{login}, s'authentifier avec le couple de \emph{login}/mot de passe suivant : \lstinline!admin!/\lstinline!admin!, on doit ensuite choisir un nouveau mot de passe. Cliquer sur ``Save''.
\end{itemize}
Cacti est enfin configuré.

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.35]{img/ScreenHostAdd.png}
	\label{fig:img_ScreenHostAdd}
\end{figure}

\subsubsection{Ajouts d'équipements sources}
Il faut tout d'abord bien s'assurer que les équipements soient compatibles SNMP, et bien sûr configurés.

\begin{itemize}
	\item Cliquer sur le lien ``Create devices for network'',
	\item Cliquer sur ``Add'' en haut à droite, juste en dessous de ``Logout''.
\end{itemize}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.35]{img/ScreenHostConfig.png}
	\label{fig:img_ScreenHostConfig}
\end{figure}

Remplir les champs ``Description'', ``Hostname'' (ie. IP de la machine), \dots \\
Mettre ``Host template''" à ``Generic SNMP-enabled Host'', ``SNMP Version'' à ``Version 2'', on valide le tout en cliquant sur le bouton ``Create''.

On va maintenant ajouter les informations à récupérer sur l'équipement :
\begin{itemize}
	\item Cliquer sur ``Data Source List'' (approximativement en haut à droite), ensuite sur le lien ``Add'' à droite,
	\item Changer ``Selected Data Template'' à ``Interface -- Traffic'' puis cliquer sur le bouton ``Create'',
	\item Sur la page qui s'affiche, juste cliquer sur le bouton ``Save''.
\end{itemize}

\begin{rem*}
	Il faut parfois patienter quelques minutes avant que la requête SNMP ne soit réalisé.
\end{rem*}

On va créer un graphique par interface sur lequel on aura le débit du trafic sur l'interface en octet/sec :
\begin{itemize}
	\item Cliquer sur ``Create Graphs for this Host'',
	\item Sélectionner les interfaces qui nous intéressent, ne pas oublier de changer la valeur de ``Select a graph type:'' selon ce que l'on recherche (ici trafic en octets) puis valider avec ``Create''.
\end{itemize}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.35]{img/ScreenGraphCreate.png}
	\label{fig:img_ScreenGraphCreate}
\end{figure}

Il faut maintenant ajouter l'équipement dans l'arbre :
\begin{itemize}
	\item Cliquer sur ``Graph Trees'' dans le menu de gauche, puis ``Default Tree''.
\end{itemize}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.35]{img/ScreenTreeAddHost.png}
	\label{fig:img_ScreenTreeAddHost}
\end{figure}

Cliquer sur ``Add''. Sur la page chargée, changer la valeur de ``Tree Item Type'' par ``Host'', puis Choisir dans la liste ``Host'' l'équipement à ajouter, on valide ensuite avec ``Create''.

On peut modifier le texte affiché des graphes dans la ``Graph List'' de l'équipement, afin de rendre plus lisible les informations (PORT 24 $\to$ serveur2), etc.

Il faut patienter quelques minutes (environ 5), avant de pouvoir consulter le résultat dans l'onglet bleu ``Graphs''.

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.2]{img/ScreenFinal.PNG}
	\label{fig:img_ScreenFinal}
\end{figure}


\section{VPN}

OpenVPN est basé sur une architecture client/serveur. Il doit être installé aux deux extrémités du VPN. Une extrémité est désignée comme serveur (ici le serveur 1 de l’AS 4) et l'autre comme client (le serveur 2 de l’AS 1).

Installation d’OpenVPN (sur le serveur et le client) : \lstinline!apt-get install openvpn!.

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.8]{img/VPN-5.pdf}
	\caption{Architecture VPN dans la plateforme}
	\label{fig:img_VPN-2}
\end{figure}

\subsection{Configuration du serveur OpenVPN}
Se connecter en root : \lstinline!su! sous debian.

Il faut tout d'abord ouvrir un terminal et effectuer une copie dans son dossier \lstinline!/root! des scripts de génération de clés :
\begin{lstlisting}
cp /usr/share/doc/openvpn/examples/easy-rsa ~/openvpn/ -R
\end{lstlisting}

L'ensemble des commandes se feront dans le répertoire déplacé : \lstinline!cd ~/openvpn/2.0/!

Maintenant éditer le fichier \lstinline!vars! et initialiser les variables \lstinline!KEY_COUNTRY!, \lstinline!KEY_PROVINCE!, \lstinline!KEY_CITY!, \lstinline!KEY_ORG!, and \lstinline!KEY_EMAIL!. Ne laisser surtout pas un seul champ vide.
Il faut modifier les dernières lignes à sa convenance. Dans notre cas :
\begin{lstlisting}
export KEY_COUNTRY=FR
export KEY_PROVINCE=ileDeFrance
export KEY_CITY=paris
export KEY_ORG=pfres
export KEY_EMAIL=xxxxxxxxx@xxx.com
\end{lstlisting}

Puis effectuez la commande : \lstinline!. ./vars! pour prendre en compte les changements des variables.

On efface toutes les clés et certificats existants à l'aide de la commande : \lstinline!./clean-all!.

Puis, il faut créer le certificat et la clé de l'Autorité de Certification Maitre (\emph{Master Certificate Authority} (CA) : \lstinline!./build-ca!

Le certificat et la clé de l'Autorité de Certification sont à présent créés au niveau des fichiers : \lstinline!ca.crt! et \lstinline!ca.key! dans le dossier \lstinline!keys!. 

Nous allons générer un certificat et une clé privée pour le serveur. Si le nom du serveur est : \lstinline!server!, le certificat et la clé privée sont créés à l'aide de la commande : \lstinline!./build-key-server server!.
Laisser les paramètres par défaut et et accepter les deux questions.

Les paramètres Diffie-Hellman doivent être générés pour le serveur OpenVPN : \lstinline!./build-dh!

Attention pour le serveur le fichier d'exemple est compressé dans le fichier : \lstinline!server.conf.gz!, il faut le \emph{gunzipper} de la façon suivante :
\begin{lstlisting}
cd /usr/share/doc/openvpn/examples/sample-config-files
sudo gunzip server.conf.gz
\end{lstlisting}
Puis exécuter la commande ci dessous :
\begin{lstlisting}
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
\end{lstlisting}

La configuration par défaut est correcte et ne nécessite pas de modifications dans notre cas.
\begin{rem*}
	Il faut prendre une attention toute particulière concernant :
	\begin{itemize}
		\item L'utilisation du pool d’adresses \lstinline!192.168.0.0/24! pour le VPN : il ne faut qu’un réseau utilise des adresses de cette plage.
		\item Si le nom du serveur n’est pas \lstinline!server! il faut éditer le fichier et changer le nom des fichiers \lstinline!server.[ca|cert|key]! en \lstinline!<server name>.[ca|cert|key]!.
	\end{itemize}
\end{rem*}

Le serveur doit recevoir les paquets VPN du client sur une interface précise. Pour ce faire, éditer la ligne :
\lstinline!local 4.11.100.1! dans \lstinline!/etc/openvpn/server.conf!.

Editez ensuite la directive remote pour indiquer l'adresse IP/nom d'hôte et le port du serveur OpenVPN. Ici : \lstinline!remote 4.11.100.1 1193!.

\subsection{Configuration du client OpenVPN}

Il faut copier le répertoire donné en exemple dans l'installation de OpenVPN pour le client :
\begin{lstlisting}
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/
\end{lstlisting}

De la même manière que pour le serveur, il faut générer ensuite le couple de clés et certificats du client \lstinline!client1! à l'aide de la commande : \lstinline!./build-key client1!

Comme le fichier de configuration du serveur, éditer d'abord les paramètres \lstinline!ca!, \lstinline!cert! et \lstinline!key! pour pointer vers les fichiers générés précédemment (du client cette fois). Dans notre cas il faut renommer \lstinline!client.ca! en \lstinline!client1.ca!, etc.

\subsection{Finalisation (\emph{wrap-up})}

Il faut également déplacer (commande \lstinline!cp! pour le serveur et \lstinline!scp! pour le client) les clés et certificats dans le dossier \lstinline!/etc/openvpn!. Sont concernés les fichiers suivants :
\begin{itemize}
	\item \lstinline!ca.crt! : pour le serveur et le client,
	\item Pour le serveur : les fichiers \lstinline!server.crt!, \lstinline!server.key!, \lstinline!dh1024.pem!
	\item Pour le client: les fichiers \lstinline!client.crt!, \lstinline!client.key!, \lstinline!ca.crt!
\end{itemize}

Pour simplifier la recherche de problèmes (\emph{troubleshooting}), il est préférable de démarrer le serveur OpenVPN depuis la ligne de commande (ie. dans le dossier \lstinline!/etc/openvpn!) plutôt que de démarrer le démon (ie. \lstinline!/etc/init.d/openvpn start!). Dans un terminal :
\begin{lstlisting}
# Serveur
cd /etc/openvpn && sudo openvpn server.conf

# Client
cd /etc/openvpn && sudo openvpn client.conf
\end{lstlisting}

Si le VPN fonctionne, alors de nouvelles interfaces auront être activées sur le serveur et le client (commande \lstinline!ifconfig!). Par ailleurs, la nouvelle interface doit avoir une adresse IP dans le \emph{pool} d'adresses indiqué sur le fichier configuration du serveur.

Si les nouvelles interfaces sont activées, il est possible de \emph{pinger} le client à partir du serveur ou réciproquement : \lstinline!ping 192.168.0.1!. Si le \lstinline!ping! a fonctionné, le VPN fonctionne ! Vous pouvez utiliser le démon (ie. \lstinline!/etc/init.d/openvpn start!).

Il est ensuite possible d’ajouter des machines au client et/ou au serveur. Dans le cadre du projet, et pour rester dans un caractère général, on n’obligera pas les hôtes à passer par le VPN.

\section{IPSec}

IPSec (\emph{IP Secure}) est un protocole de sécurité pour IP. Il est composé de :
\begin{itemize}
	\item \emph{Ecapsulation Security Payload} (ESP) qui permet de chiffrer les données,
	\item \emph{Authentication Header} (AH) qui permet d'authentifier les données.
\end{itemize}

Par ailleurs, il peut être utilisé en mode \emph{tunnel} (ie. encapsulation de tout le paquet IP) ou en mode transport (ie. encapsulation du \emph{payload}).

Pour implémenter IPSec sur la plateforme, nous utilisons le paquet \lstinline!ipsec-tools! : \lstinline!sudo apt-get install ipsec-tools!.

Editer le fichier \lstinline!/etc/ipsec-tools.conf! à l'aide d'un éditeur de texte. Le fichier est composé de deux parties : 
\begin{itemize}
	\item Une première partie définissant les clés à utiliser (commandes \lstinline!add!),
	\item Une seconde partie définissant les politiques de sécurité (commande \lstinline!spdadd!).
\end{itemize}

\subsection{Configuration des clés à utiliser}

Définition des clés que les deux partis vont utiliser à l'aide de la commande \lstinline!add! :
\begin{lstlisting}
add <local ip> <remote ip> [ah|esp] <unique number 1> [-E|-A] <encryption algorithm> <key 1>;
add <remote ip> <local ip> [ah|esp] <unique number 2> [-E|-A] <encryption algorithm> <key 2>;
\end{lstlisting}

Pour utiliser les modes AH \textbf{et} ESP, il faudra taper deux fois les deux lignes précédentes :
\begin{itemize}
	\item Avec l'option \lstinline!-A! (\emph{authentication}) et deux clés différentes et un algorithme d'authentification (eg. \lstinline!hmac-md5!),
	\item Avec l'option \lstinline!-E! (\emph{encryption}) et deux autres clés différentes et un algorithme de chiffrement (eg. \lstinline!3des-cbc!, \lstinline!aes-cbc!).
\end{itemize} 

\subsection{Configuration des politiques de sécurité}
Les politiques de sécurité permettent de définir les politiques pour les communications entrantes et sortantes. Pour accepter \textbf{toutes} les communications entrantes et/ou sortantes, utiliser le mot-clé \lstinline!any!.
\begin{lstlisting}
spdadd <local ip> [<port>|any] <remote ip> [<port>|any] -P out ipsec
	esp/{transport|tunnel}//{require|option}
	[ah/{transport|tunnel}//{require|option}];
spdadd <remote ip> [<port>|any] <local ip> [<port>|any] -P in ipsec
	esp/{transport|tunnel}//{require|option}
	[ah/{transport|tunnel}//{require|option}];
\end{lstlisting}

\begin{rem*}
	Le manuel associé à \lstinline!ipsec-tools! est accessible à l'aide de la commande \lstinline!man setkey!
\end{rem*}

\subsection{Finalisation}
Protéger le fichier \lstinline!ipsec-tools.conf! à l'aide de la commande : 
\begin{lstlisting}
sudo chmod 750 ipsec-tools.conf
\end{lstlisting}
Cela empêche un utilisateur mal intentionné d'avoir accès aux clés.

Pour activer le service, utiliser la commande : \lstinline!sudo /etc/init.d/setkey start!.


\chapter{VoIP et Qualité de service (QoS)}
% IntServ, DiffServ, MPLS-TE (\emph{MultiProtocol Label Switching-Traffic Engineering})\dots

\section{VoIP (\emph{Voice over IP})}

La VoIP est une technique qui permet de communiquer par la voix sur des réseaux compatibles IP.

\begin{comment}
	\begin{figure}[htbp]
		\centering
			\includegraphics[scale=.8]{img/voip.pdf}
		\caption{Pulse Code Modulation (PCM)}
		\label{fig:img_voip}
	\end{figure}

	\begin{itemize}
		\item Sampling : mesures discrètes du signal prises à intervalles réguliers
		\item Quantization : le niveau de chaque mesure est arrondi à la valeur la plus proche
		\item Encoding : les valeurs sont encodées en valeurs binaires pour encapsulation
		\item Compression (Optional) : le signal digital est compressé en temps réel pour utiliser moins de bande passante.
	\end{itemize}
\end{comment}


Afin d'implémenter la VoIP sur la plateforme, nous avons choisi d'utiliser Asterisk. Asterisk implémente les protocoles H.320, H.323 et SIP, ainsi qu'un protocole spécifique nommé IAX (\emph{Inter-Asterisk eXchange}). 

Ce protocole IAX permet la communication entre deux serveurs Asterisk ainsi qu'entre client et serveur Asterisk. 

Asterisk peut également jouer le rôle de \emph{registrar} et passerelle avec les réseaux publics (RTC, GSM, etc.) 

Configuration des équipements : 
\begin{lstlisting}
interface <interface>
! Configure data and voice access VLANs
switchport access vlan <VLAN> switchport voice vlan <VLAN>

 ! Trust ingress QoS markings
 mls qos trust cos

 ! Optionally pre-allocate power for the port
 power inline static [max <wattage>]
\end{lstlisting}

\subsection{Installation du serveur de voix Asterisk}

Mettre à jour Debian : \lstinline!apt-get update && apt-get dist-upgrade!

Installer les dépendances pour Asterisk 10 Debian : 
\begin{lstlisting}
install -y build-essential linux-headers-`uname -r` libxml2-dev ncurses-dev libsqlite3-dev sqlite3
\end{lstlisting}

Créer un répertoire dans \lstinline!/usr/src! pour Asterisk : \lstinline!mkdir /usr/src/asterisk!

Aller dans ce répertoire : \lstinline!cd /usr/src/asterisk!

Télécharger Asterisk 10 et les outils DAHDI en utilisant la commande \lstinline!wget! :
\begin{lstlisting}
wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-10.0.0.tar.gz &&
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/releases/dahdi-linux-complete-2.6.0+2.6.0.tar.gz
\end{lstlisting}

Extraire les deux archives \lstinline!tar.gz! :
\begin{lstlisting}
tar -xvzf asterisk-10.0.0.tar.gz && tar -xvzf dahdi-linux-complete-2.6.0+2.6.0.tar.gz
\end{lstlisting}

Installer (\emph{build}) les outils DAHDI sur Debian (à faire avant d'installer Asterik) :
\begin{lstlisting}
cd dahdi-linux-complete-2.6.0+2.6.0/
make all &&
make install &&
make config
\end{lstlisting}

Lancer les outils DAHDI : \lstinline!/etc/init.d/dahdi start!

Installer (\emph{build}) Asterisk 10 pour Debian 6 en le compilant : 
\begin{lstlisting}
cd ../asterisk-10.0.0/
make clean
./configure
\end{lstlisting}

Une fois la configuration de l'application terminée, le logo Asterisk doit apparaître :
\begin{verbatimtab}
               .$$$$$$$$$$$$$$$=..
            .$7$7..          .7$$7:.
          .$$:.                 ,$7.7
        .$7.     7$$$$           .$$77
     ..$$.       $$$$$            .$$$7
    ..7$   .?.   $$$$$   .?.       7$$$.
   $.$.   .$$$7. $$$$7 .7$$$.      .$$$.
 .777.   .$$$$$$77$$$77$$$$$7.      $$$,
 $$$~      .7$$$$$$$$$$$$$7.       .$$$.
.$$7          .7$$$$$$$7:          ?$$$.
$$$          ?7$$$$$$$$$$I        .$$$7
$$$       .7$$$$$$$$$$$$$$$$      :$$$.
$$$       $$$$$$7$$$$$$$$$$$$    .$$$.
$$$        $$$   7$$$7  .$$$    .$$$.
$$$$             $$$$7         .$$$.
7$$$7            7$$$$        7$$$
 $$$$$                        $$$
  $$$$7.                       $$  (TM)
   $$$$$$$.           .7$$$$$$  $$
     $$$$$$$$$$$$7$$$$$$$$$.$$$$$$
       $$$$$$$$$$$7$$$$.
\end{verbatimtab}

Afin de personnaliser l'installation de Asterisk, installer (\emph{build}) en utilisant \lstinline!menuselect! : \lstinline!make menuselect!

Installer (\emph{make}) Asterisk 10 : \lstinline!make && make install!
\begin{itemize}
	\item Lancer la console Asterisk avec la commande \lstinline!asterisk!
	\item Lancer le service Asterisk : \lstinline!/etc/init.d/asterisk start!
\end{itemize}

\subsection{Utilisation du serveur de voix Asterisk}
\label{sec:Asterisk}

L’un des téléphones sera placé dans l’AS 1 et l’autre dans l’AS 4 dans les sous-réseaux suivants :
\begin{itemize}
	\item AS 1 : \lstinline!23.7.100.48/29! (vlan 112)
	\item AS 4 : \lstinline!4.11.100.64/28! (vlan 444)
\end{itemize}

Ces sous-réseaux sont dédiés à la téléphonie. Les détails des adresses des AS 1 et 4 ont été donnés respectivement au niveau des sections \ref{sec:as1} et \ref{sec:as4} du chapitre 1.

L’outil \lstinline!rasterisk! permet :
\begin{itemize}
	\item L'affichage des messages d’erreurs en direct, 
	\item L'affichage de l’état des téléphones, 
	\item L'affichage de l’état des liens \emph{trunk}.
\end{itemize}

Pour vérifier l’enregistrement des téléphones, la commande \lstinline!sip show peers! permet d’afficher l’état des utilisateurs.

Editer le fichier \lstinline!/etc/asterisk/sip.conf! :

\begin{lstlisting}
[general]
context=local		; context par defaut pour les utilisateurs
bindport=5060		; port UDP du protocole SIP
bindaddr=0.0.0.0	; trafic 0.0.0.0 pour toutes les interfaces
language=fr			; messages vocaux en français

register => trunk_AS4_vers_AS1:pfres@4.11.100.66   ; enregistrement auprès du serveur Asterisk Ent2 (AS 4).

[Bob]			; obligatoire ; login SIP
secret=pfres		; obligatoire ; mot de passe SIP
type=friend		; obligatoire ; autorise les appels entrant et sortant
host=dynamic		; obligatoire ; adresse IP du client
callerid="Bob" <100>	; facultatif    ; nom et numméro de téléphone affichés sur le téléphone appelé.

[trunk_AS1_vers_AS4] 	; trunk pour enregistrement du serveur Asterisk Ent2 (AS 4) auprès du serveur Ent1 (AS 1).
context=local
secret=pfres
type=friend
host=dynamic
insecure=port,invite	
\end{lstlisting}


Afin de vérifier que l’enregistrement est bien effectif, exécuter la commande \lstinline!sip show registery! dans \lstinline!rasterisk!.

La colonne \lstinline!State! du \emph{trunk} doit être à l’état \lstinline!Registered! (cela n'est possible que si le serveur de l’AS 4 est aussi configuré).

Editer le fichier \lstinline!/etc/asterisk/extensions.conf! :

\begin{lstlisting}
[local]
exten => 100, 1, Dial(SIP/Bob, 10)			; les appels arrivant sur le serveur Asterisk à destination du numéro 100 sont envoyés vers le téléphone de Bob pendant 10 secondes.
exten => _2XX, 1 ,Dial(SIP/trunk_AS1_vers_AS4/${EXTEN}) ; les appels arrivant sur le serveur Asterisk à destination de numéro commençant par 2 sont envoyés sur le serveur Ent2 (AS 4).	
\end{lstlisting}

Il faut bien sur faire une configuration équivalente sur le serveur Asterisk de l’AS 4.

\begin{rem*}
	Pour prendre en compte les changements, effectuer la commande : \\
	\lstinline!/etc/init.d/asterisk restart!
\end{rem*}

\subsection{Configuration des téléphones}

Configurer les adresses IP et masques sur les téléphones Linksys SPA962 en utilisant directement le menu du téléphone (touche \lstinline!fichier! puis sous-menu \lstinline!network!).

Se connecter à l’interface web du téléphone.

Cliquer sur \lstinline!admin! et \lstinline!advanced! en haut gauche, puis cliquer sur l’onglet \lstinline!Ext 1!.

Noter l’adresse de votre serveur Asterisk dans le champ \lstinline!proxy!, noter le login et le mot de passe (ici \lstinline!pfres!) de Bob dans les champs \lstinline!User ID! et \lstinline!Password!.

Placer \lstinline!(xxx)! dans le champ \lstinline!Dial Plan!. Ceci indique que l'on utilise des numéros à 3 chiffres. 

Placer \lstinline!Enable IP dialing! sur \lstinline!no!.

Cliquer enfin sur \lstinline!Submit All changes! (le téléphone redémarre alors).

\clearpage
\section{QoS (\emph{Quality of Service})}

\subsection{Généralités}

Modèles de qualité de service : 
\begin{itemize}
	\item \emph{Best effort} : aucune politique de QoS n'est implementée.
	\item \emph{Intergrated Services} (IntServ) : le protocole RSVP (\emph{Ressource Reservation Protocol}) est utilisé pour réserver de la bande passante pour les flots à travers tous les n\oe uds sur un chemin.
	\item \emph{Differentiated Services} (DiffServ) : les paquets sont classifiés et marqués individuellement. Les décisions concernant les politiques de QoS sont prises indépendamment par chaque n\oe ud sur un chemin.
\end{itemize}

\vspace{7pt}
Marquage de QoS des trames (couche 2) :

\begin{figure}[h!]
	\centering
	\rowcolors{1}{}{lightgray}
	\begin{tabular}{>{\bfseries}lll}
		Médium & \textbf{Nom} & \textbf{Type}\\
		Ethernet & \emph{Class of Service} (CoS) & 3-bit 802.1p field in 802.1Q header\\
		Frame Relay & \emph{Discard Eligibility} (DE) & 1-bit drop eligibility flag\\
		ATPM & \emph{Cell Loss Priority} (CLP) & 1-bit drop eligibility flag\\
		MPLS & \emph{Traffic Class} (TC) & 3-bit field compatible with 802.1p
	\end{tabular}
\end{figure}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=1]{img/TOS.pdf}
	\label{fig:img_TOS}
\end{figure}

Marquage de QoS des paquets IP : 
\begin{itemize}
	\item \textbf{IP Precedence} : les premiers 3 bits du champ TOS de l'entête IP (limité à 8 classes)
	\item \textbf{\emph{Differentiated Services Code Point} (DSCP)} : les premiers 6 bits du champ TOS de l'entête IP sont évalués pour avoir plus de classes disponibles. Rétro-compatibilité avec IP Precedence.
\end{itemize}

\begin{figure}[h!]
	\centering
	\rowcolors{1}{}{}
	\begin{tabular}{>{\bfseries}llllll}
	 & \textbf{Binary} & \textbf{DSCP} & \textbf{Forwarding Class} & \textbf{Packet Loss Priority (PLP)} & \textbf{Prec.}\tabularnewline
	\rowcolor{lightgray} 
	56 & \textcolor{blue}{111}000 & NC2/CS7 & \emph{Network-control} & \emph{Low} & \textcolor{blue}{7}\tabularnewline
	48 & \textcolor{blue}{110}000 & NC1/CS6 & \emph{Internetwork-control} & \emph{Low} & \textcolor{blue}{6}\tabularnewline
	\rowcolor{lightgray} 
	46 & \textcolor{blue}{101}110 & EF & \emph{Expedited-forwarding} (\emph{Critical}) & \emph{Low} & \textcolor{blue}{5}\tabularnewline
	32 & \textcolor{blue}{100}\textcolor{green}{00}0 & CS\textcolor{blue}{4} & \emph{Flash Override} & \emph{Low} & \multirow{4}{*}{\textcolor{blue}{4}}\tabularnewline
	34 & \textcolor{blue}{100}\textcolor{green}{01}0 & AF\textcolor{blue}{4}\textcolor{green}{1} & \emph{Assured-forwarding} & \emph{Low} & \tabularnewline
	36 & \textcolor{blue}{100}\textcolor{green}{10}0 & AF\textcolor{blue}{4}\textcolor{green}{2} & \emph{Assured-forwarding} & \emph{Medium} & \tabularnewline
	38 & \textcolor{blue}{100}\textcolor{green}{11}0 & AF\textcolor{blue}{4}\textcolor{green}{3} & \emph{Assured-forwarding} & \emph{High} & \tabularnewline
	\rowcolor{lightgray} 
	24 & \textcolor{blue}{011}\textcolor{green}{00}0 & CS\textcolor{blue}{3} & \emph{Flash} & \emph{Low} & \tabularnewline
	\rowcolor{lightgray} 
	26 & \textcolor{blue}{011}\textcolor{green}{01}0 & AF\textcolor{blue}{3}\textcolor{green}{1} & \emph{Assured-forwarding} & \emph{Low} & \tabularnewline
	\rowcolor{lightgray} 
	28 & \textcolor{blue}{011}\textcolor{green}{10}0 & AF\textcolor{blue}{3}\textcolor{green}{2} &  \emph{Assured-forwarding} & \emph{Medium} & \tabularnewline
	\rowcolor{lightgray} 
	30 & \textcolor{blue}{011}\textcolor{green}{11}0 & AF\textcolor{blue}{3}\textcolor{green}{3} & \emph{Assured-forwarding} & \emph{High} & \multirow{-4}{*}{\textcolor{blue}{3}} \tabularnewline
	16 & \textcolor{blue}{010}\textcolor{green}{00}0 & CS\textcolor{blue}{2} & \emph{Immediate} & \emph{Low} & \multirow{4}{*}{\textcolor{blue}{2}}\tabularnewline
	18 & \textcolor{blue}{010}\textcolor{green}{01}0 & AF\textcolor{blue}{2}\textcolor{green}{1} & \emph{Assured-forwarding} & \emph{Low} & \tabularnewline
	20 & \textcolor{blue}{010}\textcolor{green}{10}0 & AF\textcolor{blue}{2}\textcolor{green}{2} & \emph{Assured-forwarding} & \emph{Medium} & \tabularnewline
	22 & \textcolor{blue}{010}\textcolor{green}{11}0 & AF\textcolor{blue}{2}\textcolor{green}{3} & \emph{Assured-forwarding} & \emph{High} & \tabularnewline
	\rowcolor{lightgray} 
	8 & \textcolor{blue}{001}\textcolor{green}{00}0 & CS\textcolor{blue}{1} & \emph{Priority} & \emph{Low} & \tabularnewline
	\rowcolor{lightgray} 
	10 & \textcolor{blue}{001}\textcolor{green}{01}0 & AF\textcolor{blue}{1}\textcolor{green}{1} & \emph{Assured-forwarding} & \emph{Low} & \tabularnewline
	\rowcolor{lightgray} 
	12 & \textcolor{blue}{001}\textcolor{green}{10}0 & AF\textcolor{blue}{1}\textcolor{green}{2} & \emph{Assured-forwarding} & \emph{Medium} & \tabularnewline
	\rowcolor{lightgray} 
	14 & \textcolor{blue}{001}\textcolor{green}{11}0 & AF\textcolor{blue}{1}\textcolor{green}{3} & \emph{Assured-forwarding} & \emph{High} & \multirow{-4}{*}{\textcolor{blue}{1}}\tabularnewline
	0 & \textcolor{blue}{000}000 & BE & \emph{Best-effort} & N/A & \textcolor{blue}{0}\tabularnewline
	\end{tabular}
\end{figure}

\clearpage
Gestion de file d'attente (\emph{Congestion Avoidance}) :
\begin{itemize}
	\item \textbf{Random Eraly Detection (RED)} : les paquets sont jetés aléatoirement avant que la file ne soit pleine pour éviter les \emph{drop tail}. RED permet de désynchroniser les fenêtres de congestion TCP avec un bon paramétrage.
	\item \textbf{Weighted RED (WRED)} : RED avec la capacité de distinguer le trafic prioritaire en se basant sur son marquage QoS.
	\item \textbf{Class-Based WRED (CBWRED)} : WRED utilisé à l'intérieur d'une file d'attente \emph{class-based WFQ} (CBWFQ).
\end{itemize}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.7]{img/qos.pdf}
	\caption{Diagramme de QoS}
	\label{fig:img_qos}
\end{figure}

Terminologie :
\begin{itemize}
	\item \textbf{Per-Hop Behavior (PHB)} : actions individuelles de QoS effectuées à chaque n\oe ud indépendant DiffServ.
	\item \textbf{Trust Boundary} : au-delà de ce point, le marquage QoS des paquets entrant n'est pas certain (\emph{trusted}).
	\item \textbf{Tail Drop} : a lieu lorsqu'un paquet est jeté parce que la file est pleine.
	\item \textbf{Policing} : impose un plafond artificiel sur la bande passante qui peut être utilisée. Le trafic excédant par rapport à la politique est re-classifié ou jeté.
	\item \textbf{Shaping} : similaire à \emph{policing}, mais met en \emph{buffer} le trafic excédant pour délayer la transmission. La bande passante est mieux utilisée, mais du délai est introduit.
	\item \textbf{TCP Synchronization} : les flux synchronisent les fenêtres TCP, ce qui sous-utilise le lien.
\end{itemize}

\vspace{7pt}
DCSP Per-Hop Behaviors :
\begin{itemize}
	\item \textbf{Class Selector} (CS) : compatible avec les valeurs de IP Precedence.
	\item \textbf{Assured Forwarding} (AF) : 4 classes avec des \emph{drop preferences} variables.
	\item \textbf{Expedited Forwarding} (EF) : priorité en file d'attente pour le trafic sensible au temps.
\end{itemize}

\begin{figure}[h!]
	\begin{subfigure}[b]{0.9\textwidth}
	    \centering
		\includegraphics[scale=.9]{img/DiffServ.pdf}
		\caption{Architecture DiffServ (\emph{Differentiated Services})}
		\label{fig:img_DS}
	\end{subfigure}%
	
	\begin{subfigure}[b]{0.45\textwidth}
	    \centering
		\includegraphics[scale=.5]{img/TCA.pdf}
		\caption{\emph{Traffic Conditioning Agreement} (TCA)}
		\label{fig:img_TCA}
	\end{subfigure}%
	~
	\begin{subfigure}[b]{0.45\textwidth}
		\centering
		\includegraphics[scale=.5]{img/PHB.pdf}
		\caption{\emph{Per-Hop Behavior} (PHB)}
		\label{fig:img_PHB}
	\end{subfigure}
\end{figure}

\begin{minipage}[t]{0.50\textwidth}
\textbf{First In First Out (FIFO)}
	
\centering	
\includegraphics[scale=.7]{img/FIFO.pdf}

\begin{itemize}
	\item Les paquets sont traités dans leur ordre d'arrivée.
	\item Aucune priorité n'est utilisée.
	\item File d'attente par défaut sur les interfaces à haut-débit (> 2 Mbit/s).
\end{itemize} 
\end{minipage}
\quad\quad
\begin{minipage}[t]{0.50\textwidth}
\textbf{Priority Queuing (PQ)}

\centering	
\includegraphics[scale=.7]{img/PQ.pdf}

\begin{itemize}
	\item 4 files d'attente statiques non re-configurables.
	\item Les files d'attente de plus hautes priorités sont toujours vidées avant celles de plus basses priorités.
	\item Les files d'attente de basses priorité ont des risques de famine (au niveau de la bande passante).
\end{itemize}
\end{minipage}

\vspace{10pt}

\begin{minipage}[t]{0.50\textwidth}
\textbf{Custom Queuing (CQ)}

\centering	
\includegraphics[scale=.7]{img/CQ.pdf}

\begin{itemize}
	\item Rotation des files d'attente en utilisant \emph{Weighted Round Robin} (WRR).
	\item Traite un nombre configurable d'octets de chaque file d'attente par tour.
	\item Evite la famine au niveau de chaque file d'attente, mais aucun délai de bout-en-bout garanti (pas adapté pour le trafic sensible au temps).
\end{itemize} 
\end{minipage}
\quad\quad
\begin{minipage}[t]{0.50\textwidth}
\textbf{Weighted Fair Queuing (WFQ)}

\centering	
\includegraphics[scale=.7]{img/WFQ.pdf}

\begin{itemize}
	\item Les files d'attente sont créées dynamiquement pour chaque flot pour assurer un traitement équitable.
	\item Statistiquement, les paquets des flots les plus ``agressifs'' sont jetés plus souvent.
	\item Aucun support pour le trafic sensible au temps.
\end{itemize}
\end{minipage}

\vspace{10pt}

\begin{minipage}[t]{0.50\textwidth}
\textbf{Class-Based Weighted Fair Queuing (CBWFQ)}

\centering	
\includegraphics[scale=.7]{img/CBWFQ.pdf}

\begin{itemize}
	\item WFQ avec des files d'attente configurées par un administrateur.
	\item Une quantité/pourcentage de bande passante est allouée à chaque file d'attente.
	\item Aucun support pour le trafic sensible au temps.
\end{itemize} 
\end{minipage}
\quad\quad
\begin{minipage}[t]{0.50\textwidth}
\textbf{Low Latency Queuing (LLQ)}

\centering	
\includegraphics[scale=.7]{img/LLQ.pdf}

\begin{itemize}
	\item CBWFQ avec une politique de priorité stricte pour la file d'attente.
	\item Très configurable, tout en assurant le support pour le trafic sensible au temps.
\end{itemize}
\end{minipage}

\subsection{Implémentation dans Juniper JunOS}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.7]{img/junos-qos.pdf}
	\caption{Processus de QoS au niveau des routeurs Juniper}
	\label{fig:img_junos-qos}
\end{figure}

Les composantes définissant la \emph{Class of Service} pour les routeurs Juniper sont les suivantes : 
\begin{description}
	\item[\emph{Multifield Classifier}] Associer les code-points DSCP ou EXP et les PLP (\emph{Packet Loss Priority}) à une classe de services donnée aux différents flots\\
	\lstinline![edit class-of-service classifiers]!
	\item[\emph{Forwarding-classes}] Définir plusieurs files d'attente. Quatre classes sont définies par défaut sur Juniper :
	\begin{itemize}
		\item File d'attente (\emph{Queue}) 0 : classe \emph{Best-Effort},
		\item File d'attente (\emph{Queue}) 1 : classe \emph{Expedited-Forwarding},
		\item File d'attente (\emph{Queue}) 2 : classe \emph{Assured-Forwarding},
		\item File d'attente (\emph{Queue}) 3 : classe \emph{Network-Control}.
	\end{itemize}
	\lstinline![edit class-of-service forwarding-classes]!
	\item[\emph{Interfaces}] Appliquer des règles données (définies au niveau des \emph{classifiers}) aux interfaces souhaitées\\
	\lstinline![edit class-of-service interfaces]!
	\item[\emph{Scheduler}] Définir un comportement pour le trafic sortant en fonction de la \emph{forwarding-class}\\
	\lstinline![edit class-of-service schedulers]!
	\item[\emph{Scheduler-map}] Associer les \emph{schedulers} à une \emph{forwarding-class}\\
	\lstinline![edit class-of-service scheduler-maps]!
	\item[\emph{Policer}] Restreindre selon des critères (bande passante, sporadicité, \dots) les différents flots\\
	\lstinline![edit firewall policer <policer name>]!
	\item[\emph{Filter}] Filtrer des flots particulier selon différents critères (adresse IP source/destination, protocole de la couche transport, \dots)\\
	\lstinline![edit firewall filter <filter name>]!
\end{description}

\vspace{7pt}
Debug/Troubleshooting : 
\begin{lstlisting}
show class-of-service <interface>
show class-of-service classifier name <classifier name>
show class-of-service code-point-aliases dscp
show class-of-service rewrite-rule
\end{lstlisting}

\subsubsection{MPLS et QoS}

Les routeurs Juniper de l'AS 3 doivent pouvoir à la fois supporter la QoS tout en utilisant MPLS. De ce fait, il est nécessaire de les rendre compatibles avec le \emph{Traffic Class} implémenté au niveau de MPLS (avec le champ EXP).

Utilisation du champ EXP de MPLS (\emph{EXPerimental}) qui correspond à la classe de service pour le protocole MPLS. Il s'agit de E-LSP (\emph{EXP-inferred Label Switched Path}) qui peuvent porter des paquets avec 8 \emph{Per-Hop Behavior} distincts pour un seul LSP.

\begin{figure}[h!]
	\centering
	\rowcolors{1}{}{lightgray}
	\begin{tabular}{lll}
		\textbf{Code Point} & \textbf{Forwarding Class} & \textbf{Loss Priority}\\
		\midrule
		000 & \emph{Best effort} & \emph{Low}\\
		001 & \emph{Best effort} & \emph{High}\\
		010 & \emph{Expedited forwarding} & \emph{Low}\\
		011 & \emph{Expedited forwarding} & \emph{High}\\
		100 & \emph{Assured forwarding} & \emph{Low}\\
		101 & \emph{Assured forwarding} & \emph{High}\\
		110 & \emph{Network control} & \emph{Low}\\
		111 & \emph{Network control} & \emph{High}
	\end{tabular}
\end{figure}

Redéfinir les valeurs DSCP en valeurs pour le champ EXP de MPLS :
\begin{lstlisting}
[edit class-of-service]
rewrite-rules {
	exp base-exp-remarking {
		forwarding-class be {
			loss-priority low code-point 000;
		}
		forwarding-class assured-forwarding {
			loss-priority low code-point 001;
			loss-priority high code-point 010;
		}
		forwarding-class expedited-forwarding {
			loss-priority low code-point 101;
		}
	}
}
\end{lstlisting}

Attacher les \emph{rewrite rules} aux interfaces concernées des routeurs concernés :
\begin{lstlisting}
[edit class-of-service interfaces]
<interface> {
	unit <interface unit> {
		rewrite-rules {
			dscp <rewrite DSCP rule>;
			exp <rewrite EXP rule>;
		}
	}
}
\end{lstlisting}


\subsection{Implémentation dans Cisco IOS}

\subsubsection{Différentes étapes pour la configuration de la QoS}

\textbf{Première étape} : définir le trafic qui nécessite une qualité de service particulière au niveau du routeur. Cela peut se faire à l'aide de :
\begin{itemize}
	\item Les \emph{Access Control List} (ACL),
	\item La fonction NBAR (\emph{Network Based Application}) définie par Cisco, qui permet au routeur de reconnaître du trafic particulier (HTTP, Skype\dots)
\end{itemize}
Création des ACL en utilisant la commande :
\begin{lstlisting}[language=cisco]
Router(config)# access-list <acl number> {deny | permit | remark} <protocol> {<source> <source-wildcard> | host <source> | any} [operator <port>] {<dest> <dest-wildcard> | host <dest> | any} [operator <port>]
\end{lstlisting}

\textbf{Deuxième étape} : créer une classe de trafic (\emph{traffic class}) à l'aide de \lstinline!class-map!. \\
Une \emph{class-map} répartit le trafic en différents groupes.
\begin{lstlisting}[language=cisco]
Router(config)# class-map [match-all | match-any] <class name>

! Match criteria for class map based on a specified Access Control List (ACL)
Router(config-cmap)# match access-group {<access group> | name <access group name>}

! Valeurs optionnelles
Router(config-cmap)# match any ! successful for all packets
Router(config-cmap)# match class-map <class name> 
Router(config-cmap)# match destination-address mac <MAC address>
Router(config-cmap)# match discard-class <class number> 
Router(config-cmap)# match [ip] dscp <dscp value> ! match criterion is a specific IP DSCP
Router(config-cmap)# match field <protocol> <protocol field> {eq [mask] | neq [mask] | gt | lt | range <range> | regex <string>} <value> [next <next-protocol>]
Router(config-cmap)# match input-interfaces <interface name>
Router(config-cmap)# match protocol <protocol name>
Router(config-cmap)# match source-address mac <address destination>
\end{lstlisting}

\textbf{Troisième étape} : créer une une politique de trafic (\emph{traffic policy}) à l'aide d'une \lstinline!policy-map!. \\
Une \emph{policy-map} permet d'appliquer d'appliquer des politiques sur les classes définies lors de l'étape précédente avec \emph{class-map}.
\begin{lstlisting}[language=cisco]
Router(config)#  policy-map <policy name> 
Router(config-pmap)# class {<class name> | class-default } ! name of a traffic class

! Valeurs optionnelles
Router(config-pmap-c)# bandwidth {<bandwidth kbps | percent <percent>}
Router(config-pmap-c)# fair-queue <number of queues>
Router(config-pmap-c)# police <bps> [<burst normal>] [<burst max>] conform-action <action> exceed-action <action> [violate-action <action>]
Router(config-pmap-c)# priority {<bandwidth kbps> | percent <percentage>} [<burst>]
Router(config-pmap-c)# queue-limit <number of packets>
Router(config-pmap-c)# random-detect [dscp-based | prec-based] ! enable WRED or DWRED
Router(config-pmap-c)# set discard-class <value>
Router(config-pmap-c)# set [ip] dscp {<dscp value> | <from field> [table <table map name>]}
Router(config-pmap-c)# service-policy <policy map name>
Router(config-pmap-c)# shape {average | peak} <mean rate> [<burst size> [<excess burst size>]]
\end{lstlisting}

\textbf{Quatrième étape} : attacher la \emph{policy-map} à l'interface. \\
Il est possible d'appliquer la \emph{policy-map} soit dans le mode \emph{input} ou le mode \emph{output}, en utilisant la commande :
\begin{lstlisting}[language=cisco]
Router(config)# interface <interface>
Router(config-if)# service-policy output [type-access-control] {input | output} <policy map name>
\end{lstlisting}
Par ailleurs, si NBAR est utilisé pour reconnaître le trafic, il faut également activer NBAR sur l'interface à l'aide de la commande suivante : 
\begin{lstlisting}[language=cisco]
Router(config-if)# ip nbar protocol-discovery
\end{lstlisting}

\textbf{Cinquième étape} : vérifier la classe de trafic et la politique de trafic :
\begin{lstlisting}[language=cisco]
Router# show class-map [type {stack | access-control}] [<class map name>]
Router# show policy-map <policy map> [class <class name>]
\end{lstlisting}

\begin{rem*}
	Pour classifier le trafic, il est possible d'utiliser :
	\begin{itemize}
		\item La commande \lstinline!rate-limit!
		\item Une \emph{policy-map} que l'on attache aux interfaces en \emph{input}.
	\end{itemize}
\end{rem*}

\subsubsection{Configuration des \emph{edge routers}}
\begin{lstlisting}[language=cisco]
! Creation de listes pour repérer le trafic VoIP
Router(config)# access-list 101 remark RTP Traffic
Router(config)# access-list 101 permit udp any any range 16384 32767
Router(config)# access-list 101 permit ip host 23.7.100.51 host 4.11.100.67

Router(config)# access-list 102 remark SIP Traffic
Router(config)# access-list 102 permit tcp any any eq 5060
Router(config)# access-list 102 permit udp any any eq 5060

! Classer les paquets entrant selon leur valeur de ToS
Router(config)# class-map match-all expedited-forwarding
Router(config-cmap)# match access-group 101
Router(config)# class-map match-all assured-forwarding
Router(config-cmap)# match access-group 102


! Définition d'une policy-map
Router(config)# policy-map QOS-policy
Router(config-pmap)# class expedited-forwarding
Router(config-pmap-c)# priority 512
Router(config-pmap)# class assured-forwarding
Router(config-pmap-c)# priority 256
Router(config-pmap)# class class-default
Router(config-pmap-c)# fair-queue
Router(config-pmap-c)# random-detect

! Attacher les policies aux interfaces
Router(config)# interface <interface>
Router(config-if)# rate-limit input access-group 102 2560000 65536 65536 conform-action set-dscp-transmit 34 exceed-action set-dscp-continue 0
Router(config-if)# rate-limit input access-group 101 5120000 65536 65536 conform-action set-dscp-transmit 46 exceed-action set-dscp-continue 0
Router(config-if)# rate-limit input 1408000 8000 8000 conform-action transmit exceed-action drop
Router(config-if)# service-policy output QOS-policy
\end{lstlisting}

\subsubsection{Configuration des \emph{transit routers}}
\begin{lstlisting}[language=cisco]
! Classer les paquets entrant selon leur valeur de ToS
Router(config)# class-map match-all expedited-forwarding
Router(config-cmap)# match dscp 46  
Router(config)# class-map match-all assured-forwarding  
Router(config-cmap)# match dscp 34

! Définition d'une policy-map
Router(config)# policy-map QOS-policy
Router(config-pmap)# class expedited-forwarding
Router(config-pmap-c)# priority 512
Router(config-pmap)# class assured-forwarding
Router(config-pmap-c)# priority 256
Router(config-pmap)# class class-default
Router(config-pmap-c)# fair-queue
Router(config-pmap-c)# random-detect

! Attacher les policies aux interfaces
Router(config)# interface <interface>
Router(config-if)# service-policy output QOS-policy
\end{lstlisting}

\section{Application au projet}

Afin de faire transiter la VoIP plusieurs protocoles ont besoin d'être ``avantagés'' par rapport aux autres :
\begin{itemize}
	\item Le protocole SIP (\emph{Session Initiation Protocol}) est un protocole de signalisation, comme H.323, et transite entre les serveurs Asterisk,
	\item Le protocole RTP (\emph{Real-Time Protocol}) est un protocole transportant la voix, transitant entre les deux téléphones.
\end{itemize}

\vspace{7pt}
Les éléments entrant en jeu pour la VoIP sont récapitulés dans le tableau suivant :

\begin{figure}[h!]
	\centering
	\rowcolors{1}{}{}
	\begin{tabular}{>{\bfseries}l|cc}
		Eléments & \textbf{AS 1} & \textbf{AS 4}\\
		\midrule
		Serveur Asterisk & \lstinline!23.7.100.50! & \lstinline!4.11.100.66!\\
		Téléphone IP & \lstinline!23.7.100.51! & \lstinline!4.11.100.67!
	\end{tabular}
\end{figure}

Il y a donc deux catégories de routeurs qui sont mis en jeu :
\begin{itemize}
	\item Les routeurs de bordure : les routeurs des AS 1 et 4 connectés aux AS 2 et 3 qui devront marquer les paquets et faire du PHB (\emph{Per-Hop Behavior}) également,
	\item Les routeurs de c\oe ur : les routeurs des AS 2 et 3 qui devront faire du PHB (\emph{Per-Hop Behavior}).
\end{itemize}

\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.7]{img/voip_bgp.pdf}
	\caption{Transit de la VoIP entre les AS 1 et 4}
	\label{fig:img_VoIP_transit}
\end{figure}

\begin{rem*}
	Nous avons choisi volontairement de prendre le chemin le plus long pour aller de l'AS 1 vers l'AS 4 et y revenir. Il y a au total 9 sauts. Nous avons choisi de procéder de cette manière pour pourvoir mettre en évidence le rôle de la QoS dans la VoIP. Par ailleurs, afin de configurer le champ EXP de MPLS, il faut absolument passer par l'AS 3, d'où le transit par les 4 AS. 
	
	Il a été possible de forcer le passage vers l'AS 3 à partir de l'AS 4 (qui est multihomé par les AS 2 et 3) en considérant une valeur plus élevée pour l'attribut \emph{Local-Preference} pour l'AS 3 par rapport à l'AS 2.
\end{rem*}

Concernant la QoS en particulier, nous avons défini trois classes de trafic qui sont répertoriées dans le tableau suivant :
\begin{figure}[h!]
	\centering
	\rowcolors{1}{}{lightgray}
	\begin{tabular}{>{\bfseries}lllll}
		Type de trafic & \textbf{Classe de service} & \textbf{DSCP} & \textbf{EXP (TC)} & \textbf{PLP}\\
		\midrule
		RTP (Voix) & \emph{Expedited-Forwarding} & EF (46 / \lstinline!101110!) & EF (\lstinline!000!) & \emph{Low}\\
		SIP (Signalisation) & \emph{Assured-Forwarding} & AF41 (34 / \lstinline!100010!) & AF (\lstinline!100!) & \emph{Low}\\
		Reste & \emph{Best-Effort} & BE (0 / \lstinline!000000!) & BE (\lstinline!000!) & \emph{Low}
	\end{tabular}
\end{figure}

\begin{rem*}
	Les routeurs Juniper comportent quatre classes de service par défaut qui sont celles présentées dans le tableau précédent, avec la classe \emph{Network-Control} de DSCP CS6.
\end{rem*}

Les classes de services sont représentées par le schéma suivant :
\begin{figure}[htbp]
	\centering
		\includegraphics[scale=.7]{img/pipe.pdf}
	\caption{\emph{Quality of Service}}
	\label{fig:img_pipe}
\end{figure}


\section{Montée en charge et analyse}

\subsection*{Montée en charge}

Utilisation de la commande \lstinline!iperf! : 
\begin{lstlisting}[language=cisco]
Server# iperf -u -s 
Client# iperf -c <server address> -i <interval> -t <time to transmit> -rub <packet size>
Client# iperf -c 4.11.10.3 -i 2 -t 30 -rub 600M 
\end{lstlisting}

\begin{rem*}
	La commande \lstinline!iperf! est disponible sur les serveurs suivants :
	\begin{itemize}
		\item \lstinline!serveur1.ent1.org! avec pour adresse IP : \lstinline!23.7.100.1!
		\item \lstinline!serveur3.ent2.org! avec pour adresse IP : \lstinline!4.11.100.30!
	\end{itemize}
\end{rem*}

\subsection*{Analyse de traces}

Avec le logiciel Wireshark, il est possible de capturer du trafic et de l'exporter en format \lstinline!pcap!. 

Notre objectif est de capturer du trafic en considérant plusieurs protocoles :
\begin{itemize}
	\item Le protocole SIP qui permet la signalisation,
	\item Le protocole RTP qui permet de transit de la voix,
	\item Le reste du trafic qui doit transiter en \emph{best effort}.
\end{itemize}

\vspace{7pt}
Afin de représenter le trafic sur des graphiques à l'aide de gnuplot, il nous faut tout d'abord récupérer les champs qui nous sont utiles pour l'analyse (notamment l'instant d'arrivée de la trame sur l'interface d'écoute, la taille du paquet IP).

Pour ce faire, nous allons utiliser l'outil \lstinline!tshark!, qui n'est autre que Wireshark en ligne de commande :
\begin{lstlisting}
tshark -e frame.time_relative -e ip.len -Tfields -R rtp -r capture.pcap > rtp_traffic
tshark -e frame.time_relative -e ip.len -Tfields -R sip -r capture.pcap > sip_traffic
tshark -e frame.time_relative -e ip.len -Tfields -R "not (sip or rtp)" -r capture.pcap > remainder_traffic
\end{lstlisting}

Une fois le trafic classé, il nous suffit d'utiliser un script AWK pour regrouper les différentes instants (discrets) en classes (continu). Nous avons choisit d'avoir une précision au dixième de seconde, afin d'avoir un nombre conséquent de paquets, mais pas trop par instant.

Nous avons alors le script AWK suivant :
\begin{lstlisting}[language=awk]
BEGIN {}
{
	split($2, a, ",");
	for(i in a) {
		count[int($1*10.0)] += a[i]
	}
}
END {
	for(i in count){
		printf("%f\t%d\n", i/10.0, count[i]);
	}
}
\end{lstlisting}

Enfin, nous utilisons un script gnuplot pour tracer les courbes :
\begin{lstlisting}[language=gnuplot]
reset
unset key
set xlabel 'Temps'
set ylabel 'Octets'
set term postscript.pdf enhanced color "Times-Roman" 22
set style fill solid 0.5 noborder
set output 'throughput.pdf'
set boxwidth 0.15

plot "gp_bg" u 1:(max) w filledcurves above y1=0. lc rgb"#eeeeee" notitle,\
	  '< tshark -e frame.time_relative -e ip.len -Tfields -R "not (sip or rtp)" -r capture.pcap | awk -f analyse.awk | sed "s/\,/\./" | sort -n' using 1:2 t "Remainder" smooth freq w boxes lc rgb"blue",\
	 '< tshark -e frame.time_relative -e ip.len -Tfields -R rtp -r capture.pcap awk -f analyse.awk | sed "s/\,/\./" | sort -n' using 1:2 t "RTP" smooth freq w boxes lc rgb"green",\
	 '< tshark -e frame.time_relative -e ip.len -Tfields -R sip -r capture.pcap | awk -f analyse.awk | sed "s/\,/\./" | sort -n' using 1:2 t "SIP" smooth freq w boxes lc rgb"red"

plot '< cat remainder_traffic | awk -f analyse.awk | sed "s/\,/\./" | sort -n' using 1:2 t "RTP" smooth freq w boxes lc rgb"red",\
	 '< cat rtp_traffic | awk -f analyse.awk | sed "s/\,/\./" | sort -n' using 1:2 t "RTP" smooth freq w boxes lc rgb"red",\
	 '< cat sip_traffic | awk -f analyse.awk | sed "s/\,/\./" | sort -n' using 1:2 t "SIP" smooth freq w boxes lc rgb"green"
\end{lstlisting}

\begin{rem*}
	Pour tracer un fond de couleur grise pour mettre en valeur une partie du graphique, il suffit de tracer le graphique qui nous intéresse avant la commande \lstinline[language=gnuplot]!set term! :
\begin{lstlisting}[language=gnuplot]
p '< cat rtp_traffic | awk -f amalyse.awk | sed "s/\,/\./" | sort -n' using 1:2
\end{lstlisting}
Puis d'utiliser la variable gnuplot \lstinline!GPVAL_Y_MAX! qui permet d'avoir la valeur maximale des données pour fixer la hauteur du graphique : \lstinline[language=gnuplot]!set yrange [0:max]!.

Enfin, il est possible de tracer le fond gris pour mettre en valeur les données :
\begin{lstlisting}[language=gnuplot]
plot "background" u 1:(GPVAL_Y_MAX) w filledcurves above y1=0. lc rgb"#eeeeee" notitle
\end{lstlisting}
où \lstinline!background! est un fichier contenant deux lignes : l'abscisse de départ et l'abscisse d'arrivée du fond.
\end{rem*}

Nous avons donc le graphique suivant :

\begin{figure}[htbp]
	\centering
	\includegraphics[scale=.8]{img/throughput_5.pdf}
	\caption{Capture de trafic entre Juniper 2 (AS 3) et MIR (AS 2)}
\end{figure}

Nous pouvons donc constater que les trafics de voix (RTP, en rouge) et de signalisation (SIP, en vert) restent constants, même quand il y a du trafic transversal (avec \lstinline!iperf!, en beu). De ce fait, l'implémentation de qualité de service est fonctionnelle au c\oe ur de la plateforme.

\chapter{Troubleshooting}

\section*{Routeurs Cisco 3820}

\section*{Les routeurs C3820 perdent leur configuration au \emph{reboot}}

Les routeurs Cisco C3850 perdent leur configuration lors d'un redémarrage ou d'une perte de courant.

\begin{description}
	\item[Cause] Le router peut ignorer la configuration de démarrage située dans la NVRAM (\emph{non-volatile RAM}) pendant sa \emph{boot sequence}. Pour le vérifier, il faut compléter les étapes suivantes :
	\begin{enumerate}
		\item Après que le routeur ait démarré, ne pas entrer dans le menu de configuration initial (\emph{initial configuration dialog}) : chosir \emph{No}.
		\item Presser la touche ``Entrée'' pour afficher le \emph{prompt} \lstinline!Router>!
		\item Saisir le mot-clé \lstinline!enable! pour entrer dans le mode privilégié
		\item \lstinline[language=cisco]!Router#show start! \\
		Si la configuration n'est pas la même que celle enregistrée avec le redémarrage du routeur, passer à l'étape suivante.
		\item \lstinline[language=cisco]!Router#show version!\\
		La dernière ligne affichée correspond à quelque chose comme : \\
		\verb!Configuration register is 0x2142!\\
		Dans notre exemple, le router ignore la configuration de démarrage stockée dans la NVRAM pendant sa \emph{boot sequence}. 
	\end{enumerate}
	\item[Solution] Le registre de configuration n'a pas été configuré proprement. Pour changer le registre de configuration, taper les commandes suivantes :
\begin{lstlisting}[language=cisco]
Router# configure terminal
Router(config)# config-register 0x2102
Router(config)# end

! Vérification
Router# show version
...
Configuration register is 0x2142 (will be 0x2102 at next reload)

! Router reload
Router#reload
System configuration has been modified. Save? [yes/no]: n
Proceed with reload? [confirm]
\end{lstlisting}	
\end{description}

\begin{rem*}
	Pour de plus amples détails, se référer au support web de Cisco : \url{http://www.cisco.com/en/US/products/hw/routers/ps233/products_tech_note09186a00800a65a5.shtml}
\end{rem*}

\section*{L'interface des routeurs est bloquée au niveau 2}

\begin{description}
	\item[Cause] Sur les routeurs CISCO 3825, l'attribution d'une adresse IP à une interface renvoie une erreur et ne peut s'effectuer.
	\item[Solution] Les routeurs CISCO 3825 possèdent des interfaces fonctionnant par défaut au niveau 2, il conviendra de ne pas oublier de \textbf{taper la commande} :
\begin{lstlisting}[language=cisco]
Router(config-int)# no switchport 
\end{lstlisting}
	Dans le cas où nous souhaitons utiliser une interface destiné à effectuer du routage, cette commande est nécessaire. Sans celle-ci, l'attribution d'une adresse IP à une interface n'est pas possible.
\end{description}

\section*{Problème de ping entre les ASs}

\begin{description}
	\item[Cause] La plupart du temps, il s'agit d'un \textbf{câble mal branché}. Le taquet de certains câbles est effet absent, ce qui peut mener à des débranchements occasionnels.
	\item[Solution] Se référer aux diodes des commutateurs. Les diodes doivent être allumées en vert si le câble est bien branché des deux côtés. Par ailleurs, la liste des câbles est disponible à la section \ref{sec:cablage}.\\
	Une fois le câble rebranché, les protocoles de routage vont progressivement converger pour créer une route entre tous les ASs. Il faut donc attendre entre 1 et 5 minutes.
\end{description}

\begin{description}
	\item[Cause] La configuration de \emph{load-balancer} du serveur \lstinline!serveur3.ent2.org! (AS 4) est inexistante.
	\item[Solution] Il suffit de se connecter au serveur \lstinline!serveur3.ent2.org! de l'AS 4 à l'aide du contrôleur de console et ajouter la ligne suivante :
\begin{lstlisting}
ip route add default scope global nexthop via 4.11.100.61 weight 1 nexthop via 4.11.100.62 weight 1
\end{lstlisting}
\end{description}

\section*{Les téléphones IP sont inactifs (diodes orange)}

\begin{description}
	\item[Cause] Les serveurs Asterisk des ASs de types entreprise (AS 1 et AS 4) sont désactivés :
	\begin{itemize}
		\item \lstinline!serveur1.ent1.org!
		\item \lstinline!serveur2.ent2.org!
	\end{itemize}
	\item[Solution] Les serveurs comportant le \emph{daemon} Asterisk sont peut-être éteints (ou n'ont pas encore démarrés).\\
	Le \emph{daemon} Asterisk n'est peut-être pas encore activé : \lstinline!/etc/init.d/asterisk restart!\\
	Vérifier que les téléphones soient bien enregistrés à l'aide de la commande \lstinline!sip show registery! dans le CLI \lstinline!rasterisk!.\\
	Pour plus d'informations, se référer à la section sur Asterisk \ref{sec:Asterisk}
\end{description}

\section*{Impossible de contrôler un équipement à l'aide du contrôleur de console}

L'erreur suivante apparaît lorsque l'on essaye de se connecter à un port console :
\begin{verbatim}
Connection closed by foreign host
error reading pseudo-tty: Input/output error (5)
\end{verbatim}

\begin{description}
	\item[Cause] Il existe des utilisateurs déjà connectés à l'équipement via le même protocole (ici, telnet).
	\item[Solution] Sur tous les équipements, il est impossible à plusieurs utilisateurs de se connecter simultanément sur le port console.\\
	Passer par le réseau de la plateforme en se connecter en SSH sur l'équipement souhaité.
\end{description}

\section*{Multi-homing de l'AS 4}

\begin{description}
	\item[Cause] L'AS 4 est transitif : il donne aux AS 2 et AS 3 toutes les routes apprises :
	\begin{itemize}
		\item Annonce faite à l'AS 2 : la route vers l'AS 3 et ses clients,
		\item Annonce faite à l'AS 3 : la route vers l'AS 2 et ses clients.
	\end{itemize}
	Il est donc considéré comme fournisseur par tous ses voisins (et non comme client).
	\item[Solution] Le comportement par défaut de BGP sur les OS des routeurs est d’annoncer aux voisins toutes les routes apprises, cependant dans notre cas, nous sommes juste client de deux fournisseurs différents, nous avons donc dû filtrer les routes annoncées pour restreindre les annonces BGP à notre unique réseau.
\end{description}

\section*{Concernant le routeur Juniper 3}

	Le système de fichier (partitionné en UFS) de la carte compact flash du routeur Juniper 3 semble être corrompu. De ce fait, il faudrait le remplacer avec une version non corrompue. Cependant, la version que nous avons trouvée (\verb!junos-jsr-10.3R2.11-export-cf1024!) est faite pour une carte compact flash de 1024 Mo (au lieu de 256 Mo, taille de la carte compact flash actuelle).
	
	Comme indiquée sur \textcolor{blue}{\href{http://kb.juniper.net/InfoCenter/index?page=content&id=KB12170&smlogin=true}{cette page web}}, la manipulation reste facile d'accès. Cependant, le fichier suivant : \verb!junos-jseries-8.2R2.4-export-cf256! (qui est le système de fichiers actuel des routeurs J4350) nécessaire reste introuvable. 
	
\begin{thebibliography}{7}
	% Sites web
	\bibitem{packetlife} Site web packetLife.net. Accès : \url{http://packetlife.net}. Accédé pour la dernière fois le 7 juin 2012.
	\bibitem{JunOS8.2} Site web Juniper. Accès : \url{http://www.juniper.net/techpubs/software/jseries/junos82/}. Accédé pour la dernière fois le 7 juin 2012.
	\bibitem{ratelimit} Site web Cisco. Accès : \url{http://www.cisco.com/en/US/docs/ios/12_2/qos/command/reference/qrfcmd8.html}. Accédé pour la dernière fois le 7 juin 2012.
	% Livres
	\bibitem{ciscocookbook} K. Dooley et I. Brown (2006). \emph{Cisco IOS Cookbook}.  (2\ieme~ed.). O'Reilly.
	\bibitem{junoscookbook} A. Garrett. \emph{JUNOS Cookbook}. O'Reilly
	\bibitem{junosdummies} W. Goralski,  C. Gadecki M. Bushong (2011). \emph{JunOS for DUMMIES}. (2\ieme~ed.). Wiley.
	\bibitem{CCENT} G. Clarke (2011). \emph{CCENT Certification All-in-One for DUMMIES}. Wiley.
	\bibitem{CCNA} S. Angelescu (2010). \emph{CCNA Certification All-in-One for DUMMIES}. Wiley.
	\bibitem{computernetworks} A. Tanenbaum et D. Wetherall (2011). \emph{Comupter Networks}. (5\ieme~ed.). Pearson.
	\bibitem{pujolle} G. Pujolle (2011). \emph{Les réseaux}. (7\ieme~ed.). Eyrolles.
	\bibitem{JuniperRef} T. Thomas, D. Pavlichek, L. Dwyer, R. Chowbay, W. Downing, J. Sonderegger (2002). \emph{Juniper Networks Reference Guide: JUNOS Routing, Configuration, and Architecture}. (1\iere~ed.). Addison Wesley.
	%Juniper Day One
	\bibitem{doQoS} G. Davies (2011). \emph{DAY ONE: DEPLOYING BASIC QOS}. Juniper Networks Books.
	\bibitem{twMPLS} T. Fiola et J. Panagos (2011). \emph{THIS WEEK: DEPLOYING MPLS}. Juniper Networks Books.
	\bibitem{doTrouble} J. Panagos et A. Statti (2011). \emph{DAY ONE: JUNOS MONITORING AND TROUBLESHOOTING}. Juniper Networks Books.
	% Documentation des équipements
	\bibitem{ACS1} Avocent (2010). \emph{CYCLADES ACS 5000 Installation/Administration/User Guide}. Avocent Corporation.
	\bibitem{ACS} Avocent (2010). \emph{CYCLADES ACS 5000 Command Reference Guide}. Avocent Corporation.
	\bibitem{PDU} Avocent (2011). \emph{Avocent PM PDU Installer/User Guide}. Avocent Corporation.
	\bibitem{extreme} Extreme Networks (2007). \emph{ExtremeXOS Summit Family Switches Hardware Installation Guide}. Extreme Networks, Inc.
	\bibitem{hp} Hewlett-Packard Company (2006). \emph{ProCurve Series 2900 Switches Installation and Getting Started Guide}. Hewlett-Packard Development Company.
	\bibitem{junosQoS} Juniper Networks, Inc (2012). \emph{Junos OS Class of Service Configuration Guide}. Juniper Networks, Inc.
	\bibitem{junosHard} Juniper Networks, Inc (2011). \emph{JUNOS Software J Series Services Routers Hardware Guide}. Juniper Networks, Inc.
	\bibitem{junosMPLS} Juniper Networks, Inc (2011). \emph{JUNOS Software MPLS}. Juniper Networks, Inc.
\end{thebibliography}

\vfill
\begin{center}
	Merci pour votre attention :)
\end{center}

\end{document}