Présentationduréseau Statutassociatif ComitédesFêtesduKermeur Associationlocaledepuis1961 LeKermeurestunquartierd'unecommunede3000h. InstallationinitialeparAlsatisen2005 Satellite+WifienmodeinfrastructuresurunezoneblancheADSL 13abonnés,uneseuleAP FinancementDATAR,MorlaixCommunauté Débitmaxabonné:512Kbpsdownload,128Kbpsupload Evolutionen2006 LiaisonspécialiséeOléane APprincipalepasseenMikrotikRB532sousOpenwrt 35abonnés,cinqrelais,étenduegéographique15x5km Débitmaxabonné:2Mbpsdownload,512Kbpsupload
Equipementscentraux APMikrotikRB532 OpenwrtKamikaze(Mips)surcarteflash(RouterOSconservéenNand) Deuxpasserelles(M0n0wall,pfSense,baseFreeBSD) PCavecdescartesflashaulieududisquedur ServeurPCsousNetbsd Apache,Mysql,Php,Cacti,... Scriptsdemaintenance ServeurPowermacG4sousDebian Mail:Exim,Spamassassin,Clamav,serveurPop Collectedeslogsdeconnexion Liaisonwifidédiéeàlasauvegarde PCaveccarteflash,OpenwrtKamikaze(i386).APdesecours
Firmwaredesrouteurs 40 routeurs, 34 WRT54G(L), 6 Buffalo WHRG54S Firmware base OpenWrt WhiteRussian RC6 Patch du wificonf, gestion du txpower de la RC4 Intégration des packages suivants : wl, screen (avec libncurses) snmpd gpio de la RC4 au lieu du module diag. Répertoire /usr/local/bin (scripts locaux) en autres, setupow.sh, lancé a la 1ère connexion L'interface graphique du routeur est inutilisée Modifications de configuration par SSH depuis la machine de maintenance
Lesgraphes Pourchaqueabonné Optionnel:
Lesoutils Cacti Apache,Mysql,Php,Rrdtools Relevédemesurestoutesles5minutes.Historiquesur1an Mysql Tabledesrouteurs rt_name,rt_fonction(client,client/relais,relais), rt_adresse_mac,rt_adresse_ip,rt_online Snmp Enstandardletraficdesinterfaces Extensionspourlesniveauxradio,lachargeCPU Scriptsshell Alimentationpourcacti Miseàjourdeconfig,...
ExtensionsSNMPsurlerouteur Exemplepourlerssi Extraitdu/etc/snmp/snmpd.conf:... exec.1.3.6.1.2.1.2.2.1.53.radio_rssi /usr/local/bin/snmpradio.sh53.. Extraitsduscriptsnmpradio.sh: if[$1 eq53];then RETVAL=$((96 $(wlrssi sed e's/^.* \([0 9]\+\)$/\1/'))) [$RETVAL lt1]&&retval=0 fi exit$retval Testdepuislamachined'exploitation snmpwalk cpublic v1routeur
ModèlesdedonnéesdansCacti
Cacti:DéfinitiondumodèleRSSI
Cacti:lesmodèlesdegraphes pouropenwrt
Cacti:définitiondumodèledegrapheradio
Cacti:ModèledehostOpenwrt Remarque:LachargeCPUestégalementsurunmodèlespécifique
Récupérationdeladonnéeniveauvudel'AP SurlesAPenOpenwrtKamikaze(Madwifi) forapin$(requete_mysql_ap_kamikaze);do ssh$ap"cat/proc/.../associated_sta" sed e:a e'$!n;s/\n//;ta' e'p;d' done SurlesAPenOpenwrtRC6 forapin$(requete_mysql_ap_rc6);do #RetrouvelesadresseMacsdesclientsassociés forclientin$(ssh$ap"wlassoclist" cut d'' f2);do RES=$(ssh$AP"wlrssi$CLIENT") echo"$adrm;$res" done done Filtreperlrajoutantlenomd'hoteretrouvédanslabaseMysql,onobtient: whr130 00:16:01:4d:ae:57 18 99 0 0 0 0 wrt144 00:12:17:d7:ba:85 18 99 0 0 0 0 ##***Relaiswhr132*** wrt123 00:18:39:c0:64:30 14 99 0 0 0 0 Cesdonnéessontégalementutiliséespourlarégulationdutxpowerdesrouteurs
Legrapheradio
Legraphetrafic
LegraphechargeCPU
Exempleenmaintenance Deuxclients d'unmêmerelais +bruitdetonnerre: Sélecteurd'antenne durelais
MiseenplaceSSH ssh_keygen Clépubliquedans/etc/dropbear/authorized_keysdurouteur Cléprivéesurleserveurdemaintenance ssh lroot ifichier_clénom_routeurcommandes_sur_le_routeur Scriptwrtxxx.sh: WRT=$(basename$0) if[$# eq0];then echo"connexiona$wrt" fi ssh lroot i$home/.ssh/keykivabien$wrt$* Fairelesliens,permettantdefairenom_routeurcommande ln swrtxxx.shwrt102 Commandesenrafale forwrtinliste_de_wrt;do$wrtcommande;done
Miseàjourauredémarrage Lesrouteurssontàl'heureUTC,avecTZdéfini,alignésparNTP Dansleurcrontab,redémarragejournalier /etc/init.d/s42localnet,générationd'unstartuppersonnalisé SRV=$(nvramgetcfk_serveur) wgethttp://$srv/startup.php?adrmac=xxx o/tmp/startup.sh /tmp/startup.sh Danscestartup.sh,engenéralmisesàjourdefichiersdeconf,descript,... Minimiserlesécrituresenflashmaiscommandediffinexistante wgethttp//serveur/fichier o/tmp/fichier CONT1=catfichier_original CONT2=cat/tmp/fichier if["x$cont1"!="x$cont2"];then mv/tmp/fichierfichier_original fi
Régulationdelapuissanceémission Encrontabsurlamachined'exploitation,toutesles5minutes ApartirdufichierdesmesuresrelevéssurlesAP,leprincipe: LSTWRT=$(grep^w[hr][rt]Fichier cut d' ' f1 sort uniq) forwrtin$lstwrt;do NIVEAU=$(grep^$WRTFichier cut d' ' f3) if[$niveau gt$maxi];then TXPWR=$(snmpget$WRTMib_Txpower_Qdbm) ssh$wrt"wltxpwr1 q$(($txpwr 1))" fi if[$niveau lt$mini];then TXPWR=$(snmpget$WRTMib_Txpower_Qdbm) ssh$wrt"wltxpwr1 q$(($txpwr+1))" fi done Lewltxpwr1 qvaleurseraitàremplacerparsnmpsetmib_txpower_qdbm
Régulationdelapuissanceémission Exemple Leseulfonctionnantaveclesantennesd'origineduWRT Apparementposésurunefenêtre
Analysedesdmesg Lancéetoutelesheuresencrontabsurlamachined'exploitation Initialementdétectiondesrouteursayantdesproblèmesdenvram vérolée,principalecausedepannedepuislelancementduréseau. forwrtin$(requete_mysql_liste_routeurs);do foritemin$(ssh$wrt"dmesg tail $NBL sed e's//_/g'");do Comparaisonavecunelisted'élémentconnusetnormaux... ["x${all[$ij]}"=="x${item:0:${ln}}"]&&kn=$(($kn+1)) done [$KN ne$nbl]&&echo"problèmesurrouteur$wrt" done Al'usage Détectiondesdépassementsip_conntrack(UsagePeerToPeer) DétectionDCCforged(pbpièce jointedansmsn?)
http://192.168.1.1/
Pagehttpd'unrelais
Objectif:enfairelemoinspossible... Stabilitédufirmware 3versions:baseSveasoft:moinsde6mois, OpenwrtRC4:1an,RC6:deuxans? Monitorer Pourvoirlescoupsvenir,corrigersipossible Moinsd'unappel/semaine,dontmoinsd'un/moisréseau Elémentspourlesdimensionnementsetlesconfigurations Lasuite? Gestiondesabonnements:factures,nonpaiement,etc... Rapprochementaveclesdonnéesderéseauetdonnéesbancaires
Liens OpenWrt: Cacti: RRDtool: NetSnmp: Mysql: http://openwrt.org/ http://cacti.net/ http://oss.oetiker.ch/rrdtool/ http://net snmp.sourceforge.net/ http://www.net snmp.org/docs/man/snmpd.conf.html http://www.mysql.com/ M0n0wall: pfsense: http://m0n0.ch/wall/ http://www.pfsense.org/ SiteduKermeur: Lesnotes: http://www.lekermeur.net/ http://www.lekermeur.net/blog_du_net/