avancement model et methodes
This commit is contained in:
36
chapitres/model/methodes.tex
Normal file
36
chapitres/model/methodes.tex
Normal file
@@ -0,0 +1,36 @@
|
||||
\chapter{Les méthodes}
|
||||
|
||||
\section{route}
|
||||
|
||||
La méthode "route" retourne la route (\lstinline{Route}), utilisée par l'équipement (\lstinline{Device}) pour atteindre le réseau spécifié.
|
||||
|
||||
\begin{lstlisting}[language=Ruby]
|
||||
# Params:
|
||||
# * network: an IPv4 network to test
|
||||
def route(network)
|
||||
ip_net = IPAddr.new network
|
||||
ip = ip_net.to_i
|
||||
|
||||
candidate_routes = routes.where(:start_ip.lte => ip, :end_ip.gte => ip)
|
||||
|
||||
choosed_route(candidate_routes)
|
||||
end
|
||||
\end{lstlisting}
|
||||
|
||||
\section{crossed?}
|
||||
|
||||
La méthode "crossed?" est un élément essentiel pour l'analyse des règles de sécurité (\lstinline{Policy}). Elle permet de déterminer sur un équipement (\lstinline{Device}) est traversé par un flux définit par deux réseaux. Pour cela, il faut utiliser la méthode "route" de la table de routage (\lstinline{RoutingTable}) de l'équipement en question et comparer l'interface de sortie des deux routes (Route) retourné. Si elles sont différentes, cela signifique que le flux traverse ce firewall.
|
||||
|
||||
\begin{lstlisting}[language=Ruby]
|
||||
# Params:
|
||||
# * network1: the *source* network
|
||||
# * network2: the *destination* network
|
||||
def crossed?(network1, network2)
|
||||
return false unless routing_table
|
||||
route1 = routing_table.route(network1)
|
||||
route2 = routing_table.route(network2)
|
||||
|
||||
return false unless route1 && route2
|
||||
route1.interface != route2.interface
|
||||
end
|
||||
\end{lstlisting}
|
||||
Reference in New Issue
Block a user