Outils pour utilisateurs

Outils du site


technique:archives:network-design-sim

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
technique:archives:network-design-sim [2015/11/29 18:42]
admin
technique:archives:network-design-sim [2015/11/29 21:12] (Version actuelle)
admin [Scripts]
Ligne 3: Ligne 3:
 Quelques essais d'​archi faits en octobre et novembre 2015 avec l'​outil [[https://​en.wikipedia.org/​wiki/​Graphical_Network_Simulator-3|GNS3]]. Quelques essais d'​archi faits en octobre et novembre 2015 avec l'​outil [[https://​en.wikipedia.org/​wiki/​Graphical_Network_Simulator-3|GNS3]].
  
-Hypothèses ​:+===== Hypothèses ​=====
  
   * CHD a une plage de 1024 IP publiques à distribuer aux adhérents (exemple pris 6.5.4.0/22)   * CHD a une plage de 1024 IP publiques à distribuer aux adhérents (exemple pris 6.5.4.0/22)
Ligne 9: Ligne 9:
   * CHD fait ses annonces BGP à 1 pair [[http://​www.fullsave.com/​prestations/​transit-bgp/​|géré par FullSave]]   * CHD fait ses annonces BGP à 1 pair [[http://​www.fullsave.com/​prestations/​transit-bgp/​|géré par FullSave]]
   * CHD loue 2 liens fibre vers Saint-Gaudens   * CHD loue 2 liens fibre vers Saint-Gaudens
-  * 1 routeur (RT) par arrivée fibre (Serge G. et ZAC Landes)+  * 1 routeur (RT) par arrivée fibre (av F.Mitterand ​et ZAC Landes)
   * 1 grand LAN radio (ponts transparents) avec les 2 RT et tous les adhérents   * 1 grand LAN radio (ponts transparents) avec les 2 RT et tous les adhérents
  
-Schéma : {{:​technique:​archives:​capture-simu-gns3.png?​linkonly|:​technique:​archives:​capture-simu-gns3.png}}+===== Schémas =====
  
-Problématiques à envisager ​:+{{:​technique:​archives:​capture-simu-gns3.png?​linkonly|:​technique:​archives:​capture-simu-gns3.png}} 
 + 
 +{{:​technique:​archives:​capture-simu-gns3-ports.png}} 
 +===== Problématiques à envisager ​=====
  
   * Les routeurs des adhérents TTN sont majoritairement en firmware d'​usine,​ avec une IP en 172 côté WAN   * Les routeurs des adhérents TTN sont majoritairement en firmware d'​usine,​ avec une IP en 172 côté WAN
-  * Répartition du traffic ​sur les fibres +  * Répartition du trafic ​sur les fibres 
-  * Forçage du traffic ​sur une des deux fibre si un équipement pose pb sur l'​autre lien+  * Forçage du trafic ​sur une des deux fibre si un équipement pose pb sur l'​autre lien
   * Routage dynamique ou pas   * Routage dynamique ou pas
 +  * Minimiser le trafic du lien radio entre les routeurs à saint-gaudens en situation nominale
 +
 +===== Problèmes rencontrés =====
 +
 +  * OSPF entre les rt_tls et les routeurs à Saint Gaudens permettrai de faire de sorte que les routes pour le trafic allant d'​internet aux adhérents mais sans tenir compte de l'​état du réseau radio et sans permettre facilement de répartition sur les fibres
 +  * VRRP utilise mutlicast et est chatty, peu adapté sur le LAN radio (je pensais qu'on pourrait s'en servir pour que la default gateway des routeurs adt soit virtuelle)
 +
 +===== Solution en routage statique =====
 +==== Configs ====
 +<code text hosts>
 +127.0.0.1 localhost
 +192.168.90.222 rt_mitterand
 +192.168.91.222 rt_zac
 +6.5.4.1 rt_tls
 +</​code>​
 +
 +<code text rt_tls_network-interface>​
 +# The loopback network interface
 +auto lo
 +iface lo inet loopback
 + up ip addr add 6.5.4.1 dev $IFACE
 +
 +auto eth0
 +iface eth0 inet static
 + # Pour les besoin de la simulation, NAT de mon aDSL, sinon rmmod iptables conseillé, cf h7
 + address 192.168.1.42
 + netmask 255.255.255.0
 + gateway 192.168.1.254
 + up sysctl -w net.ipv4.ip_forward=1
 + up iptables -t nat -F POSTROUTING
 + up iptables -t nat -A POSTROUTING -o $IFACE -j MASQUERADE
 +
 +auto eth1
 +iface eth1 inet static
 + address 192.168.90.223
 + netmask 255.255.255.0
 + up ip route add 6.5.4.0/24 via 192.168.90.222
 +
 +auto eth2
 +iface eth2 inet static
 + address 192.168.91.223
 + netmask 255.255.255.0
 + up ip route add 6.5.5.0/24 via 192.168.91.222
 +</​code>​
 +
 +<code text rt_mitterand_network-interface>​
 +# The loopback network interface
 +auto lo
 +iface lo inet loopback
 +
 +auto eth0
 +iface eth0 inet static
 + address 192.168.90.222
 + netmask 255.255.255.0
 + gateway 192.168.90.223
 +
 +auto eth1
 +iface eth1 inet static
 + address 172.16.0.1
 + netmask 255.255.0.0
 +
 +#auto eth1:253
 +iface eth1:253 inet static
 + address 172.16.0.253
 + netmask 255.255.0.0
 + up /​root/​setup_routing.sh
 +
 +auto eth1:254
 +iface eth1:254 inet static
 + address 172.16.0.254
 + netmask 255.255.0.0
 + up /​root/​setup_routing.sh
 +</​code>​
 +
 +<code text rt_zac_network-interface>​
 +# The loopback network interface
 +auto lo
 +iface lo inet loopback
 +
 +auto eth0
 +iface eth0 inet static
 + address 192.168.91.222
 + netmask 255.255.255.0
 + gateway 192.168.91.223
 + up sysctl -w net.ipv4.ip_forward=1
 +
 +auto eth1
 +iface eth1 inet static
 + address 172.16.0.2
 + netmask 255.255.0.0
 +
 +auto eth1:253
 +iface eth1:253 inet static
 + address 172.16.0.253
 + netmask 255.255.0.0
 + up /​root/​setup_routing.sh
 +
 +#auto eth1:254
 +iface eth1:254 inet static
 + address 172.16.0.254
 + netmask 255.255.0.0
 + up /​root/​setup_routing.sh
 +</​code>​
 +
 +<code text adt1_network-interface>​
 +# The loopback network interface
 +auto lo
 +iface lo inet loopback
 +
 +# Simule l'​antenne en bridge
 +auto eth0
 +iface eth0 inet static
 + address 172.16.10.10
 + netmask 255.255.0.0
 +
 +# Simule le routeur OpenWRT avec IP publiques
 +auto eth1
 +iface eth1 inet static
 + address 6.5.4.10
 + netmask 255.255.255.255
 + up ip route replace default via 172.16.0.254 src 6.5.4.10 dev eth0
 + up sysctl -w net.ipv4.ip_forward=1
 +</​code>​
 +
 +<code text adt2_network-interface>​
 +# The loopback network interface
 +auto lo
 +iface lo inet loopback
 +
 +# Simle l'​antenne en bridge
 +auto eth0
 +iface eth0 inet static
 + address 172.16.10.11
 + netmask 255.255.0.0
 +
 +# Simule le routeur OpenWRT avec IP publiques
 +auto eth1
 +iface eth1 inet static
 + address 6.5.5.10
 + netmask 255.255.255.255
 + up ip route replace default via 172.16.0.253 src 6.5.5.10 dev eth0
 + up sysctl -w net.ipv4.ip_forward=1
 +</​code>​
 +
 +==== Scripts ====
 +<code bash setup_routing.sh>​
 +#!/bin/bash
 +
 +function adt() {
 + adt_num=$1
 + adt_etat=$2
 + adt_nom=$3
 + ip4_nexthop=$4
 + ip4_public=$5
 + dev=eth1
 + SELF=$(basename $0)
 + INFO="​logger -p notice -t $SELF --"
 + CRIT="​logger -p crit -t $SELF --"
 +
 + echo "​$ip4_public ${adt_nom}.pub4 adt$adt_num"​ >> /​etc/​hosts.adt
 + echo "​$ip4_nexthop ${adt_nom}.gw4 hop$adt_num"​ >> /​etc/​hosts.adt
 +
 + case $adt_etat in
 + actif)
 + regex="​^$ip4_public via [0-9.]+ dev $dev"
 + ip route get $ip4_public | grep -qE "​$regex"​
 + res=$?
 + out=$(ip route replace $ip4_public via $ip4_nexthop dev $dev)
 + res2=$?
 + if [ $res2 -eq 0 ]; then
 + if [ $res -eq 1 ]; then
 + $INFO "​Accès ajouté : adt $*"
 + fi
 + else
 + $CRIT "​ERREUR : adt $adt_num $adt_etat $adt_nom : pb remplacement route : '​$out'"​
 + fi
 + ;;
 + resilie)
 + out=$(ip route delete $ip4_public 2>&​1)
 +    ​ res=$?​
 + case $res in
 + 0) $INFO "​Accès supprimé : adt $*" ;;
 + 2) : ;; # Route non trouvée, routage déjà supprimé
 + *) $CRIT "​ERREUR : adt $adt_num $adt_etat $adt_nom : pb suppression route : '​$out'"​ ;;
 + esac
 + ;;
 + *)
 + $CRIT "​ERREUR : adt $adt_num $adt_etat $adt_nom : '​$adt_etat'​ n'est pas un état reconnu"​
 + ;;
 + esac
 +}
 +
 +function main() {
 + > /​etc/​hosts.adt
 + sysctl -w net.ipv4.ip_forward=1
 + source /​root/​config_adt.sh
 + cat /​etc/​hosts.system /​etc/​hosts.adt > /etc/hosts
 +}
 +
 +main
 +</​code>​
 +
 +<code bash config_adt.sh>​
 +#!/bin/bash
 +# set ts=4
 +# Généré le 2015-11-29 21:​08:​50+01:​00
 +
 +#adt <​num> ​ <​etat> ​ <​NOM_Prenom> ​          <​ip4_nexthop> ​  <​ip4_public>​
 +adt 0001    actif   ​Dxxxxx_Laurent ​        ​172.16.10.10 ​   6.5.4.10
 +adt 0002    actif   ​Pxxxxx_Daniel ​         172.16.10.11 ​   6.5.5.10
 +#[...]
 +</​code>​
 +
 +<code bash config_adt_gen.sh>​
 +#!/bin/bash
 +SELF=$(basename $0)
 +INFO="​logger -p notice -t $SELF --"
 +CRIT="​logger -p crit -t $SELF --"
 +
 +TMP=$(mktemp)
 +ssh automated@chd.sx sudo mysql --defaults-file=/​etc/​mysql/​debian.cnf -BN -D gestion <<<​ '​SELECT * FROM v_config_adt;'​ >$TMP
 +
 +if [ $? -eq 0 -a -s $TMP ]
 +then $INFO "Base de donnée lue avec succès"​
 +else $CRIT "Echec de récupération des données depuis la base de données"​
 + exit 2
 +fi
 +
 +cat - $TMP >/​root/​config_adt.sh <<EOT
 +#!/bin/bash
 +# set ts=4
 +# Généré le $DATE
 +
 +#adt <​num> ​ <​etat> ​ <​NOM_Prenom> ​          <​ip4_nexthop> ​  <​ip4_public>​
 +EOT
 +rm $TMP
 +</​code>​
  
technique/archives/network-design-sim.1448818952.txt.gz · Dernière modification: 2015/11/29 18:42 par admin