# HG changeset patch # User Alessio Caiazza # Date 1256839514 -3600 # Node ID 35a9caac5cef6d982e3d6f5795f0e23cae75de54 # Parent b0824ccd5f09fdc1fbd4b1729eac4ae413183d48 OSPF, DNS, ICMP, handout (?) diff -r b0824ccd5f09fdc1fbd4b1729eac4ae413183d48 -r 35a9caac5cef6d982e3d6f5795f0e23cae75de54 Presentazione.tex --- a/Presentazione.tex Thu Oct 29 12:04:13 2009 +0100 +++ b/Presentazione.tex Thu Oct 29 19:05:14 2009 +0100 @@ -139,7 +139,7 @@ { \begin{frame} \frametitle{Sommario} -\tableofcontents[currentsection,currentsubsection] +\tableofcontents[subsectionstyle=show/shaded/hide] \end{frame} } @@ -157,6 +157,29 @@ \section{Perch\'e IPv6} +\subsection{IPv6} +\begin{frame}\frametitle{IPv6} +IPv6 \`e la nuova versione del protocollo IP, \`e stato progettato per risolvere le debolezze di IPv4 e per esaltarne i punti di forza. + +%\begin{itemize}[<+->] +% \item Un indirizzo IPv6 \texttt{2001:0db8:85a3:08d3:1319:8a2e:0370:7344} +% \item la notazione CIDR per i prefix +%\end{itemize} + +\vspace{1.5cm} + +\pause +\begin{colorblock}{Vantaggi di IPv6} +\begin{itemize} +\item Maggior spazio di indirizzamento +\item Abolizione dei NAT +\item Header semplificato +\item Autoconfigurazione +\end{itemize} +\end{colorblock} +\end{frame} + + \subsection{Timeline} \begin{frame}[t]\frametitle{Gli indirizzi IP stanno finendo?} \begin{tikzpicture}[timeline/.style={->,color=chameleongreen1,thick}, @@ -226,29 +249,7 @@ \tlelement{11}{2009} {\item A oggi gli studi di Geoff Huston individuano la fine degli indirizzi IPv4 fra agosto 2011 e giugno 2012.} \end{frame} -\subsection{IPv6} -\begin{frame}\frametitle{IPv6} -IPv6 \`e la nuova versione del protocollo IP, \`e stato progettato per risolvere le debolezze di IPv4 e per esaltarne i punti di forza. - -%\begin{itemize}[<+->] -% \item Un indirizzo IPv6 \texttt{2001:0db8:85a3:08d3:1319:8a2e:0370:7344} -% \item la notazione CIDR per i prefix -%\end{itemize} - -\vspace{1.5cm} - -\pause -\begin{colorblock}{Vantaggi di IPv6} -\begin{itemize} -\item Maggior spazio di indirizzamento -\item Abolizione dei NAT -\item Header semplificato -\item Autoconfigurazione -\end{itemize} -\end{colorblock} -\end{frame} - -\subsection{Address Space} +\subsection{Vantaggi principali} \begin{frame}[plain] \setbeamercovered{invisible} \tikzstyle{every picture}+=[remember picture] @@ -256,22 +257,6 @@ \tikzstyle{ipv4}+=[rectangle,minimum size=1cm,fill=chameleongreen1,draw=chameleongreen3] \tikzstyle{na} = [baseline=-.5ex] -\mode { -\begin{tikzpicture}[remember picture,overlay] - \node at ($(current page.center) + (0,2cm) $) [ipv4] (ipv4) {} ; - \coordinate (ipv6) at ($ (ipv4) + (2cm,-.5cm) $); - - \path[->]<2-> (ipv4_text) edge [bend right] (ipv4); - \path[->]<4-> (ipv6_text) edge [bend right] (ipv6); - \begin{actionenv}<6-> - %\path[v6 arrow] (current page.north west) -- +(-1cm,-1cm); - \path[v6 arrow] (current page.north) -- +(0,-.5cm); %(current page.south); - \path[v6 arrow] (current page.south) -- +(0,+.5cm); - \path[v6 arrow] (current page.west) -- +(+.5cm,0); - \path[v6 arrow] (current page.east) -- +(-.5cm,0); - \end{actionenv} -\end{tikzpicture} - \vspace{12em} \begin{itemize} @@ -285,11 +270,25 @@ \item<6-> Per mantenere le proporzioni dovremmo colorare di bianco l'intera superficie del Sistema Solare! \item<7-> Pi\`u di $6.66 \cdot 10^{23}$ indirizzi per metro quadrato della superficie terrestre (cioè 666 mila miliardi di miliardi). \end{itemize} -\end{itemize} } +\end{itemize} + +\begin{tikzpicture}[remember picture,overlay] + \node at ($(current page.center) + (0,2cm) $) [ipv4] (ipv4) {} ; + \coordinate (ipv6) at ($ (ipv4) + (2cm,-.5cm) $); + + \path[->]<2-> (ipv4_text) edge [bend right] (ipv4); + \path[->]<4-> (ipv6_text) edge [bend right] (ipv6); + \begin{actionenv}<6-> + %\path[v6 arrow] (current page.north west) -- +(-1cm,-1cm); + \path[v6 arrow] (current page.north) -- +(0,-.5cm); %(current page.south); + \path[v6 arrow] (current page.south) -- +(0,+.5cm); + \path[v6 arrow] (current page.west) -- +(+.5cm,0); + \path[v6 arrow] (current page.east) -- +(-.5cm,0); + \end{actionenv} +\end{tikzpicture} \end{frame} -\subsection{NAT} \begin{frame}\frametitle{Network Address Translation (NAT)} %\begin{actionenv} Il Network Address Translation (NAT) è una tecnica che consiste nel modificare gli indirizzi IP dei pacchetti in transito su un sistema che agisce da router. \pause @@ -317,7 +316,6 @@ % \end{frame} -\subsection{Header semplificato} \begin{frame}[fragile]\frametitle{Header semplificato} \begin{columns} \begin{column}{5.5cm} @@ -347,7 +345,6 @@ \end{frame} -\subsection{Autoconfigurazione} \begin{frame}\frametitle{Autoconfigurazione} \begin{itemize} @@ -707,16 +704,40 @@ \section{Automatismi e routing} % (fold) \subsection{Introduzione} \begin{frame}\frametitle{Autoconfigurazione} - Una delle novità introdotte da IPv6 è l'autoconfigurazione dei nodi di rete, che anche in assenza - di un router sono in grado di generare autonomamente un indirizzo link-local unicast per garantire la - comunicazione fra i nodi interconnessi. + \begin{itemize} + \item Una delle novità introdotte da IPv6 è l'autoconfigurazione dei nodi di rete, che anche in assenza di un router sono in grado di generare autonomamente un indirizzo link-local unicast per garantire la comunicazione fra i nodi interconnessi. + \item La generazione di questo tipo di indirizzo è il primo passo da eseguire per poter ottenere un indirizzo global unicast. + \end{itemize} +\end{frame} + +\subsection{ICMPv6} +\begin{frame}\frametitle{ICMPv6 - Definizione} + \begin{colorblock}{Definzione (Wikipedia)} + L'Internet Control Message Protocol versione 6 (ICMPv6) è l'evoluzione nelle reti IPv6 del protocollo ICMP per le reti IPv4. In essa \emph{vengono aggiunte nuove funzionalità che nel protocollo precedente erano demandate ad altri livelli protocollari (come ad esempio l'ARP)} e tolte altre che, invece, erano poco usate. - La generazione di questo tipo di indirizzo è il primo passo da eseguire per poter ottenere - un indirizzo global unicast. + Come nel caso della versione precedente, l'ICMPv6 viene utilizzato per monitorare lo stato della rete e per inviare pacchetti di gestione e di errore. - Con gli indirizzi link-local unicast e con il protocollo ICMPv6 si va di fatto a spostare più in - alto di un livello il compito di ARP, rendendolo indipendente dalla - tecnologia utilizzata per il livello due della rete. + Essa è descritta nell'RFC 2463. + \end{colorblock} + \begin{flushright} + \url{http://it.wikipedia.org/wiki/ICMPv6} + \end{flushright} +\end{frame} + +\begin{frame}[fragile]\frametitle{ICMPv6 - Pacchetto} + \begin{colorblock}{Struttura del pacchetto} + \begin{center} + \begin{bytefield}{32} + \bitheader{0,8,16,32} \\ + %\wordgroupr{Generic Header} + \bitbox{8}{Type} & \bitbox{8}{Code} & \bitbox{16}{Checksum}\\ + %\endwordgroupr \\ + \wordbox[lrt]{1}{Message body} \\ + \skippedwords \\ + \wordbox[lrb]{1}{} \\ + \end{bytefield} + \end{center} + \end{colorblock} \end{frame} \begin{frame}\frametitle{Indirizzo link-local unicast autoconfigurato} @@ -840,6 +861,38 @@ \uncover<5->{Il fallimento di questa procedura obbliga ad una configurazione manuale dell'host.} \end{frame} +\begin{frame}[fragile,shrink=10]\frametitle{ICMPv6 - Neighbor Solicitation} + \begin{center} + \begin{bytefield}{32} + \bitheader{0,8,16,32} \\ + %\wordgroupr{Generic Header} + \bitbox{8}{Type=\texttt{135}} & \bitbox{8}{Code=\texttt{0}} & \bitbox{16}{Checksum}\\ + %\endwordgroupr \\ + \wordbox{1}{Reserved}\\ + \wordbox{4}{Target Address}\\ + \wordbox[lrt]{1}{Options} \\ + \skippedwords \\ + \wordbox[lrb]{1}{} \\ + \end{bytefield} + \end{center} +\end{frame} + +\begin{frame}[fragile,shrink=10]\frametitle{ICMPv6 - Neighbor Advertisement} + \begin{center} + \begin{bytefield}{32} + \bitheader{0,1,2,3,8,16,32} \\ + %\wordgroupr{Generic Header} + \bitbox{8}{Type=\texttt{136}} & \bitbox{8}{Code=\texttt{0}} & \bitbox{16}{Checksum}\\ + %\endwordgroupr \\ + \bitbox{1}{ R } & \bitbox{1}{\tiny S \\ \texttt{1}} &\bitbox{1}{ O } & \bitbox{29}{Reserved}\\ + \wordbox{4}{Target Address}\\ + \wordbox[lrt]{1}{Options} \\ + \skippedwords \\ + \wordbox[lrb]{1}{} \\ + \end{bytefield} + \end{center} +\end{frame} + \begin{frame}\frametitle{Configurazione stateless - Procedimento (cont.)} % (fold) \begin{colorblock}{Indirizzo global} \begin{itemize} @@ -887,15 +940,202 @@ \vspace{.5cm} \pause \begin{colorblock}{\emph{other statefull configuration} (flag~O) - stateless DHCP} - Indica la presenza di un server DHCPv6 per la richiesta di parametri \underline{diversi dall'indirizzo IP}. + Indica la presenza di un server DHCPv6 per la richiesta di parametri \underline{diversi dall'indirizzo IP}. (DNS, NTP, SIP, etc \ldots) \end{colorblock} \end{frame} -%In tutti gli altri casi è necessario che l'indirizzo sia segnato come \emph{tentative address} e -%verificato con i pacchetti ICMP. +%\begin{frame}[fragile]\frametitle{ICMPv6 - Router Solicitation} +% \begin{center} +% \begin{bytefield}{32} +% \bitheader{0,8,16,32} \\ +% %\wordgroupr{Generic Header} +% \bitbox{8}{Type=\texttt{133}} & \bitbox{8}{Code=\texttt{0}} & \bitbox{16}{Checksum}\\ +% %\endwordgroupr \\ +% \wordbox{1}{Reserved}\\ +% \wordbox[lrt]{1}{Options} \\ +% \skippedwords \\ +% \wordbox[lrb]{1}{} \\ +% \end{bytefield} +% \end{center} %\end{frame} -% subsubsection procedimento (end) -% subsection configurazione_stateless (end) +% +%\begin{frame}[fragile]\frametitle{ICMPv6 - Router Advertisement} +% \begin{center} +% \begin{bytefield}{32} +% \bitheader{0,8,16,32} \\ +% %\wordgroupr{Generic Header} +% \bitbox{8}{Type=\texttt{134}} & \bitbox{8}{Code=\texttt{0}} & \bitbox{16}{Checksum}\\ +% %\endwordgroupr \\ +% \bitbox{8}{Current Hop Limit} & \bitbox{1}{Code=\texttt{0}} & \bitbox{1}{Checksum}\\ +% \wordbox{1}{Reserved}\\ +% \wordbox[lrt]{1}{Options} \\ +% \skippedwords \\ +% \wordbox[lrb]{1}{} \\ +% \end{bytefield} +% \end{center} +%\end{frame} + +\section{Routing OSPFv3} % (fold) +\begin{frame}\frametitle{Routing OSPFv3} + + \begin{columns} + \column{.4\textwidth} % column designated by a command + \begin{itemize} + \item Algoritmo identico alla versione 2 (IPv4) + \item Utilizza solo indirizzi link-local + \item rete $\rightarrow$ link + \end{itemize} + \column{.6\textwidth} + \resizebox{.9\textwidth}{!}{ + \includegraphics{aree_ospf} + } + \end{columns} +\end{frame} + +%\begin{frame}[fragile,shrink]\frametitle{Tabella di routing} +%\begin{verbatim} +% Codes: +% C - Connected, L - Local, S - Static B - BGP, R - RIP, D - EIGRP +% O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2 +% OE2 ::/0 [110/1], tag 1 +% via FE80::20F:24FF:FECF:CF42, GigabitEthernet1/0/2 +% OE2 2001:760:2C05:1::/64 [110/20] +% via FE80::223:5DFF:FE15:FC41, GigabitEthernet1/0/5 +% L 2001:760:2C05:F0FF::7/128 [0/0] +% via GigabitEthernet1/0/2, receive +% C 2001:760:2C05:F0FF::8/127 [0/0] +% via GigabitEthernet1/0/5, directly connected +% L 2001:760:2C05:F0FF::9/128 [0/0] +% via GigabitEthernet1/0/5, receive +% O 2001:760:2C05:F0FF::12/127 [110/2] +% via FE80::223:5DFF:FE15:FC41, GigabitEthernet1/0/5 +% O 2001:760:2C05:F0FF::14/127 [110/3] +% via FE80::223:5DFF:FE15:FC41, GigabitEthernet1/0/5 +% OE2 2001:760:2C05:F0FF::16/127 [110/20] +% via FE80::223:5DFF:FE15:FC41, GigabitEthernet1/0/5 +% L FF00::/8 [0/0] +% via Null0, receive +%\end{verbatim} +%\end{frame} +% section routing_ospfv3 (end) + +\section{DNS} % (fold) + +\begin{frame}[fragile]\frametitle{I record DNS per IPv6} + + \begin{colorblock}{Query DNS} + Per gestire gli indirizzi IPv6 sono stati introdotti i record AAAA.\\ + + Esistono anche i record A6 ma sono ancora poco utilizzati. + \end{colorblock} + \pause + \begin{colorblock}{Query inverse} + Ogni sottodominio di \texttt{IP6.ARPA} rappresenta una cifra + esadecimale dell'indirizzo IPv6 a partire da quella più significativa. + Quindi per chiedere l'hostname per l'indirizzo \texttt{2001:db8::cafe} + bisogna interrogare il server DNS per il nome di dominio + + \vspace{.25cm} + \resizebox{\textwidth}{!}{ + \texttt{e.f.a.c.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa}} + \end{colorblock} +\end{frame} + +\begin{frame}[fragile,shrink]\frametitle{Esempio record AAAA (BIND 9)} + \begin{verbatim} +$TTL 3600 +@ 86400 IN SOA dns.ipv6.unifi.it. staffreti.unifi.it. ( + 2009081102 ; Serial + 86400 ; Refresh + 7200 ; Retry + 3600000 ; Expire + 3600 ) ; Minimum + +@ 86400 IN NS dns.ipv6.unifi.it. + +@ 4800 IN AAAA 2001:760:2c05:1::20 + IN A 150.217.1.20 + +dns 4800 IN AAAA 2001:760:2c05:1::20 + 4800 IN A 150.217.1.20 + +lenst 4800 IN AAAA 2001:760:2c05:1001::24 +\end{verbatim} %$ +\end{frame} + +\begin{frame}[fragile,shrink]\frametitle{Esempio record PTR (BIND 9)} +\begin{verbatim} +$TTL 3d ; Default TTL +@ IN SOA 5.0.c.2.0.6.7.0.1.0.0.2.ip6.arpa. staffreti.unifi.it. ( + 2009081102 ; Serial number (YYYYMMdd) + 24h ; Refresh time + 30m ; Retry time + 2d ; Expire time + 3d ) ; Default TTL + +IN NS dns.ipv6.unifi.it. + +; prefix 2001:760:2c05:1::/64 +$ORIGIN 1.0.0.0.5.0.c.2.0.6.7.0.1.0.0.2.ip6.arpa. +0.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR dns.ipv6.unifi.it. +; prefix 2001:760:2c05:1001::/64 +$ORIGIN 1.0.0.1.5.0.c.2.0.6.7.0.1.0.0.2.ip6.arpa. +4.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR lenst.ipv6.unifi.it. +\end{verbatim} %$ +\end{frame} + +\begin{frame}[t]\frametitle{Il problema del reverse DNS} + \begin{colorblock}{RFC 1912} + \emph{Ogni host raggiungibile su Internet deve avere un hostname ed un record PTR per il reverse DNS.} + + Questo è un problema per IPv6. + \begin{itemize} + \item impossibile una generazione a priori (sono troppi) + \item una generazione on demand potrebbe esporre ad attacchi DOS + \end{itemize} + \end{colorblock} + \pause + \begin{colorblock}{Come viene usato oggi il reverse DNS?} + \begin{itemize} + \item Controllo SPAM per i mail server + \item Funzionalità di logging + \end{itemize} + \end{colorblock} + \pause + \begin{colorblock}{Soluzione} + Registrare i record PTR solo per i server. + \end{colorblock} +\end{frame} +%\subsection{Il problema del reverse \acs{DNS}} %fold +%\label{sub:il_problema_del_reverse_dns} +%Ogni host raggiungibile su Internet deve avere un hostname ed un record PTR per +%il reverse \ac{DNS}. Questo \`e ci\`o che richiede l'RFC1912\cite{rfc1912} +%in merito ai record IPv4, ma per IPv6? La questione rimane aperta perch\'e +%l'RFC non \`e stato aggiornato dopo la pubblicazione di IPv6 ed il reverse +%\ac{DNS} viene utilizzato solo in alcuni casi. +%Alcune funzionalit\`a di logging lo usano per avere un output più leggibile, senza alcun +%problema nel caso in cui il record non sia presente ed alcuni server di posta +%elettronica, durante una sessione SMTP, verificano attraverso una query inversa +%che il server mittente sia effettivamente chi dichiara di essere e non uno spammer. +% +%Da un punto di vista pratico basterebbe registrare i record PTR solo per i +%server di posta, ma la discussione rimane comunque aperta nella comunit\`a. +%Gli \ac{ISP} per IPv4 solitamente generano in modo automatico i record \ac{DNS} +%per tutti gli indirizzi che ricevono dal \ac{RIR}, ma dato l'elevato numero di +%indirizzi presenti gi\`a in un prefix da 64 bit, che dovrebbero assegnare ad ogni +%cliente, questa strada risulta impercorribile. +%Un'altra possibilità è la generazione dei record PTR al momento stesso della +%query \ac{DNS}; tuttora non sono noti plugin di BIND per questa funzionalità +%e si tratta comunque di una strategia rischiosa in quanto esporrebbe ad attacchi +%di tipo \ac{DDOS}. +% +%Se si scegliesse di generare staticamente a priori tutti i record AAAA e PTR +%è mandatorio l'uso di un server DHCP per assegnare indirizzi in un intervallo +%ristretto. Per la generazione dei record si può utilizzare lo script ruby sviluppato +%durante il lavoro di tesi e disponibile in appendice \ref{lst:dns_gen}. +% subsection il problema del reverse dns (end) +% section dns (end) + % section automatismi_e_routing (end) \section{Implementare IPv6} @@ -1074,9 +1314,7 @@ \end{tikzpicture} \end{frame} -\section{Risultati} - -\section{Licenza} +\section*{Licenza} \begin{frame}\frametitle{Licenza Creative Commons\newline{}\small Attribuzione-Non commerciale-Condividi allo stesso modo 2.5 Italia} \small \begin{colorblock}{Tu sei libero:}