diff --git a/id_rsa.pub b/cle_ssh/id_rsa.pub similarity index 100% rename from id_rsa.pub rename to cle_ssh/id_rsa.pub diff --git a/vdn/LICENCE b/vdn/LICENCE new file mode 100644 index 0000000..b217347 --- /dev/null +++ b/vdn/LICENCE @@ -0,0 +1,17 @@ +Virtual Didactic Network (VDN). + +Copyright (C) 2006-2018 Guénal DAVALAN . + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + diff --git a/vdn/README b/vdn/README new file mode 100644 index 0000000..644573c --- /dev/null +++ b/vdn/README @@ -0,0 +1,5 @@ +=== Virtual Didactic Network === + +see : http://opale.u-clermont1.fr/vdn + + diff --git a/vdn/allocators/db-default/hosts b/vdn/allocators/db-default/hosts new file mode 100644 index 0000000..0046eaf --- /dev/null +++ b/vdn/allocators/db-default/hosts @@ -0,0 +1,54 @@ +fixme:distributeur +fixme:client +fixme:appolo +fixme:brightside +fixme:comanche +fixme:passerelle +fixme:darkside +fixme:castafiore +docker:docker +demo:web +demo:societe +demo:lambda +demo:tiny +demo:bigboss +demo:nomade +demo-buster:web +demo-buster:societe +demo-buster:lambda +demo-buster:tiny +demo-buster:bigboss +demo-buster:nomade +zoo:bullseye +zoo:buster-test +zoo:bullseye-test +zoo:buster-test-tgz2 +zoo:sae103 +zoo:docker +zoo:buster-tgz2 +zoo:bullseye-sae +zoo:bullseye-test-tgz2 +zoo:bookworm +zoo:buster +zoo:bullseye-tgz2 +firewall:web +firewall:societe +firewall:lambda +firewall:tiny +firewall:bigboss +firewall:nomade +routing-static:r2 +routing-static:s2 +routing-static:s1 +routing-static:r5 +routing-static:r1 +routing-static:r4 +routing-static:r3 +sae103:sae103 +routing-ospf:r2 +routing-ospf:s2 +routing-ospf:s1 +routing-ospf:r5 +routing-ospf:r1 +routing-ospf:r4 +routing-ospf:r3 diff --git a/vdn/allocators/db-default/hosts.global b/vdn/allocators/db-default/hosts.global new file mode 100644 index 0000000..74dddd1 --- /dev/null +++ b/vdn/allocators/db-default/hosts.global @@ -0,0 +1,14 @@ +fixme:brightside +fixme:passerelle +fixme:darkside +docker:docker +demo:societe +demo:lambda +demo:nomade +demo-buster:societe +demo-buster:lambda +demo-buster:nomade +firewall:societe +firewall:lambda +firewall:nomade +sae103:sae103 diff --git a/vdn/allocators/db-default/networks b/vdn/allocators/db-default/networks new file mode 100644 index 0000000..aa7f913 --- /dev/null +++ b/vdn/allocators/db-default/networks @@ -0,0 +1,9 @@ +fixme +docker +demo +demo-buster +zoo +firewall +routing-static +sae103 +routing-ospf diff --git a/vdn/allocators/db-default/users b/vdn/allocators/db-default/users new file mode 100644 index 0000000..fa4f0e3 --- /dev/null +++ b/vdn/allocators/db-default/users @@ -0,0 +1,3174 @@ +aahindedin +aballoui +abatallah +abbarrier +abdkhald +abhasban +ablazregue +abmazouz1 +abounoughi +acheloun +adahmedali +adambrosio +adbartoli1 +adbattisti +adbella +adbilliaer +adblanchet +adbonafos +adbordel +adboustani +adcaisso +adchabanie +adchargu +adchartrou +adcottais +adcoudour +addebritor +addenis +addenonfou +adduroyon +adelalaoui +adelgout +adfarret +adfemenias +adgaudard +adgouttefa +adguittard +adlezzoum +adlouisgui +admege1 +admourie +adnoel2 +adoziol +adpierre +adpinier +adrathier +adrbarto +adrenaudie +adsivign +adtempier +adthevenon +adwohrer +adzaia +agarnaud +agbarthele1 +agcarrasco +agdubois +aggelot +aggranger +aglabonne +agraquin +agrevel +agtrasso +ahaabed +ahghouat +aialet +aicareo +aielimache +akaijazi +alagostinh +alaidjadj +alamelbonn +alamhall +alanglade1 +alauzenat +albarthome +albeal +albeaumet +alblondel +alboeufs +albonniot1 +albonnot +albons +albontemps +alboutte +albouvard +albouvier +albouvot +albracke +albranco +albreuil1 +albrun11 +albrunaud +albrustel +albuffiere +alcarreau +alcauchy +alchambrio1 +alchampomm +alchan +alcharbo +alchastang3 +alchazot +alchomarat +alclaude +alcompto +alcondutie +aldacosta6 +aldamoisea +aldasilv +aldaveau +aldebruyne +aldegroo +aldequere +aldesboscs +aldias +aldrai +aldupichot +alduverger +alemasse +aleozwal +aleruiz +aletchebes +alfavier5 +alferon +alferreira11 +alferreira12 +alfiafialo +algallonet +algattoni +algessent +algineste +alglenat +algleyze1 +algralha +alguilhot +alinmart +aljeudilem +aljourda +aljurbert +alkeller +alkesler +allamande +allaurent13 +allauret1 +allepron +allesot +alloungar1 +almadamour +almaira1 +almamado +almaranjon +almarmeys +almartinai +almauchien +almaury3 +almayerwei +almegevand +almilani +almontorie +almoreira4 +almorvan +almuller2 +alnotin +alodin +alollier3 +alpicard4 +alplanti +alpoint +alpolat +alpouillot +alpourrat +alprost +alquintane +alrefougou +alrigaud1 +alroche8 +alrome +alrongier2 +alsaboury +alsage +alsaintbea +alsemjonov +alsigayr +alsouqui +altain +altatry1 +alteissedr +alterrasse +altessier +altrinquar +alvergne1 +alvitale +alwilhel +amadevau +amagniel +amaudoinri +ambananaha +ambarato +ambasandel +ambergam +ambesse7 +ambouzaidi +amcarrazbi +amchardes +amchloup +amciterne +amdampierr +amdarroux +amdelacour +amdelpeuch +amelaroy +amelmahdi +amferreira2 +amgabert +amgaigneux +amguiche +amlebaro +ammamaniss +amrandrian1 +amrossato +amsagna +amsagnet +amtillois +amtroncy +amvillatte +anaduran +analbouze +analvarez +anandriant +anaubouard +anautiere +anbaccon +anbairros +anballan1 +anballet +anbeaudeau +anbeaufort2 +anbeaufort3 +anbertrand5 +anboniere +anbonneton +anbouazza +anboudet2 +anboudoul +anbriam +anbroussy +anbussi +ancalmet +ancalvet2 +ancanamas +anchaleil +ancharles2 +ancharmes +ancochard +andarj +andasilva7 +andeamorin +andestarac +andetailla +andevidal +anduartes +andupois +andupont3 +andupuy4 +anduteyrat +anelia +anesteban +anfafourno1 +anfardet +anfaye4 +anfereyrol +anfernande +anferreira11 +anfigeac +anfranco2 +anfreita +angay3 +angbarge +angilbertc +angoisna +anhousseau +anhuguenot1 +animbert2 +aninacio +anjaffre +anjourdain2 +ankedi +ankhalfall +anlarpin +anlouraich +anmarcadie +anmazenc +anmendes5 +anmeyrueis +anmitard +anmorin3 +anndumas +annicolas6 +anobelli +anovize +anpays4 +anpelissie2 +anpelissie3 +anpellegri +anperederi +anpihen +anpinagot +anpontheni +anpulveric +anrabany +anrebord +anrenault +anrichard7 +anrochelet +anrodrigue16 +anroussel4 +ansage +anschall +anserange +ansophia +antassini +antauleign +antcornu +anterrier +antramba +antrzeci +anvenant +anverdil +anvichy +anviton +anwaleedma +aphugues +arallemand3 +arbossuyt +ardelafayo +ardenier +ardurand5 +arfaure4 +argabriely1 +argambiez +argiraud1 +arkoessl +arkowalski +arlasherme +arlecaille +arleyinda +armallet +armeeuwess +arndufou +arnmarti +arnsengiyu +arodin +arorgeval +arpalmieri +arpeyronon +arplanchon +arpouderou +arranglare +arsaintand1 +arservanti +arsigure +arsnasni +arsoares +arthevenou +arthievet +arvalero +arvalin +arvandamme +arzymberi +asabdoulga +asbenabdal +ascharre +asespinade +auaffognon +auandre3 +auantoine1 +aubastide2 +audaviet +audebastie +audouard +aufauger +aufleury +augiraudie +auguehi +aujault +aulaborie +aumargue +aupintrand +aupoucle +aurcaill +aurduboi +aurmaure +auroux7 +ausabatier4 +ausoulier4 +ausoussein +auvolle +awndao +axandanson +axandriant +axcarton +axchartier +axcotin +axdelafuen +axdossou +axgaillot +axgalimard +axguillier +axjulien +axmartindi +axmestayer +axmoreau1 +axraymond +axrigouste +axrodrigue +axsainrat +axsertilla +axvanbraba +ayayour +aybenioual +aybillot +aychazeaud +aydumur +ayelmhadde +aygagnaire +aylarbaoui +aymuller +aynezou +ayrahmouni +ayselimi +aytouresec +baalizert +baarnould +babaverel +babonneau +babrunet +bacadet +bacomby +bacornic +badebock +badebur +badescours +badesrut +badubrays +badudonne +baduquesno +baduret +baepisse +bafoucras +bagardette +baguillera +bahelfre +baimbert1 +bajacqueli +bakane +bakrouch +balefevre2 +bamajorel +bamalea +bamalvezin +bamarcel +bamartel +bamaufroy +bamenard +bamioche +baollier1 +bapeghaire +bapereira +bapoirierv +baroddier +baroucan +barougier1 +basalat +baschaefer1 +basurel +basuty +bathenot +bavandame +bayounci +beallard1 +bebachelar +bebarnini +bebenet1 +beberinger +bebertin +bebrunel +bechabrier +bechagno +bedeschamp +beducornai +beduman +befoure +begabriel +begourmil +begrave +begregory +bejacquet1 +bejarlan +belabonne +belevarl +beluquet +bemagnet2 +bemailho +benecoha +bepaczkows +besaouli +beteixeira +betixier2 +bevalleix +bibangoura +bibenboule +bichougui +biguillaum +bisalem +blbattut +blly +bltartiere1 +bomichalsk +bralbert +brbelin1 +brberganza +brbourgo +brchatai +brdacostac +brdespal +brduarte +brfilliat +brguillot1 +brgutier +brhorion +brjourde +brpetitet +brsteeland +caabrial +caarango +caarbaud +cabegonr +cabento +cabenzerro +cabrocke +cacasals +cachevar +cachevassu +cacollomb +cacruz +cadausse +cadomingos +cafaure14 +cafilipett +cafournier8 +cageliot +cagiffar +cagregoire5 +cajoudiou +camassotea +camipeti +camlemai +camonnier +camoua +canoury +caoudot +caperaut +caperrier3 +caperronda +capeynet2 +caronau +casimmon +casimon +casunyindi +catardif +catardy1 +cathanse +catheillie +cathominet +catiberghi +catranchet +catvatou +cazanins +ceallinc +ceauzeau +ceberthonn +cebonal1 +cebonnefoy1 +ceborel +cebouhou +cebourgn +ceccolli +ceceaux +cecharbonn5 +cedchapa +cedugand +cedvigie +ceengramer +cegafanhao +cegagnev +cegatignol +cegimber +ceglaizol +cegomis +cegonin1 +ceguichard +cejohnston1 +cekempf1 +celdegea +celespine +cellasribe +cemoreau3 +cepinard +cepissardm +cerey +cethiers +cetouba +cetrecou +chabreu +chadesch +chaolivi +chapinsa +chaucagne +chbarnay +chbeaurega +chblanc +chblavig +chbordes1 +chbreton +chchakhgue +chcharle +chcivard +chcombau +chdali +chdalverny +chdechamp +chdeplat +chelmimoun +cheyme +chfachin +chfagheon +chgassen +chgiraudon1 +chgondard +chguichon +chhospit +chjuban +chlabonne2 +chlepape +chlustie +chmagales +chmakoug +chmalo +chmarliat +chmartinez8 +chmassar +chmihala +chmillet3 +chmontau +chmourgand +chmourgu +chmuzelle +chnierding +chouerghi +chours +chpelade +chpeyretai +chporte1 +chrdupuy +chrichev +chridubo +chrimart +christma +chrives +chroudier +chrpierr +chrvalla +chrvelut +chsamir +chsnani +chterrier1 +chtourna +chtrabelsi3 +chvaurillo +chvernis +chviceriat +cladioud +clamaton +clambrosio +claubremai +claussert +clbarage +clbarnavon +clbecquie +clbonaz +clbornard +clboyer11 +clbranger +clbrosse1 +clcastres +clchambo +clchantela1 +clchevrel +clchieu +clcosta +clcrepin1 +clcrespola +clcrouzier +clculetto +cldelpy +cleduboi +clefau +cleiras +cleschenbr +clfarfait +clfargette +clfaure10 +clferrere +clfreville2 +clgalibert +clgauran +clgil3 +clgoineau +clgrange2 +clgranier2 +cljarreau +cllacote +cllaporte +cllarias +cllaronde +cllavergne4 +cllecour +cllesme1 +clletzelte +cllindner +clmallet8 +clmasson1 +clmesny +clmialon3 +clnezblanc +cloziol +clparis1 +clportalie +clprat1 +clquart +clranglare +clreynaud1 +clrogeaux +clsiguier +clsoignon +clszczep +cltetard +cltournant +cltourret +clvara +clvarga +clverdoire +clvialle1 +clvian +clzalio +clzborowsk +cobarbier +cobarnier +cobeaudonn +cobelvil +coborder +coboudon +cocavagnet +cocharbon +cocome +cocornuot +cocoudert +cocouvreux +cocros1 +codidelot +cododin +codoucheme +coferreira +cofrancois1 +cofrizot +cogalonnie +cogourmaud +cogstalter +coguichet +cojouve +coldamon +colebars +colemaire +comoutaud +coollier +coperrin2 +copetit +copimentel +copitt1 +copradeau +corichard1 +cosilvestr1 +cotanguy1 +cotissier +covennat +coverot +crbunch +cybracher +cycalmels1 +cyfayelle +cyguillon +cyjacquemo +cylaveyssi +cylonchamb +cymutin +cyperinet +cyrougier1 +cysodaig +dabaccaud +dabatteux +dabertrand2 +dablanc4 +dabonetto +dachrzan +dacoursi +dadalmeida1 +dadasilva4 +dadaval +dadelon +dadinee +daferrie +dafriess +dagladine +dakebe +damandala +damandor +damarschal +dambardy +dambaye +damgiron +damigonz +dangounoum +danguyen1 +danortier +dapicard1 +darage +daraymond3 +darichar +daroyono +daseddeki +dasilber +davacher +davaivrand +davcomte +davessie +davibonn +deardid +debonnet +debouche +dediene +degratio +degreffet +denjouff +deroux1 +diagripino +dichassa +diezgi +diilkay +dirouire +disaintg +diseran +djcisse +djmohamadi +doalonso +doauboueix +doauzel +doblanchet +dodelacr +dodhenai +dofalies +dohodin +dojouanne +dolafont +doleclercq +doloubrado +domalioche +domatha +domichoux +dopradeill +dosafidine +doseyrolle +dyancelin +dychauvet +dydakpa +dykabano +eaelsafa +eamoua +edbattiste +edborot +edbrunie +edcosterou +eddabrig +edgoma +edrougier1 +ehkouako +elallais +elandre4 +elbeaud +elbillar +elbiseuil +elbontemps1 +elbortoli +elbrun6 +elchevalie8 +elchevrier1 +elconte +elcoulon2 +eldarocha2 +eldelarosa +eldonnier +elferal +elfernande5 +elferreira4 +elfourni +elgallet +elgay +elguette +elhermet +eljelic +eljourda +ellacourt1 +elleguehen +elleriche +elmaille +elmarchepo +elmerlin1 +elmessina +elmetenier1 +elnoirau +elpautard +elpetit3 +elpierre +elpontvian +elpothier +elroux7 +elturle +elwest +embailly +emberthier +embeys +embianchin +emboudot1 +embourdon +emboussena +embrasse +embresson +embrindel1 +emburle +emcaldei +emcherea +emcia +emcrouzier +emcuzol +emdabert +emdasilva8 +emdelic +emdeshayes +emdupuissa +emfauque +emfesche +emgoasguen +emguilbaul +emkartal1 +emlorette +emmaltete +emmarechal +emmchabo +emmignard +emmorisset +emmounet +emnarce +empaliot +empery +emrambert +emrenou +emrottier +emroux10 +emsalgueir +emsaut +emseon +emsouchal +emsudre1 +emteissier +emtouche +emturmeau +emvallat +emvassias +emvazeil +emveronnet +enartaud +enaustruy1 +enbrun +encelle +enchastane +encouto +endefelice +endogru +enfavre +enfoucher +engonzalez +enjolys +enkaya +enlafont +enleoty +enmage +enmora +enranvier +ensoeiro +eranneavel +erboucha +erboudon +ermenager +erpeyret +erpoyet +erroyer +ersahin +ertheron +esandre2 +escalvet +esdeazeved +eshanne +esherail +esjulesfau +eslouvier +esmenut +esquiqua +esrousset +essimoens +estbigot +etbozec +etbruger +etcellier +etcharpin +etcoyac +etdelpuech +etgroueix +etmonat +etmoulin +etpagesdoa +etpegand +etterrier +eudubois +eupulveric +evabrial +evbernar +evbert +evcourt +evdelon +eveyraud +evfayos +evforissie +evgenevrie +evgirond +evlamy +evlesueur +evmaurer +evprothier +faamane1 +fabarlet +fabosquet +fabouchotc +fabrionne +fachantela +fachaput +fachasta +faclement +fadesurmon +fafesche +fagenin +fagoutorbe +fajouhanne +faleperon +famahammad +faozer +fapantel +faquaino +farocher +farossi +fasapet +fatailha +favaz +fbmazuel +fecourbon +felacoste +femallet +femielcare +fesahin +fimazza +flandre3 +flapacco +flbassot +flbecouze3 +flbenoit +flberlin +flbouhamda +flbourgoig +flboyer8 +flbrunel2 +flbuhot +flcapall +flcoulon2 +fldelche +fldevender +fldrut +fldubois10 +fldumas5 +flfaure8 +flfoucau +flgarcia3 +flgateau +flgaugirar +flgregoire +flhospit +flmareynat +flmarques1 +flmolteni +flmourette +floblois +flpayet +flrios +fltedeschi +fltoire +flville2 +flvivet +fradegou +franstep +fraulric +frchardo +frchauss +frcollan +frdelobe +fredfaur +fremorin +frfarget +frglazio +frgraffi +frjacque +frjammes +frkuss +frminet +frmotton +froliva +frrefouvel +frrevere +frsaccoman +fryousse +gaabrial +gaalves +gabarbosa1 +gabayout +gabeaudonn +gaberger2 +gabrunel1 +gaclamens +gademonet +gadomaison +gadosset +gaduyck +gaelegac +gaeps +gafaugere +gafoucher +gafougerou +gagerentes +gaghaddar +gagoddet +gagoncalve1 +galachenal +galandri +galembert +galeydier +galheritie +gamarechal +gamareyn +gamarsolla +gapachot +gapierre +gapillet +gaporee +gapriouret +gaprot +garodrigue5 +garoux2 +gasoubeyra +gatheuws +gaucanq +gavalentin +gdsidibe +gebarriere1 +gecampedel +gechalho +gedobbelae +geobayar +geofavit +getreignat +ghrollan +gisballe +grbazire +grblanch +grchandiou +gregguir +grleveau +grmarcet +grmbemba +grsaillard +guassailly +gubardakof +guboucha +gucothenet +gudavala +gudavid2 +gudiasda +gudurand2 +guespinass +guiimber +guilranc +gulevet +gumalvezin +gumonier +gupailhoux +gupantel +gupatouill +gupaulhe +guquinio +guramel +guregnault +gurey2 +gutoumazet +guvalentin2 +guvidal2 +guzanin +gweroche +gwmajewski +haabdelk +haahamada1 +habenalaya +habendaoud +hacisse +hadalgin +haelouar +halabour +halepere +hamathieu +hamendoud +hashaitit +hasow2 +hayalcin +hebertra +hebotcho +hecoumoul +hederoquet +hefosse +hehaltemal1 +helchat +hellevet +helmilie +hervaleg +hevidil +hifernande +higurlie +hjdoumbia +hualbisson +huandrejew +huauger +hubarrando +huberthonn +hubougerol +hubouletsa +hucanivet +huchamarat +huchambon1 +hucharbonn +huchignier2 +huchossonn +huclamens +hucoiffard +hucoitou +hucortial +hudenizot +hudevignes +huescuroux +huflorenti +hugdelos +hugely1 +hugoyet +hugpeyta +hugrimaldi +huhanusiak +hulafontai +hulagner +hulahouel +hulivet1 +humartin3 +humeravill +huminambre +humioche +huoculy +huody +huparan +hupawlowsk +huperonnet +hupeyron +hupradier1 +hureydepre +hurobert1 +hurochelle +huroger +husergere +hustassine +huthelyden +huthibon +huthys +hutournadr +hutuzet +huyavuz +ibcakir +ibdjabi +ilbellard +ilcabouni +ilhadjabde +ilkaddouri +ilnourine +imcherrat +imdehli +imreuche +inaissi +inboukhadr +inbousquet +incassi1 +inguyonnet +inkouidere +inmaani +inmorel +inoudjani +inschidlow +irmoutsi +isamouni +ischamoux +iscossou +isdiouf +isgoi +ishniminau +ismoreau2 +isndiaye2 +isseptem +istahajana +isvillalde +ivleteuff +ivwawrzy +jaabdelsad +jabengherb +jacouchot +jaduclos +jaexartier +jaguerre +jainfante +jakahlouch +jakanfou +jakerfa +japerol +japrulhier +jaquantin +jarejony +jasue +jathomas2 +jatoussain +javaure +jawhitton +jawoods +jbperez +jbrouvet +jcbailly +jcluans +jcratsara +jeanglade +jebesnard1 +jebesse +jebesson2 +jebonnic +jebourebi +jebrugiere1 +jebusser +jechanal +jecondutie +jecornetve +jecrozat +jedenizo +jedeporte +jedollet +jeduchesne1 +jeducourth +jedumuis +jedupont +jefayard1 +jefourment +jegarret +jegil +jegouber +jeguinet +jelimagne +jemailfe +jemarcilla +jemartins1 +jemassines +jemetal +jeminet1 +jepounit +jeschanc +jetourna +jetremblay +jevirole +jfbruger +jfdenieul +jfhurier +jfpont +jijridi +jjalopez +jldegirond +jlfremau +jlgilberta +jmafavre +jmallanic +jmlavest +jmracoll +joartzet +joblanc3 +jobonin +jobonvin +jobordeau +jobourdo +jocabrerac +jocinque +jocosterou +joduperret +jofdevau +joforestie +jogadet +jogerbe +jogodefroi +joguillet +johaoui +johedieu +johmille +joibrahim2 +jolachenal +jomanaranc +jomartydit +jometifiot +jominchin +jopascal1 +jopierron +joratton +joribeiro1 +joroux2 +josilly +joteissier +jotoussa +jovigier2 +jpjacque +juachard2 +juadvenier +juaguilhon +juandre1 +juangenieu +juaubry1 +jubaraduc +jubarbatdu +jubartasso1 +jubeaudoux +juberal +jubergouni +jubernalie +jubijoux1 +jubloux +jubonnand +jubourlon +jubrugerol +jubrun1 +jubruyere3 +jubujan +jucarvalhe +jucasals +jucasimiro +jucathaud +jucaylou +jucercy +juchalayer +juchevalie7 +judefour1 +judouarre1 +judupre +juduteyrat +juduverge +juescalier +juetaix1 +juetienn +jueyzat +jufazendap +juferrier2 +jufevre +jugachon1 +juganne2 +jugroueix +juhaga +juhebrard1 +juheinis +jujoachim1 +julaffez +julazema +juleonard2 +julesueur +julpages +jumahul +jumaiffred +jumarol +jumazen +jumeuret +jumeyer6 +jumignotte +jumonteil1 +jumonteilh +jupascal5 +jupatural +juperrin6 +jupetitbon +jupitelet +jupourtier3 +juprat2 +juprost +juravet +juraynal1 +juriboul +juribreau +juroche7 +jurossell +jusarmet +jusourylav +jutaylor +juteissand +juternat +jutheme +jutugar +juvidal10 +juvieira +jvamacq +kaabdelkad +kadidier +kagiraud1 +kagudanaux +karbogto +kasghairi +katecher +kavincent +keauterive +kebeaugr +keblondel +kebory +kebruyere +kecorreia +kedasilva4 +kedasilva5 +kedemir +kedessol +kedumas3 +kelecharde +kemonteiro2 +keperry +kevalente +khbruneau +khdasiyev +khfadhla +khloichet +kicherifi +kiexbrayat +kifaure1 +kiheritier +kimascheix +kimathieu +kimeunier +kipage +kirodert +kltachet +kmdevoles +koawitor +krlazou +krray +kychabanon +kydavid +kyjouvency +kysage +laaubry +laaugier +labarrat +labarthome1 +laberchoux +labondieu1 +labonnal +labougar +labrette +labreuil1 +labros +labusquets +lacanetti +lacarvalho1 +lacusson +ladagost +ladarmet +lademas +ladesros +ladiop +lafontaine +lafournet1 +lagaulen +lagauthier4 +lagemin +lagiraud +lagomez1 +lagonin +lagreck +lagregoire3 +laguienn +laguillarm +lalaforest +lalemoin +lamalate +lamarty2 +lamolenat1 +landias +laparret +laprovot +laraynau +lauducro +laufayet +laviel +leaugagneu +lebatouxas +lebeaulato +lebelin1 +leberson +lebesson5 +lebion1 +leblanchon2 +leblin +leboric +lebouamran +lebouteill +lecazalet +lechagnon +lechambare +lechevalie4 +lechouvel +lecoudertb +ledecombas +lederoide +ledetommas +ledrochon +ledumont +ledupont1 +leenault +leessique +lefernande7 +lefernande9 +leferreira3 +lefiguet +lefollot +lefritz +legalibern +legardelle +legicquel +legoutte2 +legravier +lehader1 +lehamla +lehervieu +lejacquet1 +lejaffuer1 +lejavelle +lejorland +lejuillard1 +lelacroix3 +lelapender +lelaroussi +lelasseur +leleboedec +lelhoste +lemansare +lemartin7 +lemartin8 +lemillot +lemoneger +lemunoz +leorober +lepalabost +lepatural +leperricot +lepetit1 +lepinto +lepramalio +leramos3 +leraphael +lerateau1 +leriocros +lerobert8 +lerogue +leruy +lestaimphi +lesurrel +lesvest +lethomas3 +letournadr1 +letroccaz +letuaillon +lezanini +liastruc1 +liauclair +liavard +libadieres +libellefin +libenite +libreton +libroquin +libruyere +lichampin +lidahi +lidaure +lidossanto5 +lifayet +lifoulet +ligaillat +ligiraud1 +liguenand +liguerrier +lihertel +lijames +lijolly +lilabate +limichel1 +limonchani +limurat +liojouve +lipetit2 +lipeyraud +liplazanet +liressouch +liroussy +liroux +lisalgado +lisauerbre +lisurrel +lithomas1 +lituy +livernet1 +livernette +lmleone +loantoine1 +lobaubet +lobeal +lobeauthea +lobeguet +lobellec +loberiard +lobonnabau1 +lobonnet5 +lobordji +loboucheix1 +lobouchet1 +loboulet +lobroda +locaporale +locarpenti1 +lochakaria +lochalmin +lochandat +lochapon2 +lochassagn +lochavagne +locherasse +lochevalot +locouderc2 +locusinpan +lodegentil +lodelannay +lodufour1 +loduran +lofella +lofinaz +lofrancois4 +logameir +logiacalon +logispert +logoubet +logoulmy +logranvaud +logrosbell +loguilhaum +loguiraude +lohamard1 +lohoriot +loideles +loidevau +lolaborie +lolabussie +lolasherme +lolavigne +lolhostis +lomartin12 +lomerand +lomian +lomonginou +lomonteyre +lonerfi +loobry +loparant +lopatton +lopaulet +lopays +loperret2 +loperret3 +lopezaire +loplantade +loquerlioz +loregnier1 +lorenault2 +lorobert3 +lorougier +lorougier1 +loroussel2 +lorusak +losaffre +losilve +losoaresda +lost+found +lotorres +loudauga +loudebar +lovalade +lovarago +lovedrine1 +loviallet +lrvuillerm +ltdannus +luageorges +luannicett +lubadiou +lubedouret +lubelard +lubelligon +lubesseraz +lublouin1 +lubonnel +luboudon3 +luboulade +lubourdiol +lubresson +lucastigli +luchabrill1 +luchalmeau +luchassang +luclaffe +ludaboussy +ludebussy +ludechanet +ludelanier +ludesforge2 +ludevillar +ludgodar +ludlegro +luduflot +ludupuy1 +ludurand +ludurand1 +luduru +luevard +lufernande8 +lufort +lufournier5 +lugaillard5 +lugaliano +lugirond +lugoigoux1 +luguittard1 +lujacon +lujanvier +lukeomany +lulavest +lulevet +lulucand +lumarco +lumaujean +lumege2 +lumercy +lumoulin4 +lumoulin5 +luocamicad +luperrat +lupouget2 +luquidel +lurobb +lurobert5 +luroche3 +lusanchez1 +lusoanen +lusouyris +lutastevin +luthevenet +lutorret +luvalade1 +luvarichon +luvassault +luvayssie +luvelut +luzborowsk +luzembrzus +lydealmeid +lygiroir +lyperrot +maadjif +maahmadouh +maalbiero +maandremas +maarcherng +maarnaud16 +maatouil +mabaguet +mabalzar +mabamdad +mabanny +mabarge4 +mabaroupir +mabarreau +mabassi1 +mabataillo +mabatista1 +mabay4 +mabel3 +mabenistan +maberger20 +mabernard41 +mabernardi5 +mabernus +maberriotc +mabertholl +mabertogli +mabesserve4 +mabizet +mablanc22 +mablangy +mablinet1 +maboizard +mabonetti2 +mabonnabau1 +mabony10 +maborel3 +mabouchet8 +maboudi +mabousquet8 +mabousteya +maboutonni +mabouvard2 +maboyer45 +mabozec +mabrando +mabringer2 +mabrivari +mabroquet1 +mabrossard2 +mabrun23 +mabrunet15 +mabrunpica +mabullich +macaillot +macalmels +macampourc +macappelle +macarrouee +macaudal +macenteno +machabid +machalopin +machambaud +machandeze +machanel1 +machanet4 +machanssea +macharat +macharpent2 +macharpin1 +macharrat1 +machartoir +machaumont2 +macheval +machiere +macholley1 +machristol +macognet4 +macointet +macollette +macombes4 +macondefer +maconstant5 +macorge +macottavoz +macoudoule +macromaria3 +madaim +madalmeida3 +madasilva23 +madebettig +madefretie2 +madelage3 +madepres +maderangeo +madesbouys +madesousa8 +madias1 +madosreis +madoucenet +madouellou1 +madubost11 +maduclos1 +madumas30 +madumay2 +maemasso +maepaud1 +maescarava1 +maespejo +mafahs +mafalcon4 +mafall10 +mafarey +mafargea +mafaure46 +mafernande34 +mafernande36 +maferreira15 +maferreira17 +mafevrilli +mafournie1 +maframit +mafratissi +mafredon +mafrezier +mafritsch +magalli1 +magaluba1 +magarrigou +magarroust2 +magilbert10 +maginhac +magirardet2 +magoaregue +magouttera +magrand9 +magranet2 +magregoris1 +magrenie +magroussea1 +maguiguet +maguillot13 +maguitard4 +mahamada +mahersan +mahitier +mahoerner +mahonorez +maivain +majacob4 +majallais1 +majandaud +majardin1 +majarry3 +majavanaud +majaverlia1 +majay6 +majean5 +majonget +majouannet +majourdan10 +majridi +majulienla +majunes +makarroum2 +makeskin +makienlen +malabopin +malabourot +malabuss +malambert9 +malamouche2 +malanone +malassalas1 +malefebvre8 +malemaire +malepetit +maleroux2 +malevyvale +maligneul +malioson +malivrozet +maloirette +malombar +maloriot1 +malugoboni +maluret +mamaiterfe +mamallaret1 +mamarchi1 +mamarquet3 +mamartin59 +mamasse4 +mamathieu12 +mamauger1 +mamaulus1 +mamazingue +mamazza1 +mamedynska +mamelein +mameridja +mameunier17 +mameutelet +mameynie +maminard2 +mamolle1 +mamondelin +mamonnet5 +mamontel2 +mamore +mamorel27 +mamoulin15 +mamounier1 +mamourgues +mamuguet1 +manawrot +mandione +manoel10 +manordest +manowakows +manrocco +manroux +maolivas +maorillon +mapailhoux +maparillau +maparrain +maparry2 +mapascal5 +mapasselai +mapatry1 +mapayetauz +mapeixoton +mapelletie4 +maperderiz +maperrier11 +mapetitcol +mapicard10 +mapimbert +mapinto4 +maplisson2 +mapoint2 +mapommie +mapons17 +maporas +mapoulain1 +mapourcel +mapouriau +mapouteix +mapozdnyak +mapuechber +maqueiros +maqueiros1 +maraby3 +marahali +maraviol +marayssac +marcornu +marenault3 +marepincay +marestit +marevollat +margboye +maribemont +marichard23 +marigollet +marmorez +marobert34 +marobillon +maroddier4 +maroddier5 +marogier +maroiron +marollet1 +marouault +marouches +maroudier1 +maroux18 +maroy14 +maroyer3 +marybarczy +marygaut +maryoth +masapountz +masauveu +mascalzo +maschwalm +masechirou +maseguin7 +masion +masoares4 +masouviraa +masuchet2 +mataieb +matailland9 +matbonne +mateyssier4 +matgaume +mathevenet8 +mathevenot3 +mathierry3 +mathierry4 +mathiery +matouraud +matressol1 +matuffery2 +matureck +maulutuipa +mavacheres +mavaladier1 +mavalentin7 +mavallet3 +mavandijk +mavanhaeze +mavassel +mavazeille2 +mavazeille3 +maverdier16 +maverniere +mavialatte5 +maviel4 +mavigier8 +mavimpere +mavincen +mavincent16 +mavoute4 +mawalocq +mawissocq +maxduval +maxgras +mayenny +mazayene +mclipson +mddaguis +mdlatip +mearafa +meaynard +mebeurrier +mecarasco +mecarvalho1 +mecourteix +mecouvert +medebatiss +medelmas1 +meeyraud1 +mefabre3 +megenet +megodiveau1 +mehanida +meizard +melanglois +melaurent6 +melcherv +meleberre +memachado1 +memathieu1 +memirgon +memoranges +meozcicek +mepitout +merigaud +merouvet +mesac +metuncer +meublet +meuner +meveysseyr +mevigneron +mevoldoire +mfhubert +mfservaj +mfvillat +mibidet +miboulan +micdidie +micnguye +miconry +microdri +midebray +midubois1 +miferreira1 +migrellet +mijacquot +mijuan +mivillem +miwezl +mldizier +mlmagassi +modesport +moelmakkao +moessouak +moettouil +mohassani1 +mohtrraf +mokhiat +mokoubar +molarpin +momadiouss +moprunier +mosavart +mosinopoli +mosuarez +motayara +mouaouni +mozeghou +mozouhri +mscasanova +mugul +mukahraman +mukhuvsgul +muustun +myantrib +mygarrid +mymoureau +mzamini +mzhassane +mzjeeawody +naaugheard +nabarbat +nabeaufils +naberbenni1 +nabernardi +nabertiaux +naboileau +nabonheur +naboudon1 +nabouret +nabousquet +nacasas +nacavard +nacouden +nadauga +nadhamma +nadompie +nadosjoub +naelfakiri +naestelle +nafonty +nafouchard +nagiraud +nagordon +najacquet +nalambaraa +nalenoir +namaurin1 +namichel1 +namillier +napaulin1 +naportal1 +napoulalio +naprotzenk +naqueyrut +naraheri +narahrah +narichard3 +nasauvan +natramad +naverdier +naverduijn +naverne +navirlogeu +nawollensa +neaubert +nedchatt +nerose +nhbelrhitr +nibarnic +niberdouz +niblondeau +nibridier +nicchadu +nicgueri +nicmaury +nicoyard +nidelpirou +nideltro +nidomerg +nidoupeux1 +nidurack +nifalcot +nifranco +nigreven +nigrignac +nijobert1 +nilacour +nimaye +nimonteilh +nimonteiro1 +nimorin +ninolin +nipillet +niploix +niraymon +niroigt +niroussetf +niroux3 +niselvy +nistriff +nitixier +nitournadr +nituffery1 +nivazeille2 +nivialle +niyardim +noabdell +noallezard +noamalric +noaugoyard +noborel1 +nobouygues +nocatherin +nochevassu +noconnin +nodealmeid +nodevouass +nodubien +nofauverni +nogarnier1 +nolapeyrie +nomarcoz +nomasson +nomianowsk +nomoullec +nomounie +nopallet +noporte +nopouget +norandon +nosillard +nosoilihi +nospeciel +novarjabed +nozolger +ocalizon +ocbertel +occlain +ocdelaunay +ocdressy +ocgaritte +ocmetton +odaubree +ogdolmaci +oghan +olbardot +olbenedic +olblanc1 +olgiroud +olguinal +olidemar +oligoute +olteraub +opgrenet +opsoleilha +opvilela +orlebroc +ospimpaud +otbenjello +ouhabach +oumoutik +ousouib +owargout +oxpoullot +ozsallabas +pabarral1 +pabelin +paberaud2 +paberot +pabonhomme1 +pabonnal +pabourna +pabourret +pabrigou +pabrugiere +pacharbo +pachecch +pacordesse1 +padescot +paflorat +pagarry +pagawron +pagay1 +pagiraud6 +pahaon +pajaniaud +pakernei +palafour +palarue +palauren +palebouar +palemetaye +palevrault +pamaloron +paminiau +panantou +panpapon +papequig +paperez1 +papieuchot +papinault +paravel1 +paregnat +pariveau +paseon +paseronde +pasquizzat +patirat +pebouvard +pecapell +pecouedel +pecourto +pegauvin +pelacure +pemezquita +perichy +pevert +phgailla +phibost +phjourde +phluccar +phmaille +phmaret +pholivier1 +phrenon +piantoinat +piballandr +pibarlot +pibelmon +pibezbor +pibourdiau +picantourn +picarlet +picaumon +picros2 +pidemay +pidemurard +pidupuis2 +piedauma +piedumon +piepic +pierarno +piferreira +pifoussard +pifully +pigarrel +piguinau +pileheu +pimourgues +pipeyret +pipitout +pipruniere +pisaugues +pisauvan +pitastavin +pithurin +plcharnier +plfabre +pllasseur +pmfernande +prfaure +prgaonac +prmasson +prpilaud +pymalegue +quaoustin +quaubert +qubeal1 +qubordiga +quchamaret +quchirac +qudupont1 +qugireaud +quglayat +qugrandjea +qujay +qukuntzler +qulecoz +qulheveder +qumoreau1 +quortega +qupoumeyro +quraynal +quserange +qusoule +quvieillem +rabaudiman +rabendoula +rabouter +rachartier +racoiffi +radarmon +rahacques +rahassine +rahassou +raheraba +rakhedair +ralacote +ramazoyer +ramicoli +randiaye1 +raphdela +rapiastr +ravromandt +reakossi +reamari +rearnal +reaydin +rebeuret +reblondet +rebrechet +recharmant +recovizzi +redauzet +redefaria +redethoor1 +reduplay +relandra +relasne +relaurent3 +relavergne +relecler +remalgou +remartin3 +remipoll +remoullec +repalisson +repetre +reregnault +revillet +ricbergo +righannam +rigozzi +risegura +roaguay +roalbino +roandre2 +robaylot +robergeal +robesse1 +roblanc4 +robonnetli +robossy +robotz +roboulange +rocaly +rocamiller +rocheyrou1 +rofayt +rofila +rofillot +rogarry +roguillon1 +rojousea +rolabesse +rolagarde +rolarrieu +rolefevre +rolegoy +rolemoan +rolemouzy +rolochenth +rolussan +romalzieu1 +romarcaud +romarquant +romarsau +romasson1 +romchiro +romiallet +romondiere +romonteil1 +romurat1 +roohanness +ropalau +ropelat +roperigaud +ropons2 +rorigaud +rorossetto +rosouchon1 +rotartie +rothevenot1 +rotournadr +rovaissair +rovergne2 +rovial +rovidal2 +rovilleg +rskhodri +rulefebvre +rumartinsd +rupiris +rycambon +saaouiche2 +saaurelle +saavarguez +sabaranger +sabehar +saberaud +saberion +sabouquier +sabraike +sachebbi +sadabert +sadeat +sademeule +sadepardie1 +sadieste +sadunis +saelakili +saennia +safeschet +safolleas +safontanet +sagervas +saghebrid +sagrange4 +sahavrez +sakebdani +salafont +saleonard1 +salepaysan +samabadi +samartin9 +samohamed6 +samoumit +samounta +samoury1 +sapicut +sapoyet2 +saraveyre +saroche3 +saronger +sarosette +sasaitz +sasirven +satorti +satounsadi +saveyriere +sebapasc +sebelfetta +sebherna +sebmarli +sebpoint +secollet +sedelmas1 +sedoridant +sedoumi +seelgarrai +seeski +sefargeix +sefougerou1 +sekaya1 +sekettan +selathene +selatier +senovais +seregaie +sesaintroc +sesalva +sesame +setachon +seteyssier1 +setutal +sevialle +sevincent +shcascarra +sialic +sibeaunee +sicalen +sidallet +sidesenclo +sidupirejo +sigervais +siguillot2 +siitier +siraviol +siromane +skbekhouch +smsault +sochartrou +sochatti +sodassaud1 +sodiouane +soduchez +sodupuy +sofryszm +sogoumrhar +sojoubert1 +soleveque1 +sopbesse +sopchaus +sopezot +sopirin +sorougeron +sosaadaoui1 +sovayssier +staujoulat +stbreuil1 +stepommi +sthermit +stjoseph1 +stmadar +stmathot +stmehoua +stmeyome +sudasilva1 +sulehner +svguilla +sycoiffe2 +sycopet +sygazagn +sygermai +syguilla +syjouven +sylepeti +sylrouss +sylvcoly +symalvieil +syquille +taaubijoux +takalayci +tasimonnet +tatissot +tebouche +tedefrance +tedepret +teweber +tfahmad +thalix +thallain +thartaud +thbachel +thbelier +thbellem +thblanc4 +thboirel +thbonnevil +thboyer7 +thbuchou +thcalchera +thcapus +thcelle +thchambade +thchazot1 +thcoli +thcoulan +thcramois +thcrombez +thcrouzet2 +thdasilvam +thdecaeste +thdelpirou3 +thdemeyere +thdesbois +thdestaill +thdevienne +thduboscla +thdufour1 +thdulud +thdupin2 +thfavodon +thfernande5 +thfourne +thganga +thgardes +thgarnier3 +thgenot +thginhac +thgoigoux1 +thgroisne +thgrosse1 +thherviou +thhugny +thidedie +thihonor +thivars +thjacquet3 +thlabarre +thlabory +thlacroix4 +thlatchi +thlaya +thlayat +thlebailpa +thleloup1 +thleuridan +thlichtena +thlutz2 +thmagalhae +thmaillarb +thmandon1 +thmansanet +thmasson3 +thmasson4 +thmaurin2 +thmerle2 +thmeyronne +thmischler +thmoriceau1 +thmorin2 +thmotescum +thmourgues +thmuzard +thnicolas5 +thnicolas7 +thpaulet2 +thpegheon +thpetitb +thphilip +thpicamelo +thpothier +thpoujat1 +thprades +thpradinat +thrabany +thraimbaul1 +thralet +thramousse +threnaud1 +threy2 +thrichard11 +throchefor +thromaniuk +throngere1 +throyon +thsaintleb +thsauvai +thschmiz +thsmith +thtalon1 +thtissier1 +thtraikovi +thtrevis +thurban +thvercasso +thvernet3 +thvernisse1 +thveysseyr1 +thvitry +thwilhem +tibarreira +tibertrand1 +tibettonpl +ticurado +tiduclos +tifabre +tiidris +tiivorra +tilestrade +tilevadoux +tilouvet +tipham +tiseguin +tisenty +titixeront +tivelle +toangely +toberne +tobertram +tobiard +toboutier +toboutillo +tobrouard +tocadoret +tocarpenti +tocouchard +tocoullomb +tocrouzet +todumourie +tofabre +tofages1 +togeniquet +togronfier +tolafanech +tolours +tomanciati +tomargot +tomontagno +tomounier +toncano +topourtier +torambeau +tosudre +toviars +tratger +trbarlet +trbauzil +trbesse +trbraz +trbrun +trchallet +trdieumega +trjaniszew +trmartinek +trmartinek1 +trperier +turoy +tylaloi +ugduteil +ugvignon +ugyigit +ulboutin +ulrome +unlartigau +vabouchot +vabrandon +vacabrin +vacentener +vaclergue +vacondodos +vacourmont +vacravinho +vadelpuech1 +vadoignies +vafavier +valavialle1 +valdumon +vamahaling +vamercier1 +vaparado +vapinon +vaprevot2 +varaffier +varagazzo +varassinie +varenaud +varouge +vatremeaud +vavazou +vdn +vemiraju +veronmor +viallirol +viarrault +viastolfi +vibaraud +vibauge +vibaz +vibuchon +vibuchou +vichabre +vicharmes +videlestre +videlmon +vidrouillo +vidufour1 +vifaure7 +viferreira +vigaborit +vigaillard2 +vigalloy +vigarsau +vijamon +vijamot +vijourdy1 +vikaczorow +vilimoges +viluc +vimarcas +vimaronnat +vimartin12 +vimeunier1 +vimoulin3 +vinraspa +vipicolet +virbonni +visalomon1 +visoudy +vithery +vitourlo +vividal2 +vpngounou +wadmatar +wamestiri +wapeschaud +werouel +wibussie +wifontaine +wigarrier +wiguyot +wimihindou +wipoursac +wujeremiej +xamollard +yaaddi +yaaudebert +yabah +yabargoi +yabattache +yaboudache +yabouzaidi +yaboyer +yabresson +yachampeau +yachampomm +yacharbaji +yachiffe +yacladie +yadahmaneb +yadarbak +yadarkaoui +yadimassi +yadoumirfe +yaessouak +yaferguen +yafeunte +yafevrier +yagerard +yagourbeix +yagranet +yakarabulu +yakraghel +yalouati +yamarchal +yamerlin +yamourguy +yapelopone +yaperrin1 +yariviere +yasellak +yasevret +yearchimba +yeberriah +yefaliez +yhboukhn +yoaissou +yoaraiso +yoattar +yobouazi +yobreuil +yobrugiere1 +yoburgun +yodecarval +yoessika +yofaurie +yogeoffre +yogourves +yohamri +yolamamy +yolemeur +yolouedec +yoraguenea +yoromagny +yosahraoui +yvcalatayu +yvcommun +zasaoula +zichatti +zobronet +zodavid +zodepedrin +zooblette +zoorsati +zooulli +zorosay +zyouazi diff --git a/vdn/allocators/default b/vdn/allocators/default new file mode 100644 index 0000000..b58554d --- /dev/null +++ b/vdn/allocators/default @@ -0,0 +1,276 @@ +#!/bin/bash + +set -u + +PUBLIC_PREFIX=20 # 20, 21, 22... + +MCAST_PREFIX_BASE="235" +MCAST_COMMON_ADDR="$MCAST_PREFIX_BASE.0.0.1" +MCAST_BASE_PORT=4000 + +set +u +[ -z "$USER" ] && export USER=$(id -un) +set -u + +error() { + echo ERROR : "allocator : $@ !" + exit 1 +} + +# Numéro de l'utilisteur sur la machine +# Utilisé par la redirection de port +computeLocalUser() { + + set +u + [ -z "$USER" ] && export USER=$(id -un) + set -u + + local u=$USER + #[ $# = 2 ] && u=$2 + + ps --no-headers --sort=start_time -eo user:14,lstart | gawk -v USER=$u -e ' + BEGIN { + n=0 + } + + /[^[:space:]]+ .*/ { + + user=$1 + #print $0 USER "===" user + + if(user == USER) { + print n%32 + exit 0 + } + + + if ( ! ( user in users ) ) { + #print "SET USER : user :" $0 + users[user]=n + n=n+1 + } + } + ' + +} + +# Calcule les paramètres d'un hôte +# $1 : hôte + +computeDb() { + local split host network user domain + + [ -d $VDN_PATH/allocators/db-$VDN_RESOURCES_ALLOCATOR ] && dir=$VDN_PATH/allocators/db-$VDN_RESOURCES_ALLOCATOR + [ -d /etc/vdn/allocators/db-$VDN_RESOURCES_ALLOCATOR ] && dir=/etc/vdn/allocators/db-$VDN_RESOURCES_ALLOCATOR + + ALLOCATOR_DIR=$dir + + [ -z "$dir" ] && error "Allocators dir not found!" + + split="${1//./ }" + + set - $split + + set +u + + host=$1 + network=$2 + user=$3 + domain=$4 + + + [ -z "$domain" ] && domain=vdn + [ $domain != vdn ] && error "computeDb : bad domain $domain" + + set +u + [ -z "$user" -a -n "$GUEST_OWNER" ] && user=$GUEST_OWNER + set -u + + [ -z "$user" ] && user=$USER + + + [ -z "$network" ] && { + [ -z "$NETWORK_DIR" ] && + error "computeDb : no network and NETWORK_DIR is empty !" + network=$(basename $NETWORK_DIR) + } + + [ -z "$host" ] && error "computeDb : host is empty !" + + #echo "computeDb : $VDN_NETWORKS_BASE_DIR/$network/$host.conf" >&2 + + ##[ ! -e $VDN_NETWORKS_BASE_DIR/$network/$host.conf ] && \ + ## error "computeDb : host $host not found in network $network!" + + grep -q $network:$host $dir/hosts || { + error "host $host not found in network $network" + } + + ### + + set +u + [ -z "$DB_CURRENT_USER" ] && DB_CURRENT_USER="" + set -u + + [ "$user" != "$DB_CURRENT_USER" ] && { + ! cat $dir/users | grep -q "^$user$" && + error "computeDb : user $user not found" + + export DB_CURRENT_USER_NUM=$(cat $dir/users | grep -n "^$user$" | cut -d ':' -f 1) + export DB_CURRENT_USER=$user + export DB_CURRENT_LOCAL_USER_NUM=$(computeLocalUser $user $host) + + } + + [ -z "$DB_CURRENT_LOCAL_USER_NUM" ] && $(computeLocalUser $user $host) + + set +u + [ -z "$DB_CURRENT_NETWORK" ] && DB_CURRENT_NETWORK="" + set -u + + + [ "$network" != "$DB_CURRENT_NETWORK" ] && { + #local netList=$(cd $VDN_NETWORKS_BASE_DIR; find . -maxdepth 1 -type d) + local netList=$(cat $dir/networks) + + export DB_CURRENT_NETWORKS_LIST="$netList" + + DB_CURRENT_NETWORK_NUM=$(echo "$DB_CURRENT_NETWORKS_LIST" | grep -n "^$network$" | cut -d ':' -f 1) + + [ -z "$DB_CURRENT_NETWORK_NUM" ] && + error "computeDb : DB_CURRENT_NETWORK_NUM empty (not in $VDN_NETWORKS_BASE_DIR ?)" + + #local hostsList=$(cd $VDN_NETWORKS_BASE_DIR/$network; find . -maxdepth 1 -type f -name '*.conf' ) + local hostsList=$(cat $dir/hosts | grep "^$network:" | cut -d ':' -f 2 ) + export DB_CURRENT_HOSTS_LIST="$hostsList" + DB_CURRENT_HOST_NUM=$(echo "$DB_CURRENT_HOSTS_LIST" | grep -n "^$host$" | cut -d ':' -f 1) + + [ -z "$DB_CURRENT_HOST_NUM" ] && { + error "computeDb : DB_CURRENT_HOST_NUM empty (not in $VDN_NETWORKS_BASE_DIR/$network/*.conf ?)" + } + DB_CURRENT_NETWORK=$network + DB_CURRENT_HOST=$host + } + + cat << EOF > /dev/null + echo " +host:$host +network:$network +user:$user + +hostNum:$DB_CURRENT_HOST_NUM +networkNum:$DB_CURRENT_NETWORK_NUM +userNum=$DB_CURRENT_USER_NUM +" +EOF +} + +# $1 : host +# $2 : proto (tcp/udp) +# $3 : port à redirigé +# en sortie : affichage d'un port libre +computeRedir() { + local base dst proto=$2 + + computeDb $1 + + base=$(( 5000+$DB_CURRENT_LOCAL_USER_NUM*1024 )) + dst=$(( $base + $DB_CURRENT_HOST_NUM*32+($3%16) )) + + dst=$(findUnusedPort $proto $dst) + echo $dst +} + +# Affiche l'IP PUBLIC de la machine +# L'hôte (ex : tiny.demo.user.vdn) + +computePublicIp() { + computeDb $1 + + grep -q "$DB_CURRENT_NETWORK:$DB_CURRENT_HOST" $ALLOCATOR_DIR/hosts.global || return + + #echo $NETWORKS | egrep -q 'NET_0|NET_G' || return + #echo "keys: $DB_CURRENT_USER $DB_CURRENT_NETWORK $DB_CURRENT_HOST" + #echo "keys: userNum networkNum hostNum : $DB_CURRENT_USER_NUM $DB_CURRENT_NETWORK_NUM $DB_CURRENT_HOST_NUM" + + # 20.X.Y.Z => 24 bits dispo + # Une adresse IP_PUBLIC par machine + # 13 bits de poids fort pour le numero de l'utilisateur (max 8192) + # 6 bits pour le numéro réseau (max 64 réseaux) + # 5 bits pour le numéro d'hôte (max 32 hôte par réseau) + # + # IP = -------- -------- --------- + # ^ ^^ ^^ ^ + # +------------++------++---+ + # user net host + + local ip=$(( $DB_CURRENT_USER_NUM * 2**11 + $DB_CURRENT_NETWORK_NUM * 2**5 + $DB_CURRENT_HOST_NUM)) + + + ip1=$(( $ip/2**24 )) + ip2=$(( ($ip-$ip1*2**24) / 2**16 )) + ip3=$(( ($ip- $ip1*2**24 - $ip2*2**16) / 2**8 )) + ip4=$(( $ip % 256 )) + + echo "$(($PUBLIC_PREFIX+$2)).$ip2.$ip3.$ip4" + +} + +# $1 : +# $2 : le numéro du lien souhaihé +computeMacAddr() { + + computeDb $1 + + # xx:xx:xx:xx:xx:xx + # 52 ----- -- -- -- + # ^ -interface (8 bits, max 256 interface par hôte) + # ^- host (8 bits, max 256 hôtes par réseau) + # ^network (8 bits, max 256 réseaux) + # ^user (16 bits, max 65536 utilisateurs) + + local uHigh=$(($DB_CURRENT_USER_NUM /256)) + local uLow=$(($DB_CURRENT_USER_NUM %256)) + + printf "52:%02X:%02X:%02X:%02X:%02X\n" $uHigh $uLow $DB_CURRENT_NETWORK_NUM $DB_CURRENT_HOST_NUM $2 +} + +# Affiche l'adresse IPv4 multicast du brin ethernet n°$1 +# $1 : l'hôte +# $2 : le numéro du lien souhaité + +computeEthLink() { + computeDb $1 + + echo "=== computeEthLink:$2" >&2 + echo "DB_CURRENT_USER_NUM:$DB_CURRENT_USER_NUM" >&2 + echo "DB_CURRENT_NETWORK_NUM:$DB_CURRENT_NETWORK_NUM" >&2 + #echo "DB_CURRENT_HOST_NUM:$DB_CURRENT_HOST_NUM" >&2 + + # idem que pour l'IP publique sauf : + # - préfixe de l'adresse mcast IPv4 + # - le numéro de brin remplace le numéro d'hôte. + # (5bits = 32 brins max par réseau) + # 230.X.Y.Z + + # 13 bits de poids fort pour le numero de l'utilisateur (max 8192) + # 6 bits pour le numéro réseau (max 64 réseaux) + # 5 bits pour le numéro de brins (max 32 hôte par réseau) + # + # IP = -------- -------- --------- + # ^ ^^ ^^ ^ + # +------------++----++---+ + # user net link + + + local ip=$(( $DB_CURRENT_USER_NUM * 2**11 + $DB_CURRENT_NETWORK_NUM * 2**5)) + + ip1=$(( $ip/2**24 )) + ip2=$(( ($ip-$ip1*2**24) / 2**16 )) + ip3=$(( ($ip- $ip1*2**24 - $ip2*2**16) / 2**8 )) + ip4=$(( $ip % 256 )) + echo "==> $MCAST_PREFIX_BASE.$ip2.$ip3.$ip4:$MCAST_BASE_PORT" >&2 + echo "$MCAST_PREFIX_BASE.$ip2.$ip3.$ip4:$MCAST_BASE_PORT" +} + + diff --git a/vdn/allocators/resolv b/vdn/allocators/resolv new file mode 100755 index 0000000..8cb0f62 --- /dev/null +++ b/vdn/allocators/resolv @@ -0,0 +1,13 @@ +#!/bin/bash + +[ -z "$2" ] && n=0 || n=$2 + +if [ -e /etc/vdn/config ]; then + . /etc/vdn/config + . /etc/vdn/allocators/$VDN_RESOURCES_ALLOCATOR + computePublicIp $1 $n +else + vdn-query PUBLIC_IP $n $1 +fi + + diff --git a/vdn/authorized-root.txt b/vdn/authorized-root.txt new file mode 100644 index 0000000..3f73c00 --- /dev/null +++ b/vdn/authorized-root.txt @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCYtj+/9jtKUkVrcYBwmanz3WpgPON5nl7+3uj8g7bV2Wz8xavHJSqLpC1tLdAdKjcou5tKL23vDPRaYjFcOAt1A2JJQnoMk56AboeEAnJabGKH/2rhWRYifePVe9LJqzj8h/haF5/JETwJsNRGvmAXYKPW+2srkpP6UyacjoAzwsYHuPtc1hrmJ0vfrc1HDcRrypNZmrzmtSqD08iKmnaSZiQ54P+5bEzJbV03rDF5YG5xYsKYBy0WavZjA05Ouy6OGMUCBKZ6LjMKhtFiYmrdS3TQn9V9rwtr9OLTQU3ZWwWd0VQ9ORnkChVo20mfznfTpTVbccVuGtEsXlUgjwql gudavala diff --git a/vdn/bin/bbfs b/vdn/bin/bbfs new file mode 100755 index 0000000..6476ef3 Binary files /dev/null and b/vdn/bin/bbfs differ diff --git a/vdn/bin/ext4fuse b/vdn/bin/ext4fuse new file mode 100755 index 0000000..fd3ce20 Binary files /dev/null and b/vdn/bin/ext4fuse differ diff --git a/vdn/bin/functions-build.sh b/vdn/bin/functions-build.sh new file mode 100644 index 0000000..a131426 --- /dev/null +++ b/vdn/bin/functions-build.sh @@ -0,0 +1,551 @@ +#!/bin/bash + +link() { + ls -l $1 | cut -d '>' -f 2- | cut -d ' ' -f 2 +} + +injectFileAndLink() { + local b=$(basename $1) + local d=$(dirname $1) + local l + + #echo "--> $1" + + [ ! -d $DST/$d ] && mkdir -p $DST/$d + [ ! -e $DST/$1 ] && { + #echo "cp $1 $DST/$1" + cp -a $1 $DST/$1 + } + + + if [ -L $1 ]; then + l=$(link $1) + + # Absolute link + if ! echo $l | grep -q '^/'; then + l=$d/$l + fi + + injectFileAndLink $l + fi +} + +injectDepends() { + + local b d l ld + + #echo "deps : $1" + + ! file $1 | grep -q 'dynamically linked' && return + + # Dynmamic linker + + l=$(ldd $1 | grep -v '=>' | grep ld-linux | sed -re 's/^[[:space:]]*//' | cut -d ' ' -f 1) + + #echo " $l" + + injectFileAndLink $l + + # Libraries + + for l in $(ldd $1 | grep '=>' | cut -d '>' -f 2 | cut -d ' ' -f 2); do + #echo " -> $l" + injectFileAndLink $l + done +} + +injectCommandWithDepends() { + local f=$1 + + if ! echo $1 | grep -q '/'; then + f=$(whereis -b -B $SEARCH_DIRS -f $1 | cut -d ' ' -f 2) + fi + + #echo "*** $f" + + [ -z "$f" ] && error "Command $f not found in $SEARCH_DIRS !" + + injectFileAndLink $f + injectDepends $f + + if [ -L $f ]; then + f=$(link $f) + injectCommandWithDepends $f + fi +} + +getRandomPasswd() { + local k + + while :; do + k=$(tr -dc _A-Z-a-z-0-9 < /dev/urandom 2> /dev/null | head -c${1:-32} ) + if [ $(echo -n $k | wc -c) = 32 ]; then + break + fi + echo "Wait for entropy avail : $(cat /proc/sys/kernel/random/entropy_avail)" >&2 + sleep 1 + done + echo -n $k +} + + + +debootstrap() { + + #if [ -e $VDN_PATH/files/$HDA ]; then + # echo "Warning : $VDN_PATH/files/$HDA exist. Skip debootstrap !" + # return + #fi + + ID=$(echo $GUEST_SYS|cut -d '/' -f 1) + VERSION_CODENAME=$(echo $GUEST_SYS|cut -d '/' -f 2) + + TMP_DIR=/tmp/bootstrap-$VERSION_CODENAME-$USER + + KVERS=$(uname -r) + [ -n "$KVERS" ] || { error "KVERS is empty !?! "; } + + LOCAL_KERNEL=$(ls /boot/vmlinuz*$KVERS | head -n 1) + + [ -n "$LOCAL_KERNEL" ] || { error "No kernel found in /boot for $KVERS"; } + + LOCAL_INITRD=$(ls /boot/initrd*$KVERS | head -n 1) + + [ -n "$LOCAL_INITRD" ] || { error "No initrd found in /boot for $KVERS"; } + + FORMAT=$(file $LOCAL_INITRD) + case "$FORMAT" in + *gzip*) FORMAT=gzip;; + *cpio*) FORMAT=asciiCpio;; + *Zstandard*) FORMAT=zStandard;; + *) echo "Unknown initrd format ($FORMAT)" >&2 + exit 1 + esac + + if [ $FORMAT = zStandard ]; then + [ -z "$(which zstdcat)" ] && error "zstdcat not found ! Need zstd package !" + [ -z "$(which zstd)" ] && error "zstd not found ! Need zstd package !" + fi + + [ ! -d $TMP_DIR/initrd ] && mkdir -p $TMP_DIR/initrd + + export DST=$TMP_DIR/initrd + + ( + set -eu + + cd $TMP_DIR + + if [ ! -e $TMP_DIR/initrd/init ]; then + echo "Extract $LOCAL_INITRD..." + case $FORMAT in + asciiCpio|gzip) ( cd initrd && zcat $LOCAL_INITRD | cpio -idm > /dev/null);; + zStandard) ( cd initrd && zstdcat $LOCAL_INITRD | cpio -idm > /dev/null ) + esac + fi + + [ -e $TMP_DIR/initrd/init.bak ] || cp $TMP_DIR/initrd/init $TMP_DIR/initrd/init.bak + + + #rm -f $DST/bin/busybox $DST/usr/bin/busybox + + echo "Inject packages..." + + #apt-get download haveged + #dpkg -x haveged*.deb initrd + + #apt-get download libhavege2 + #dpkg -x libhavege2*.deb initrd + + apt-get download busybox + dpkg -x busybox_*.deb initrd + + apt-get download debootstrap + dpkg -x debootstrap*.deb initrd + + apt-get download file + dpkg -x file*.deb initrd + + apt-get download libmagic-mgc + dpkg -x libmagic-mgc*.deb initrd + + #apt-get download haveged + #dpkg -x haveged*.deb initrd + + + echo "Inject files and program with depends..." + + [ ! -d $DST/bin ] && mkdir $DST/bin + + injectCommandWithDepends /bin/bash + injectCommandWithDepends /sbin/modprobe + injectCommandWithDepends /sbin/fdisk + injectCommandWithDepends /sbin/mke2fs + injectCommandWithDepends /usr/bin/gpgv + injectCommandWithDepends /usr/bin/perl + + #injectCommandWithDepends /usr/bin/file + #injectCommandWithDepends /usr/bin/ldd + #injectCommandWithDepends /usr/bin/strace + #injectCommandWithDepends /usr/bin/script + + injectFileAndLink /lib/x86_64-linux-gnu/libresolv.so.2 + injectFileAndLink /lib/x86_64-linux-gnu/libnss_files.so.2 + injectFileAndLink /lib/x86_64-linux-gnu/libnss_dns.so.2 + #injectFileAndLink /usr/lib/x86_64-linux-gnu/libidn2.so + + cp /sbin/mke2fs $DST/bin/mke2fs + #injectCommandWithDepends /bin/grep + #mv $DST/usr/bin/grep $DST/bin/grep + + #injectCommandWithDepends /usr/bin/perl + #injectCommandWithDepends /usr/bin/wget + #cp /usr/bin/wget $DST/bin + + mkdir -p $DST/usr/share/keyrings + cp /usr/share/keyrings/debian-archive-keyring.gpg $DST/usr/share/keyrings + + cp /etc/resolv.conf $DST/etc/resolv.conf + ) + + echo "Inject scripts..." + + cp $VDN_PATH/scripts/on-boot $TMP_DIR/initrd + + set +u + + cat << EOF > $TMP_DIR/initrd/init +#!/bin/bash + +#set -a +#. /config +#set +a + +[ -d /dev ] || mkdir -m 0755 /dev +[ -d /proc ] || mkdir /proc +[ -d /sys ] || mkdir /sys + +mkdir -p /var/lock +mount -t sysfs -o nodev,noexec,nosuid sysfs /sys +mount -t proc -o nodev,noexec,nosuid proc /proc + +mkdir /dev/pts +mount -t devpts -o noexec,nosuid,gid=5,mode=0620 devpts /dev/pts + +modprobe virtio_pci +modprobe virtio_blk +modprobe ext4 +modprobe crc32c + +modprobe virtio-net + +mdev -s + +rm -f /dev/null; mknod -m 666 /dev/null c 1 3 + +if ! fdisk -l /dev/vda | grep -q /dev/vda1; then + echo -e "n\np\n1\n\n\nw\n" | fdisk /dev/vda + mdev -s + /bin/mke2fs -j -t ext4 /dev/vda1 +fi + +rm -f /dev/null; mknod -m 666 /dev/null c 1 3 + +mkdir -p /tmp/d +mount /dev/vda1 /tmp/d || { + echo "Can't mount partition !" >&2 + echo "Repair + exit to continue or poweroff -f to halt !" + /bin/busybox ash +} + +ifconfig eth0 10.0.2.15 +route add default gw 10.0.2.2 + +ln -sf /bin/bash /bin/sh + +[ -n "$http_proxy" ] && export http_proxy="$http_proxy" +[ -n "$https_proxy" ] && export https_proxy="$https_proxy" + +#echo "Before debootstrap. exit to continue." +#/bin/sh -i + +if [ ! -d /tmp/d/bin ]; then + echo "Debootstrap $VERSION_CODENAME ..." + debootstrap --arch=amd64 $VERSION_CODENAME /tmp/d +fi + +mount -o bind /dev /tmp/d/dev +mount -t devpts -o noexec,nosuid,gid=5,mode=0620 devpts /tmp/d/dev/pts +mount -o bind /proc /tmp/d/proc +mount -o bind /sys /tmp/d/sys + +#cp /config /tmp/d/root/config +cp /base.sh /tmp/d/root/base.sh + +[ ! -d /tmp/d/etc/vdn ] && mkdir -p /tmp/d/etc/vdn +cp /on-boot /tmp/d/etc/vdn +chmod 755 /tmp/d/etc/vdn/on-boot + +#echo "Before chroot, exit to quit" +#/bin/busybox ash + +chroot /tmp/d /root/base.sh + +#echo "In chroot exit to quit" +#chroot /tmp/d /bin/bash + +#/bin/busybox ash + +poweroff -f + +EOF + + chmod 755 $TMP_DIR/initrd/init + + cat << EOF > $DST/base.sh + +#set -a +#. /root/config +#set +a + +export DEBIAN_FRONTEND=noninteractive + +[ -n "$http_proxy" ] && export http_proxy="$http_proxy" +[ -n "$https_proxy" ] && export https_proxy="$https_proxy" + +apt-get -y update +apt-get -y upgrade + +apt-get -y install linux-image-amd64 grub2 + +# Inject initramfs config scripts + +[ ! -d /etc/initramfs-tools ] && mkdir -p /etc/initramfs-tools + +echo "overlay" >> /etc/initramfs-tools/modules +sed -i -re 's/^MODULES=.*$/MODULES=dep/' /etc/initramfs-tools/initramfs.conf + +update-initramfs -u +update-grub + +rm -f /etc/initramfs-tools/scripts/init-premount/vdn +cat << END > /etc/initramfs-tools/scripts/local-bottom/vdn +#!/bin/sh + +PREREQ="lvm" +prereqs() +{ + echo "\\\$PREREQ" +} + +case \\\$1 in + prereqs) + prereqs + exit 0 + ;; +esac + +. /scripts/functions +# Begin real processing below this line + +echo "ECHO : Starting vdn pre-mount, exit to quit !" >&2 +log_begin_msg "Starting vdn pre-mount, exit to quit !" + +# Extract tgz + +lastDisk=\\\$(ls /dev/vd*| grep '/...$' | tail -n 1) + +if [ -n "\\\$lastDisk" ]; then + if tar -C / -xzf \\\$lastDisk; then + set -a + . /etc/vdn/config + set +a + else + echo >&2 + echo "WARNING : no vdn config partition found !" >&2 + sleep 3 + exit 1 + fi +else + echo 'Not a VDN VM (/dev/vd? !)' >&2 + sleep 3 + exit 1 +fi + +#echo "/etc/initramfs-tools/scripts/local-bottom/vdn : before . /etc/vdn/on-initramfs" >&2 +#/bin/busybox ash + +chown root:root / +chmod 755 / + +. /etc/vdn/on-initramfs + +log_end_msg + +END + +chmod 755 /etc/initramfs-tools/scripts/local-bottom/vdn + +#echo "base.sh : after install kernel" +#/bin/bash -i + +[ -n "$http_proxy" ] && export http_proxy="$http_proxy" +[ -n "$https_proxy" ] && export https_proxy="$https_proxy" + +apt-get -y update +apt-get -y upgrade + +apt-get -y install ssh locales mingetty file + +#grub-install /dev/vda +#update-grub + +echo "root:$(getRandomPasswd)" | chpasswd + +[ ! -e /home/test ] && adduser --disabled-password --gecos '' test +echo "test:$(getRandomPasswd)" | chpasswd + +apt-get -y install ssh # task-ssh-server +#apt-get -y install task-xfce-desktop + +cat << END > /etc/fstab +# +# Use 'blkid' to print the universally unique identifier for a +# device; this may be used with UUID= as a more robust way to name devices +# that works even if disks are added and removed. See fstab(5). +# +# +# / was on /dev/vda1 during installation +/dev/vda1 / ext4 errors=remount-ro 0 1 +END + +[ ! -d /etc/vdn ] && mkdir /etc/vdn + +if [ ! -e /etc/rc.local ]; then + cat << END > /etc/rc.local +#!/bin/sh -e +# +# rc.local +# +# This script is executed at the end of each multiuser runlevel. +# Make sure that the script will "exit 0" on success or any other +# value on error. +# +# In order to enable or disable this script just change the execution +# bits. + +END +fi + +if ! grep -q /etc/vdn/on-boot /etc/rc.local; then + cat << END >> /etc/rc.local +sh /etc/vdn/on-boot +END +fi + +chmod 755 /etc/rc.local + +echo "Allow root autologin on ttyS0" +sed -i -re 's,^ExecStart=.*$,ExecStart=-/sbin/mingetty --noclear --autologin root %I,' /lib/systemd/system/serial-getty@.service + +echo "Allow net.ifnames=0 in GRUB + console" +sed -i -re 's,^GRUB_CMDLINE_LINUX_DEFAULT=.*$,GRUB_CMDLINE_LINUX_DEFAULT=\"net.ifnames=0 console=ttyS0\,115200n8 noresume blacklist=floppy\",' /etc/default/grub +echo "Set 1s timout for Grub menu" +sed -i -re 's,^GRUB_TIMEOUT=.*$,GRUB_TIMEOUT=0,' /etc/default/grub +update-grub + +echo "Allow ssh root connection" +if grep -q '^#?PermitRootLogin ' /etc/ssh/sshd_config; then + sed -i -re 's/^#?PermitRootLogin/PermitRootLogin prohibit-password' /etc/ssh/sshd_config +else + echo 'PermitRootLogin prohibit-password' >> /etc/ssh/sshd_config +fi + +#apt-get install -y --reinstall linux-image-amd64 +update-initramfs -u +grub-install /dev/vda +#update-grub + +#echo "End of base.sh, exit to quit" +#/bin/bash -i + +EOF + + chmod 755 $DST/base.sh + + [ ! -e $VDN_PATH/files/$HDA ] && { + echo "Create sparse disk $VDN_PATH/files/$HDA ($HDA_SIZE M)..." + dd of=$VDN_PATH/files/$HDA count=0 bs=1M seek=$HDA_SIZE + } + + # Build $TMP_DIR/initrd.img + + #if [ ! -e $TMP_DIR/initrd.img ]; then + echo "Create $TMP_DIR/initrd.img..." + case $FORMAT in + asciiCpio|gzip) ( cd $TMP_DIR/initrd && find . | cpio -o -H newc -R root:root | gzip -9 > $TMP_DIR/initrd.img);; + zStandard) ( cd $TMP_DIR/initrd && find . | cpio -o -H newc -R root:root | zstd -9 > $TMP_DIR/initrd.img );; + esac + #fi + + #echo "Press return to continue !" + #read + + echo "Boot and debootstrap..." + + qemu-system-x86_64 -kernel $LOCAL_KERNEL -smp 8 -enable-kvm -cpu host -device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -rtc base=localtime -m 3072M -nographic -serial mon:stdio -monitor null -initrd $TMP_DIR/initrd.img -append "root=/dev/vda boot=live ro console=ttyS0,115200n8 net.ifnames=0 noresume" -boot order=c -drive file=$VDN_PATH/files/$HDA,if=virtio,format=raw -device virtio-net-pci,netdev=n0,mac=52:56:0A:E8:00:02 -netdev user,id=n0 + +} + +# $1 : system name started +cleanHistory() { + echo "Clear /var/log, history, ..." + vdn-ssh -t root@$1 ' + + #rm -Rf /etc/vdn + set -a + . /etc/vdn/config + set +a + + rm -f /etc/vdn-$MODE-initialized + + #for i in $(find /var/log -type f); do cat /dev/null > $i; done + find /var/log -name "*.gz" -delete + + echo "Clear .bash_history" + + rm -f /root/.bash_history + touch /root/.bash_history + chmod 600 /root/.bash_history + rm -f /home/test/.bash_history + touch /home/test/.bash_history + chmod 600 /home/test/.bash_history + + echo "Clear .cache .mozilla" + for d in /root /home/test; do + rm -Rf $d/.cache + rm -Rf $d/.mozilla + done + + echo "$$$ Clear apt-cache..." + apt autoremove -y + sleep 1 + apt-get clean + + + echo "Clear authorized_keys (only user test)" + + for d in /root /home/test; do + rm -f $d/.ssh/authorized_keys + rm -Rf $d/.mozilla + done + + echo end of cleaning ! + + echo "poweroff (in 3 s) !" + poweroff -f + +' +} + + diff --git a/vdn/bin/functions-scripts.sh b/vdn/bin/functions-scripts.sh new file mode 100644 index 0000000..159c00a --- /dev/null +++ b/vdn/bin/functions-scripts.sh @@ -0,0 +1,635 @@ +#!/usr/bin/env bash + +set +u +[ -z "$USER" ] && USER=$(id -un) +set -u + +GUEST_OWNER=$USER + + +# Ces fonctions peuvent êtres utilisées par les scripts de configuration et +# de test d'un réseau. + +error() { + echo -e "\033[0;31;1mError in $SCRIPT !\033[0m" >&2 + echo + if [ $READ -eq 1 ]; then + echo + echo "touche \"Entrée\" pour terminer." + read + fi + + exit 1 + +} + +diagOld() { + printf "%-70s" "$@" +} + +green() { + local n="" + [ "$1" = "-n" ] && { n="-n"; shift; } + echo $n -e "\033[0;32;1m$@\033[0m" +} + +red() { + local n="" + [ "$1" = "-n" ] && { n="-n"; shift; } + echo $n -e "\033[0;31;1m$@\033[0m" +} + +diagResult() { + [ "$1" = 0 ] && green " ok" || red " ko" + echo +} + +diagResultWithMessage() { + echo + echo -en "$1 ... " + [ "$2" = 0 ] && green " ok" || red " ko" + echo +} + + +diag() { + local r + local term="-t" + + #if [ "$1" = "-t" ]; then + # term="-t" + # shift + #fi + + if [ "$1" = "-n" ]; then + term="" + shift + fi + echo -e "$2" + echo -ne " Please wait...\r" + + set +e + vdn-ssh $term $1 "$3 &> /dev/null" + r=$? + set -e + echo -ne " \r" + #diagResult $r + return $r +} + + +vdnTest() { + local error=0 + local message="$1" + local cmd="$2" + + b=$(echo "$1" | base64 | tr '/' '-') + + echo -n "$1 ... " + eval $cmd &> /dev/null + error=$? + #echo -n "" + + [ $error = 0 ] && green ok || red ko + + VDN_TESTS_DIR=/tmp/vdn-$USER/tests + [ ! -d $VDN_TESTS_DIR ] && mkdir -p $VDN_TESTS_DIR + echo "$1" > $VDN_TESTS_DIR/$b + echo $error >> $VDN_TESTS_DIR/$b + + #errors=$(($errors+$error)) + + return $error +} + + +warning() { + echo -e "\033[1;33;1mWarning in $SCRIPT !\033[0m" >&2 +} + +request() { + echo + echo -e "$@" + echo + echo -n "Confirmez (O/n) : " + read + if [ -z "$REPLY" -o "$REPLY" = "o" -o "$REPLY" = "O" ]; then + return 0 + fi + return 1 +} + + +setDebugMode() { + [ $VDN_DEBUG = 1 ] && set -x || : +} + + +setErrorHandler() { + setDebugMode + set +u + [ -z "$SCRIPT" ] && SCRIPT=$(basename "$1") || : + set -u + trap "error" 0 +} + +echoStart() { + echo + echo "Start : $SCRIPT" + #START_DATE=$(date +%s) +} + +echoDone() { + #echo -e "\033[0;32;1m$SCRIPT : done.\033[0m" + echo + echo -ne "\033[0;34;1mdone\033[0m (time : " + gawk 'BEGIN {print strftime("%M:%S)",'$(date +%s)-$START_DATE')}' + +} + +echoDoneWithTestErrors() { + #echo -e "\033[0;32;1m$SCRIPT : done.\033[0m" + errors=${errors:-0} + echo + [ "$errors" = 0 ] && green -n ok || red -n ko + echo -en " (time : " + gawk 'BEGIN {print strftime("%M:%S)",'$(date +%s)-$START_DATE')}' +} + + +unsetErrorHandler() { + trap - 0 +} + +startGuests() { + local i + local n=0 + for i in $@; do + echo -n "Alive $i ? : " + if ! $VDN_PATH/bin/vdn-alive $i ; then + echo "No : Start $i..." + set +u + #set -x + if [ "$WITH_GUI" = 1 -o "$VDN_GUI" = 1 ]; then + vdn-start -g $i + elif [ $IN_BG = 1 ]; then + vdn-start -b $i + else + vdn-start $i + fi + #set +x + n=$((n+1)) + set -u + else + echo "Yes" + fi + done + return $n +} + +waitSsh() { + for i in $@; do + echo "Waiting ssh on $i..." + local n=0 + #set -x + until $VDN_PATH/bin/vdn-ssh root@$i : &> /dev/null; do + if [ $n = 1 ]; then + echo "Waiting ssh on $i..." >&2 + n=$(n+1) + fi + sleep 2 + done + done +} + +requireGuests() { + set +e + startGuests $@ + + #echo "All guests started !" + [ $? -ne 0 ] && sleep 1 + set -e + return 0 +} + +startAndWaitSsh() { + #echo "startAndWaitSsh :$DISABLE_SCAN" + DISABLE_SCAN=${DISABLE_SCAN:-0} + if [ "$DISABLE_SCAN" != 1 ]; then + requireGuests $@ + sleep 1 + waitSsh $@ + fi +} + +requireSshGuests() { # DEPRECATED + startAndWaitSsh $@ +} + +setHostname() { + echo "setHostname $1" + vdn-ssh root@$1 " + echo $1 > /etc/hostname + hostname -F /etc/hostname + " +} + + +setFile() { + #echo "setFile $1 $2 (functions-script.sh)" + #set -x + vdn-ssh root@$1 "cat > $2" + #set +x +} + +setHosts() { + echo "setHosts $1" + setFile $1 /etc/hosts +} + +setInterfaces() { + echo "setInterfaces $1" + setFile $1 /etc/network/interfaces + #vdn-ssh root@$1 "ip route | grep -q default && ip route del default || : ; service networking restart" + #cat /etc/network/interfaces + #ip addr + #ip route + vdn-ssh root@$1 "service networking restart" + #sleep 1 +} + +setForwarding() { + echo "setForwarding $1" + # cat /proc/sys/net/ipv4/ip_forward + vdn-ssh root@$1 " + sed -i -re 's/#(net.ipv4.ip_forward=1)/\1/g' /etc/sysctl.conf + sysctl -p | grep net.ipv4.ip_forward + " +} + +setIpv6WorkAround() { + vdn-ssh root@$1 " + echo setIpv6WorkAround $1 + if ! grep -q \"^net.ipv6.conf.all.accept_dad = 0\" /etc/sysctl.conf; then + cat << EOF >> /etc/sysctl.conf +#broken for uml/kvm/qemu, mcast hears itself +net.ipv6.conf.all.accept_dad = 0 +net.ipv6.conf.all.dad_transmits = 0 +net.ipv6.conf.default.accept_dad = 0 +net.ipv6.conf.default.dad_transmits = 0 +# and since the interfacs are there before sysctl is run, and the +# all target is an utter linux failure, we have to set it per interface +net.ipv6.conf.lo.accept_dad = 0 +net.ipv6.conf.eth0.accept_dad = 0 +net.ipv6.conf.eth1.accept_dad = 0 +net.ipv6.conf.eth2.accept_dad = 0 +net.ipv6.conf.lo.dad_transmits = 0 +net.ipv6.conf.eth0.dad_transmits = 0 +net.ipv6.conf.eth1.dad_transmits = 0 +net.ipv6.conf.eth2.dad_transmits = 0 +EOF + sysctl -p &> /dev/null + service networking restart + fi +" +} + +pauseRaw() { + echo + echo "*** touche \"Entrée\" pour terminer." + read +} + + +pause() { + set +u + VDN_GUI=${VDN_GUI:-0} + set +u + #echo "PAUSE:$PAUSE RUN_PARALLEL:$RUN_PARALLEL IN_PARALLEL=$IN_PARALLEL VDN_GUI=$VDN_GUI VDN_SCRIPTS_LEVEL=$VDN_SCRIPTS_LEVEL" + #echo "read..." + #read + #set -x + #echo "$PAUSE = 1 -a $IN_PARALLEL = 0 -a \( $VDN_GUI = 1 -a $VDN_SCRIPTS_LEVEL = 1" + if [ $PAUSE = 1 -a $IN_PARALLEL = 0 -a \( $VDN_GUI = 1 -a $VDN_SCRIPTS_LEVEL = 1 \) ]; then + if [ "$NO_INTERACTIVE" != 1 ]; then + echo + echo "*** touche \"Entrée\" pour terminer." + read + fi + else + #echo VDN_SCRIPTS_LEVEL:$VDN_SCRIPTS_LEVEL + if [ $READ = 1 -a $VDN_SCRIPTS_LEVEL -gt 2 ]; then + #echo "reading" + #echo "VDN_SCRIPTS_LEVEL:$VDN_SCRIPTS_LEVEL" + #echo "sleep infinit disable" + sleep infinity + #while :; do + # read + #done + fi + fi + + #set +x +} + +#parallelDisablePause() { + #[ $RUN_PARALLEL = 1 ] && PAUSE=0 || : +#} + +canRunParallel() { + local r + set +u + [ $RUN_PARALLEL = 1 -a "$DISABLE_PARALLEL" != 1 -a $(echo $@ | wc -w) -gt 1 ] && r=0 || r=1 + #[ $RUN_PARALLEL = 1 -a "$DISABLE_PARALLEL" != 1 ] && r=0 || r=1 + set -u + return $r +} + + + +runParallel() { + local tmp name + + #[ $RUN_PARALLEL = 1 ] && PAUSE=0 || : + + export RUN_PARALLEL + #export IN_PARALLEL=1 + + #export IN_PARALLEL=1 + #export PAUSE=0 + + [ ! -d $HOME/.tmuxinator ] && (umask 077 && mkdir $HOME/.tmuxinator ) + + tmp=$(mktemp -p $HOME/.tmuxinator vdn-tmuxinator-XXXXXX) + name=$(basename $tmp) + + #echo "runParallel: PAUSE:$PAUSE" + + #sleep 3 + + #if [ $VDN_DEBUG = 1 ]; then + #tmuxinator new $name + #else + # + #tmuxinator new $name &> /dev/null + #fi + + + #echo "NAME is $name" + #echo "WRITE to $tmp.yml" + +cat << EOF > $tmp.sh +#!/bin/bash + +quit() { + tmuxinator stop $name; +} + +trap quit 0 + +tput reset +echo -e '\n\n\n QUIT : Return / CTRL C' +read +EOF + + cat << EOF > $tmp.conf +set -g mouse on +set -g status-bg white +set -g status-fg blue +set -g status-left '#[fg=blue](#S) #(whoami)@#H#[default]' +set -g pane-active-border-fg blue +EOF + + + cat << EOF > $tmp.yml + +name: $name +root: $PWD +tmux_options: -f $tmp.conf + +windows: + - terminal: + layout: tiled + panes: + - clear; bash "$tmp.sh" +EOF + + chmod 700 $tmp.yml + + local i n payload + n=$(($#+1)) + #n=$(($#)) + payload=0 + if [ $(($n % 3)) != 0 ]; then + payload=$(( (($n/3)+1)*3 - $n )) + fi + + [ $n = 2 -o $n = 4 ] && payload=0 || : + [ $n = 3 ] && payload=1 || : + + #echo "#:$# @:$@" + #echo "N: $n" + #echo "PAYLOAD: $payload" + #sleep 10 + #set -x + for i in $@; do + echo " - cd; export NETWORK_DIR=$NETWORK_DIR; export VDN_GUI=1; export READ=$READ; export PAUSE=$PAUSE; export FORCE_SEQUENTIAL=$FORCE_SEQUENTIAL; clear; $VDN_PATH/bin/vdn-scripts $i" >> $tmp.yml + done + + for i in $(seq 1 $payload); do + echo " - cd; clear; echo -e \"\n\"' Not used !'; sleep infinity" >> $tmp.yml + done + #set +x + #sleep 10 + + #echo "Press Return" + #read + + if [ $VDN_DEBUG = 1 ]; then + tmuxinator start $name + else + tmuxinator start $name &> /dev/null + fi + + # dump + + local pane + + #for pane in $(tmux list-pane | sed -re 's/^.*(%[0-9]+).*$/\1/'); do + # echo "----------------------------" + # tmux capture-pane -S -100 -p -t $pane + #done + + rm $tmp $tmp.yml $tmp.sh $tmp.conf + + #[ $VDN_DEBUG = 0 ] && clear + #echo "leave: parallel" +} + +fn_exists() { + local r + #set -x + set | grep -q "$1 ()" + r=$? + #set +x + return $r +} + +prepareRun() { + + #echo "### prepareRun : " + + #setErrorHandler + #set | grep test + #echo "SCRIPT:$SCRIPT." + #echo "ARGS:$ARGS." + + + if [ -n "$ARGS" ]; then + fn_exists $ARGS + else + fn_exists $SCRIPT + fi + local fn=$? + + #echo "FN:$fn (0 is true)" + + + if [ $fn = 0 ]; then + if [ -n "$ARGS" ]; then + $ARGS + else + $SCRIPT $@ + fi + exit + fi + + #read + + # Not a function + + # is a script ? + if [ -r $SCRIPT ]; then + #echo "$SCRIPT is a script !" + #echo "ARGS:$ARGS" + if [ -n "$ARGS" ]; then + SCRIPT=$ARGS + $SCRIPT + exit + fi + + return 0 + + fi + + echo "$SCRIPT not a script !" + + #read + + #if [ -n "$ARGS" ]; then + # SCRIPT=$1 + # shift + # $SCRIPT $@ + # exit + #fi + + exit +} + +vdnExec() { + local L="" + + for i in $@; do + set | egrep -q "^$i \(\)" + + fn=$? + #echo "$i => $fn" + + [ $fn = 0 ] && i="$SCRIPT:$i" + L="$L $i" + done + + vdn-scripts $L +} + +vdnExecWithErrors() { + export SHOW_ERRORS=1 + vdnExec $@ + +} + + + +runSequential() { + local i + local r + local lerrors=0 + + #export IN_PARALLEL=0 + + #echo "runSeq: $@ PAUSE:$PAUSE" + + errors=${errors:-0} + + for i in $@; do + #echo + #echo -e "Run : $i [$(echo $i | tr ':' ' ')]" + #echo + SCRIPT=$i + #echo "SCRIPT1:$SCRIPT" + SCRIPT=$(echo $i | tr ':' ' ' | sed -re 's/^ *//' | cut -d ' ' -f 1) + ARGS=$(echo $i | tr ':' ' ' | sed -re 's/^ *//' | gawk ' { print $2 $3 $4 $5 $6 $7 }') + + #. $VDN_PATH/bin/functions-scripts.sh + + #echo "SCRIPT2:$SCRIPT" + + . $SCRIPT + + + START_DATE=$(date +%s) + + set -e + + PAUSE=1 + + + #echo "runSeq : $SCRIPT args : $ARGS" + if [ -z "$ARGS" ]; then + run + r=$? + else + $ARGS + r=$? + #echoDone + fi + + set +u + + #echo "R:$r" + if [ $r = 0 ]; then + success=$((success+1)) + else + errors=$((errors+1)) + lerrors=$((lerrors+1)) + + #echo "ERRORS ! : $errors" + #echo "LERRORS ! : $lerrors" + fi + set -u + + done + + if [ $VDN_SCRIPTS_LEVEL = 1 ]; then + if [ $errors != 0 ]; then + red "Error(s) detected !" + fi + fi + + return $errors +} + + +[ "$VDN_DEBUG" = 1 ] && set -x || : + + diff --git a/vdn/bin/functions.sh b/vdn/bin/functions.sh new file mode 100644 index 0000000..e1bfacc --- /dev/null +++ b/vdn/bin/functions.sh @@ -0,0 +1,568 @@ +#!/usr/bin/env bash + +# FOR DEBUG : tmux kill-session -t name + +# Options prédéfinies pour ssh lors d'un vdn-ssh. + +set +u +[ -z "$USER" ] && export USER=$(id -un) +set -u + +set -a +VDN_RESOURCES_ALLOCATOR=${VDN_RESOURCES_ALLOCATOR:-default} +DB_CURRENT_HOST=${DB_CURRENT_USER:-$USER} +DB_CURRENT_HOST=${DB_CURRENT_NETWORK:-} +DB_CURRENT_HOST=${DB_CURRENT_HOST:-} +set +a + +#SSH_OPTS="-o NoHostAuthenticationForLocalhost=yes -c aes128-ctr" +SSH_OPTS="-o NoHostAuthenticationForLocalhost=yes" + +# Options prédéfinies pour scp lors d'un vdn-scp. + +SCP_OPTS="-o NoHostAuthenticationForLocalhost=yes -c aes128-ctr" + +# Utilise le mode master de ssh pour la connexion avec les systèmes virtuels. + +SSH_GUEST_MASTER=1 + +#set +u +#[ -z "$PAUSE" ] && export PAUSE=1 || : +#set -u + + +warning() { + echo -e "\n`basename $0` : warning : $@ !" >&2 +} + +error() { + echo -e "`basename $0` : error : $@ !" >&2 + READ_ON_ERROR=${READ_ON_ERROR:-0} + + if [ "$READ_ON_ERROR" = "1" ]; then + echo "Appuyez sur Entrée pour quitter" + read + fi + exit 64 +} + +request() { + echo + echo -e "$@" + echo + echo -n "Confirmez (O/n) : " + read + if [ -z "$REPLY" -o "$REPLY" = "o" -o "$REPLY" = "O" ]; then + return 0 + fi + return 1 +} + +requestNo() { + echo + echo -e "$@" + echo + echo -n "Confirmez (o/N) : " + read + if [ "$REPLY" = "o" -o "$REPLY" = "O" ]; then + return 0 + fi + return 1 +} + +testInstallDebian() { + local notFound=0 + #local bin="lsb_release qemu-system-x86_64 neato bzip2 wget" + local bin="lsb_release bzip2 wget" + + for i in $bin; do + if ! whereis $i | grep -q bin; then + echo "Impossible de trouver l'exécutable : $i !" + notFound=1 + fi + done + + if [ $notFound = 1 ]; then + request "Programme(s) manquant(s) !\nL'administrateur doit préparer le système via la commande :\nvdn-prepare-debian\nAbandonner le démarrage de VDN ?" + if [ $? -eq 0 ]; then + exit 1 + fi + fi +} + +computeHostRelease() { + + set +u + [ -n "$HOST_RELEASE" ] && return || : + set -u + + if [ -e /usr/lib/os-release ]; then + ID=$(cat /usr/lib/os-release | grep '^ID=' | cut -d '=' -f 2) + if [ -z "$ID" ]; then + ID="empty" + fi + VERSION_CODENAME=$(cat /usr/lib/os-release | grep '^VERSION_CODENAME=' | cut -d '=' -f 2) + if [ -z "$VERSION_CODENAME" ]; then + VERSION_CODENAME="empty" + fi + + export HOST_RELEASE="$ID/$VERSION_CODENAME" + + else + export HOST_RELEASE="empty/empty" + fi +} + + +# Fixe GUEST_PATH, GUEST_CONF et GUEST_SAVE +# $1 : GUEST_NAME +setGuestVars() { + set -a + MODE=tgz + GUEST_OWNER=$USER + GUEST_NAME=$1 + GUEST_PATH="$NETWORK_DIR" + GUEST_CONF="$GUEST_PATH/$1.conf" + #if [ ! -e "$GUEST_CONF" ]; then + # error "WARNING : Le système $(basename $NETWORK_DIR)/$1 n'existe pas !" + #fi + ##NETWORK="$(basename $NETWORK_DIR)" + #IDENT="" + #IDENT=$(grep '^IDENT=[0-9]' $GUEST_CONF | \ + # sed -re 's/^.*IDENT=([0-9]+).*/\1/') + #[ -z "$IDENT" ] && error "IDENT n'est pas fixé dans $GUEST_CONF" || : + + SSH_IDENTITY="$HOME/.ssh/id_dsa.pub $HOME/.ssh/id_rsa.pub" + SWAP_FILE="$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-swap" + + # fichier utilisé pour la partition de l'union. + # si fixée à "" alors un tmpfs est utilisé + + AUFS_FILE="$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-part" + OUT_FILE="$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-out" + + ALIVE_FILE=$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER.alive + + EXCLUDE_SERVICES="" + + KVM_NETWORKS_OPTS="" + KVM_DISKS_OPTS="" + KVM_OPTS="" + KVM_CMD="" + NET_MODEL=${NET_MODEL:-ne2k_pci} + + set +u + [ -n "$EXPR" -a "$EXPR" != '[]' ] && { + eval "$EXPR" + } + set -u + + set +a +} + +loadGuestVars() { + setGuestVars $1 + computeNetworks + . $VDN_PATH/config.template + [ -e $VDN_PATH/config.template.local ] && . $VDN_PATH/config.template.local || : + . $GUEST_CONF + set -a + set +u + [ -n "$EXPR" -a "$EXPR" != '[]' ] && { + eval "$EXPR" + } + set -u + set +a + + case "$MODE" in + tgz|tgz2) + SAVE_FILE="$SAVE_DIR/$GUEST_NAME.tgz" + ;; + overlay) + #SAVE_FILE="$SAVE_DIR/$GUEST_NAME.tgz" + SAVE_FILE="$SAVE_DIR/$GUEST_NAME.overlay" + ;; + *) + SAVE_FILE="$SAVE_DIR/$GUEST_NAME.cow" + ;; + esac + + [ ! -d "$(dirname $SAVE_FILE)" ] && mkdir -p "$(dirname $SAVE_FILE)" || : +} + +# retourne 0 (vrai) si le système existe + +isDefined() { + GUEST_PATH="$NETWORK_DIR" + GUEST_CONF="$GUEST_PATH/$1.conf" + test -e "$GUEST_CONF" + return $? +} + +resizeMultipleOf512() { + local s=$(stat -c %s $1) + local n=$(( (($s/512)+($s%512!=0)*1)*512 )) + #echo "s=$s, n=$n" + truncate -s $n $1 +} + +debugNet1() { + set +u + [ -z "$DEBUG_NET" ] && export DEBUG_NET="false" + set -u + echo "debugNet1 host:$KHOST K:$K K_HIGH:$K_HIGH K_LOW:$K_LOW U:$U U1:$U_LOW U2:$U_HIGH" >&2 +} + +computeNetworksOld() { + + local K U i + + set +u + ident=$1 + set -u + + [ -z "$ident" ] && ident=$IDENT || : + + # Configuration des réseaux (brins Ethernet, adresse IP et adresses MAC) + + # Ce fichier est lu avant la lecture du fichier de configuration d'un + # système et est utilisé pour définir les réseaux (virtuels). + # Lorsque ce fichier est lu, la variable IDENT contenant + # l'identificateur du système à démarrer est fixée. + + # ### + # 1. Calcule les adresses "multicast" des brins Ethernet virtuels. + # ### + + # Détermine la clé propre à chaque utilisateur. + # Remarque : conflit si même poids faible de l'UID. + + U=$(($(id -u)%512)) + + # !!! + #[ "$USER" = gudavala ] && U=511 + + U_LOW=$(($U%256)) + U_HIGH=$(($U/256)) + + + # Détermine la clé K propre à la machine hôte (poids faible de l'IP) + + #K=`/sbin/ifconfig eth0 | grep Bcast | head -n 1 | cut -d ':' -f 2 | \ + # cut -d ' ' -f 1 | cut -d '.' -f 4`A + + IP_LINE=$(ip addr | grep '192\.168' | head -n 1) + #IP_LINE=$(echo " inet 192.168.1.37/24 brd 192.168.1.255 scope global dynamic eth0" | grep '192\.168' | head -n 1) + + K=$(echo $IP_LINE | sed -re 's/.*192\.168\.([0-9]+)\.([0-9]+)\/.*$/\1 \2/') + + + #IP_LINE=$(echo " inet 192.168.1.37/24 brd 192.168.1.255 scope global dynamic eth0" | grep '192\.168' | head -n 1) + + K=$(echo $IP_LINE | sed -re 's/.*192\.168\.([0-9]+)\.([0-9]+)\/.*$/\1 \2/') + + [ -z "$K" ] && { + echo "Warning : can't find network host uniq number ! use "1" !" + K=1 + } + + #KK="" + #if [ -e $NETWORK_DIR/hosts.txt ]; then + # local h=$(hostname) + # h=$(echo $h | sed -re 's/iutclinf(.*)l/\1/') + # KK=$(cat $NETWORK_DIR/hosts.txt | grep -n $h | cut -d ':' -f 1) + # [ -n "$k2" ] && K=$K_LOW + #fi + #echo "KEY:$K K_LOW=$KK" + + + K_HIGH=$(echo $K | cut -d ' ' -f 1) + K_LOW=$(echo $K | cut -d ' ' -f 2) + + KHOST=$K_LOW + [ "$K_HIGH" = "128" ] && KHOST=$((512+$K_LOW)) + + [ $K_HIGH = 128 ] && K_HIGH=1 || K_HIGH=0 + + #K_HIGH=$(($K_HIGH%16)) + K_LOW=$(($K_LOW%256)) + + set +u + #[ "$USER" = "gudavala" ] && [ -z "$VDN_FIRST" ] && debugNet1 + set -u + + set -a + + # Brin Ethernet PARTAGÉ par TOUS les systèmes de TOUS les utilisateurs. + # [Internet virtuel] + + NET_G="239.2.0.0:1999" + + # Brins privés à une machine hôte + + for i in `seq 0 64`; do + eval NET_$i="234.$K_HIGH.$K_LOW.$U_LOW:$((2000+$U*16+$i))" + done + + # ### + # 2. Calcule l'adresse IP "réservée" sur le brin PARTAGÉ + # ### + + ###PUBLIC_IP="$((20+$K_HIGH+U_HIGH*2)).$K_LOW.$U_LOW.$ident" + + #set -x + PUBLIC_IP=$(vdn-query PUBLIC_IP 0 $GUEST_NAME.$NETWORK_NAME) + #set +x + + # ### + # 3. Calcule les adresses MAC des cartes Ethernet + # ### + + U_LOW=`printf "%02X" $U_LOW` + + V=$((54+$K_HIGH+$U_HIGH*2)) + V=$(printf "%02d" $V) + K_HIGH=`printf "%02X" $K_HIGH` + K_LOW=`printf "%02X" $K_LOW` + + + + F_IDENT=$(printf "%02d" $ident) + + MAC_0=52:$V:$K_LOW:$U_LOW:$F_IDENT:00 + MAC_1=52:$V:$K_LOW:$U_LOW:$F_IDENT:01 + MAC_2=52:$V:$K_LOW:$U_LOW:$F_IDENT:02 + MAC_3=52:$V:$K_LOW:$U_LOW:$F_IDENT:03 + MAC_4=52:$V:$K_LOW:$U_LOW:$F_IDENT:04 + MAC_5=52:$V:$K_LOW:$U_LOW:$F_IDENT:05 + MAC_6=52:$V:$K_LOW:$U_LOW:$F_IDENT:06 + MAC_7=52:$V:$K_LOW:$U_LOW:$F_IDENT:07 + + set +a +} + +computeNetworks() { + + set -a + # NET_G ? + # NET_ ? + + #PUBLIC_IP=$(vdn-query PUBLIC_IP 0 $GUEST_NAME.$NETWORK_NAME) + + # MAC_ ? +} + +# "Calcule" le port utilisé pour une redirection (interface pour la connexion +# avec l'hôte). +# En unique argument, le port de la machine virtuelle à rediriger vers un port +# local. En sortie, affichage du port "théorique" pour la redirection. +# En pratique le premier port libre égal ou supérieur au port "théorique" sera +# utilisé. + +vdn_redirOld() { + echo $((5000+100*$IDENT+$1)) +} + +getIpNotUsed() { + name=$1 + eth=$2 + + #vdn-infos $name >&2 + local nets=$(vdn-infos $name | grep '^NETWORKS=' | sed -re 's/^NETWORKS=//') + local ip=$(echo $nets | cut -d ' ' -f $((eth+1)) | cut -d '#' -f 2 | sed -re 's/^[^0-9]*([0-9.]+).*$/\1/') + + echo $ip +} + +# Vérifie l'unicité des identificateurs des systèmes du réseau courant. + +verifIdentOld() { + local i=0 + local configs="`find $NETWORK_DIR -follow -type f -name \"*.conf\" 2> /dev/null`" + [ -n "$configs" ] || return 0 + l=$(grep -E '^[[:space:]]*IDENT=[0-9]+' $configs | \ + sed -re 's,^.*/([^/]*)/config:[[:space:]]*IDENT=([0-9]+).*$,\1:\2,' | sort -n -t : -k 2) + + local t + + for i in $l; do + name=$(echo $i | cut -d ':' -f 1) + ident=$(echo $i | cut -d ':' -f 2) + set +u + t[$ident]="${t[$ident]},$name" + set -u + done + + local found=0 + for i in ${t[*]}; do + l=$(echo $i | sed -re 's/^,//') + if echo $l | grep -q ','; then + n=$(echo $l | cut -d ',' -f 1) + ident=$(vdn-config $n IDENT) + echo "Erreur : l'identificateur $ident est partagé par $l !" + found=1 + fi + done + + return $found + + +} + + +# Démarre un ssh pour un système virtuel en mode "master" +sshGuestControlMaster() { + Login=${LOGIN}localhost + + # wait lock + local n=0 + local lock=$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-ssh-lock + while ! mkdir $lock 2> /dev/null; do + sleep 0.5 + # Securité + n=$(($n+1)) + if [ $n -gt 5 ]; then + rmdir $lock 2> /dev/null || : + fi + done + + sleep 0.1 + + #echo "Locked" + + #echo "Login:$Login" >&2 + #ps auwx > /tmp/p + #ps auwx | grep -v grep | grep $Login | grep -q -- "-N -M" > /tmp/o || : + local sign="$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-guest" + test="ps auwx | grep -v grep | grep $Login | grep $sign" + #[ $GUEST_OWNER = gudavala ] && echo "test:$test" + if ! ps auwx | grep -v grep | grep $Login | grep $sign | grep -q -- "-N -M"; then + rmdir $lock 2> /dev/null || : + #[ $GUEST_OWNER = gudavala ] && echo "Master... $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-guest" + ssh -g $Login $SSH_OPTS $@ -o ServerAliveInterval=5 -p $SSH_REDIR_PORT -X -f -n -N -M -S $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-guest-%r@%h:%p &> /dev/null + else + rmdir $lock 2> /dev/null || : + fi + +} + +findUnusedPort() { + # $1 : proto + # $2 : port + + local proto port dst hex proc + + proto=$1 + port=$2 + + + hex=`printf "%04X" $port` + proc="/proc/net/$proto" + + while cat $proc | cut -d : -f2- | cut -d ' ' -f2,3 | grep -q ":$hex"; do + #echo "$proto port $port (for $dst) is used ! find next !" >&2 + port=$(($port+1)) + hex=`printf "%04X" $port ` + done + + echo $port +} + + + +setEnv() { + + set +u + local save="$NETWORK_DIR" + set -u + set -a + + . $VDN_PATH/config.rc # ! set NETWORK_DIR + [ -e $VDN_PATH/config.rc.local ] && . $VDN_PATH/config.rc.local || : + + + # NETWORK_DIR priority + + if [ -n "$save" ]; then + NETWORK_DIR=$save + fi + + set +a + + set +u + [ -z "$EDITOR" ] && export EDITOR="vi" + set -u + + export HOST_RELEASE + + export VDN_WS_PROXY_SOCKET=$TMPDIR/vdn-$USER-ws-sock +} + +vdn_init() { + + export VDN_NETWORKS_BASE_DIR=${VDN_NETWORKS_BASE_DIR:-$VDN_PATH/networks} + set +u + CURRENT_NETWORK_DIR="$NETWORK_DIR" # var. d'env. prioritaire + + NETWORK_NAME="" + [ -n "$CURRENT_NETWORK_DIR" ] && NETWORK_NAME=$(basename $CURRENT_NETWORK_DIR) + + #[ -z "$NETWORK_NAME" ] && error "NETWORK_NAME empty !" + set -u + + PATH="$PATH:$VDN_PATH/bin" + setEnv + + set -a + [ ! -e "$TMPDIR" ] && (umask 077 && mkdir -p "$TMPDIR" ) + [ -n "$CURRENT_NETWORK_DIR" ] && NETWORK_DIR="$CURRENT_NETWORK_DIR" + + set +u + if [ -n "$NETWORK_DIR" ]; then + if [ ! -d "$NETWORK_DIR" ]; then + #echo "Le réseau $NETWORK_DIR n'existe pas !" >&2 || : + NETWORK_DIR="" + SAVE_DIR="" + #exit 1 + + fi + if [ "$NETWORK_DIR" != "" ]; then + . $NETWORK_DIR/network.vdn + SAVE_DIR="$SAVE_PATH/$(basename $NETWORK_DIR)" + fi + else + SAVE_DIR="" + fi + + set -u + set +a + + set +u + [ -z "$VDN_DEBUG" ] && export VDN_DEBUG=0 || : + set -u + + + +} + + +sendToGui() { + local pid=$(ps auwx | grep 'ruby' | grep 'vdn-gui' | tr -s " " | cut -d ' ' -f 2) + if [ -n "$pid" ]; then + #echo "SENDTOGUI ($TMPDIR/vdn-gui-$USER-fifo-ctrl) : $@" + echo "$@" > $TMPDIR/vdn-gui-$USER-fifo-ctrl + fi +} + +# main + +set +u +[ -z "$VDN_PATH" ] && export VDN_PATH=$(readlink -f $(dirname $0)/..) || : +! echo "$PATH" | grep -q $VDN_PATH && export PATH="$VDN_PATH/bin:$PATH" +set -u + +computeHostRelease + +setEnv + +vdn_init diff --git a/vdn/bin/sae203-init b/vdn/bin/sae203-init new file mode 100755 index 0000000..b213c77 --- /dev/null +++ b/vdn/bin/sae203-init @@ -0,0 +1,89 @@ +#!/bin/bash + +# Mot de passe par défaut + +export SSHPASS='iut*' +pass='' + +# Demande et affiche un mot de passe + +getPassword() { + local pass1 pass2 + local cont=1 + + while [ $cont = 1 ];do + + echo -n "Mot de passe : " >&2 + + # -s : lecture sans affichage + read -s pass1 + + echo >&2 + + echo -n "Retapez le mot de passe : " >&2 + + read -s pass2 + + echo >&2 + + if [ -n "$pass1" -a "$pass1" = "$pass2" ]; then + cont=0 + else + if [ "$pass1" != "$pass2" ]; then + echo "Les mots de passe ne correspondent pas." >&2 + else + echo "Un mot de passe vide n'est pas valide !" >&2 + fi + fi + done + + echo "$pass1" +} + + +# main + +if [ ! -r ~/.ssh/id_rsa.pub ]; then + echo "~/.ssh/id_rsa.pub manquant !" >&2 + exit 1 +fi + +if [ -z "$pass" ]; then + echo "Entrez un mot de passe pour les utilisateurs root et test" + echo "N'oubliez pas ce mot de passe sous peine de tout perdre !" + echo "ATTENTION : Les caractères ', \" et tabulation ne sont pas autorisés ! :" + pass=$(getPassword) +fi + +# Copie de la clé ssh publique dans ~root/.ssh/authorized_keys +# de la machine virtuelle +sshpass -e ~vdn/vdn/bin/vdn-ssh-copy-id -i ~/.ssh/id_rsa.pub root@debian-1 &> /dev/null + +# idem pour l'utilisateur test +sshpass -e ~vdn/vdn/bin/vdn-ssh-copy-id -i ~/.ssh/id_rsa.pub test@debian-1 &> /dev/null + +vdn-ssh root@debian-1 'echo "root:'$pass'" | chpasswd' +vdn-ssh root@debian-1 'echo "test:'$pass'" | chpasswd' + +# Vérification + +SSHPASS="$pass" +if ! sshpass -e vdn-ssh -n -o PubkeyAuthentication=no root@debian-1 ':'; then + echo "Echec !" >&2 +fi + + +exit 0 + +# Copie de la clé ssh publique dans ~test/.ssh/authorized_keys +# de la machine virtuelle + +vdn-ssh-copy -i ~/.ssh/id_rsa.pub test@debian-1 + +# Choix d'un nouveau mot de passe pour le compte root + +echo "Entrez un nouveau mot + + + + diff --git a/vdn/bin/vdn b/vdn/bin/vdn new file mode 100755 index 0000000..0ae0ad9 --- /dev/null +++ b/vdn/bin/vdn @@ -0,0 +1,483 @@ +#!/usr/bin/env bash + +#set -x + +MULTIPLE=1 + +RUN_SINGULARITY=0 + +export VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +FIRST_REQUEST=1 +ACCEPT_CHROOT=0 +USE_SUDO=0 +NO_HOST_KVM_TEST=0 +FORCE_CHROOT=0 # for test +TEST_ONLY=0 # test host and quit. +NETWORK="" + +set +u +[ -z "$RUN_IN_CHROOT" ] && RUN_IN_CHROOT=0 || : +set -u +export RUN_IN_CHROOT + +set -a +NO_MOZ=0 +set +a + +quit() { + echo "quit..." + + + #sendToGui "gui" + #sleep 1 + + pid=$(ps auwx | grep 'ruby' | grep 'vdn-gui' | tr -s " " | cut -d ' ' -f 2) + if [ -n "$pid" ]; then + echo "kill : $pid" >&2 + kill $pid + sleep 1 + fi + echo +} + +synopsis() { + cat << EOF +Usage : $(basename $0) [-h] [-v] +EOF +} + +help() { + cat << EOF + +$(basename $0) démarre l'interface graphique de Vdn. + +$(synopsis) + +-h : affiche cette aide. +-v : affiche la version. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "cdfhsmntv" opt; do + case $opt in + h) help; exit 0;; + v) cat $VDN_PATH/release; exit 0;; + c) ACCEPT_CHROOT=1;; + d) export VDN_DEBUG=1; vdn-set-var VDN_DEBUG 1; set -x;; + m) MULTIPLE=1;; + n) NO_HOST_KVM_TEST=1;; + s) USE_SUDO=1;; + f) FORCE_CHROOT=1;; + t) TEST_ONLY=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -eq 1 ] && NETWORK="$1" +} + + +request() { + + if [ $FIRST_REQUEST = 1 ]; then + FIRST_REQUEST=0 + request "Une ou plusieurs questions vont vous être posées. Sauf bonne raison, acceptez\nles choix par défaut en appuyant sur \"Entrée\"." + if [ $? -ne 0 ]; then + echo "Bye !" + exit 0 + fi + fi + echo + echo -e "$@" + echo + echo -n "Confirmez (O/n) : " + read + if [ -z "$REPLY" -o "$REPLY" = "o" -o "$REPLY" = "O" ]; then + return 0 + fi + return 1 +} + +testHost() { + + if [ "$(uname -m)" != "x86_64" ]; then + echo "Désolé, cette version de VDN ne fonctionne que sur architecture x86_64 !" >&2 + exit 1 + fi + + #if [ "$DISPLAY" = "" ]; then + # echo "Désolé, cette version de VDN nécessite un serveur graphique compatible X11 !" >&2 + # exit 1 + #fi + + if [ $NO_HOST_KVM_TEST = 0 ]; then + grep -Eq '(vmx|svm)' /proc/cpuinfo + virtproc=$? + [ -w /dev/kvm ] + kvmwrite=$? + lsmod | grep -q 'kvm_' + kvmproc=$? + lsmod | grep -q 'kvm[^_]' + + kvm=0 + + if [ $virtproc -ne 0 ]; then + echo "Votre processeur ne dispose pas d'instructions de virtualisation :-( !" + #else + # echo "Votre processeur dispose d'instructions de virtualisation ;-)" + fi + if [ $virtproc -eq 0 -a $kvmwrite -ne 0 ]; then + echo + echo "Votre processeur dispose d'instructions de virtualisation." + echo "Cependant vous ne pouvez pas les utiliser :-( !" + echo + + if [ -e /dev/kvm ]; then + msg=" Vous n'avez pas les droits de lecture/écriture sur /dev/kvm !\n L'administrateur (root) doit, au choix, effectuer les actions suivantes :\n 1. chmod 666 /dev/kvm.\n 2. Vous ajouter au groupe $(stat -c %G /dev/kvm) (commande \"addgroup $USER $(stat -c %G /dev/kvm)\" par exemple).\n\n Si la deuxième solution est choisie, vous devrez vous déconnecter de votre\n session graphique et vous reconnecter ou, plus simplement, ouvrir un nouveau\n shell de connexion via par exemple la commande \"su - $USER\"." + + elif lsmod | grep -q kvm; then + msg=" Les instructions de virtualisation de votre processeur ne sont pas activées dans votre BIOS/UEFI.\n + Redémarrez et configurez le BIOS/UEFI pour bénéficier de la virtualisation." + else + proc="intel" + if cat /proc/cpuinfo | grep -i -q amd; then + proc="amd" + fi + msg=" Le module noyau \"kvm-$proc\" n'est pas chargé !\n L'administrateur du système doit exécuter : modprobe kvm-$proc ." + fi + echo "Il semblerait que la raison soit :" + echo -e "$msg" + echo + + request "Continuer en mode \"sans instructions de virtualisation\" ?" + + [ $? -ne 0 ] && exit 1 + fi + fi +} + +runInChrootOld() { + #[ $RUN_IN_CHROOT = 1 ] && good=1 || : + if [ $ACCEPT_CHROOT = 0 ]; then + if [ $good = 0 -o \( $FORCE_CHROOT = 1 -a $RUN_IN_CHROOT = 0 \) ]; then + request "Le sytème hôte n'est pas une Debian 10 (buster).\nBasculer dans un environnement chroot ? (accès root nécessaire)" + + [ $? -ne 0 ] && exit 0 + fi + fi + + if [ $good = 0 -o \( $FORCE_CHROOT = 1 -a $RUN_IN_CHROOT = 0 \) ]; then + RUN_IN_CHROOT=1 + + export VDN_DISK_ENV="DebianBuster-amd64-env.disk" + export VDN_DISK_NAME="DebianBuster-amd64.disk" + + [ ! -e $VDN_PATH/files/$VDN_DISK_ENV ] && VDN_DISK_ENV=$VDN_DISK_NAME || : + + DISK=$VDN_PATH/files/$VDN_DISK_ENV + + + DISK_SIZE=0 + if [ -e $DISK ]; then + DISK_SIZE=$(ls -l $DISK | tr -s ' ' | cut -d ' ' -f 5) + fi + if [ $DISK_SIZE -lt $REMOTE_DISK_SIZE ]; then + + request "Télécharger du disque virtuel de VDN (6 Go) ?" + + [ $? -ne 0 ] && exit 0 + + local notFound=0 + local bin="bzip2 wget" + + for i in $bin; do + if ! whereis $i | grep -q bin; then + echo "Impossible de trouver l'exécutable : $i !" + notFound=1 + fi + done + + if [ $notFound = 1 ]; then + error "Programme(s) manquant(s) !\nL'administrateur doit installer ces programmes !" + fi + + vdn-download-disks -t DebianBuster-amd64.disk.gz + fi + + echo + echo "Running in chroot." + + if [ $USE_SUDO = 1 ]; then + vdn-mount-chroot -s + else + vdn-mount-chroot + fi + + exit $? + fi + +} + +runInChrootIfNecessary() { + + local good=0 + + # chroot ? + + if [ -e /etc/debian_version ]; then + if grep -q '^10\.' /etc/debian_version ; then + good=1 + fi + fi + + [ $RUN_IN_CHROOT = 1 ] && good=1 || : + + #runInChrootOld + + # Not in chroot + + +} + +runWithSingularityIfNecessary() { + + local good=0 + + # chroot ? + + if [ -e /etc/debian_version ]; then + if grep -q '^10\.' /etc/debian_version ; then + good=1 + fi + fi + + + if [ $good = 0 ]; then + RUN_SINGULARITY=1 + fi + +} + +updateVdnrc() { + if [ -e ~/.vdnrc ]; then + + request "Lors d'un changement de version de VDN, il est conseillé de mettre à jour\nle fichier ~/.vdnrc (la version courante sera enregistrée sous ~/.vdnrc.old).\nVoulez-vous mettre à jour ~/.vdnrc ?" + + if [ $? -eq 0 ]; then + mv ~/.vdnrc ~/.vdnrc.old + fi + fi +} + +pathWarning() { + echo + echo "*******************************************************************************" + echo "Le chemin de l'exécutable de VDN sera connu uniquement des NOUVEAUX shells !" + echo "*******************************************************************************" +} + +### main + +export VDN_DEBUG=0; vdn-set-var VDN_DEBUG 0 + +args "$@" + +if [ -n "$NETWORK" -a "$NETWORK" = "stop" ]; then + quit + exit 0 +fi + +if [ -n "$NETWORK" ]; then + if [ ! -d $NETWORK ]; then + if [ -d $NETWORK_DIR/../$NETWORK ]; then + NETWORK=$(readlink -f $NETWORK_DIR/../$NETWORK) + fi + fi + + if [ ! -d $NETWORK ]; then + error "Can' find network $NETWORK !" + fi + + # set and reload + vdn-set-var NETWORK_DIR "$NETWORK" + export NETWORK_DIR="$NETWORK" + . $VDN_PATH/bin/functions.sh +fi + +#for i in 1 2 3 4 5; do +# if ! ps auwx | grep -v grep | grep -q 'ruby.*vdn-gui' ; then +# break +# fi +# sleep 0.1 +#done + +if [ $MULTIPLE = 0 ]; then + if ps auwx | grep -v grep | grep -q 'ruby.*vdn-gui' ; then + error "Une instance de l'interface graphique de VDN est déjà active" + fi +else + #echo "Multiple..." + if ps auwx | grep -v grep | grep -q 'ruby.*vdn-gui' ; then + export NETWORK_DIR="" + vdn-set-var NETWORK_DIR "" + fi +fi + +#clear + +#if ! /sbin/route -n | grep -q '0.0.0.0' ; then +#/sbin/ip route + +if ! /sbin/ip route | grep -q default; then + cat << EOF >&2 + +Pas de route par défaut ! + +Si le système hôte ne dispose pas d'interface réseau, vous pouvez +autoriser la diffusion sur l'interface lo (loopback) via les commandes +(il faut être root) : + +Avec ifconfig : + +ifconfig lo multicast +route add default gw 127.0.0.1 + +avec ip : + +ip link set dev lo multicast on +ip route add default via 127.0.0.1 + +EOF + error "Pas de route par défaut ! Voir ci-dessus ou consultez la FAQ !" +fi + + + +testHost # chroot if necessary + +runInChrootIfNecessary + +# Not in chroot + +# download extras +#if [ -e $VDN_PATH/distribs/hosts/$HOST_RELEASE/download-extras.sh ]; then +# . $VDN_PATH/distribs/hosts/$HOST_RELEASE/download-extras.sh +# if ! testDownloadExtras; then +# downloadExtras +# fi +#fi + +testInstallDebian + +testVersionOld() { + +while :; do + version="$VDN_PATH" + current=$(cat ~/.bashrc |sed -nre 's/^[^#]*PATH.*:([^:]*vdn[^:]*)\/bin.*$/\1/p') + + [ "$current" = "$version" ] && break; + + # La version courante diffère de la version lancée + if [ -n "$current" ] && [ "$version" != "$current" ]; then + request "Votre fichier ~/.bashrc définit la version $current comme étant la version à utiliser. Cependant vous exécutez $version.\nVotre fichier ~/.bashrc doit être adapté !\nVoulez-vous que ce programme l'adapte pour vous ?" + + if [ $? -ne 0 ]; then + echo "Adaptez votre fichier ~/.bashrc puis relancez $0."; + exit 1; + + else + cp ~/.bashrc ~/.bashrc.vdn.old + + echo "Ancien fichier ~/.bashrc copié sous ~/.bashrc.vdn.old" + + cat ~/.bashrc |sed -re 's,[^:]*'$current','$VDN_PATH',g'> \ + ~/.bashrc-vdn + mv ~/.bashrc-vdn ~/.bashrc + + echo + + pathWarning + + updateVdnrc + + fi + + elif [ -z "$current" ]; then + line="PATH=\"\$PATH:$VDN_PATH/bin\"" + request "Votre fichier ~/.bashrc ne définit pas le chemin des exécutables de $version.\nLa ligne suivante doit être ajoutée :\n$line\nVoulez vous que ce programme adapte votre fichier ~/.bashrc pour vous ?" + if [ $? -eq 0 ]; then + echo "Adaptation de ~/.bashrc" + echo "PATH=\"\$PATH:$VDN_PATH/bin\"" >> ~/.bashrc + + pathWarning + + updateVdnrc + else + break + fi + + # echo "Ajoutez une ligne PATH=\"\$PATH:$VDN_PATH/bin\" à votre fichier ~/.bashrc puis relancez $0." + # exit 1; + + fi +done + + +if [ ! -e ~/.ssh/id_dsa.pub -a ! -e ~/.ssh/id_rsa.pub ]; then + request "Vous ne disposez pas d'un couple de clé SSH RSA nécessaire au fonctionnement de Vdn.\nVoulez vous que ce programme vous génère un couple de clé RSA ?" + + if [ $? -eq 0 ]; then + echo + echo "Create ssh keys..." + ssh-keygen -q -N '' -f ~/.ssh/id_rsa -t rsa + else + echo "Exécutez la commde ci-dessous pour générer un couple de +clé SSH RSA puis relancez $0 :" + echo "ssh-keygen -q -N '' -f ~/.ssh/id_rsa -t rsa" + exit 1 + fi + set +x +fi +} + + +export VDN_RELEASE="$(cat $VDN_PATH/release)" +export PATH="$VDN_PATH/bin:$PATH" + +[ $TEST_ONLY = 1 ] && exit 0 || : + +setEnv + +rm -f $HOME/.tmuxinator/vdn-tmuxinator* + +trap 'quit' SIGINT + +if [ ! -e /usr/bin/tmuxinator ]; then + $VDN_PATH/bin/vdn-set-var RUN_PARALLEL 0 + echo "/usr/bin/tmuxinator not found ! RUN_PARALLEL disable..." >&2 + sleep 1 +fi + +rm -f $TMPDIR/vdn-$USER-gui-log +mkfifo $TMPDIR/vdn-$USER-gui-log +chmod 600 $TMPDIR/vdn-$USER-gui-log + +export GUI=1 +export VDN_GUI=1 + +export LANG=fr_FR.UTF-8 + +$VDN_PATH/bin/vdn-gui.rb 2>&1 # | tee $TMPDIR/vdn-$USER-gui-log + +#$VDN_PATH/bin/vdn-gui.rb #2>&1 > $TMPDIR/vdn-$USER-gui-log & +#echo + diff --git a/vdn/bin/vdn-alive b/vdn/bin/vdn-alive new file mode 100755 index 0000000..31ad347 --- /dev/null +++ b/vdn/bin/vdn-alive @@ -0,0 +1,65 @@ +#!/usr/bin/env bash + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] system +EOF +} + +help() { + cat << EOF + +`basename $0` retourne 0 si le système est en fonctionnement, 1 sinon. + +`synopsis` + +-h : affiche cette aide. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 1 ] && usage + + GUEST_NAME="$1" + if echo $GUEST_NAME | grep -q '/'; then + error "$GUEST_NAME est un nom de système invalide" + fi +} + +alive() { + local r + set +e + #ps u | grep -E $GUEST_NAME[-]$USER-pid + #ps auwx | grep qemu + #ps -w -w -u $USER -eo cmd | grep -Eq $GUEST_NAME[-]$USER-pid + ps -w -w -eo user:14,cmd | grep $USER | grep -Eq $GUEST_NAME[-]$USER-pid + r=$? + set -e + return $r +} + + +# Programme principal + +GUEST_OWNER=$USER +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +alive diff --git a/vdn/bin/vdn-alives b/vdn/bin/vdn-alives new file mode 100755 index 0000000..4e427b8 --- /dev/null +++ b/vdn/bin/vdn-alives @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] +EOF +} + +help() { + cat << EOF + +`basename $0` affiche la liste des systèmes en fonctionnement. + +`synopsis` + +-h : affiche cette aide. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +#ps u | grep 'bash.*[/]vdn-start ' | grep -v linux | sed -re 's/^.* ([^[:space:]]+)$/\1/' | sort | uniq +#ps -u root -eo cmd | grep 'bash.*[/]vdn-start ' | sed -re 's/^.* ([^[:space:]]+)$/\1/' | sort | uniq +ps -eo user:14,cmd | grep ^$USER | grep 'bash.*[/]vdn-start ' | sed -re 's/^.* ([^[:space:]]+)$/\1/' | sort | uniq + +#ps auwx | grep 'name[= ].*user[ =]'$USER' ' | grep -v sed | grep -v grep | sed -re 's/^.*[ -]name[= ]([^[:space:]]+).*$/\1/' | sort | uniq + + diff --git a/vdn/bin/vdn-build b/vdn/bin/vdn-build new file mode 100755 index 0000000..a30730c --- /dev/null +++ b/vdn/bin/vdn-build @@ -0,0 +1,92 @@ +#!/usr/bin/env bash + +set -eu + +synopsis() { + cat << EOF +Usage : $(basename $0) [-h] system +EOF +} + +help() { + cat << EOF + +$(basename $0) initialise le fichier de configuration d'un système. + +$(synopsis) + +Le fichier de configuration du système est créé à partir du +modèle (config.template) du répertoire du réseau ou, à défaut, +du modèle config.template du répertoire de Vdn. + +Pour modifier des variables du fichier de configuration consultez +la commande vdn-config. Le script build du répertoire d'un réseau +utilise $(basename $0). + +Voir aussi les fichier build des répertoire des réseaux pour des +exemples de configurations. + +-h : affiche cette aide + +EOF +} + + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 1 ] && usage + + GUEST_NAME="$1" + + if echo "$GUEST_NAME" | grep -q '[[:space:]]'; then + error "$GUEST_NAME est un nom de système invalide" + fi + if echo $GUEST_NAME | grep -q '/'; then + error "$GUEST_NAME est un nom de système invalide" + fi + + +} + +setIdentOld() { + tmp=$(mktemp) + cat $GUEST_CONF | sed -re 's/^IDENT=.*$/IDENT='$1'/' \ + > $tmp + mv $tmp $GUEST_CONF 2> /dev/null +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +#isDefined $GUEST_NAME && error "$GUEST_PATH existe déjà" + +GUEST_PATH="$NETWORK_DIR" +GUEST_CONF="$GUEST_PATH/$1.conf" +#IDENT=256 +#computeNetworks + +config=$NETWORK_DIR/config.template +[ ! -e $config ] && config=$VDN_PATH/config.template + +echo "Build $GUEST_NAME..." >&2 + +cp $config $GUEST_CONF + +#ident=$(vdn-find-ident) +#setIdent $ident + diff --git a/vdn/bin/vdn-build-db b/vdn/bin/vdn-build-db new file mode 100755 index 0000000..17d9713 --- /dev/null +++ b/vdn/bin/vdn-build-db @@ -0,0 +1,58 @@ +#!/bin/bash + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] +EOF +} + +help() { + cat << EOF + +`basename $0` reconstruit la base de données de l'allocateur de ressources. + +`synopsis` + +A faire à chaque changement de la liste des utilisateurs, +ou chaque ajout/suppression d'un réseau ou d'un hôte dans un réseau. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hqs" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done +} + +# main + +args "$@" + +dir=$VDN_PATH/allocators/db-$VDN_RESOURCES_ALLOCATOR + +[ ! -d $dir ] && mkdir -p $dir + +ls $(dirname $HOME) > $dir/users + +( cd $VDN_NETWORKS_BASE_DIR; find . -maxdepth 1 -type d | grep -v '^\.$' | cut -d '/' -f 2 | grep -v '\/') > $dir/networks + +rm -f $dir/hosts.global +for i in $(cat $dir/networks) ; do + for j in $(cd $VDN_NETWORKS_BASE_DIR/$i; find . -maxdepth 1 -type f -name '*.conf' | sed -re 's/^..(.*).conf$/\1/' ); do + egrep -q '^NETWORKS=.*(NET_G|NET_0)' $VDN_NETWORKS_BASE_DIR/$i/$j.conf && echo $i:$j >> $dir/hosts.global + echo $i:$j + done +done > $dir/hosts + diff --git a/vdn/bin/vdn-build-network b/vdn/bin/vdn-build-network new file mode 100755 index 0000000..ea421cb --- /dev/null +++ b/vdn/bin/vdn-build-network @@ -0,0 +1,116 @@ +#!/usr/bin/env bash + +#set -x + +EDIT=0 + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [-e] [networkDir...] + +EOF +} + +help() { + cat << EOF + +`basename $0` construit le réseau. + +`synopsis` + +-h : affiche cette aide. +-e : propose l'édition du script avant la reconstruction + (la reconstruction n'est faite que si modifications il y a) + +Cette commande, après avoir fixé quelques variables, appelle +le script build du réseau. + +Si networkDir n'est pas précisé, le réseau défini par la +variable NETWORK_DIR est (re)créé. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "he" opt; do + case $opt in + h) help; exit 0;; + e) EDIT=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + NETS=$@ +} + +# main + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + + +if [ -z "$NETS" ]; then + NETS=$NETWORK_DIR +fi + +if [ -z "$NETS" ]; then + error "NETWORK_DIR not set !" +fi + +for i in $NETS; do + + if [ -d $i ]; then + NETWORK_DIR=$i + elif [ -d $VDN_NETWORKS_BASE_DIR/$i ]; then + NETWORK_DIR=$VDN_NETWORKS_BASE_DIR/$i + else + error "Network : $i not found !" + fi + + echo + echo "Build : $NETWORK_DIR" + + [ ! -r $NETWORK_DIR/build ] && error "$NETWORK_DIR/build script not found !" + + if [ $EDIT = 1 ]; then + if [ -w $NETWORK_DIR/build ]; then + cp $NETWORK_DIR/build $NETWORK_DIR/.build.save + $EDITOR $NETWORK_DIR/build + if diff -q $NETWORK_DIR/build $NETWORK_DIR/.build.save > /dev/null; then + rm $NETWORK_DIR/.build.save + echo "No modification !" + exit + fi + rm $NETWORK_DIR/.build.save + else + echo "En lecture seule !" + sleep 2 + $EDITOR $NETWORK_DIR/build + exit + fi + rm $NETWORK_DIR/.build.save + fi + + if [ -w $NETWORK_DIR ]; then + ( + cd $NETWORK_DIR + rm -f *.conf + . build + echo "Create \"$(basename $NETWORK_DIR)\" config files..." + echo + build && echo && vdn-graph + touch $(readlink -f $NETWORK_DIR)/network.vdn + ) + else + echo "$NETWORK_DIR not writable !" >&2 + + fi + +done diff --git a/vdn/bin/vdn-busy.rb b/vdn/bin/vdn-busy.rb new file mode 100755 index 0000000..2f0f722 --- /dev/null +++ b/vdn/bin/vdn-busy.rb @@ -0,0 +1,37 @@ +#!/usr/bin/env ruby + +require 'gtk2' + +$cpt=0 + +window = Gtk::Window.new + +window.modal=true +window.set_default_size(640, 140) +#window.signal_connect("delete_event") { +# puts "delete event occurred" +# #true +# false +#} + +window.signal_connect("destroy") { + puts "destroy event occurred" + Gtk.main_quit +} + +window.add(Gtk::Label.new("Load network description... Be patient !")) + +window.show_all + +Gtk.timeout_add(200) { + $cpt=$cpt+1 + if $cpt > 2 + r=system("ps auwx | grep -v grep | grep -q 'ruby.*vdn-gui'") + if r==true + Gtk.main_quit + end + end + true +} + +Gtk.main diff --git a/vdn/bin/vdn-clean b/vdn/bin/vdn-clean new file mode 100755 index 0000000..4b751e4 --- /dev/null +++ b/vdn/bin/vdn-clean @@ -0,0 +1,96 @@ +#!/usr/bin/env bash + +set -eu + +FORCE=0 + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [-f] system +EOF +} + +help() { + cat << EOF + +`basename $0` supprime les modifications d'un système. + +`synopsis` + +-h : affiche cette aide +-f : pas de demande de confirmation + +Remarque : Les fichiers seront regénérés (vides) au prochain + demarrage de la machine. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hf" opt; do + case $opt in + h) help; exit 0;; + f) FORCE=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + + GUEST_NAMES="$@" + [ -z "$GUEST_NAMES" ] && usage || : + +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +SAVE_FILES="" + +for i in $GUEST_NAMES; do + loadGuestVars $i + + [ -n "$SAVE_FILE" ] && { + [ -e $SAVE_FILE ] && \ + SAVE_FILES="$SAVE_FILES $SAVE_FILE" || : + } || : + + [ -n "$HDB" ] && { + set +u + [ -z "$SAVE_DIR_HDB" ] && SAVE_DIR_HDB=$SAVE_DIR + set -u + + [ -e $SAVE_DIR_HDB/$HDB ] && \ + SAVE_FILES="$SAVE_FILES $SAVE_DIR_HDB/$HDB" || : + } || : +done + +if [ -n "$SAVE_FILES" ]; then + + if [ $FORCE = 0 ]; then + echo -e "Supprimer ? :" + for i in $SAVE_FILES; do + du -h $i + done + msg="Supprimer tous les fichiers ?" + request "$msg" + [ $? != 0 ] && exit || : + fi + + echo + rm -f $SAVE_FILES + echo "rm -f $SAVE_FILES" + +else + echo "No files to clean !" >&2 + sleep 1 +fi + diff --git a/vdn/bin/vdn-clean-network b/vdn/bin/vdn-clean-network new file mode 100755 index 0000000..5d2971d --- /dev/null +++ b/vdn/bin/vdn-clean-network @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +networkDir="" + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [networkDir] +EOF +} + +help() { + cat << EOF + +`basename $0` supprime le répertoire des sauvegardes du réseau. + +ATTENTION : aucune demande ne confirmation. + +`synopsis` + +-h : affiche cette aide. + +Si networkDir n'est pas précisé, le répertoire des sauvegardes du réseau +défini par la variable NETWORK_DIR est supprimé. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -eq 1 ] && { networkDir=$1; shift; } + [ $# -ne 0 ] && usage; +} + +# main + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +[ -n "$networkDir" ] && NETWORK_DIR="$networkDir" + +netname=$(basename $NETWORK_DIR) + +rm -Rf $SAVE_PATH/$netname diff --git a/vdn/bin/vdn-clone-network b/vdn/bin/vdn-clone-network new file mode 100755 index 0000000..be74c2e --- /dev/null +++ b/vdn/bin/vdn-clone-network @@ -0,0 +1,69 @@ +#!/usr/bin/env bash + +#set -x + +NEW="" + +networkName="" + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [-n existingNetworkName] [newNetworkName] + +EOF +} + +help() { + cat << EOF + +`basename $0` clone le réseau courant (ou celui précisé par l'option -n). + +`synopsis` + +-h : affiche cette aide. +-n : réseau à cloner. + +Si newNetwork n'est pas précisé, il sera demandé sur l'entrée standard. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hn:" opt; do + case $opt in + h) help; exit 0;; + n) networkName="$OPTARG";; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -eq 1 ] && { NEW=$1; shift; } + [ $# -ne 0 ] && usage; +} + +# main + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +[ -n "$networkName" ] && NETWORK_DIR="$VDN_NETWORKS_BASE_DIR/$networkName" + +export VDN_PATH + +while [ -z "$NEW" ]; do + echo -n "Nom destination : " + read NEW +done + +echo "clone : $NETWORK_DIR to $NEW" +new=$(dirname $NETWORK_DIR)/$NEW +[ -d $new ] && error "Le réseau $NEW existe déja !" || : +cp -a $NETWORK_DIR $new + diff --git a/vdn/bin/vdn-config b/vdn/bin/vdn-config new file mode 100755 index 0000000..47d2bd1 --- /dev/null +++ b/vdn/bin/vdn-config @@ -0,0 +1,120 @@ +#!/usr/bin/env bash + +set -eu + +ADD=0 + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [-a] system variable [value] +EOF +} + +help() { + cat << EOF + +`basename $0` affiche ou modifie une variable de configuration d'un système. + +`synopsis` + +Le fichier de configuration d'un système contient des définitions de variables. + +Si l'argument value n'est pas précisé, cette commande affiche la valeur +de la variable. + +Si l'argument value est précisé, cette commande fixe la valeur de la variable. + +-h : affiche cette aide +-a : ajoute un espace puis la valeur précisée à la valeur courante. + + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "ha" opt; do + case $opt in + h) help; exit 0;; + a) ADD=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + if [ $# -ne 2 ] && [ $# -ne 3 ]; then + usage + fi + + GUEST_NAME="$1" + VAR=$2 + GET=1 + [ $# = 3 ] && { GET=0; VALUE=$3; } + + if echo $GUEST_NAME | grep -q '/'; then + error "$GUEST_NAME est un nom de système invalide" + fi +} + +getValue() { + local file="$1" var="$2" v + v="`cat "$1" | grep "^$var=" | sed -ne 's/^[^=]*="\([^"]*\)".*$/\1/p'`" + [ -z "$v" ] && \ + v="`cat "$1" | grep "^$var=" | sed -ne 's/^[^=]*=\([^ ]*\).*$/\1/p'`" + echo "$v" +} + + + +setValue() { + local file="$1" var="$2" value="$3" + + shift 2 + + cat $file | gawk -v value="$@" -e ' +BEGIN { + found=0 +} + +/^'$var'=/ { + found=1 + print "'$var'=\""value"\"" + next + } + + { print } + +END { if(found==0) print "'$var'=\""value"\"" } + ' > $file.tmp + + mv $file.tmp $file +} + + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + + +GUEST_CONF=$NETWORK_DIR/$GUEST_NAME.conf + +if [ $GET = 1 ]; then + GUEST_OWNER=$USER + loadGuestVars $GUEST_NAME + getValue $GUEST_CONF $VAR +else + if [ $ADD = 1 ]; then + GUEST_OWNER=$USER + loadGuestVars $GUEST_NAME + v=$(getValue $GUEST_CONF $VAR ) + VALUE="$v $VALUE" + fi + setValue $GUEST_CONF $VAR "$VALUE" +fi + diff --git a/vdn/bin/vdn-create-slash b/vdn/bin/vdn-create-slash new file mode 100755 index 0000000..05a9796 --- /dev/null +++ b/vdn/bin/vdn-create-slash @@ -0,0 +1,306 @@ +#!/usr/bin/env bash + +set -eu + +VDN_PATH=$(readlink -f $(dirname $(whereis vdn| cut -d ' ' -f 2))/..) +REVERSE=0 +TRACE=0 +export SLASH=$VDN_PATH/slash + +help() { + cat << EOF + +`basename $0` create slash directoty. + +`synopsis` + +-h : affiche cette aide +-t : lance vdn en mode trace. La capture est placée dans /tmp/vdn.trace (*) +-r : replace par un shebang classique. + +(*) le fichier capture (/tmp/vdn.trace) est utilisé s'il existe par `basename $0`. + +EOF +} + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [-r] + `basename $0` -t +EOF +} + +usage() { + synopsis + exit 2 +} + + + +args() { + local opt + while getopts "hrt" opt; do + case $opt in + h) help; exit 0;; + r) REVERSE=1;; + t) TRACE=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) +} + + + +getTrace() { + strace -f -e trace=file $@ 2>&1 | \ + egrep -v 'ENOENT|unfinished|resumed|attached|exited|SIG' | \ + sed -re 's/^.*"(.*)".*$/\1/' | \ + grep -v $VDN_PATH | \ + grep -v $HOME | \ + egrep '^/' | \ + egrep -v '^/proc|^/etc|^/var|^/tmp/|^/run/|^/sys/|^/dev|^.$' | \ + egrep -v '^/home|^/tmp' | \ + sort -u > /tmp/trace.vdn +} + +copy() { + + s=$SLASH + r='^#' + while read f; do + [ -z "$f" ] && continue + [[ $f =~ $r ]] && continue + #[ $f = "/bin/bash" ] && continue + [ -d $f ] && continue + [ -f $f -o -L $f ] || { + echo "copy : BAD : $f" + continue + } + + #echo ":$f" + + d=$(dirname $f) + [ ! -d $s/$d ] && mkdir -p $s/$d || : + cp -a $f $s/$d || : + + if [ -L $f ]; then + dst=$(readlink $f) + if [[ $dst =~ ^/ ]]; then + echo "ABS ($f) > $dst" + n=$(($(echo $f | sed -re 's/[^/]//g' | wc -c) -2)) + p=$(ruby -e "puts \"../\"*$n") + b=$(basename $f) + rm $s/$d/$b + #ln -sf $s/$dst $s/$d/$b + ln -sf $p/$dst $s/$d/$b + echo $dst | copy + elif [[ $dst =~ ^/ ]]; then + echo "REL ($f) > $dst" + echo $dst | copy + else + echo $d/$dst | copy + fi + fi + #echo "==> $f" + done +} + +findLibIte() { + local i e + + while :; do + + e=${ALL[$N]} + + [ -z "$e" ] && break + + for i in $(ldd $e | grep '=>' | sed -re 's/.*=> *([^ ]*) .*$/\1/g'); do + [[ ${ALL[@]} =~ (^| )$i( |$) ]] && continue + ALL+=("$i") # push + echo -ne "Found lib dependencies: ${#ALL[@]} ...\r" >&2 + done + N=$((N+1)) + done + + echo "${ALL[@]}" +} + +findShebang() { + local shebang + find $VDN_PATH -type f | while read f; do + shebang=$(dd if=$f bs=1 count=2 2> /dev/null | tr '\0' '\n' ) + reg='#!' + [[ "$shebang" =~ $reg ]] && echo $f + done +} + +setShebang() { + local shebang + while read f; do + #echo "---" + #echo $f + shebang=$(cat $f 2> /dev/null | gawk -e '{ print; exit 0 }' | tr '\0' '\n' 2> /dev/null) + #echo $shebang + new=$(echo "$shebang" | sed -re 's/#! */#!/' | gawk -v SHEBANG=$SHEBANG -e ' +/env/ { print SHEBANG" "$2" "$3; exit } +{ sub(/^.*\//, "", $1); printf SHEBANG" "$1" "$2" "$3 ; exit } + ') + #echo "new=$new" + sed -i -re "1s,.*,$new," $f + + #sed -i -re '1s,(.*) -u,\1\n\nset -eu,' $f + #head -n 3 $f + done + } + +findElf() { + local elf + find $VDN_PATH/slash -type f | while read f; do + elf=$(dd if=$f bs=1 count=10 2> /dev/null | tr '\0' '\n' ) + reg='ELF' + [[ "$elf" =~ $reg ]] && echo $f + done +} + +setElf() { + while read f; do + + if ! patchelf --print-interpreter $f &> /dev/null; then + continue + fi + + echo "patch $f" + + patchelf --set-interpreter "/tmp/vdn-slash/lib/x86_64-linux-gnu/ld-2.24.so" $f + done + + } + + + depends() { + rm -Rf $SLASH + mkdir $SLASH + + rm -f /tmp/vdn-list-cmd + + [ -e /tmp/vdn.trace ] && { + echo "Read trace" + cat /tmp/vdn.trace >> /tmp/vdn-list-cmd + } + + echo "Scan commands" + + vdn-find-commands >> /tmp/vdn-list-cmd + + echo "Add manual dependencies" + + cat << EOF >> /tmp/vdn-list-cmd +/bin/bash + +/bin/ls +/bin/sh +/bin/dash + +/usr/bin/less +/usr/bin/strace + +/usr/bin/vim.gtk +/usr/bin/ldd +/usr/bin/basename + +/usr/bin/xclock +/usr/bin/xauth + + +/lib/x86_64-linux-gnu/libreadline.so.7 + +/usr/bin/gdk-pixbuf-query-loaders + +/usr/share/gir-1.0/Gio-2.0.gir +/lib64/ld-linux-x86-64.so.2 +/usr/bin/python2.7 +/usr/bin/python2.7-config +/lib/x86_64-linux-gnu/libaudit.so.1 +/lib/x86_64-linux-gnu/libpcre.so.3 +/lib/x86_64-linux-gnu/libprocps.so.6 +/lib/x86_64-linux-gnu/libselinux.so.1 +/lib/x86_64-linux-gnu/libtinfo.so.5 +/lib/x86_64-linux-gnu/libtinfo.so.5.9 +/lib/x86_64-linux-gnu/libnss_dns.so.2 + +/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so +EOF + + echo "Find dependencies..." + + #echo "/bin/bash" > /tmp/vdn-list-cmd + + #cat /tmp/vdn-list-cmd + + cat /tmp/vdn-list-cmd | sort -u | { + declare -a ALL + N=0 + + while read l; do + [[ "$l" =~ ^[[:space:]]*$ ]] && continue + [[ "$l" =~ ^[[:space:]]*# ]] && continue + ALL+=("$l") # push + done + + N=0 + + while :; do + + set +u + e=${ALL[$N]} + set -u + + [ -z "$e" ] && { break; } + + for i in $(ldd $e 2> /dev/null | grep '=>' | sed -re 's/.*=> *([^ ]*) .*$/\1/g'); do + [[ ${ALL[@]} =~ (^| )$i( |$) ]] && continue + ALL+=("$i") # push + #echo -e "Found lib dependencies ${#ALL[@]} : $i ...\r" >&2 + done + N=$((N+1)) + done + echo ${ALL[@]} | tr ' ' '\n' | sort -u > /tmp/vdn-list-files + } + + } + + + # main + + args "$@" + + [ $REVERSE = 1 ] && { + SHEBANG="#!/usr/bin/env" + echo "Reverse shebang : $SHEBANG" + SHEBANG="#!/usr/bin/env"; findShebang | setShebang $SHEBANG + exit + } + + [ $TRACE = 1 ] && { + + getTrace $@ + + exit + } + + + SHEBANG="#!/tmp/vdn-slash/usr/bin/env" + + depends + echo "Copy..."; cat /tmp/vdn-list-files | copy + echo "Patch shebang"; findShebang | setShebang $SHEBANG + echo "Patch elf"; findElf | setElf + + echo "Update pixbuf loader module file" + [ ! -d $VDN_PATH/slash/usr/lib/gdk-pixbuf-2.0/2.10.0/ ] && mkdir -p $VDN_PATH/slash/usr/lib/gdk-pixbuf-2.0/2.10.0/ + gdk-pixbuf-query-loaders $VDN_PATH/slash/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/* |\ + sed -re "s,$VDN_PATH/slash,/tmp/vdn-slash,"> $VDN_PATH/slash/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache + #gdk-pixbuf-query-loaders $VDN_PATH/slash/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/* > $VDN_PATH/slash/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders.cache + + diff --git a/vdn/bin/vdn-delete b/vdn/bin/vdn-delete new file mode 100755 index 0000000..232e1df --- /dev/null +++ b/vdn/bin/vdn-delete @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] system +EOF +} + +help() { + cat << EOF + +`basename $0` supprime le fichier de configuration du système. + +`synopsis` + +-h : affiche cette aide + +ATTENTION : aucune demande de confirmation n'est demandée ! + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 1 ] && usage + + GUEST_NAME="$1" +} + + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +isDefined $GUEST_NAME || exit 0 + +setGuestVars $GUEST_NAME + +rm $GUEST_CONF + diff --git a/vdn/bin/vdn-delete-disks b/vdn/bin/vdn-delete-disks new file mode 100755 index 0000000..db79fc7 --- /dev/null +++ b/vdn/bin/vdn-delete-disks @@ -0,0 +1,83 @@ +#!/usr/bin/env bash + +set -eu + +FORCE=0 +LIST="" + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [-f] system... +EOF +} + +help() { + cat << EOF + +`basename $0` supprime les disques associés au(x) système(s). + +`synopsis` + +Les disques HDA, HDB et CDROM du système présents dans le répertoire "files" +sont supprimés. + +-h : affiche cette aide +-f : force : pas de demande de confirmation ! + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hf" opt; do + case $opt in + h) help; exit 0;; + f) FORCE=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -lt 1 ] && usage + + for i; do + GUEST_NAME="$i" + if echo $GUEST_NAME | grep -q '/'; then + error "$GUEST_NAME est un nom de système invalide" + fi + + HDA=""; HDB=""; CDROM="" + loadGuestVars $GUEST_NAME + LIST="$LIST $HDA $HDB $CDROM" + + done +} + +deleteDisks() { + + for b in $LIST; do + #b=$(basename $i) + if [ -e $VDN_PATH/files/$b ]; then + echo "Suppression de $VDN_PATH/files/$b" + if [ $FORCE = 1 ]; then + rm -f $VDN_PATH/files/$b + else + rm -i $VDN_PATH/files/$b + fi + fi + done +} + + +# Programme principal + +GUEST_OWNER=$USER +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +deleteDisks diff --git a/vdn/bin/vdn-delete-network b/vdn/bin/vdn-delete-network new file mode 100755 index 0000000..d17cb12 --- /dev/null +++ b/vdn/bin/vdn-delete-network @@ -0,0 +1,72 @@ +#!/usr/bin/env bash + +#set -x + +NEW="" +FORCE=0 + +networkDir="" + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [-f] networkDir + +EOF +} + +help() { + cat << EOF + +`basename $0` supprime le réseau. + +`synopsis` + +-h : affiche cette aide. +-f : PAS de demande de confirmation ! + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hf" opt; do + case $opt in + h) help; exit 0;; + f) FORCE=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -eq 1 ] && { networkDir=$1; shift; } + [ $# -ne 0 ] && usage; +} + +# main + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +[ -n "$networkDir" ] && NETWORK_DIR="$networkDir" + +export VDN_PATH + + +echo "DETETE $NETWORK_DIR" +echo + +if [ $FORCE = 0 ]; then + msg=$(echo -e "Supprimer:\n$NETWORK_DIR" | tr -s ' ' '\n') + request "$msg" + [ $? != 0 ] && exit || : + fi + + + +[ -d $NETWORK_DIR ] && rm -Rf $NETWORK_DIR || : + diff --git a/vdn/bin/vdn-diff b/vdn/bin/vdn-diff new file mode 100755 index 0000000..93ebf14 --- /dev/null +++ b/vdn/bin/vdn-diff @@ -0,0 +1,96 @@ +#!/usr/bin/env bash + +set -eu + +TMP1="/tmp/vdn-dir1" +TMP2="/tmp/vdn-dir2" +TMP="/tmp/vdn-dir" +EXCLUDES="" + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] dir1 dir2 +EOF +} + +help() { + cat << EOF + +`basename $0` affiche les différences dans les archives des modifications. + +dir1 et dir2 doivent contenir les archives des modifications des systèmes. + +Exemple : `basename $0` ~/.vdn-0.7.bak/demo ~/.vdn-0.7/demo + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + + shift $(($OPTIND - 1)) + [ $# -ne 2 ] && usage + + DIR1=$1 + DIR2=$2 +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +[ ! -d "$DIR1" ] && usage +[ ! -d "$DIR2" ] && usage + + +l1=$(cd $DIR1; ls *.tgz) +l2=$(cd $DIR2; ls *.tgz) +l=$(echo "$l1 $l2" | tr " " '\n' | sort -u | tr '\n' ' ') + +for i in $l; do + echo + echo "#------------------------------------------------------------" + echo "### $i" + echo "#------------------------------------------------------------" + echo + + if [ ! -e $DIR1/$i ]; then + echo "error : $DIR1/$i absent" + continue + fi + if [ ! -e $DIR2/$i ]; then + echo "error : $DIR2/$i absent" + continue + fi + + rm -Rf $TMP1 $TMP2 + mkdir $TMP1 $TMP2 + tar -C $TMP1 -xzf $DIR1/$i 2> /dev/null + tar -C $TMP2 -xzf $DIR2/$i 2> /dev/null + + for f in $EXCLUDES; do + rm -Rf $TMP1/$f; rm -Rf $TMP2/$f + done + + diff -Bru $TMP1 $TMP2 2> /dev/null || true + +done + +echo "### END ###" diff --git a/vdn/bin/vdn-doc b/vdn/bin/vdn-doc new file mode 100755 index 0000000..2ff95f9 --- /dev/null +++ b/vdn/bin/vdn-doc @@ -0,0 +1,139 @@ +#!/usr/bin/env bash + +set -eu + + +VDN_PATH=$(readlink -f $(dirname $0)/..); + +synopsis() { + cat << EOF +Usage : $(basename $0) [-h] +EOF +} + +help() { + cat << EOF + +`basename $0` extrait la documentation à partir de l'aide des commandes. + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 0 ] && usage || : + +} + + +scan() { + cd $VDN_PATH/bin + for i in *; do + + [[ $i =~ .rb$ ]] && continue + [[ $i =~ .sh$ ]] && continue + + [ ! -f $i ] && continue + + [ ! -x $i ] && continue + + echo "=== $i ===" + $i -h + echo + + done +} + + +args $@ + +#scan + +doc() { + echo "=== $1 ===" + echo -n "" + $1 -h + echo "" + echo +} + +cat << EOF > /tmp/doc.txt + +===== Liste des commandes VDN ==== + +==== Pour l'administrateur ==== + +$(doc vdn-prepare) + +==== Pour l'utilisateur ==== + +$(doc vdn-clean) +$(doc vdn-download-disks) +$(doc vdn-halt) +$(doc vdn-infos) +$(doc vdn-kill) +$(doc vdn-list) +$(doc vdn-start) + +==== Pour le développeur (de disques et de réseaux) ==== + +$(doc vdn-build-network) +$(doc vdn-clean-network) +$(doc vdn-delete-disks) +$(doc vdn-delete) +$(doc vdn-scp) +$(doc vdn-ssh) +$(doc vdn-ssh-copy-id) +$(doc vdn-ssh-loop) + + +==== Non classées ==== + +$(doc vdn-alive) +$(doc vdn-alives) +$(doc vdn-build) +$(doc vdn-config) +$(doc vdn-create-slash) +$(doc vdn-diff) +$(doc vdn-doc) +$(doc vdn-graph) +$(doc vdn-kvm) +$(doc vdn-mount-chroot) +$(doc vdn-open-network) +$(doc vdn-push) +$(doc vdn-restart) +$(doc vdn-save) +$(doc vdn-scripts) +$(doc vdn-set-network-dir) +$(doc vdn-set-var) +$(doc vdn-shell) +$(doc vdn-show) +$(doc vdn-ssh-loop) +$(doc vdn-start-wrapper) +$(doc vdn-terminal) +$(doc vdn-test) +$(doc vdn-test-kvm) +$(doc vdn-upload-disks) +$(doc vdn-vnc-viewer) + +EOF + +cat /tmp/doc.txt + + diff --git a/vdn/bin/vdn-docker b/vdn/bin/vdn-docker new file mode 100755 index 0000000..1336158 --- /dev/null +++ b/vdn/bin/vdn-docker @@ -0,0 +1,183 @@ +#!/bin/bash + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] +EOF +} + +help() { + cat << EOF + +`basename $0` démarre la machine virtuelle debian-1 du réseau virtualMachines. + +La commande ~vdn/vdn/bin/vdn est une alternative graphique à ce script. + +`synopsis` + +-h : affiche plus d'aide + +EOF +} + +helpStart() { + + cat << EOF + +Pour vous connecter en tant qu'utilisateur test sur debian-1 : + + vdn-ssh -X test@debian-1 # -X : pour recevoir les fenêtres graphiques de debian-1. + +Pour vous connectez root : + + vdn-ssh -X root@debian-1 # -X : pour recevoir les fenêtres graphiques de debian-1. + +Pour arrêter la machine virtuelle : + +vdn-halt debian-1 # ou la commande (root) "poweroff" dans votre machine virtuelle. + +Si la machine ne réponds pas : + +vdn-kill debian-1 # ARRÊT BRUTAL : équivalent à une coupure électrique ! + +Pour un écran graphique (VNC) de la debian-1 : + +vous devrez fixer un mot de passe à l'utilisateur (commande passwd). + +vdn-viewer debian-1 + +`basename $0` -h pour plus d'aide (vdn-scp, vdn-sshfs, ...). + +EOF +} + +helpWarning() { + +cat << EOF + +** AVERTISSEMENT ** + +Vous êtes l'administrateur unique de vos machines virtuelles ! + +En tant qu'administrateur vous avez la charge de leur intégrité ! + +Ce système est une Debian buster classique avec authentification ssh par clés. + +L'authentification ssh par clés, uniquement active par défaut pour +l'utilisateur propriétaire de la machine virtuelle, permet de ne pas avoir +à connaitre les mots de passes (générés initialement aléatoirement). + +Vous pouvez changer les mots de passe mais, votre machine virtuelle étant +connectée au réseau pédagogique et à Internet (via le proxy du réseau +pédagogique si ce dernier est ouvert), choisissez de bons mots de passe ! + +**************************************************************************** +N'utilisez pas et ne stockez pas de mots de passe (ou tout autre information +"sensible") provenant du monde "réel" dans vos machines virtuelles ! +**************************************************************************** + +EOF + +echo -n "Appuyez sur la touche Entrée pour la suite "; read resp + +} + +helpPlus() { + +cat << EOF + + +** Informations ** + +Les commandes vdn-* disposent toutes d'une documentation intégrée obtenue +avec l'option -h. + +Outre la commande vdn-ssh déjà présentée plus haut, les commandes suivantes +vont cous permettre de "joindre" votre machine virtuelle à partir de l'hôte : + +vdn-scp : effectue un scp à partir ou à destination d'un système virtuel. +vdn-sshfs : monte un répertoire du système virtuel dans un répertoire de l'hôte. +vdn-ssh-copy-id : copie une clé publique dans un système virtuel. + +Appliquez l'option -h à une de ces commandes pour un exemple. + +EOF + +cat << EOF + + +** Notes ** + +La documentation générale sur VDN, est accessible ici : +https://opale.u-clermont1.fr/info/wiki/doku.php?id=public:vdn:start + +S'il vous reste de la place sur le disque de votre machine virtuelle (df -h), +n'hésitez pas à installer, dans un cadre pédagoqique, les paquets/logiciels +de votre choix. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; helpStart; helpPlus; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ -n "$*" ] && usage || : + +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)); . $VDN_PATH/bin/functions.sh + +args "$@" + +n="debian-1" + +if vdn-alive $n; then + helpStart + error "Le système virtuel $n est déjà lancé !" +fi + +helpWarning + +vdn-set-network-dir $VDN_PATH/networks/virtualMachines + +vdn -t # test host + +echo +echo -n "vdn-start debian-1 " + +vdn-start -b -v "KVM_VIEWER_AUTOSTART=0" debian-1 + +cpt=0 +while ! vdn-ssh -n -o ConnectTimeout=1 root@debian-1 exit 0 2> /dev/null; do + echo -n "." + cpt=$(($cpt+1)) +done + +echo "( $cpt sec.)" + +echo "Démarrage du service docker..." + +vdn-scripts -n startDocker &> /dev/null +r=$? + +helpStart + +[ $r -ne 0 ] && warning "Echec du démarrage de docker". + +echo "debian-1 démarrée !" + diff --git a/vdn/bin/vdn-download-disks b/vdn/bin/vdn-download-disks new file mode 100755 index 0000000..b08fca4 --- /dev/null +++ b/vdn/bin/vdn-download-disks @@ -0,0 +1,237 @@ +#!/usr/bin/env bash + +set -eu + +set -x + +DRY=0 +SYSTEMS="" +FORCE=0 +DDISK=0 + +synopsis() { + cat << EOF +Usage : `basename $0` [-hdf] system... + `basename $0` -t disk +EOF +} + +help() { + cat << EOF + +`basename $0` télécharge les disques associés au(x) système(s). + +`synopsis` + +Les disques utilisés par les systèmes spécifiés sont téléchargés. + +Remarque : les fichiers "*.disk.gz" sont automatiquement decompressés. + +-h : affiche cette aide +-d : dry run +-f : pas de demande de confirmation + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hdft" opt; do + case $opt in + h) help; exit 0;; + d) DRY=1;; + f) FORCE=1;; + t) DDISK=1;; + ?) usage;; + esac + done + shift $(($OPTIND-1)) + SYSTEMS=$@ + if [ -z "$SYSTEMS" ]; then + SYSTEMS=$(vdn-list | grep -v '^#') + fi + #[ $# -lt 1 ] && usage +} + +download() { + + local i + + echo "start download func" + + + for i in $@; do + + echo "loop" + file=$(basename $i .gz) + echo "file:$file" + if [[ $i =~ \.gz ]]; then + if [ $DRY = 1 ]; then + echo "Dry run : download $i" + else + echo "Download to $VDN_PATH/files/$file..." + wget -c -O - $i | { gzip -d -c || error "Problème de téléchargement"; } | \ + dd of=$VDN_PATH/files/$file conv=sparse bs=512 || \ + error "Problème de téléchargement" + fi + if [ "$(stat -c %s $VDN_PATH/files/$file)" = "0" ]; then + error "Problème de téléchargement" + fi + + else + echo "no gz" + if [ $DRY = 1 ]; then + echo echo "Dry run : download $i" + else + wget -c -O $VDN_PATH/files/$file $i + fi + fi + done +} + +downloadDisks() { + + local error=0 absent=0 r + + LIST="" + LIST_DISKS="" + + # find all files (uniq) + + for i; do + GUEST_NAME="$i" + if echo $GUEST_NAME | grep -q '/'; then + error "$GUEST_NAME est un nom de système invalide" + fi + + DISKS_REPOSITOY=""; + CDROM_REPOSITORY=""; + HDA=""; HDB=""; CDROM=""; BOOT_CDROM="0"; + KERNEL=""; INITRAMFS="" + + loadGuestVars $GUEST_NAME + + [ "$MODE" = "tgz" ] && { + [ -n "$KERNEL" ] && LIST="$LIST $DISKS_REPOSITORY/$KERNEL" + [ -n "$INITRAMFS" ] && LIST="$LIST $DISKS_REPOSITORY/$INITRAMFS" + } + + #[ -n "$CDROM" -a "$BOOT_CDROM" = 1 ] && + [ -n "$CDROM" ] && \ + LIST="$LIST $CDROM_REPOSITORY/$CDROM" + + [ -n "$HDA" ] && LIST_DISKS="$LIST_DISKS $DISKS_REPOSITORY/$HDA.gz" + [ -n "$HDB" ] && LIST_DISKS="$LIST_DISKS $DISKS_REPOSITORY/$HDB.gz" + + done + + #set -x + LIST_DISKS=$(echo $LIST_DISKS | tr -s ' ' '\n' | sort -u | grep -v '^$') + LIST=$(echo $LIST | tr -s ' ' '\n' | sort -u | grep -v '^$' || :) + + LIST="$LIST $LIST_DISKS" + + #echo "LIST :" + #echo $LIST | tr -s ' ' '\n' + + # test dates + + LIST_DOWNLOAD="" + + for i in $LIST; do + file=$(basename $i .gz) + locDate=0 + [ -e $VDN_PATH/files/$file ] && \ + locDate=$(stat -c %Y $VDN_PATH/files/$file) + + set +e + reInfos="$(wget --spider -S $i 2>&1)" + r=$? + set -e + + if [ $r -ne 0 ]; then + warning "$(basename $i) not found on server !" + error=1 + [ ! -e $VDN_PATH/files/$file ] && absent=1 + continue + fi + + reDate=$(echo "$reInfos" | grep "Last-Modified:" | cut -d ':' -f 2-) + reDate=$(date -d "$reDate" +%s) + + #echo $locDate $reDate + + [ $locDate -lt $reDate ] && LIST_DOWNLOAD="$LIST_DOWNLOAD $i" + done + + if [ $error = 1 ]; then + if [ -n "$LIST_DOWNLOAD" ]; then + if [ $FORCE = 0 ]; then + request "Tous les fichiers ne peuvent être téléchargés !\nTélécharger quand même ceux qui peuvent l'être ?" + [ $? -ne 0 ] && exit 0 + fi + fi + fi + + + [ -n "$LIST_DOWNLOAD" ] && { + echo + echo "LIST_DOWNLOAD :" + echo + echo $LIST_DOWNLOAD | tr -s ' ' '\n' + echo + + NEW="" + + for i in $(echo $LIST_DOWNLOAD | tr -s ' ' '\n'); do + request "Télécharger le fichier : $i ?" + + [ $? -eq 0 ] && NEW="$NEW $i" || : + done + LIST_DOWNLOAD=$NEW + + } + + if [ -n "$LIST_DOWNLOAD" -a $FORCE = 0 ]; then + request "Télécharger les fichiers ?" + [ $? -ne 0 ] && exit 0 + fi + + + # download + + echo "LIST_DOWNLOAD:$LIST_DOWNLOAD" + download $LIST_DOWNLOAD + + echo "End of download" + + for i in $LIST; do + file=$(basename $i .gz) + if [ ! -e $VDN_PATH/files/$file ]; then + warning "$file absent" + absent=1 + fi + done + + [ $absent = 1 ] && error "Fichiers manquants" || : +} + + +# Programme principal + +GUEST_OWNER=$USER +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + + +args "$@" + +if [ $DDISK = 1 ]; then + download http://opale.u-clermont1.fr/vdn/files/$SYSTEMS +else + downloadDisks $SYSTEMS +fi diff --git a/vdn/bin/vdn-download-network b/vdn/bin/vdn-download-network new file mode 100755 index 0000000..e57b38b --- /dev/null +++ b/vdn/bin/vdn-download-network @@ -0,0 +1,86 @@ +#!/usr/bin/env bash + +set -eu + +#set -x + +DRY=0 +SYSTEMS="" +FORCE=0 + +synopsis() { + cat << EOF +Usage : `basename $0` [-hdf] url +EOF +} + +help() { + cat << EOF + +`basename $0` télécharge le réseau. + +`synopsis` + +-h : affiche cette aide +-d : dry run +-f : pas de demande de confirmation + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hf" opt; do + case $opt in + h) help; exit 0;; + f) FORCE=1;; + ?) usage;; + esac + done + shift $(($OPTIND-1)) + [ $# -gt 1 ] && usage + [ $# -eq 1 ] && URL=$1 || URL="" +} + +download() { + + file=$(basename $URL .zip) + if [ $file.zip = $URL ]; then + URL="$DEFAULT_REPOSITORY/$file" + fi + + echo "file:$file" + + rm -f $TMPDIR/$file.zip + + wget -c -O $TMPDIR/$file.zip $URL + + if [ -e $VDN_NETWORKS_BASE_DIR/$file -a $FORCE = 0 ]; then + requestNo "Network exist ! Overwrite ?" + fi + + if [ $FORCE = 0 ]; then + request "Extract $file.zip ?" + fi + + ( cd $VDN_NETWORKS_BASE_DIR; rm -Rf $file; unzip -x $TMPDIR/$file.zip ) +} + + +# Programme principal + +GUEST_OWNER=$USER +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +if [ -z "$URL" ]; then + echo -n "URL (ex: http:truc.bidule/net.zip) : " + read URL +fi +download $URL diff --git a/vdn/bin/vdn-exec-in-fakechroot b/vdn/bin/vdn-exec-in-fakechroot new file mode 100755 index 0000000..630b16d --- /dev/null +++ b/vdn/bin/vdn-exec-in-fakechroot @@ -0,0 +1,27 @@ +#!/bin/bash + +FAKECHROOT_DIR=/tmp/vdn-fakechroot-$USER/part + +echo "FAKECHROOT_DIR:$FAKECHROOT_DIR" + +echo "Exec..." + +set -x + +export LD_LIBRARY_PATH=$FAKECHROOT_DIR/lib:$FAKECHROOT_DIR/usr/lib:$FAKECHROOT_DIR/usr/lib/x86_64-linux-gnu:/lib:/usr/lib:/usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:$FAKECHROOT_DIR/lib/x86_64-linux-gnu:$FAKECHROOT_DIR/usr/lib/x86_64-linux-gnu/pulseaudio:$FAKECHROOT_DIR/usr/lib/x86_64-linux-gnu:$FAKECHROOT_DIR/lib/x86_64-linux-gnu:$VDN_PATH/distribs/lib + +export LD_LIBRARY_PATH=$FAKECHROOT_DIR/lib:$FAKECHROOT_DIR/usr/lib:$FAKECHROOT_DIR/usr/lib/x86_64-linux-gnu:FAKECHROOT_DIR/lib/x86_64-linux-gnu:$FAKECHROOT_DIR/usr/lib/x86_64-linux-gnu/pulseaudio:$FAKECHROOT_DIR/usr/lib/x86_64-linux-gnu:$FAKECHROOT_DIR/lib/x86_64-linux-gnu:$VDN_PATH/distribs/lib + +export GIO_MODULE_DIR=$FAKECHROOT_DIR/usr/lib/x86_64-linux-gnu/gio + +#PATH="$FAKECHROOT_DIR/bin:$FAKECHROOT_DIR/usr/bin:$VDN_PATH/bin" + +#echo LD_LIBRARY_PATH=$LD_LIBRARY_PATH +#echo PATH=$PATH + +echo "LD_LIBRARY_PATH:$LD_LIBRARY_PATH" + +echo "### before exec..." + +exec $* + diff --git a/vdn/bin/vdn-fakechroot b/vdn/bin/vdn-fakechroot new file mode 100755 index 0000000..07663d1 --- /dev/null +++ b/vdn/bin/vdn-fakechroot @@ -0,0 +1,149 @@ +#!/usr/bin/env bash + +set -eu + +UMOUNT=0; + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] +EOF +} + +help() { + cat << EOF + +`basename $0` monte (via fuse) le disque et configure fakechroot pour l'utiliser. + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hu" opt; do + case $opt in + h) help; exit 0;; + u) UMOUNT=1;; + ?) usage;; + esac + done +} + +vdnUmount() { + + fusermount -u $FAKECHROOT_DIR/unionfs || : + fusermount -u $FAKECHROOT_DIR//unionfs-2/etc ||: + fusermount -u $FAKECHROOT_DIR//unionfs-2/home ||: + fusermount -u $FAKECHROOT_DIR//unionfs-2/tmp ||: + fusermount -u $FAKECHROOT_DIR/unionfs-1 || : + fusermount -u $FAKECHROOT_DIR/unionfs-2 || : + + fusermount -u $FAKECHROOT_DIR/part || : + fusermount -u $FAKECHROOT_DIR/offset || : +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +FAKECHROOT_DIR=/tmp/vdn-fakechroot-$USER + +if [ $UMOUNT = 1 ]; then + vdnUmount + exit $? +fi + +[ ! -d $FAKECHROOT_DIR/offset ] && mkdir -p $FAKECHROOT_DIR/offset || : +bbfs $VDN_PATH/files $FAKECHROOT_DIR/offset + +[ ! -d $FAKECHROOT_DIR/part ] && \ + mkdir $FAKECHROOT_DIR/part || : + +ext4fuse $FAKECHROOT_DIR/offset/DebianBuster-amd64.disk $FAKECHROOT_DIR/part -o allow_other + +[ ! -d $FAKECHROOT_DIR/unionfs-1 ] && mkdir -p $FAKECHROOT_DIR/unionfs-1 || : +unionfs -o max_files=64000 -o allow_other -o relaxed_permissions $FAKECHROOT_DIR/part=RW $FAKECHROOT_DIR/unionfs-1 +#rm -Rf $FAKECHROOT_DIR/unionfs-1/etc +# -o uid=1000 -o gid=1000 + +[ ! -d $FAKECHROOT_DIR/unionfs-2/etc ] && mkdir -p $FAKECHROOT_DIR/unionfs-2/etc || : +unionfs -o max_files=64000 -o allow_other,use_ino,suid,dev -o relaxed_permissions /etc=RW $FAKECHROOT_DIR/unionfs-2/etc + +[ ! -d $FAKECHROOT_DIR/unionfs-2/home ] && mkdir -p $FAKECHROOT_DIR/unionfs-2/home || : +unionfs -o max_files=64000 -o allow_other,use_ino,suid,dev -o relaxed_permissions /home=RW $FAKECHROOT_DIR/unionfs-2/home + +[ ! -d $FAKECHROOT_DIR/unionfs-2/tmp ] && mkdir -p $FAKECHROOT_DIR/unionfs-2/tmp || : +unionfs -o max_files=64000 -o allow_other,use_ino,suid,dev -o relaxed_permissions /tmp=RW $FAKECHROOT_DIR/unionfs-2/tmp + +[ ! -d $FAKECHROOT_DIR/unionfs ] && mkdir -p $FAKECHROOT_DIR/unionfs || : +##unionfs -o cow -o max_files=64000 -o allow_other,use_ino,suid,dev,nonempty /=RW:$FAKECHROOT_DIR/part=RO $FAKECHROOT_DIR/unionfs +set -x +unionfs -o cow -o max_files=64000 -o allow_other,use_ino,suid,dev -o relaxed_permissions \ + $FAKECHROOT_DIR/unionfs-2=RW:$FAKECHROOT_DIR/unionfs-1=RO $FAKECHROOT_DIR/unionfs + +#echo shell +#bash +#exit +echo fakechroot:$FAKECHROOT_DIR/unionfs + +fakechroot -s chroot $FAKECHROOT_DIR/unionfs /bin/bash -i + +echo Press Enter to umont +read + +vdnUmount + +#[ ! -d $FAKECHROOT_DIR/unionfs-home/home ] && mkdir -p $FAKECHROOT_DIR/unionfs-home/home || : +#unionfs -o cow -o max_files=64000 -o allow_other,use_ino,suid,dev,nonempty $FAKECHROOT_DIR/part=RO $FAKECHROOT_DIR/unionfs + + + +#ls $FAKECHROOT_DIR/part + +# config fakechroot + +#PATH="$PATH:/bin:/usr/bin" + +#export FAKECHROOT_DIR + +#DIR=$FAKECHROOT_DIR/part + +#export FAKECHROOT_EXCLUDE_PATH=/tmp:/proc:/dev:/sys:/var/run:/home:/etc/passwd + +#export LD=$DIR/lib:$DIR/usr/lib:$DIR/usr/lib/x86_64-linux-gnu:$DIR/lib/x86_64-linux-gnu:/lib:/usr/lib:/usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:$DIR/usr/lib/x86_64-linux-gnu/pulseaudio:$DIR/usr/lib/x86_64-linux-gnu:$DIR/lib/x86_64-linux-gnu:$VDN_PATH/distribs/lib + +#export GIO_MODULE_DIR=$DIR/usr/lib/x86_64-linux-gnu/gio + +#export LD_LIBRARY_PATH=$VDN_PATH/distribs/lib + +#echo "LD_LIBRARY_PATH:$LD_LIBRARY_PATH" + +#echo "### before fakechroot..." + +#echo "export LD_LIBRARY_PATH=$FAKECHROOT_DIR/part/lib/x86_64-linux-gnu" + + +#/usr/bin/fakechroot -s /usr/sbin/chroot $FAKECHROOT_DIR/part $VDN_PATH/bin/vdn-exec-in-fakechroot $@ +#/usr/bin/fakechroot -s /usr/sbin/chroot $FAKECHROOT_DIR/part /bin/bash -c "/bin/bash $VDN_PATH/bin/vdn" +#fakechroot /usr/sbin/chroot $FAKECHROOT_DIR/part /bin/bash + +#proot -r $FAKECHROOT_DIR/part /bin/bash + + + +#/usr/bin/fakechroot /usr/sbin/chroot $FAKECHROOT_DIR/part $VDN_PATH/bin/vdn-exec-in-fakechroot ls +#/usr/bin/fakechroot /usr/sbin/chroot $FAKECHROOT_DIR/part /bin/ls +#/usr/bin/fakechroot /bin/bash -c "/usr/sbin/chroot $FAKECHROOT_DIR/part $VDN_PATH/bin/vdn-exec-in-fakechroot $@" + + diff --git a/vdn/bin/vdn-fakechroot-umount b/vdn/bin/vdn-fakechroot-umount new file mode 100755 index 0000000..d38c949 --- /dev/null +++ b/vdn/bin/vdn-fakechroot-umount @@ -0,0 +1,52 @@ +#!/usr/bin/env bash + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] +EOF +} + +help() { + cat << EOF + +`basename $0` démonte le disque. + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +FAKECHROOT_DIR=/tmp/vdn-fakechroot-$USER + +fusermount -u $FAKECHROOT_DIR/part || : +fusermount -u $FAKECHROOT_DIR/offset || : + + + + + diff --git a/vdn/bin/vdn-find-ident.old b/vdn/bin/vdn-find-ident.old new file mode 100755 index 0000000..45eb4c1 --- /dev/null +++ b/vdn/bin/vdn-find-ident.old @@ -0,0 +1,67 @@ +#!/usr/bin/env bash + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] +EOF +} + +help() { + cat << EOF + +`basename $0` affiche le premier identificateur libre pour un nouveau système. + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 0 ] && usage || : +} + +findIdent() { + local i=0 + local configs="`find $NETWORK_DIR -follow -type f -name \"*.conf\"`" + if [ -n "$configs" ]; then + for i in `seq 0 256`; do + if ! grep -Eq "^IDENT=$i([[:space:]]|$)" $configs; then + break + fi + done + if [ $i = 256 ]; then + error "Aucun identificateur disponible" + fi + fi + + echo $i +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +ident=`findIdent` + +echo $ident + + diff --git a/vdn/bin/vdn-fuse-proot b/vdn/bin/vdn-fuse-proot new file mode 100755 index 0000000..f7dbccf --- /dev/null +++ b/vdn/bin/vdn-fuse-proot @@ -0,0 +1,168 @@ +#!/usr/bin/env bash + +set -eu +#set -x + +DISK_NAME="DebianBuster-amd64.disk" +FOR_ROOT=0 +USE_SUDO=0 +UMOUNT=0 + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [-r] [-i user] [-s] [-u] +EOF +} + +help() { + cat << EOF + +`basename $0` exécute VDN dans un environnement proot en utilisant le disque : + +$DISK + +`synopsis` + +-h : affiche cette aide. +-u : démontages seulement. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hrsi:u" opt; do + case $opt in + h) help; exit 0;; + u) UMOUNT=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 0 ] && usage || : +} + +vdnMountProotForRoot() { + + key="$(cat $TMPDIR/vdn-key-$USER)" + + disp=$(cat $TMPDIR/vdn-display-$USER) + + d=$TMPDIR/vdn-chroot-$USER; + + if [ $UMOUNT = 0 ]; then + + mount | grep -q $d || mount -o loop,offset=$((2048*512)) $DISK $d + + for i in /dev /dev/pts /sys /proc /tmp; do + mount | grep -q $d$i || { mount --bind $i $d$i; } + done + + mount --bind $VDN_PATH $d/home/test/vdn + + #mount | grep $d + + chroot $d su - -s /bin/bash -c "export DISPLAY=":"$disp; \ + unset XAUTHORITY; rm -rf /home/test/.config/xfce4-session; \ + rm -rf /home/test/.config/xfce4/terminal/; \ + xauth add \$DISPLAY . $key; \ + export NO_AT_BRIDGE=1; \ + xfce4-terminal --disable-server # 2> /dev/null;" test + + sleep 1 + fi + + for i in /tmp /proc /sys /dev/pts /dev; do + mount | grep -q $d$i && { umount $d$i || { echo "umount lazy : $d$i"; umount -l $d$i; } ; } || : + done + + mount | grep -q $d/home/test/vdn && { umount $d/home/test/vdn || umount -l $d/home/test/vdn; } || : + mount | grep -q $d && { umount $d || umount -l $d; } || : + + m="$(mount | grep $d)" + + echo $m +} + +vdnUmount() { + set +e + for i in $(mount | grep $TMPDIR/vdn-proot-$USER | cut -d ' ' -f 3 | tac); do + fusermount -u $i + done + set -e +} + +vdnMount() { + + [ ! -e $DISK ] && error "$DISK not found !" || : + + if [ ! -w $DISK ]; then + error "$DISK doit être accessible en écriture !" + fi + + + # get display + + if [ -z $DISPLAY ]; then + error "DISPLAY not set !" + fi + + (rm -f $TMPDIR/vdn-display-$USER; umask 077 ; touch $TMPDIR/vdn-display-$USER) + DISP=$(echo $DISPLAY | cut -d ':' -f 2 | cut -d '.' -f 1) + echo $DISPLAY | cut -d ':' -f 2 >> $TMPDIR/vdn-display-$USER + + # get xauth key + + key=$(xauth list| grep $(uname -n) | grep $DISP | tail -n 1 | tr -s ' ' | cut -d ' ' -f 3) + + [ -n "$key" ] || error "Xauth key is empty !" + echo $key | egrep -q '^[[:xdigit:]]+$' || error "Bad xauth key ($key) !" + + (rm -f $TMPDIR/vdn-key-$USER; umask 077 ; touch $TMPDIR/vdn-key-$USER) + + echo $key >> $TMPDIR/vdn-key-$USER + + # mount (fuse) + + # 1 : offset (2048*512) + d=$TMPDIR/vdn-proot-$USER; + [ ! -d $d/offset ] && mkdir -p $d/offset || : + $VDN_PATH/bin/bbfs $VDN_PATH/files $d/offset + + # 2 : mount part + [ ! -d $d/part ] && mkdir -p $d/part1 || : + $VDN_PATH/bin/ext4fuse $d/offset/$DISK_NAME $d/part1 + + # 3 : proot + # -b /etc/passwd -b /etc/group + proot -b /proc -b /dev -b /sys -b /dev/pts -b /home -b /tmp -b /etc \ + -r $d/part1 /bin/bash + + echo "Done" + + + +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +DISK=$VDN_PATH/files/$DISK_NAME + +args "$@" + +set -x + +if [ $UMOUNT = 0 ]; then + vdnUmount + trap vdnUmount 0 + vdnMount +else + vdnUmount +fi diff --git a/vdn/bin/vdn-get-network b/vdn/bin/vdn-get-network new file mode 100755 index 0000000..0795576 --- /dev/null +++ b/vdn/bin/vdn-get-network @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +set -eu + +CMD="" + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] command arg... +EOF +} + +help() { + cat << EOF + +`basename $0` retourne le nom du réseau courant. + +`synopsis` + +-h : affiche cette aide. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + [ $# -ne 0 ] && usage || : +} + + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +[ ! -e $HOME/.vdnrc ] && touch $HOME/.vdnrc +. $HOME/.vdnrc +echo $NETWORK_DIR diff --git a/vdn/bin/vdn-graph b/vdn/bin/vdn-graph new file mode 100755 index 0000000..0f038ef --- /dev/null +++ b/vdn/bin/vdn-graph @@ -0,0 +1,252 @@ +#!/usr/bin/env bash + +ASCII=0 + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [-a] +EOF +} + +help() { + cat << EOF + +`basename $0` génère le graphe associé au réseau (graph.svgz). + +`synopsis` + +-h : affiche cette aide. +-a : ne génère pas le graphe dans le fichier mais sur stdout (en ASCII). + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "ha" opt; do + case $opt in + h) help; exit 0;; + a) ASCII=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 0 ] && usage; +} + +toGnuplot() { + n=1 + echo "set term dumb" + while read; do + set - $REPLY + #echo $1 + case "$1" in + graph) scale=$2; width=$3; height=$4;; + node) name=$2; x=$3; y=$4 + echo "set label \"[$name]\" at $x, $y" + n=$(($n+1)) + ;; + + edge) n1=$2; n2=$3; n3=$4; x1=$5; y1=$6; + shift 10 + x2=$1; y2=$2 + echo "set arrow $n from $x1,$y1 to $x2,$y2 nohead " + name=$3; x=$5; y=$6 + echo "set label $name\" at $x, $y" + + n=$(($n+1)) + ;; + esac + done + + #echo "plot \"< echo '0 0'\"" + echo "set nokey" + echo "unset tics" + echo "unset border" + echo "set xrange [ 0 : $width ]" + echo "set yrange [ 0 : $height ]" + + echo "plot [0:$width] 0 with dot" + +} + +parse() { + + echo + echo -e "\t\"$1\" [ $guestProps ]" + ETH=0 + guest=$1 + [ "$networks" == '""' -o -z "$networks" ] && return 0 + set - $networks + for i; do + #set -x + net="$i" + + comment=$(echo $net | cut -d '#' -f 2) + net=$(echo $net | cut -d '#' -f 1) + [ "$net" = "$comment" ] && comment="" + + #net1=$(echo $net | sed -re 's/^.*NET_(.*)\(\$NET_.*\)$/\1/') + + #net1=$(echo $net | sed -re 's/\$NET_([0-9G]+).*/\1/') + #net2=$(echo $net | sed -nre 's/.*NET_.*NET_(.*)\)$/\1/p') + + net=$(echo $net | sed -re 's/.*NET_(.*)$/\1/') + + [ "$net" = "G" ] && net=0 + + #net=$(computeEthLink $GUEST_NAME $net2) + + #[ "$net1" = "G" ] && net1=0 + #[ "$net2" = "G" ] && net2=0 + #echo "$guest net:$net net1=$net1 net2=$net2" >&2 + #read + + #echo "net=$net." + #echo "comment=$comment" + #comment="" + + #net=$net1 + #[ -n "$net2" ] && net=$net2 + + case "$net" in + none) ;; + [0-9]*) + set +u + if [ -z "${switchs[$net]}" ]; then + switchs[$net]=1 + props=$switchProps + if [ "$net" = "0" ]; then + props=$(echo $switchProps | sed -re 's,switch,internet,g') + props="$props label=\"Internet\",width=\"0\",height=\"0\"" + else + props="$props width=\"0\",height=\"0\" label=\"$net\"" + fi + echo -e "\t$net [ $props ]" + fi + set -u + echo -e "\t\"$guest\" -> $net [ taillabel=\"eth$ETH $comment\" $edgeProps ]" + ;; + *) error "Eth error for $guest: $net" + esac + ETH=$(($ETH+1)) + + # ??? + #[ -n "$net2" ] && { + # connects["$net1 -> $net2"]=1 + #} + + + done + + + +} + +# main + +declare -A connects + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +export PATH="$VDN_PATH/bin:$PATH" + +. $VDN_PATH/allocators/$VDN_RESOURCES_ALLOCATOR + +args "$@" + +guestProps="shape=box style=solid color=lightgray" +#switchProps="shape=ellipse color=gray fontsize=8" +#switchProps="imagepath=\"$VDN_PATH/svg\", image=\"switch.svg\",width=\"100px\",height=\"100px\",imagepos=tc,fontsize=8,shape=none" +switchProps="fontsize=12 shape=none" + +edgeProps="labeldistance=4.0 len=1.8 fontsize=12 fontcolor=gray arrowhead=none" + +networkDir=$NETWORK_DIR + +echo "Build graph ($NETWORK_DIR/graph.svgz). " + +#IDENT=0; computeNetworks + +dot1=`mktemp` + +#set -x + +guests="`find $NETWORK_DIR -maxdepth 1 -follow -name "*.conf" | sort -R | \ + sed -re 's/^.*\/([^/]+).conf$/\1/'`" + +{ + echo "digraph {" + #echo "overlap=scale;" + #echo 'rankdir="LR"' + echo 'splines=true;' + echo 'nodesep=0.1;' + + + + #echo '1 -> 2 [style="invis"]' + for i in $guests; do + #loadGuestVars $i + unset networks + set -a + GUEST_NAME=$i + GUEST_OWNER=$USER + . $NETWORK_DIR/$i.conf + set +a + networks="$NETWORKS" + #networks=$(vdn-config $i NETWORKS) + + + parse $i + done + + for k in "${!connects[@]}"; do + echo "=> $k" >&2 + echo "$k [ arrowhead=none ]" + done + + + echo "}" +} > $dot1 + + +if [ $ASCII = 1 ]; then + + # obsolete + + #dot2=`mktemp` + #plain=`mktemp` + #gnuplot=`mktemp` + + #cat $dot1 | sed -re 's/taillabel/label/g' \ + # > $dot2 + + ##graph-easy --renderer neato --as ascii $dot2 + #graph-easy --as ascii $dot2 + + warning "ASCII = 1 is obsolete !" + + #neato -Tplain $dot2 > $plain + #cat $plain | toGnuplot > $gnuplot + + #gnuplot $gnuplot | sed -re 's/\.//g' | sed -re 's/[<>]/\./g' \ + # | sed -re 's/\[/'`echo -e "\033"`'\[1m/g' \ + # | sed -re 's/\]/'`echo -e "\033"`'\[22m/g' + + #rm -f $dot2 $plain $gnuplot + +else + neato -Tsvg $dot1 | iconv -t UTF-8 > $NETWORK_DIR/graph.svg + gzip $NETWORK_DIR/graph.svg + mv $NETWORK_DIR/graph.svg.gz $NETWORK_DIR/graph.svgz + echo "Done." + +fi + +#cp $dot1 /tmp/dot +rm -f $dot1 diff --git a/vdn/bin/vdn-gui.rb b/vdn/bin/vdn-gui.rb new file mode 100755 index 0000000..79fab55 --- /dev/null +++ b/vdn/bin/vdn-gui.rb @@ -0,0 +1,4127 @@ +#!/usr/bin/env ruby + +# encoding: UTF-8 +# coding: UTF-8 +# -*- coding: UTF-8 -*- + +#encoding: utf-8 + +require 'gtk2' +require 'rsvg2' +require 'socket' +require 'monitor' +require 'zlib' + +# pour debug + +$threads=[] +$currentNetName="" + +# Pour un usage des threads avec GTK +# http://ruby-gnome2.sourceforge.jp/hiki.cgi?cmd=view&p=tips_threads + +$home="https://opale.iut-clermont.uca.fr/info/wiki/doku.php?id=public:vdn:start" + +$lock=false + + +def setDefaultEditor + if ENV['NANO_EDITOR'] == "1"; then + $editor="nano" + else + #$editor=ENV['EDITOR'] + $editor="vi" #if $EDITOR == "" + end + ENV['EDITOR']=$editor +end + +setDefaultEditor + +#=begin +#p "[** MAIN prcess **] : #{Process.pid}" + +Thread.new { + while true + $main.setTitle if $main + sleep(3) + begin + #p "[**WAIT parent:#{Process.pid}**]}" + #Process.wait2(-1, Process::WUNTRACED) + Process.wait() + rescue => e + #p e + next + end + #p "[**RET parent:#{Process.pid}**] #{$?}" + end + +} +#=end + +=begin +trap("CLD") do + p "TRAP CLD begin" + begin + cpid = Process.wait + rescue StandardError => e + p e + end + + p "TRAP CLD end pid:#{cpid}" +end +=end + +def mySystem(cmd) + + #p "*** #{cmd[-1]}" + if cmd[-1] == "&" + cmd=cmd[0..-2] + end + #p "+++ #{cmd}" + + #Gtk.idle_add { + #system(cmd) + + #Thread.new { + # spawn(cmd) + #} + #return + + Thread.new { + + desc="mySystem" + $threads.push(desc) + + #p "[parent : #{Process.pid}] : fork : #{cmd}" + pid=spawn(cmd) + #pid=fork { + # p "[child : #{Process.pid} #{Process.ppid}] :exec : #{cmd}" + # exec(cmd) + #} + sleep(0.5) + Process.detach(pid) + $threads.delete_at($threads.index(desc)) + } + + # false + #} + #fork {system(cmd)} + #pid = fork { system(cmd) } + #Thread.new { + # puts "system:#{cmd}" + # pid = fork { system(cmd) } + # puts "system end" + #} +end + +module Gtk + GTK_PENDING_BLOCKS = [] + GTK_PENDING_BLOCKS_LOCK = Monitor.new + + def Gtk.queue &block + if Thread.current == Thread.main + block.call + else + GTK_PENDING_BLOCKS_LOCK.synchronize do + GTK_PENDING_BLOCKS << block + end + end + end + + def Gtk.main_with_queue timeout + + if $lock==false + Gtk.timeout_add timeout do + if $lock==false + begin + GTK_PENDING_BLOCKS_LOCK.synchronize do + for block in GTK_PENDING_BLOCKS + block.call + end + GTK_PENDING_BLOCKS.clear + end + rescue => e + p "$!" + puts e.backtrace + end + end + true + end + Gtk.main + end + end + +end + +# Gestion du graphique + +module Svg + + def svgInit + @white = Gdk::Color.parse("white") + @black = Gdk::Color.parse("black") + @grey = Gdk::Color.parse("grey") + @blue = Gdk::Color.parse("blue") + @red = Gdk::Color.parse("red") + @green = Gdk::Color.parse("green") + @yellow = Gdk::Color.parse("yellow") + @orange = Gdk::Color.parse("orange") + end + + def draw(area) + + return false if ! @gw + return false if ! @gh + + width=@gw + height=@gh + + a=area.allocation.to_a + aw=a[2]; ah=a[3] + + width=width+100+2*@bx; height=height+100+2*@by + + x=0; y=0 + + w0=(aw)-2*@bx; h0=(ah)-2*@by + + if width>w0 || height>h0 + width=w0; height=h0 + end + + w=width + h=height + + awin=area.window + @gc=Gdk::GC.new(awin) if !@gc && awin!=nil + + if @gc + gc=@gc + gc.fill = Gdk::GC::Fill::SOLID + gc.rgb_fg_color = @white + if awin!= nil + area.window.draw_rectangle(gc, true, 0, 0 , aw, ah) + end + end + + return if w-2*@bx<=0 || h-2*@by<=0 + + rw=w0*1.0/@gw; rh=h0*1.0/@gh + + if rw>rh + ratio=rh + else + ratio=rw + end + + ratio=1.2 if ratio > 1.2 + + begin + if ! @pixbuf + @pixbuf=nil + svg=RSVG::Handle.new_from_file(@graphfile) + surface = Cairo::ImageSurface.new(Cairo::FORMAT_ARGB32, @gw*ratio, @gh*ratio) + context = Cairo::Context.new(surface) + context.scale(ratio, ratio); + context.render_rsvg_handle(svg) + file="#{ENV['TMPDIR']}/vdn-gui-#{ENV['USER']}-#{ENV['VDN_GUI_IDENT']}-graph" + context.target.write_to_png(file) + context.target.finish + @pixbuf=GdkPixbuf::Pixbuf.new(:file => file) + File.delete(file) + end + rescue + return + end + + return if ! @pixbuf + + pixbuf=@pixbuf + + w=pixbuf.width + h=pixbuf.height + + width=w; height=h + + dx=(w0-w)/2; dy=(h0-h)/2 + + area.window.draw_pixbuf(nil, pixbuf, 0, 0, x+@bx+dx, y+@by+dy, width, height, Gdk::RGB::DITHER_MAX, 0, 0) + + @x=x; @y=y; @w=w; @h=h; @w0=w0; @h0=h0; @dx=dx; @dy=dy; @w=w; @h=h + @width=width; @height=height + + @cx=@gw/w.to_f; @cy=@gh/h.to_f + @cx=1.0/@cx; @cy=1.0/@cy + + #drawBoxs + drawBoxs + updateSelect + #Gtk.idle_add { sleep 0.01; updateSelect; false; } + #drawSelRec + #updateSelRec + + true + end + +end + +class Preview + include Svg + + attr_reader :dx, :dy, :area, :gc + attr_reader :cx, :cy, :bx, :by + attr_reader :selColor + attr_reader :consoles, :combo + attr_accessor :hosts, :selection, :pixbuf + attr_accessor :lines, :graphfile + + + def initialize(main) + super() + @main=main + + @gc=nil + @drawed=false + @gw=@gh=nil + + svgInit + + @area = Gtk::DrawingArea.new + @area.set_size_request(640,480) + + @area.show + #@area.realize + + @area.signal_connect("expose-event") do |widget, event| + #p "expose...#{ENV['VDN_GUI_IDENT']} #{event} #{@area}" + load(@dir) if @dir + false + end + + @bx=20 + @by=20 + + end + + def draw(area) + #p "draw: #{area}" + end + + def load(dir) + #p "load:#{dir}" + + return if ! dir + @dir=dir if dir + + return if ! @dir + + if FileTest.exist?(@dir+"/net.svgz") && ENV['RAW_GRAPH']=="0" + @graphfile=@dir+"/net.svgz" + elsif FileTest.exist?(@dir+"/graph.svgz") + @graphfile=@dir+"/graph.svgz" + end + + begin + svg=RSVG::Handle.new_from_file(@graphfile) + svg.close + rescue + return + end + + @gw=svg.width + @gh=svg.height + #p "w: #{@gw} #{@gh}" + + return false if ! @gw + return false if ! @gh + + width=@gw + height=@gh + + area=@area + + a=area.allocation.to_a + aw=a[2]; ah=a[3] + + width=width+100+2*@bx; height=height+100+2*@by + + x=0; y=0 + + w0=(aw)-2*@bx; h0=(ah)-2*@by + + if width>w0 || height>h0 + width=w0; height=h0 + end + + w=width + h=height + + awin=area.window + @gc=Gdk::GC.new(awin) if !@gc && awin!=nil + + if @gc + gc=@gc + gc.fill = Gdk::GC::Fill::SOLID + gc.rgb_fg_color = @white + if awin!= nil + area.window.draw_rectangle(gc, true, 0, 0 , aw, ah) + end + end + + return if w-2*@bx<=0 || h-2*@by<=0 + + rw=w0*1.0/@gw; rh=h0*1.0/@gh + + if rw>rh + ratio=rh + else + ratio=rw + end + + ratio=1.2 if ratio > 1.2 + + #return + @pixbuf=nil + + begin + if ! @pixbuf + @pixbuf=nil + svg=RSVG::Handle.new_from_file(@graphfile) + surface = Cairo::ImageSurface.new(Cairo::FORMAT_ARGB32, @gw*ratio, @gh*ratio) + context = Cairo::Context.new(surface) + context.scale(ratio, ratio); + context.render_rsvg_handle(svg) + file="#{ENV['TMPDIR']}/vdn-gui-#{ENV['USER']}-#{ENV['VDN_GUI_IDENT']}-graph" + context.target.write_to_png(file) + context.target.finish + @pixbuf=GdkPixbuf::Pixbuf.new(:file => file) + File.delete(file) + end + rescue + return + end + + return if ! @pixbuf + + #p "pixbuf:#{@pixbuf}" + + pixbuf=@pixbuf + + w=pixbuf.width + h=pixbuf.height + + width=w; height=h + + dx=(w0-w)/2; dy=(h0-h)/2 + + area.window.draw_pixbuf(nil, pixbuf, 0, 0, x+@bx+dx, y+@by+dy, width, height, Gdk::RGB::DITHER_MAX, 0, 0) + + @x=x; @y=y; @w=w; @h=h; @w0=w0; @h0=h0; @dx=dx; @dy=dy; @w=w; @h=h + @width=width; @height=height + + @cx=@gw/w.to_f; @cy=@gh/h.to_f + @cx=1.0/@cx; @cy=1.0/@cy + + #drawBoxs + #updateSelect + + true + + end + +end + +class Log < Gtk::ScrolledWindow + def initialize(main, fifo) + @main=main + @fifo=fifo + super() + set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC) + + add(@textView=Gtk::TextView.new) + + @buffer=@textView.buffer + @errorTag=@buffer.create_tag('error', {'foreground' => 'red'}) + @normalTag=@buffer.create_tag('normal', {'foreground' => 'black'}) + @buffer.signal_connect("changed") { + @eob_mark = @textView.buffer.create_mark(nil,@textView.buffer.start_iter.forward_to_end,false) + @textView.scroll_mark_onscreen(@eob_mark) + } + + startLogListener + + end + + def startLogListener + Gtk.init_add do + Thread.new { + desc="startLogListener" + $threads.push(desc) + + l=[] + while line=@fifo.gets + l=line.dup + + #Gtk.queue do + eob_mark = @textView.buffer.create_mark(nil,@textView.buffer.start_iter.forward_to_end,false) + iter = @buffer.get_iter_at_mark(eob_mark) + if l.include? "rror" + tag=@errorTag + else + tag=@normalTag + end + @buffer.insert(iter, Time.now.to_s+ " "+l, tag) + #end + end + + $threads.delete_at($threads.index(desc)) + } + end + + end + +end + +class BasicTerminal < Gtk::ScrolledWindow + attr_reader :pid + + def initialize(command) + + super() + + set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_NEVER) + + add_with_viewport(@vbox=Gtk::VBox.new) + @vbox.pack_start(@hbox=Gtk::HBox.new) + + @vte=Vte::Terminal.new + @vte.signal_connect('child-exited') { |w| parent.destroy } + + @scrollbar=Gtk::VScrollbar.new(@vte.adjustment) + + @hbox.pack_start(@vte)#, false, false) + @hbox.pack_start(@scrollbar) #, false, false) if p + + @vte.set_size(80,24) + @vte.set_word_chars(".a-zA-Z_0-9//-") + @vte.set_colors(Gdk::Color.parse("black"), Gdk::Color.parse("white"),[]) + @vte.audible_bell=false + @vte.visible_bell=true + @vte.scrollback_lines=1000 + @vte.set_font("Monospace 12", Vte::TerminalAntiAlias::USE_DEFAULT) + @pid=@vte.fork_command(:argv => args("bash -c \"#{command}\"")) + show_all + end + + def args(s) + r=[] + s.gsub(/'([^']*)'|"([^"]*)"|([^[:space:]]+)/) { |m| + r.push("#{$1}#{$2}#{$3}") + } + return r + end +end + +class VdnTerminal < Gtk::Window + def initialize(name, cmd, read=true, background=true, center=true) + super() + + set_title(name) + + cmd="#{cmd}; echo; echo Press Enter to exit !; read" if read + + t=BasicTerminal.new(cmd) + add(t) + realize + + if(center) + x,y=$main.position + w,h=$main.size + x=x+w/2; y=y+h/2 + w,h=size + x=x-w/2; y=y-h/2 + move(x, y) + end + + show_all + + if !background + while `ps --no-headers -p #{t.pid} -o pid` != "" + Gtk.main_iteration while Gtk.events_pending? + sleep(0.05) + end + end + end +end + +class Vdn < Gtk::Window + +attr_reader :group, :accelGroup + def initialize + super() + $main=self + + @group = Gtk::AccelGroup.new + add_accel_group(@group) + + @consolesAccelGroup= Gtk::AccelGroup.new + + @accelGroupGui=Gtk::AccelGroup.new + @accelGroupConsole=Gtk::AccelGroup.new + + @accelGroup = @accelGroupGui + + + open + #mainDetector + end + + def add_main_accel_group + if @consolesAccelGroup + remove_accel_group(@consolesAccelGroup) + end + add_accel_group(@group) + end + + def add_consoles_accel_group + if @group + remove_accel_group(@group) + end + add_accel_group(@consolesAccelGroup) + + end + + + def open + + dir=ENV['NETWORK_DIR'] + #p "Vdn OPEN dir:#{dir}" + @frame=VdnFrame.new + add(@frame) + + show_all + + #setTitle("") + set_default_size(720,480) + maximize if ENV["MAXIMIZE"] == "1" + + signal_connect("delete-event") { r=whenQuit; Gtk::main_quit if r; true } + + #p "frame.net:#{@frame.net}" + @net=@frame.net + @notebook=@frame.notebook + end + + def setTitle + name=$currentNetName + release=ENV["VDN_RELEASE"] + if name=="" + set_title("[#{ENV['USER']}] vdn-gui (#{release}) - [ nThreads:#{$threads.length} ]") # + else + set_title("[#{ENV['USER']}] vdn-gui (#{release}) - #{name} - [ nThreads:#{$threads.length} ]") + end +end + + def clean + remove(@frame) + end + + + + def startListener + Gtk.init_add do + Thread.new { + desc="startListener" + $threads.push(desc) + fifo="#{ENV['TMPDIR']}/vdn-gui-#{ENV['USER']}-fifo-ctrl" + if ! File.exist?(fifo) + mySystem("umask 077; mkfifo #{fifo}") + sleep 0.5 + end + + session = File.open(fifo, "r+") + + rawLine=session.gets + while line=rawLine.chomp.split + + + cmd=line[0] + + + case cmd + + when "quit" + exit(0) + when "start" + name=line[1] + #if mySystem("#{$VDN_PATH}/bin/vdn-alive #{name}") + # $stderr.puts "Abort starting #{name}., is alive !" + #else + expr=line[2..100] + if @net && @net.consoles + #cmd=$VDN_PATH+"/bin/vdn-start-wrapper -et -v \"#{expr}\" #{name}" + #puts "cmd:#{cmd}" + #Gtk.queue do + @net.consoles.addTerm(name) + @notebook.set_page(2) + #end + #sleep 1 + else + cmd=$VDN_PATH+"/bin/vdn-start-wrapper -v \"#{expr}\" #{name}" + #$stderr.puts "cmd:#{cmd}" + mySystem(cmd) + end + #end + + when "vnc-viewer" + name=line[1] + @net.startVnc(name) + when "spice-viewer" + name=line[1] + @net.startSpice(name) + end + + + rawLine=session.gets + #p "raw line : #{rawLine}" + end + $threads.delete_at($threads.index(desc)) + } + + end + + end + +=begin + def mainDetector + Gtk.timeout_add(500) { + begin + while pid = Process.wait(-1, Process::WNOHANG) + end + rescue + end + } + + + + end +=end + + def method_missing(m, *args, &block) + @frame.send(m, *args, &block) + end +end + +class VdnFrame < Gtk::Frame + + attr_reader :scriptsMenu, :scriptsTestsMenu, :notebook + attr_accessor :bback, :bforward, :bhome, :actionsMenu, :actions, :files, :filesMenu + attr_reader :mod, :net, :preview + attr_reader :main + + def initialize() + super() + + + @main=$main + + @preview=Preview.new(self) + + + @folder=nil + + @testsToggle=false + + + @group = @main.group + + + + @menubar = Gtk::MenuBar.new + + @vbox=Gtk::VBox.new + add(@vbox) + + networksMenu = Gtk::Menu.new + @scriptsMenu = Gtk::Menu.new + optionsMenu = Gtk::Menu.new + @setupMenu = Gtk::Menu.new + + @setupMenu.append(Gtk::TearoffMenuItem.new) + + s=Gtk::MenuItem.new("Edit default rc config (local)..."); + @setupMenu.append(s) + s.signal_connect('activate') { |w| + startTerminal("#{$editor} config.rc.local", + "[ ! -e #{ENV['VDN_PATH']}/config.rc.local ] && \ + cp #{ENV['VDN_PATH']}/config.rc #{ENV['VDN_PATH']}/config.rc.local; \ + #{$editor} #{ENV['VDN_PATH']}/config.rc.local", false) + } + + @setupMenu.append(Gtk::MenuItem.new()) + + s=Gtk::MenuItem.new("Edit default guest config (local) ..."); + @setupMenu.append(s) + s.signal_connect('activate') { |w| + startTerminal("#{$editor} config.template.local", + "[ ! -e #{ENV['VDN_PATH']}/config.template.local ] && \ + cp #{ENV['VDN_PATH']}/config.template #{ENV['VDN_PATH']}/config.template.local; \ + #{$editor} #{ENV['VDN_PATH']}/config.template", false) + } + + @setupMenu.append(Gtk::MenuItem.new) + + s=Gtk::MenuItem.new("New network..."); + @setupMenu.append(s) + s.signal_connect('activate') { |w| + startTerminal("vdn-new-network", + "#{$VDN_PATH}/bin/vdn-new-network", true, false) + } + + @setupMenu.append(Gtk::MenuItem.new) + + s=Gtk::MenuItem.new("Download network..."); + @setupMenu.append(s) + s.signal_connect('activate') { |w| + startTerminal("vdn-download-network", + "#{$VDN_PATH}/bin/vdn-download-network", true, false) + } + + @setupMenu.append(Gtk::MenuItem.new) + + @setupMenu.append(s=Gtk::MenuItem.new("Terminal (in vdn directory...)")) + s.signal_connect('activate') { + startTerminal("", "cd #{$VDN_PATH}/files; bash", false) + } + #@setupMenu.show_all + + @actionsMenu = Gtk::Menu.new + @filesMenu = Gtk::Menu.new + + + @filesMenu.append(Gtk::TearoffMenuItem.new) + + + @filesMenu.append(s=Gtk::MenuItem.new("Terminal (in files directory...)")) + s.signal_connect('activate') { + startTerminal("", "vdn-manage-files; cd #{$VDN_PATH}/files; bash", false) + } + @filesMenu.show_all + + + @scriptsTestsMenu = Gtk::Menu.new + + networks = Gtk::MenuItem.new("Network") + options = Gtk::MenuItem.new("Preferences") + @scripts = Gtk::MenuItem.new("Scripts") + @setup = Gtk::MenuItem.new("Main setup") + @actions = Gtk::MenuItem.new("Network setup") + @scriptsTests = Gtk::MenuItem.new("All scripts") + @files = Gtk::MenuItem.new("Files (disks, ...)") + + #p"vdn: @actions:#{@actions}" + #p"vdn: @actionsMenu:#{@actionsMenu}" + + networks.submenu = networksMenu + options.submenu = optionsMenu + @scripts.submenu = @scriptsMenu + @actions.submenu = @actionsMenu + @setup.submenu = @setupMenu + @files.submenu = @filesMenu + + @scriptsTests.submenu = @scriptsTestsMenu + + @actions.signal_connect('activate') { |w,e| + @net.updateMoreMenu(@actionsMenu) if @net + @actionsMenu.show_all + false + } + + @setup.signal_connect('activate') { |w,e| + @setupMenu.show_all + false + } + + #@files.signal_connect('activate') { |w,e| + # @net.updateFilesMenu if @net + # false + #} + + #@scriptsTests.submenu = @scriptsTestsMenu + + + networksMenu.append(Gtk::TearoffMenuItem.new) + + # Create the Networks menu content. + + @bopen = Gtk::ImageMenuItem.new(Gtk::Stock::OPEN, @group) + networksMenu.append(@bopen) + @bopen.signal_connect("activate") { |w| whenOpen } + + @bclose = Gtk::ImageMenuItem.new(Gtk::Stock::CLOSE, @group) + networksMenu.append(@bclose) + @bclose.signal_connect("activate") { |w| + whenClose; + } + @bclose.sensitive=false + + networksMenu.append(Gtk::MenuItem.new) + + + + Gtk::Stock.add(Gtk::Stock::SELECT_ALL, "Select all", Gdk::Window::CONTROL_MASK, Gdk::Keyval::GDK_A) + + @bselect = Gtk::ImageMenuItem.new(Gtk::Stock::SELECT_ALL, @group) + networksMenu.append(@bselect) + @bselect.signal_connect("activate") { |w| whenSelectAll } + @bselect.sensitive=false + + Gtk::Stock.add(Gtk::Stock::YES, "Start selected", Gdk::Window::CONTROL_MASK, Gdk::Keyval::GDK_S) + @bstart = Gtk::ImageMenuItem.new(Gtk::Stock::YES, @group) + networksMenu.append(@bstart) + @bstart.signal_connect("activate") { |w| whenStartSelected } + @bstart.sensitive=false + + Gtk::Stock.add(Gtk::Stock::NO, "Halt all", Gdk::Window::CONTROL_MASK, Gdk::Keyval::GDK_H) + @bhalt = Gtk::ImageMenuItem.new(Gtk::Stock::NO, @group) + networksMenu.append(@bhalt) + @bhalt.signal_connect("activate") { |w| whenHaltAll } + @bhalt.sensitive=false + + Gtk::Stock.add(Gtk::Stock::REFRESH, "Restart selected", Gdk::Window::CONTROL_MASK, Gdk::Keyval::GDK_R) + @brestart = Gtk::ImageMenuItem.new(Gtk::Stock::REFRESH, @group) + networksMenu.append(@brestart) + @brestart.signal_connect("activate") { |w| whenRestartAll } + @brestart.sensitive=false + + Gtk::Stock.add(Gtk::Stock::CLEAR, "Clean selected", Gdk::Window::CONTROL_MASK, Gdk::Keyval::GDK_C) + @bclean = Gtk::ImageMenuItem.new(Gtk::Stock::CLEAR, @group) + networksMenu.append(@bclean) + @bclean.signal_connect("activate") { |w| whenCleanAll } + @bclean.sensitive=false + + Gtk::Stock.add(Gtk::Stock::DISCONNECT, "Kill all", Gdk::Window::CONTROL_MASK, Gdk::Keyval::GDK_K) + @bkill = Gtk::ImageMenuItem.new(Gtk::Stock::DISCONNECT, @group) + networksMenu.append(@bkill) + @bkill.signal_connect("activate") { |w| whenKillAll } + @bkill.sensitive=false + + # Accel -> Tests mode + + #@group.connect(Gdk::Keyval::GDK_M, Gdk::Window::CONTROL_MASK, + # Gtk::ACCEL_VISIBLE) { + # toggleTests + #} + + networksMenu.append(Gtk::MenuItem.new) + + Gtk::Stock.add(Gtk::Stock::COPY, "View all backups", Gdk::Window::CONTROL_MASK, Gdk::Keyval::GDK_B) + @bfiles = Gtk::ImageMenuItem.new(Gtk::Stock::COPY, @group) + networksMenu.append(@bfiles) + @bfiles.signal_connect("activate") { |w| whenBackups } + + networksMenu.append(Gtk::MenuItem.new) + + s=Gtk::MenuItem.new("Edit user rc file..."); + networksMenu.append(s) + s.signal_connect('activate') { |w| + startTerminal("#{$editor} rc file", + "#{$editor} #{ENV['HOME']}/.vdnrc; \ + echo \\\"Pour que les modifications soient effectives vous devez redémarrer VDN\\\" ", true) + } + networksMenu.append(Gtk::MenuItem.new) + + quit = Gtk::ImageMenuItem.new(Gtk::Stock::QUIT, @group) + quit.signal_connect('activate') { + r=whenQuit + p "whenQuit r:#{r}" + Gtk::main_quit if r + } + networksMenu.append(quit) + + @menubar.append(networks) + + + # Create the Options menu content. + + item=Gtk::CheckMenuItem.new("Debug") + #puts("VDN_DEBUG=#{ENV["VDN_DEBUG"]}") + item.active=false + item.active=true if ENV["VDN_DEBUG"] == "1" + optionsMenu.append(item) + item.signal_connect("activate") { |w| whenDebug(w) } + + #item=Gtk::CheckMenuItem.new("External ssh") + #item.active=true if ENV["VDN_EXTERNAL_SSH"] == "1" + #optionsMenu.append(item) + #item.signal_connect("activate") { |w| whenExternalSsh(w) } + + item=Gtk::CheckMenuItem.new("Parallel") + item.active=true if ENV["RUN_PARALLEL"] == "1" + optionsMenu.append(item) + item.signal_connect("activate") { |w| whenParallel(w) } + + item=Gtk::CheckMenuItem.new("Maximize at startup") + item.active=true if ENV["MAXIMIZE"] == "1" + optionsMenu.append(item) + item.signal_connect("activate") { |w| whenPreferenceGeneric(w, "MAXIMIZE") } + + item=Gtk::CheckMenuItem.new("Use nano text editor") + item.active=true if ENV["NANO_EDITOR"] == "1" + optionsMenu.append(item) + item.signal_connect("activate") { |w| whenPreferenceNano(w, "NANO_EDITOR") } + + item=Gtk::CheckMenuItem.new("Raw graph") + item.active=true if ENV["RAW_GRAPH"] == "1" + optionsMenu.append(item) + item.signal_connect("activate") { |w| whenRawGraph(w) } + + item=Gtk::CheckMenuItem.new("Test mode") + + optionsMenu.append(item) + item.signal_connect("activate") { |w| whenTestMode(w) } + + @menubar.append(options) + + @menubar.append(@scripts) + + if ENV["TEST_MODE"] == "1" + item.active=true + @testsToggle=false + end + + @vbox.pack_start(@menubar, false, false) + + @vbox.pack_start(@notebook=Gtk::Notebook.new, true, true) + + @notebook.scrollable=true + @notebook.show_border=false + @notebook.focus_chain=[] + + # moz + + @mozbox=Gtk::VBox.new + + @mozbox.pack_start(@mozbar=Gtk::HBox.new, false, false) + + @html="#{$home}" + @banner="#{$VDN_PATH}/doc/banner.svgz" + + @moz=Gtk::Browser.new + @moz.banner = @banner + @moz.location = @html + + @mozbox.add(@moz) + @notebook.append_page(@mozbox, Gtk::Label.new("Documentation")) + + #@log=Log.new(@main, $LOG_FIFO) + #@notebook.append_page(@log, Gtk::Label.new("Log")) + + show_all + + if ENV["NETWORK_DIR"] != "" + @dir=ENV["NETWORK_DIR"] + if @dir == "" + @dir=$dir + ENV["NETWORK_DIR"]=$dir + end + openNet + else + closeNet + end + + + + signal_connect('event') { |w,e| + if e.class.to_s == "Gdk::EventKey" + n=Gdk::Keyval.to_name(e.keyval) + if e.event_type == Gdk::Event::Type::KEY_PRESS + if n =~ /Control/ + @mod="Control" + end + + if n =~ /Shift/ + @mod="Shift" + end + else + if n =~ /Control/ || n =~ /Shift/ + @mod=nil + end + + end + end + } + end + + + def startTerminal(name, cmd, read=true, background=true, big=false) + #VdnTerminal.new(name, cmd, read, background, center); + #return +#=begin + opts="" + + # bg only need for xfce4-terminal + bg="--disable-server" + bg="" if background + + longCmd="NETWORK_DIR=#{@dir} #{cmd}" + + # xfce4-terminal + #geom="" + #geom="--geometry 140x43 --font 10" if big + + # sajura terminal + #geom="" + #geom="-c 140 -r 43 --font 10" if big + + # xterm + # xterm -fa 'Monospace' -fs 12 -geometry 80x24 -j -rightbar + #p "big:#{big}" + opts="-j -rightbar -sb -vb" + geom="-fa 'Monospace' -fs 12" + geom="-fa 'Monospace' -fs 10 -geometry 140x43" if big + + #p "cmd:#{cmd} read:#{read} bg:#{bg}" + + #c="cd; export NO_INTERACTIVE=1; xfce4-terminal #{geom} --disable-server -T \"#{name}\" #{bg} -e \"bash -c \'#{longCmd}; echo; echo Press Enter to exit !; read\'\"" + #c="cd; export NO_INTERACTIVE=1; sakura #{geom} -t \"#{name}\" -e \"bash -c \'#{longCmd}; echo; echo Press Enter to exit !; read\'\" 2> /dev/null" + #c="cd; export NO_INTERACTIVE=1; xterm #{geom} -T \"#{name}\" -e \"bash -c \'#{longCmd}; echo; echo Press Enter to exit !; read\'\" 2> /dev/null" + + prefix="cd; export NO_INTERACTIVE=1; " + + extra="" + extra="; echo; echo Press Enter to exit !; read" if read + + #c="cd; export NO_INTERACTIVE=1; xfce4-terminal #{geom} --disable-server -T \"#{name}\" #{bg } -e \"bash -c \'#{longCmd} #{extra}\'\"" + #c="cd; export NO_INTERACTIVE=1; sakura #{geom} -t \"#{name}\" -e \"bash -c \'#{longCmd}\'\" 2> /dev/null" + #c="xterm ${opts} #{geom} -T \"#{name}\" -e \"bash -c \'#{prefix} #{longCmd} #{extra}\'\" &" + + c="bash -c \'#{prefix} #{longCmd} #{extra}\'" + + #puts "c:#{c} networkDir:#{ENV['NETWORK_DIR']}" + #c="#{c} &" # if background + + #mySystem(c) + #puts "=== vdn-terminal \"#{c}\"" + + if big == true + mySystem("vdn-terminal -b \"#{c}\" &") + else + mySystem("vdn-terminal \"#{c}\" &") + end + +#=end + end + + + def getPass + m=" Mot de passe VDN (mode edit) : " + + dialog = Gtk::Dialog.new("Message", self, + Gtk::Dialog::MODAL | Gtk::Dialog::DESTROY_WITH_PARENT, + [Gtk::Stock::CANCEL, Gtk::Dialog::RESPONSE_REJECT], + [Gtk::Stock::OK, Gtk::Dialog::RESPONSE_ACCEPT]) + + dialog.vbox.add(Gtk::Label.new(m)) + dialog.vbox.add(e=Gtk::Entry.new) + e.visibility=false + + e.signal_connect("activate") { + dialog.children[0].children.last.children.first.clicked + true + } + + #e.max_length=10 + + dialog.show_all + r=dialog.run + if r==Gtk::Dialog::RESPONSE_ACCEPT + require 'bcrypt' + + # #hash a user's password + # require'bcrypt' + # BCrypt::Password.create("secret") + + hash="$2a$10$bxqjywHoKH5LI6MP6oX2SeJJX./rdZknVByguTj936bqgqZ.Lv/QW" + r2=(BCrypt::Password.new(hash)==e.text) + end + + dialog.destroy + + return (r==Gtk::Dialog::RESPONSE_ACCEPT) && r2 + end + + + + + + def toggleTests + if @testsToggle + @testsToggle=false + @menubar.remove(@setup) + @menubar.remove(@actions) + @menubar.remove(@scriptsTests) + @menubar.remove(@files) + else + #if (FileTest.writable?(ENV["NETWORK_DIR"]+"/scripts") || getPass ) + #if (getPass ) + @menubar.append(@setup) + @menubar.append(@actions) + @menubar.append(@scriptsTests) + @menubar.append(@files) + @scriptsTests.show + @setup.show + @actions.show + @files.show + + @testsToggle=true + #end + end + end + + def whenHaltAll + + if @net != nil + @net.whenHaltAll + @notebook.set_page(1) + end + + return true + end + + def whenRestartAll + if @net != nil + @net.whenRestart + @notebook.set_page(1) + end + + return true + end + + def whenCleanAll + if @net != nil + @net.whenClean + end + + return true + end + + def whenKillAll + r=`#{$VDN_PATH}/bin/vdn-alives` + if r != "" + m=" +Un ou plusieurs systèmes restent en fonctionnement ! +Si vous validez ils seront \"brutalement\" arrêtés (pas de sauvegarde !) +" + + dialog = Gtk::Dialog.new("Message", @main, + Gtk::Dialog::MODAL | Gtk::Dialog::DESTROY_WITH_PARENT, + [Gtk::Stock::CANCEL, Gtk::Dialog::RESPONSE_REJECT], + [Gtk::Stock::OK, Gtk::Dialog::RESPONSE_ACCEPT]) + + dialog.vbox.add(Gtk::Label.new(m)) + dialog.show_all + r=dialog.run + dialog.destroy + #p "r:#{r}" + #p "Gtk::Dialog::RESPONSE_ACCEPT:#{Gtk::Dialog::RESPONSE_ACCEPT}" + return false if r != Gtk::Dialog::RESPONSE_ACCEPT + end + + if @net != nil + @net.whenKillAll + @notebook.set_page(1) + end + + return true + end + + def whenClose + + #p "whenClose" + + return false if ! whenKillAll + + if @net + + @net.close + @net=nil + closeNet + @dir="" + $currentNetName="" + + + end + + @bclose.sensitive=false + @bselect.sensitive=false + @bstart.sensitive=false + @bhalt.sensitive=false + @brestart.sensitive=false + @bclean.sensitive=false + @bkill.sensitive=false + @bopen.sensitive=true + @scripts.sensitive=false + @scriptsTests.sensitive=false + @setup.sensitive=true + @actions.sensitive=false + #@files.sensitive=false + return true + end + + + def whenOpen + + if @folder == nil + if ENV["NETWORK_DIR"] != "" + @folder=File.dirname(ENV["NETWORK_DIR"]) + else + @folder=ENV["VDN_NETWORKS_BASE_DIR"] + end + end + + dialog = Gtk::FileChooserDialog.new("Open network", $main, + Gtk::FileChooser::ACTION_OPEN, + nil, + [Gtk::Stock::CANCEL, Gtk::Dialog::RESPONSE_CANCEL], + [Gtk::Stock::OPEN, Gtk::Dialog::RESPONSE_ACCEPT]) + dialog.preview_widget=@main.preview.area + preview_widget_active=true + + dialog.signal_connect('update-preview') { |w| + #p "update-preview #{w.preview_filename}" + @main.preview.load(w.preview_filename) + } + + + #p "dialog.filename:#{dialog.filename}" + #@main.preview.load(dialog.filename) + + if @folder + dialog.current_folder=@folder + + dialog.signal_connect('current-folder-changed') { |w| + Gtk.timeout_add(200) { + begin + if File.exist?(w.current_folder+"/network.vdn") + w.filename=w.current_folder+"/network.vdn" + w.response(Gtk::Dialog::RESPONSE_ACCEPT) + end + rescue + end + false + } + false + } + + f = Gtk::FileFilter.new + f.name="Vdn network" + f.add_pattern("*.vdn") + + dialog.set_filter(f) + + n=nil + + if dialog.run == Gtk::Dialog::RESPONSE_ACCEPT + f=dialog.filename + n=File.dirname(f) + end + dialog.preview_widget=nil + dialog.destroy + else + @folder=ENV["VDN_NETWORKS_BASE_DIR"] + end + + #p "n:#{n}" + + + + if n + + if @net != nil + r=whenClose + return false if !r + end + + @dir=n + #mySystem($VDN_PATH+"/bin/vdn-busy.rb &") + +=begin + message="\n\n\n Open #{@dir} network.\n\nPlease wait... \n\n\n" + dialog = Gtk::MessageDialog.new( + self, + Gtk::Dialog::MODAL | Gtk::Dialog::DESTROY_WITH_PARENT, + Gtk::MessageDialog::INFO, + Gtk::MessageDialog::BUTTONS_CLOSE, + message) + + # Ensure that the dialog box is destroyed when the user responds. + dialog.signal_connect('response') { dialog.destroy } + + # Add the message in a label, and show everything we've added to the dialog. + #dialog.vbox.add(Gtk::Label.new(message)) + dialog.show_all + + #Gtk.idle_add { +=end + mySystem($VDN_PATH+"/bin/vdn-set-var NETWORK_DIR \"#{@dir}\"") + ENV['NETWORK_DIR']=@dir + #@net.close if @net + #$main.destroy + + $main.whenQuit + #$main.destroy + + #mySystem($VDN_PATH+"/bin/vdn #{@dir} &") + #sleep(2) + #whenQuit + + startNet +=begin + #} +=end + end + end + + def whenSelectAll + @net.hosts.each_value { |i| + @net.selection.add(i) if ! i.isSel + } + end + + def whenStartSelected + @net.whenStart + end + + def whenRestartSelected + @net.whenRestart + end + + #def whenTermOld + # #mySystem("cd #{@dir}; cd scripts; xfce4-terminal --disable-server &") + # mySystem("cd #{@dir}; cd scripts; sakura &") + #end + + def whenBackups + startTerminal("", "vdn-manage-backups; bash", false) + #mySystem("xfce4-terminal --disable-server &") + end + + def whenFiles + startTerminal("", "vdn-manage-files; cd $VDN_PATH/files; bash", false) + #mySystem("xfce4-terminal --disable-server &") + end + + def whenQuit + mySystem($VDN_PATH+"/bin/vdn-set-var NETWORK_DIR \"#{@dir}\"") + if whenClose + begin + #Process.kill("SIGTERM", Process.ppid) + rescue + end + begin + File.delete("#{ENV['TMPDIR']}/vdn-#{ENV['USER']}-gui-log") + #File.delete("#{ENV['TMPDIR']}/vdn-gui-#{ENV['USER']}-fifo-ctrl") + + rescue + end + #puts "Bye !" + #Gtk::main_quit + return true + end + return false + end + + def openNet + + #p "openNet:" + + $dir=@dir if @dir && @dir != "" + + @net.close if @net + + + @net=nil + + @dir=$dir if @dir == "" + + mySystem("#{$VDN_PATH}/bin/vdn-set-network-dir #{@dir}") + + ENV["NETWORK_DIR"]=@dir + + @net=Net.new(self, @dir) + + @net.open + + + $currentNetName=File.basename(@dir) + $currentNetName="" if $currentNetName == nil + + $main.setTitle + + # Create the Scripts menu content. + + @scripts.signal_connect('activate') { |w,e| + @net.updateScriptsMenu + false + } + + @scriptsTests.signal_connect('activate') { |w,e| + @net.updateScriptsTestsMenu + false + } + + @setup.signal_connect('activate') { |w,e| + false + } + + @actions.signal_connect('activate') { |w,e| + @net.updateActionsMenu if @net + false + } + + #@files.signal_connect('activate') { |w,e| + # p "files.activate" + # @net.updateFilesMenu if @net + # false + #} + + show_all + + @bclose.sensitive=true + #@bterm.sensitive=true + @bselect.sensitive=true + @bstart.sensitive=true + @bhalt.sensitive=true + @brestart.sensitive=true + @bclean.sensitive=true + @bkill.sensitive=true + #@bopen.sensitive=false + @scripts.sensitive=true + @scriptsTests.sensitive=true + @setup.sensitive=true + @actions.sensitive=true + @files.sensitive=true + @moz.banner=@banner + @moz.location=@html + + @notebook.set_page(1) + + end + + def closeNet + + @lastDateGraphFile=nil + if @net + @net.close + @net=nil + end + + @dir=nil + ENV['NETWORK_DIR']="" + #mySystem($VDN_PATH+"/bin/vdn-set-var NETWORK_DIR \"\"") + + @html="#{$home}" + @moz.banner=@banner + @moz.location=@html + #release=ENV["VDN_RELEASE"] + $main.setTitle + + + @bclose.sensitive=false + #@bterm.sensitive=false + @bselect.sensitive=false + @bstart.sensitive=false + @bhalt.sensitive=false + @brestart.sensitive=false + @bclean.sensitive=false + @bkill.sensitive=false + @bopen.sensitive=true + @scripts.sensitive=false + @actions.sensitive=false + #@setup.sensitive=false + @scriptsTests.sensitive=false + + + + + end + + def whenDebug(w) + s="0" + s="1" if w.active? + ENV["VDN_DEBUG"]=s + mySystem($VDN_PATH+"/bin/vdn-set-var VDN_DEBUG #{s}") + end + + def whenExternalSsh(w) + + #p "whenExternalSsh: #{w} #{w.active?}" + s="0" + s="1" if w.active? + ENV["VDN_EXTERNAL_SSH"]=s + mySystem($VDN_PATH+"/bin/vdn-set-var VDN_EXTERNAL_SSH #{s}") + end + + def whenPreferenceGeneric(w, varName) + s="0" + s="1" if w.active? + ENV[varName]=s + mySystem($VDN_PATH+"/bin/vdn-set-var #{varName} #{s}") + end + + def whenPreferenceNano(w, varName) + s="0" + s="1" if w.active? + ENV[varName]=s + mySystem($VDN_PATH+"/bin/vdn-set-var #{varName} #{s}") + + setDefaultEditor + end + + def whenParallel(w) + s="0" + s="1" if w.active? + ENV["RUN_PARALLEL"]=s + mySystem($VDN_PATH+"/bin/vdn-set-var RUN_PARALLEL #{s}") + end + + def whenRawGraph(w) + s="0" + s="1" if w.active? + ENV["RAW_GRAPH"]=s + mySystem($VDN_PATH+"/bin/vdn-set-var RAW_GRAPH #{s}") + + return if ! @net + + @net.lines="" + @net.graphfile=nil + @net.parseGraph + end + + def whenTestMode(w) + s="0" + s="1" if w.active? + ENV["TEST_MODE"]=s + mySystem($VDN_PATH+"/bin/vdn-set-var TEST_MODE #{s}") + + if ! w.active? + @testsToggle=false + @menubar.remove(@setup) + @menubar.remove(@actions) + @menubar.remove(@scriptsTests) + @menubar.remove(@files) + else + #if (FileTest.writable?(ENV["NETWORK_DIR"]+"/scripts") || getPass ) + #if (getPass ) + @menubar.append(@setup) + @menubar.append(@actions) + @menubar.append(@scriptsTests) + @menubar.append(@files) + @scriptsTests.show + @setup.show + @actions.show + @files.show + @testsToggle=true + #end + end + + end + + + def whenTests(w) + s="0" + s="1" if w.active? + end + + + +end + +class Net < Gtk::VBox + + include Svg + + attr_reader :dx, :dy, :area, :gc + attr_reader :cx, :cy, :bx, :by + attr_reader :selColor + attr_reader :consoles, :combo + attr_accessor :hosts, :selection, :pixbuf + attr_accessor :lines, :graphfile, :lines + + + def initialize(main, dir) + + super() + + @main=main + @notebook=@main.notebook + @dir=dir + + @graphTimeout=nil + @netTimeout=nil + + + @lines=nil + @graphfile=nil + + @gc=nil + @drawed=false + @gw=@gh=nil + + @consoles=nil + @ssh=nil + + svgInit + + @selColor=Gdk::Color.parse("yellow") + + @bx=20 + @by=20 + + @selColor=Gdk::Color.parse("yellow") + + @white = Gdk::Color.parse("white") + @grey = Gdk::Color.parse("grey") + @blue = Gdk::Color.parse("blue") + @red = Gdk::Color.parse("red") + @green = Gdk::Color.parse("green") + + @dx=0 + @dy=0 + + @selection=Selection.new(self) + + @menu=Gtk::Menu.new + createMenu(@menu) + + @hosts=Hash.new + @states=Hash.new + + @mx=@my=nil + @selRec=nil + + @area = Gtk::DrawingArea.new + + @eventbox=Gtk::EventBox.new + @eventbox.events=Gdk::Event::ALL_EVENTS_MASK + + @eventbox.add(@area) + add(@eventbox); + + @eventbox.signal_connect('event') { |w,e| + parseEvent(w,e) + false + } + + @notebook.insert_page(1,self, Gtk::Label.new("Graph")) + + @area.signal_connect("expose-event") do |widget, event| + #p "expose...#{ENV['VDN_GUI_IDENT']} #{event} #{@area}" + draw(@area) + + # MARCHE PAS !@main.main.add_main_accel_group + # Il y a des fois ou dans l'onglet graphe les raccourcis claviers + # Ne fonctionne pas ! Ex Ctrl A pour sélectionner toutes les machines. + + false + end + + @area.signal_connect("configure-event") do |widget, event| + #p "resize...#{ENV['VDN_GUI_IDENT']} #{event} #{@area}" + @pixbuf=nil + false + end + + @area.signal_connect("event") do |widget, event| + #p "event...#{ENV['VDN_GUI_IDENT']} #{event} #{@area}" + false + end + + + + end + + + def parseGraph # net + + if FileTest.exist?(@dir+"/net.svgz") && ENV['RAW_GRAPH']=="0" + @graphfile=@dir+"/net.svgz" + elsif FileTest.exist?(@dir+"/graph.svgz") + @graphfile=@dir+"/graph.svgz" + end + + begin + f=File::open(@graphfile) + z=Zlib::GzipReader.open(f) + lines=z.readlines[1..20].join + z.close + f.close + rescue + return + end + if lines != @lines + @hosts={} + @selection.clear + @lines=lines + if lines.include?("nkscape") then + parseInkscape + elsif lines.include?("raphviz") then + parseGraphviz + else + $stderr.puts("Error : Svg parser not found !") + end + begin + draw(@area) + rescue + + end + whenNewGraph + end + end + + def netDetector + + #p "add netDetector" + @netTimeout=Gtk.timeout_add(2000) { + #p "netDetector... #{Time.now}" + detect + #p "netDetector end #{Time.now}" + true + } + + #Gtk.timeout_add(100) { + # begin + # @net.detect if @net + # rescue + # end + # false + #} + @graphTimeout=Gtk.timeout_add(200) { + + if @dir && @dir != "" + + if ! FileTest.exist?(@graphfile) + @graphfile=nil + end + + if ! @graphfile + if FileTest.exist?(@dir+"/net.svgz") && ENV['RAW_GRAPH']=="0" + @graphfile=@dir+"/net.svgz" + elsif FileTest.exist?(@dir+"/graph.svgz") + @graphfile=@dir+"/graph.svgz" + end + end + + if (@graphfile) + begin + @dateGraphFile=File.mtime(@graphfile) + rescue + end + #p @dateGraphFile + #p " " + if( ! @lastDateGraphFile || @dateGraphFile!=@lastDateGraphFile) + + dir=@dir.dup + + @lines="" + @pixbuf=nil + parseGraph + area.queue_draw + @lastDateGraphFile=@dateGraphFile + end + end + end + + true + } + + end + + def whenNewGraph + + #p "whenNewGraph..." + + l=`#{$VDN_PATH}/bin/vdn-list | grep -v '^#'` + l=l.split("\n") + l=l.sort { |a,b| + if a.size > b.size + 1 + else + a <=> b + end + } + + # consoles + + #@consolesNotebook.set_page(0) + + #while @consolesNotebook.n_pages > 0 + # @consolesNotebook.remove_page(0) + #end + + while @consolesNotebook.n_items > 0 + @consolesNotebook.remove(@consolesNotebook.nth_item(0)) + end + + l.each { |i| + #@consolesNotebook.append_page(Gtk::Frame.new, Gtk::Button.new(i)) + #@consolesNotebook.show_all + b=Gtk::ToolButton.new(nil, i) + #b.can_focus=false + @consolesNotebook.add(b) + b.signal_connect("clicked") { + #p "initBar : add console" + #@consoles.addTerm(i) + mySystem("vdn-viewer #{i} &") + } + } + + @consolesNotebook.show_all + #@consoles.initBar # initBar consoles + + # ssh + + #while @sshNotebook.n_pages > 0 + # @sshNotebook.remove_page(0) + #end + + while @sshNotebook.n_items > 0 + @sshNotebook.remove(@sshNotebook.nth_item(0)) + end + + l.each { |i| + + #b=Gtk::Button.new(i) + b=Gtk::ToolButton.new(nil, i) + #b.can_focus=false + #b.relief=Gtk::RELIEF_NONE + + #@sshNotebook.append_page(Gtk::Frame.new, b) + @sshNotebook.add(b) + b.signal_connect("clicked") { + #p "initBar : add ssh" + if ENV['VDN_EXTERNAL_SSH'] != "1" + #cmd=$VDN_PATH+"/bin/vdn-ssh-loop -X #{user}@#{i.name}" + #@ssh.addTerm(i.name, cmd) + @ssh.addTerm(i) + @notebook.set_page(3) + else + user=@main.net.combo.active_text + startTerminal("vdn-ssh-loop -X #{user}@#{i}", + "#{$VDN_PATH}/bin/vdn-ssh-loop -X #{user}@#{i}") + end + } + + } + + @sshNotebook.show_all + + #@ssh.initBar # ssh initBar + + + #@notebook.set_page(3) + + + + + end + + def open # class Net + + + return if ! @dir || @dir == "" + + + r=Dir.glob("#{@dir}/*.conf") + + if Dir.glob("#{@dir}/*.conf").size == 0 + Gtk.main_iteration while Gtk.events_pending? + + #p "@dir:#{@dir}" + #p "ENV['NETWORK_DIR']:#{ENV['NETWORK_DIR']}" + + startTerminal("vdn-build-network", + "#{$VDN_PATH}/bin/vdn-build-network", true, false) + end + + if FileTest.exist?(@dir+"/net.svgz") && ENV['RAW_GRAPH']=="0" + @graphfile=@dir+"/net.svgz" + elsif FileTest.exist?(@dir+"/graph.svgz") + @graphfile=@dir+"/graph.svgz" + else + $stderr.puts("No SVGZ file found !") + return + end + + Gtk.idle_add { + parseGraph + if (@graphfile) + @lastDateGraphFile=File.mtime(@graphfile) + end + + #GC.start + false + } + + #@consolesNotebook=Gtk::Notebook.new + #@consolesNotebook.scrollable=true + + # Create console + + @consoles=ConsolesPanel.new(@main, "vdn-start-wrapper -et ", "", \ + "\nN'utilisez les consoles qu'en cas de perte de réseau ! \ + Utilisez le panneau \"Ssh\".\n") + #@consolesNotebook.append_page(@consoles, + # Gtk::Label.new("ttyS0")) + + @consolesNotebook=Gtk::Toolbar.new + @consolesNotebook.toolbar_style=Gtk::Toolbar::Style::TEXT + @consolesNotebook.can_focus=false + + @consolesContainer=Gtk::VBox.new + @consolesContainerHBox=Gtk::HBox.new + @consolesContainerHBox.pack_start(Gtk::Label.new("Click to open display -> : "), false, false) + @consolesContainerHBox.pack_start(@consolesNotebook) + @consolesContainer.pack_start(@consolesContainerHBox, false, false) + @consolesContainer.pack_start(@consoles) + + + @notebook.insert_page(2,@consolesContainer, + Gtk::Label.new("Consoles")) + + @consoles.setProps("fgColor", "white") + @consoles.setProps("bgColor", "black") + @consoles.setProps("canClose", "false") + @consoles.setProps("audibleBell", "false") + @consoles.setProps("gridFont", ENV["GRID_FONT"]) + + + # Create ssh + + @ssh=SshPanel.new(@main, "vdn-ssh-loop -X ") + + #@sshNotebook=Gtk::Notebook.new + @sshNotebook=Gtk::Toolbar.new + #@sshNotebook.scrollable=true + @sshNotebook.toolbar_style=Gtk::Toolbar::Style::TEXT + @sshNotebook.can_focus=false + + @sshContainer=Gtk::VBox.new + @sshContainerHBox=Gtk::HBox.new(false, 5) + + @sshContainerHBox.pack_start(Gtk::Label.new("Ssh user : "), false, false) + + + combo = Gtk::ComboBoxEntry.new + combo.can_focus=false + combo.has_focus=false + combo.focus_on_click=false + %w( root test alice bob eve ).each do |val| + combo.append_text(val) + end + combo.set_size_request(120, -1) + combo.active = 0 + @combo=combo + + @sshContainerHBox.pack_start(@combo, false, false) + @sshContainerHBox.pack_start(Gtk::Label.new(" Click to open ssh -> : "), false, false) + @sshContainerHBox.pack_start(@sshNotebook) + @sshContainer.pack_start(@sshContainerHBox, false, false) + @sshContainer.pack_start(@ssh) + + + item=Gtk::CheckButton.new("New window") + item.active=true if ENV["VDN_EXTERNAL_SSH"] == "1" + item.signal_connect("clicked") { |w| @main.whenExternalSsh(w) } + + @sshContainerHBox.pack_start(item, false, false) + + + @sshContainerHBox.pack_start(b=Gtk::Button.new("Remove all"), false, false) + b.signal_connect('clicked') { + puts "clear ssh..." + @ssh.close + } + + + + @ssh.setProps("audibleBell", "false") + @ssh.setProps("gridFont", ENV["GRID_FONT"]) + + + createMoreMenu(@main.actionsMenu) + + + @notebook.insert_page(3, @sshContainer, Gtk::Label.new("Ssh")) + + whenNewGraph + + netDetector + end + + + def detect + return if ! @graphfile + begin + f=File::open(@graphfile) + rescue + return + end + + z=nil + begin + z=Zlib::GzipReader.open(f) if f != nil + rescue + z=nil + end + + begin + lines=z.readlines[1..10].join if z != nil + rescue + return + end + + begin + z.close if z != nil + f.close if f != nil + rescue + end + + #if lines != @lines + # @main.whenClose + # @main.openNet + #end + + #l=IO.popen("/bin/bash -c \""+$VDN_PATH+"/bin/vdn-alives"+"\"").read + io=IO.popen($VDN_PATH+"/bin/vdn-alives") + l=io.read + Thread.new { + desc="detect" + $threads.push(desc) + Process.wait(io.pid) + $threads.delete_at($threads.index(desc)) + } + #p "l1:#{l}" + + #cmd=$VDN_PATH+"/bin/vdn-alives" + #l=`#{cmd}` + #p "l2:#{l}" + + l=l.split + + #puts "detect : #{l}" + + @states.each_key { |i| + v=@hosts[i] + if v + if l.include?(i) + @states[i]=true + v.draw(self, @green) + else + @states[i]=false + v.draw(self, @red) + + if v.vncViewer + begin + v.vncViewer.destroy + rescue + end + v.vncViewer=nil + end + + if v.spiceViewer + begin + v.spiceViewer.destroy + rescue + end + v.spiceViewer=nil + end + + end + end + + } + true + end + + def runScript(name, script) + $stderr.puts "#{Time.now} Run: \"#{script}\"" + cmd="#{$VDN_PATH}/bin/vdn-scripts -n -r #{script}" + #VdnTerminal.new(name, cmd, false) + startTerminal(name, cmd, false, true, true) + end + + def editScript(name, script) + cmd="#{$VDN_PATH}/bin/vdn-scripts -e #{script}" + startTerminal(name, cmd, false) + #VdnTerminal.new(name, cmd, false, true, false) + end + + def hideScript(file) + mySystem("chmod 644 #{file}") + end + + def unhideScript(file) + mySystem("chmod 755 #{file}") + end + + def isScript(f) + return true if FileTest.symlink?(f) + return false if + ! FileTest.file?(f) || ! FileTest.executable?(f) # || ( f =~ /\/repair[^\/]*$/) + true + end + + def updateScriptsMenu + @main.scriptsMenu.each { |c| @main.scriptsMenu.remove(c) } + @main.scriptsMenu.append(Gtk::TearoffMenuItem.new) + dir=@dir+"/scripts" + l=Dir["#{dir}/*"] + l.sort.each { |i| + #next if ! FileTest.file?(i) + #if ! @testsToggle + # next if ! FileTest.executable?(i) + # next if ( i =~ /\/test.*/) + #end + + next if ! isScript(i) + f=File.basename(i) + s=Gtk::MenuItem.new(f) + s.signal_connect('activate') { + runScript("Script : #{f}", f) + } + @main.scriptsMenu.append(s) + } + @main.scriptsMenu.show_all + end + + def isTestScript(f) + return false if isScript(f) + return false if + ! FileTest.file?(f) || ! FileTest.executable?(f) + return true if ( f =~ /\/test.*/) + false + end + + def updateActionsMenu + #@main.actionsMenu.each { |c| @main.actionsMenu.remove(c) } + + #createMoreMenu(@main.actionsMenu) + + #@main.actionsMenu.show + #@main.actionsMenu.show_all + + #@main.actions.submenu=@main.actionsMenu + #@main.actions.show_all + #@main.actions.signal_connect('activate') { |w,e| + # updateActionsMenu + # false + #} + end + + def updateScriptsTestsMenu + @main.scriptsTestsMenu.each { |c| @main.scriptsTestsMenu.remove(c) } + dir=@dir+"/scripts" + l=Dir["#{dir}/*"] + @main.scriptsTestsMenu.append(@tearoff=Gtk::TearoffMenuItem.new) + l.sort.each { |i| + #next if ! FileTest.file?(i) + #if ! @testsToggle + # next if ! FileTest.executable?(i) + # next if ( i =~ /\/test.*/) + #end + #next if ! isTestScript(i) + next if ! FileTest.file?(i) + f=File.basename(i) + s=Gtk::MenuItem.new(f) + s.signal_connect('activate') { + #editScript("Script : #{f}", f) + runScript("Script : #{f}", f) + } + @main.scriptsTestsMenu.append(s) + } + + @main.scriptsTestsMenu.append(Gtk::MenuItem.new) + + # edit sub menu + editMenu = Gtk::Menu.new + editMenu.append(Gtk::TearoffMenuItem.new) + + l.sort.each { |i| + #next if ( ! isScript(i) && !isTestScript(i) ) + next if ! FileTest.file?(i) + f=File.basename(i) + e=Gtk::MenuItem.new(f) + e.signal_connect('activate') { + editScript("Script : #{f}", f) + } + editMenu.append(e) + } + + s=Gtk::MenuItem.new("Edit...") + s.submenu=editMenu + + #editMenu.append(s) + #editMenu.show + + @main.scriptsTestsMenu.append(s) + + # hide sub menu + hideMenu = Gtk::Menu.new + hideMenu.append(Gtk::TearoffMenuItem.new) + + l.sort.each { |i| + #next if ( ! isScript(i) && !isTestScript(i) ) + next if ! FileTest.file?(i) + f=File.basename(i) + e=Gtk::MenuItem.new(f) + e.signal_connect('activate') { + hideScript(i) + } + hideMenu.append(e) + } + + s=Gtk::MenuItem.new("Hide...") + s.submenu=hideMenu + @main.scriptsTestsMenu.append(s) + + # unhide sub menu + unhideMenu = Gtk::Menu.new + unhideMenu.append(Gtk::TearoffMenuItem.new) + + l.sort.each { |i| + #next if ( ! isScript(i) && !isTestScript(i) ) + next if ! FileTest.file?(i) + f=File.basename(i) + e=Gtk::MenuItem.new(f) + e.signal_connect('activate') { + unhideScript(i) + } + unhideMenu.append(e) + } + s=Gtk::MenuItem.new("Unhide...") + s.submenu=unhideMenu + @main.scriptsTestsMenu.append(s) + + + s=Gtk::MenuItem.new("New script...") + s.signal_connect('activate') { + #mySystem("echo -en \"New script name ? : \"; read new; echo #{dir}/$new") + cmd="echo -en \\\"(new) New script name ? : \\\"; \ + read new; + + cat << EOF > #{dir}/\\$new; +#!/usr/bin/env bash + +DESC=\\\"One line description.\\\" + +run() { + + # name=XXX + # + # requestSshGuest \\\$name + # ... + +} + +EOF +" + + startTerminal("New script", cmd, false) + } + @main.scriptsTestsMenu.append(s) + + + + # renameScript sub menu + renameScriptMenu = Gtk::Menu.new + renameScriptMenu.append(Gtk::TearoffMenuItem.new) + + l.sort.each { |i| + #next if ( ! isScript(i) && !isTestScript(i) ) + next if ! FileTest.file?(i) + f=File.basename(i) + e=Gtk::MenuItem.new(f) + e.signal_connect('activate') { + cmd="echo -en \\\"(rename) New script name ? : \\\"; read new; mv #{i} #{dir}/\\$new" + startTerminal("Rename #{i}", cmd, false) + } + renameScriptMenu.append(e) + } + s=Gtk::MenuItem.new("Rename...") + s.submenu=renameScriptMenu + @main.scriptsTestsMenu.append(s) + + + # copyScriptMenu sub menu + copyScriptMenu = Gtk::Menu.new + copyScriptMenu.append(Gtk::TearoffMenuItem.new) + + l.sort.each { |i| + #next if ( ! isScript(i) && !isTestScript(i) ) + next if ! FileTest.file?(i) + f=File.basename(i) + e=Gtk::MenuItem.new(f) + e.signal_connect('activate') { + cmd="echo -en \\\"(copy) New script name ? : \\\"; read new; cp #{i} #{dir}/\\$new" + startTerminal("Copy #{i}", cmd, false) + } + copyScriptMenu.append(e) + } + s=Gtk::MenuItem.new("Copy...") + s.submenu=copyScriptMenu + @main.scriptsTestsMenu.append(s) + + # deleteScript sub menu + deleteScriptMenu = Gtk::Menu.new + deleteScriptMenu.append(Gtk::TearoffMenuItem.new) + + l.sort.each { |i| + #next if ( ! isScript(i) && !isTestScript(i) ) + next if ! FileTest.file?(i) + f=File.basename(i) + e=Gtk::MenuItem.new(f) + e.signal_connect('activate') { + cmd="rm -i #{i}" + startTerminal("Delete #{i}", cmd, false) + } + deleteScriptMenu.append(e) + } + s=Gtk::MenuItem.new("Delete...") + s.submenu=deleteScriptMenu + @main.scriptsTestsMenu.append(s) + + @main.scriptsTestsMenu.append(Gtk::MenuItem.new) + + s=Gtk::MenuItem.new("Terminal (in scripts directory)...") + s.signal_connect('activate') { + startTerminal("", "cd #{@dir}/scripts; bash", false) + } + @main.scriptsTestsMenu.append(s) + + + @main.scriptsTestsMenu.show_all + end + + + def updateIsosMenu(menu) + menu.each { |c| menu.remove(c) } + dir=$VDN_PATH+"/files/g" + l=Dir["#{dir}/*.iso"] + l.sort.each { |i| + f=File.basename(i) + s=Gtk::MenuItem.new(f) + s.signal_connect('activate') { + whenStartOnSelectedIso(i) + } + menu.append(s) + } + menu.show_all + end + + def updateMenus + updateMainMenu + #updateMoreMenu + end + + def updateMoreMenu(menu) + state=true + state=false if @selection.empty + + l=[menu.downloadDisks,menu.uploadDisksAndIsos,menu.uploadDisks] + l.each { |i| i.sensitive=state } + end + + def updateOtherBuildMenu + l=`vdn-list-networks -b` + #p "l:#{l}" + l.split.sort.each { |i| + f=File.basename(i) + e=Gtk::MenuItem.new(f) + e.signal_connect('activate') { + startTerminal("Edit and build network...", + "#{ENV['VDN_PATH']}/bin/vdn-build-network -e #{File.dirname(@dir)}/#{f}", true) + #startTerminal("#{$editor} #{f}", + #"#{$editor} #{File.dirname(@dir)}/#{f}/build", false) + + } + @otherBuildMenu.append(e) + } + end + + def createMoreMenu(menu) + + #p "createMoreMenu:#{menu}" + menu.append(Gtk::TearoffMenuItem.new) + + #p "add meth to menu : #{menu}" + class << menu + attr_accessor :downloadDisks, :uploadDisksAndIsos, :uploadDisks + end + + menu.downloadDisks=Gtk::MenuItem.new("Download cdrom(s) and/or disk(s)...") + menu.append(menu.downloadDisks) + menu.downloadDisks.signal_connect('activate') { |w| + whenDownload + } + + menu.uploadDisksAndIsos=Gtk::MenuItem.new("Upload cdrom(s) and/or disk(s)...") + menu.append(menu.uploadDisksAndIsos) + menu.uploadDisksAndIsos.signal_connect('activate') { |w| + whenUploadDisksAndIsos + } + + menu.uploadDisks=Gtk::MenuItem.new("Upload only disk(s)...") + menu.append(menu.uploadDisks) + menu.uploadDisks.signal_connect('activate') { |w| + whenUploadDisks + } + + menu.append(Gtk::MenuItem.new()) +=begin + @editMainConfigTemplate=Gtk::MenuItem.new("Edit template config (local) ..."); + menu.append(@editMainConfigTemplate) + @editMainConfigTemplate.signal_connect('activate') { |w| + startTerminal("#{$editor} config.template.local", + "[ ! -e #{ENV['VDN_PATH']}/config.template.local ] && \ + cp #{ENV['VDN_PATH']}/config.template #{ENV['VDN_PATH']}/config.template.local; \ + #{$editor} #{ENV['VDN_PATH']}/config.template", false) + } +=end + @editNetworkScript=Gtk::MenuItem.new("Edit network script..."); + menu.append(@editNetworkScript) + @editNetworkScript.signal_connect('activate') { |w| + startTerminal("Build network...", "#{ENV['VDN_PATH']}/bin/vdn-build-network -e #{@dir}", false) + } + + @buildNetwork=Gtk::MenuItem.new("(Re)build network..."); + menu.append(@buildNetwork) + @buildNetwork.signal_connect('activate') { |w| + #p "@dir:#{@dir}" + #p "ENV['NETWORK_DIR']:#{ENV['NETWORK_DIR']}" + + startTerminal("vdn-build-network", + "#{$VDN_PATH}/bin/vdn-build-network") + } + + + + menu.append(Gtk::MenuItem.new()) + + + @otherBuildMenu = Gtk::Menu.new + @otherBuildMenu.append(Gtk::TearoffMenuItem.new) + updateOtherBuildMenu + s=Gtk::MenuItem.new("Other \"build\" scripts...") + s.submenu=@otherBuildMenu + + menu.append(s) + + menu.append(Gtk::MenuItem.new()) + + @cloneNetwork=Gtk::MenuItem.new("Clone network..."); + menu.append(@cloneNetwork) + @cloneNetwork.signal_connect('activate') { |w| + startTerminal("vdn-clone-network", + "#{$VDN_PATH}/bin/vdn-clone-network", true, false) + #mySystem("vdn-clone-network") + + } + + @cloneNetwork=Gtk::MenuItem.new("Delete network..."); + menu.append(@cloneNetwork) + @cloneNetwork.signal_connect('activate') { |w| + startTerminal("vdn-clone-network", + "#{$VDN_PATH}/bin/vdn-delete-network") + #mySystem("vdn-clone-network") + @main.closeNet + } + + menu.append(Gtk::MenuItem.new()) + + @editNetworkGraph=Gtk::MenuItem.new("Inkscape net.svgz..."); + menu.append(@editNetworkGraph) + @editNetworkGraph.signal_connect('activate') { |w| + mySystem("inkscape #{@dir}/net.svgz &") + } + + @editNetworkGraph=Gtk::MenuItem.new("Delete net.svgz..."); + menu.append(@editNetworkGraph) + @editNetworkGraph.signal_connect('activate') { |w| + startTerminal("Delete #{@dir}/net.svgz", "rm -i #{@dir}/net.svgz", false) + } + + menu.append(Gtk::MenuItem.new()) + + @s=Gtk::MenuItem.new("Publish network..."); + menu.append(@s) + @s.signal_connect('activate') { |w| + startTerminal("vdn-publish-network", + "vdn-publish-network") + } + + menu.append(Gtk::MenuItem.new) + + s=Gtk::MenuItem.new("Terminal (in network directory)...") + s.signal_connect('activate') { + startTerminal("", "cd #{@dir}; bash", false) + } + menu.append(s) + + end + + def createMenu(menu) + menu.append(Gtk::MenuItem.new("")) + @tearoff=Gtk::TearoffMenuItem.new + menu.append(@tearoff) + + + #menu.append(Gtk::MenuItem.new("")) + + @start=Gtk::MenuItem.new("Download disk(s)...") + menu.append(@start) + @start.signal_connect('activate') { |w| whenDownload } + + menu.append(Gtk::MenuItem.new()) + + @start=Gtk::MenuItem.new("Start") + menu.append(@start) + @start.signal_connect('activate') { |w| whenStart } + + @startOnCdrom=Gtk::MenuItem.new("Start on cdrom") + menu.append(@startOnCdrom) + @startOnCdrom.signal_connect('activate') { |w| whenStartOnCdrom } + + @startSelectCdromMenu = Gtk::Menu.new + @startSelectCdrom=Gtk::MenuItem.new("Start on selected cdrom") + @startSelectCdrom.submenu=@startSelectCdromMenu + + updateIsosMenu(@startSelectCdromMenu) + + menu.append(@startSelectCdrom) + + @halt=Gtk::MenuItem.new("Halt") + menu.append(@halt) + @halt.signal_connect('activate') { |w| whenHalt } + + #@reboot=Gtk::MenuItem.new("Reboot") + #menu.append(@reboot) + #@reboot.signal_connect('activate') { |w| whenReboot } + #@reboot.sensitive=false + + @save=Gtk::MenuItem.new("Save") + menu.append(@save) + @save.signal_connect('activate') { |w| whenSave } + + @restart=Gtk::MenuItem.new("Restart") + menu.append(@restart) + @restart.signal_connect('activate') { |w| whenRestart } + + @ssh=Gtk::MenuItem.new("Ssh") + menu.append(@ssh) + @ssh.signal_connect('activate') { |w| whenSsh } + + + @viewer=Gtk::MenuItem.new("Viewer") + menu.append(@viewer) + @viewer.signal_connect('activate') { |w| whenViewer } + + #Gtk::Stock.add(Gtk::Stock::EXECUTE, "Terminal", Gdk::Window::CONTROL_MASK, Gdk::Keyval::GDK_T) + #@bviewer = Gtk::ImageMenuItem.new(Gtk::Stock::EXECUTE, @group) + #networksMenu.append(@bviewer) + #@bviewer.signal_connect("activate") { |w| whenViewer } + + + @config=Gtk::MenuItem.new("Config...") + menu.append(@config) + @config.signal_connect('activate') { |w| whenConfig } + + @infos=Gtk::MenuItem.new("Infos") + menu.append(@infos) + @infos.signal_connect('activate') { |w| whenInfos } + + @clean=Gtk::MenuItem.new("Clean") + menu.append(@clean) + @clean.signal_connect('activate') { |w| whenClean } + + @kill=Gtk::MenuItem.new("Kill") + menu.append(@kill) + @kill.signal_connect('activate') { |w| whenKill } + + menu.append(Gtk::MenuItem.new("")) + +=begin + @moreMenu = Gtk::Menu.new + @more=Gtk::MenuItem.new("More...") + @more.submenu=@moreMenu + + createMoreMenu(@moreMenu) + menu.append(@more) + @more.signal_connect('activate') { |w,e| + updateMoreMenu(menu) + false + } + + sep1=Gtk::MenuItem.new() + menu.append(sep1) +=end + + menu.show_all + end + + def updateMainMenu + state=true + state=false if @selection.empty + + @menu.children.each { |i| i.sensitive=state } + #@more.sensitive=true + @tearoff.sensitive=true + + end + + def showMenu + updateMainMenu + @menu.popup(nil, nil, 3, 0) + end + + def startTerminal(name, cmd, read=true, background=true, big=false) + @main.startTerminal(name, cmd, read, background, big) + end + + def whenStart + @selection.to_a.sort_by{ |i| i.name }.each { |i| + if ! @states[i.name] + p "Start #{i.name}" + if @consoles + cmd=$VDN_PATH+"/bin/vdn-start-wrapper -et #{i.name}" + @consoles.addTerm(i.name, cmd) + @notebook.set_page(2) + else + cmd=$VDN_PATH+"/bin/vdn-start-wrapper #{i.name}" + mySystem(cmd) + end + end + } + + end + + def whenStartOnCdrom + @selection.to_a.each { |i| + if ! @states[i.name] + p "Start #{i.name}" + if @consoles + cmd=$VDN_PATH+"/bin/vdn-start-wrapper -et -v BOOT_CDROM=1 #{i.name}" + p "addTerm:" + @consoles.addTerm(i.name, cmd) + @notebook.set_page(2) + else + cmd=$VDN_PATH+"/bin/vdn-start-wrapper -v BOOT_CDROM=1 #{i.name}" + mySystem(cmd) + end + end + } + + end + + def whenStartOnSelectedIso(iso) + @selection.to_a.each { |i| + if ! @states[i.name] + p "Start #{i.name}" + if @consoles + cmd=$VDN_PATH+"/bin/vdn-start-wrapper -et -v \"BOOT_CDROM=1;CDROM=#{iso}\" #{i.name}" + @consoles.addTerm(i.name, cmd) + @notebook.set_page(2) + else + cmd=$VDN_PATH+"/bin/vdn-start-wrapper -v \"BOOT_CDROM=1;CDROM=#{iso}\" #{i.name}" + mySystem(cmd) + end + end + } + + end + + def whenDownload + l="" + @selection.to_a.each { |i| + l="#{l} #{i.name}" + } + + startTerminal("vdn-download-disks #{l}", "#{$VDN_PATH}/bin/vdn-download-disks #{l}") + end + + def whenUploadDisks + l="" + @selection.to_a.each { |i| + l="#{l} #{i.name}" + } + startTerminal("vdn-upload-disks #{l}", "#{$VDN_PATH}/bin/vdn-upload-disks #{l}") + end + + def whenUploadDisksAndIsos + l="" + @selection.to_a.each { |i| + l="#{l} #{i.name}" + } + startTerminal("vdn-upload-disks -o #{l}", "#{$VDN_PATH}/bin/vdn-upload-disks -o #{l}") + end + + def whenHalt + + @selection.to_a.each { |i| + if @states[i.name] + mySystem($VDN_PATH+"/bin/vdn-halt #{i.name} &") + end + } + + end + + + def whenReboot + @selection.to_a.each { |i| + if @states[i.name] + mySystem($VDN_PATH+"/bin/vdn-ssh root@#{i.name} reboot &") + end + } + + end + + def whenRestart + @selection.to_a.each { |i| + if @states[i.name] + p "Restart #{i.name}..." + mySystem($VDN_PATH+"/bin/vdn-restart -g #{i.name} &") + end + } + end + + def whenSave + @selection.to_a.each { |i| + if @states[i.name] + mySystem($VDN_PATH+"/bin/vdn-save #{i.name} &") + end + } + + end + + def whenSsh + @selection.to_a.each { |i| + user=@main.net.combo.active_text + if @ssh && ENV['VDN_EXTERNAL_SSH'] != "1" + cmd=$VDN_PATH+"/bin/vdn-ssh-loop -X #{user}@#{i.name}" + @ssh.addTerm(i.name, cmd) + @notebook.set_page(3) + else + startTerminal("vdn-ssh-loop -X #{user}@#{i.name}", + "#{$VDN_PATH}/bin/vdn-ssh-loop -X #{user}@#{i.name}") + end + } + + end + + def whenViewer + @selection.to_a.each { |i| + if @states[i.name] + mySystem($VDN_PATH+"/bin/vdn-spice-viewer #{i.name} &") + end + } + + end + + def whenConfig + @selection.to_a.each { |i| + startTerminal("#{$editor} #{i.name}.conf", + "#{$editor} #{@dir}/#{i.name}.conf", false) + } + + end + + + def whenInfos + @selection.to_a.each { |i| + startTerminal("vdn-infos #{i.name}", + "#{$VDN_PATH}/bin/vdn-infos #{i.name}") + } + + end + + def whenClean + l="" + @selection.to_a.each { |i| + l="#{l} #{i.name}" + } + + startTerminal("vdn-clean #{l}", "#{$VDN_PATH}/bin/vdn-clean #{l}", false) if l != "" + + end + + def whenHaltAll + @hosts.each_value { |i| + if @states[i.name] + mySystem($VDN_PATH+"/bin/vdn-halt #{i.name} &") + end + } + end + + def whenKillAll + @hosts.each_value { |i| + if @states[i.name] + mySystem($VDN_PATH+"/bin/vdn-kill -s #{i.name} &") + end + } + end + + + def whenKill + @selection.to_a.each { |i| + if @states[i.name] + mySystem($VDN_PATH+"/bin/vdn-kill -s #{i.name} &") + end + } + end + + def startVnc(name) + Gtk.queue do + @notebook.set_page(2) + end + cmdFifoPath="#{ENV['TMPDIR']}/vdn-vnc-#{ENV['USER']}-#{name}-fifo" + mySystem("mkfifo #{cmdFifoPath} 2> /dev/null") + mySystem("chmod 600 #{cmdFifoPath}") + vncSock="#{ENV['TMPDIR']}/vdn-vnc-#{ENV['USER']}-#{name}-socket" +=begin + Thread.new { + + Gtk.queue do + label=Gtk::Label.new(name) + vnc=VncViewer.new(self, label, name, $VDN_PATH, vncSock, cmdFifoPath) + @hosts[name].vncViewer=vnc + @consolesNotebook.append_page(vnc, label) + @consolesNotebook.show_all + vnc.plug + @consolesNotebook.set_page(@consolesNotebook.n_pages-1) + end + } +=end + end + + + + def startSpiceOld(name) + Gtk.queue do + @notebook.set_page(2) + end + #cmdFifoPath="#{ENV['TMPDIR']}/vdn-vnc-#{ENV['USER']}-#{name}-fifo" + #mySystem("mkfifo #{cmdFifoPath} 2> /dev/null") + #mySystem("chmod 600 #{cmdFifoPath}") + + Thread.new { + desc="startSPiceOld" + $threads.push(desc) + Gtk.queue do + label=Gtk::Label.new(name) + #spice=Gtk::EventBox.new + spice=SpiceViewer.new(name) + sleep 2 + #spice=Gtk::EventBox.new + #@hosts[name].spiceViewer=spice + #@consolesNotebook.append_page(spice, label) + + #@consolesNotebook.show_all + + #spice.plug + + #@consolesNotebook.set_page(@consolesNotebook.n_pages-1) + + end + $threads.delete_at($threads.index(desc)) + } + end + + def hostsSorted + systems=[] + @hosts.each_value { |i| systems.push(i) } + systems.sort! { |a,b| + r=0 + if a.y < b.y+50 && a.y < b.y-50 + r=-1 + elsif a.y > b.y+50 && a.y > b.y-50 + r=1 + elsif a.x < b.x + r=-1 + elsif a.x > b.x + r=1 + end + r + } + return systems + end + + + def select(m, b) + + if ! m && b!=3 + @selection.clear + return + end + + case @main.mod + when "Shift" + found=false + last=@selection.array[0] + return if !last + sorted=hostsSorted + il=sorted.index(last) + im=sorted.index(m) + + sorted=sorted.reverse if im>il + sorted.each { |i| + if i==m + found=true + end + if found + if i.isSel + break; + else + @selection.add(i) + end + + end + } + when "Control" + if m && ! m.isSel + @selection.add(m) + else + @selection.del(m) if b!=3 + end + + else + if m && ! m.isSel + @selection.clear + @selection.add(m) + end + end + + if b==3 + showMenu + end + + end + + + def parseEvent(w, e) + case e.class.to_s + when "Gdk::EventButton" + if e.event_type == Gdk::Event::Type::BUTTON2_PRESS + rs=Gdk::Rectangle.new(e.x, e.y, 1, 1) + + m=nil + @hosts.each_value { |i| + x=i.rx; y=i.ry; w=i.rw; h=i.rh + r=Gdk::Rectangle.new( + x*@cx+@dx+@bx, + y*@cy+@dy+@by, + w*@cx+1, h*@cy+1) + + m=i if r.intersect(rs) + break if m + } + + elsif e.event_type == Gdk::Event::Type::BUTTON_PRESS + + rs=Gdk::Rectangle.new(e.x, e.y, 1, 1) + + m=nil + @hosts.each_value { |i| + x=i.rx; y=i.ry; w=i.rw; h=i.rh + r=Gdk::Rectangle.new( + x*@cx+@dx+@bx, + y*@cy+@dy+@by, + w*@cx+1, h*@cy+1) + + m=i if r.intersect(rs) + break if m + } + + if m==nil + @mx=e.x + @my=e.y + else + @mx=@my=nil + end + + if e.button == 3 + showMenu + @mx=@my=nil + select(m, e.button) if @selection.empty + + else + select(m, e.button) + end + else + if @selRec + undrawSelRec + end + @mx=@my=nil + end + when "Gdk::EventMotion" + if @mx + drawSelRec(@mx, @my, e.x, e.y) + updateSelRec + end + end + + end + + def updateSelect + @selection.array.each { |i| + i.sel(self) + } + end + + + + def updateSelRec + @hosts.each_value { |i| + state=false + x=i.x; y=i.y; w=i.rw; h=i.rh + _x=x*@cx+@dx+@bx + _y=y*@cy+@dy+@by + _w=w*@cx+1 + _h=h*@cy+1 + r=Gdk::Rectangle.new(_x, _y, _w, _h) + s=@selRec + if r.intersect(@selRec).to_a==r.to_a + state=true + end + + if state + @selection.add(i) if ! i.isSel + else + @selection.del(i) if i.isSel + end + + } + end + + + + def drawSelRec(x1, y1, x2, y2) + return if @gc==nil + if @selRec + undrawSelRec + end + + if x1>x2 + t=x2; x2=x1; x1=t + end + + if y1>y2 + t=y2; y2=y1; y1=t + end + + @selRec=Gdk::Rectangle.new(x1, y1, x2-x1, y2-y1) + + @gc.function = Gdk::GC::XOR + @gc.fill = Gdk::GC::Fill::SOLID + @gc.rgb_fg_color = @grey + @gc.set_line_attributes(1, Gdk::GC::LineStyle::ON_OFF_DASH, Gdk::GC::CapStyle::ROUND, Gdk::GC::JoinStyle::ROUND) + + return if @area.window==nil + + @area.window.draw_rectangle(@gc, false, x1, y1, x2-x1, y2-y1) + @gc.function = Gdk::GC::COPY + + + end + + + def undrawSelRec + return if @gc==nil + if @selRec + @gc.function = Gdk::GC::XOR + @gc.fill = Gdk::GC::Fill::SOLID + @gc.rgb_fg_color = @grey + @gc.set_line_attributes(1, Gdk::GC::LineStyle::ON_OFF_DASH, Gdk::GC::CapStyle::ROUND, Gdk::GC::JoinStyle::ROUND) + + return if @area.window==nil + + @area.window.draw_rectangle(@gc, false, @selRec.x, @selRec.y, @selRec.width, @selRec.height) + @gc.function = Gdk::GC::COPY + + @selRec=nil + end + end + + + def drawBoxs + @hosts.each { |k,v| + if @states[k] + v.draw(self, @green) + else + v.draw(self, @red) + end + } + end + + + def parseInkscape + + @gw=@gh=nil + Zlib::GzipReader.open( @graphfile) do |aFile| + r=false + x=y=width=height=label=nil + tx=ty=nil + + aFile.each_line do |line| + + case line + + when /transform="translate/ + + if !tx + tx=line.chomp.sub(/^.*translate.([-0-9.]+).*$/, '\1').to_i + ty=line.chomp.sub(/^.*translate.*,([-0-9.]+).*$/, '\1').to_i + end + + when /width=/ + if ! @gw + @gw=line.chomp.sub(/^.*"([-0-9.]+)".*$/, '\1').to_i + + else + width=line.gsub(/[^0-9.]/, "").to_i + end + + when /height/ + if ! @gh + @gh=line.chomp.sub(/^.*"([-0-9.]+)".*$/, '\1').to_i + else + height=line.gsub(/[^0-9.]/, "").to_i + end + + when // + + + case line + when /label=/ + label=line.chomp.sub(/^.*"#([^"].*)".*$/, '\1') + when /x=/ + x=line.gsub(/[^0-9.]/, "").to_i + when /y=/ + y=line.gsub(/[^0-9.]/, "").to_i + end + + if ( !x || !y || !width || !height ) && label!=nil + $stderr.puts "rec : #{label} incomplet !" + else + if label + @hosts[label]=Host.new( + label, x+tx, y+ty, width, height) + @states[label]=false + end + end + end + end + end + + end + + + def parseGraphviz + @gw=@gh=tx=ty=gw=gh=nil + + rw=1.0; rh=1.0 + + svg=RSVG::Handle.new_from_file(@graphfile) + svg.close + @gw=svg.width + @gh=svg.height + + Zlib::GzipReader.open( @graphfile) do |aFile| + r=false + x=y=width=height=label=nil + + aFile.each_line do |line| + case line + when /transform.*translate/ + if !tx + tx=line.chomp.sub(/^.*translate.([-0-9.]+).*$/, '\1').to_i + ty=line.chomp.sub(/^.*translate.* ([-0-9.]+).*$/, '\1').to_i + end + #when /class=.*node.*title/ + # label=line.chomp.sub(/^.*title>(.*)<.*$/, '\1') + when /^[^%]*$/ + label=line.chomp.sub(/^.*title>(.*)<.*$/, '\1') + when /polygon/ + points=line.chomp.sub(/^.*points="(.*)".*$/, '\1') + points=points.split(" ") + x1=points[0].sub(/^([-0-9.]+).*$/, '\1').to_i + y1=points[0].sub(/^[-0-9.]+,([-0-9.]+)$/, '\1').to_i + x2=points[2].sub(/^([-0-9.]+).*$/, '\1').to_i + y2=points[2].sub(/^[-0-9.]+,([-0-9.]+)$/, '\1').to_i + if x1<x2 + x=x1; width=x2-x1 + else + x=x2; width=x1-x2 + end + + if y1<y2 + y=y1; height=y2-y1 + else + y=y2; height=y1-y2 + end + + if label + label.gsub!("-", "-") + @hosts[label]=Host.new( + label, (x+tx)*rw, (y+ty)*rh, width*rw, height*rh) + @states[label]=false + else + gw=width; gh=height + rw=@gw*1.0/gw; rh=@gh*1.0/gh + end + + end + + + end + end + end + + def close + + + if @graphTimeout + Gtk.timeout_remove(@graphTimeout) + @graphTimeout=nil + end + + if @netTimeout + #p "remove netDetector" + Gtk.timeout_remove(@netTimeout) + @netTimeout=nil + end + + @notebook.remove_page(1) + + if @consolesNotebook + if @consoles + #@consolesNotebook.remove_page(@consolesNotebook.page_num(@consoles)) + @consoles.close + @consoles.destroy + @consoles=nil + end + + if @ssh + + #@notebook.remove_page(@notebook.page_num(@ssh)) + @ssh.close + @ssh.destroy + @ssh=nil + end + + end + @consolesNotebook=nil + @notebook.remove_page(1) + @notebook.remove_page(1) + @notebook.set_page(0) + + @hosts={} + @states={} + @graphfile=nil + + end + +end + +class Host + attr_reader :rectangle, :rectangleSmall, :name, :isSel + attr_reader :x, :y, :w, :h + attr_reader :rx, :ry, :rw, :rh + attr_accessor :vncViewer, :spiceViewer + + def initialize(name, x, y, w, h) + @isSel=false + @name=name; @x=x; @y=y; @w=w; @h=h + @rx=@x; @ry=@y; @rw=@w; @rh=@h + @black = Gdk::Color.parse("black") + @vncViewer=nil + @spiceViewer=nil + end + + def draw(panel, color) + + @area=panel.area + @gc=panel.gc + + return if !@gc || !panel.cx + + @gc.function = Gdk::GC::COPY + @gc.fill = Gdk::GC::Fill::SOLID + @gc.rgb_fg_color = color + @gc.set_line_attributes(1, Gdk::GC::LineStyle::SOLID, Gdk::GC::CapStyle::ROUND, Gdk::GC::JoinStyle::ROUND) + + cx=panel.cx; cy=panel.cy + dx=panel.dx; dy=panel.dy + bx=panel.bx; by=panel.by + + return if @area.window==nil + + begin + @area.window.draw_rectangle(@gc, false, @x*cx+dx+bx, @y*cy+dy+by, @w*cx+1, @h*cy+1) + rescue + p "Error in draw..." + p $! + end + + @gc.rgb_fg_color = @black + end + + def sel(panel) + color=panel.selColor + cx=panel.cx; cy=panel.cy + dx=panel.dx; dy=panel.dy + bx=panel.bx; by=panel.by + + @isSel=true + + @gc.function = Gdk::GC::XOR + @gc.fill = Gdk::GC::Fill::SOLID + @gc.rgb_fg_color = color + @gc.set_line_attributes(1, Gdk::GC::LineStyle::SOLID, Gdk::GC::CapStyle::ROUND, Gdk::GC::JoinStyle::ROUND) + + + return if @area.window==nil + + #p "### update draw in sel method" + + @area.window.draw_rectangle(@gc, true, @x*cx+dx+bx+2, @y*cy+dy+by+2, @w*cx+1-3, @h*cy+1-3) + @gc.function = Gdk::GC::COPY + + end + + def unsel(panel) + + return if @gc==nil + color=panel.selColor + cx=panel.cx; cy=panel.cy + dx=panel.dx; dy=panel.dy + bx=panel.bx; by=panel.by + @isSel=false + @gc.function = Gdk::GC::XOR + @gc.fill = Gdk::GC::Fill::SOLID + @gc.rgb_fg_color = color + @gc.set_line_attributes(1, Gdk::GC::LineStyle::SOLID, Gdk::GC::CapStyle::ROUND, Gdk::GC::JoinStyle::ROUND) + + return if @area.window==nil + + @area.window.draw_rectangle(@gc, true, @x*cx+dx+bx+2, @y*cy+dy+by+2, @w*cx+1-3, @h*cy+1-3) + @gc.function = Gdk::GC::COPY + end + +end + + +class Selection + def initialize(panel) + @sel=[] + @panel=panel + + end + + def add(m) + @sel.push(m) if ! @sel.include?(m) + m.sel(@panel) + @panel.updateMenus + end + + def del(m) + @sel.delete(m) + m.unsel(@panel) + @panel.updateMenus + end + + def clear + @sel.each { |i| i.unsel(@panel) } + @sel=[] + @panel.updateMenus + end + + def array + return @sel + end + + def empty + return @sel.size==0 + end + + def to_a + return @sel + end +end + + class Gtk::Browser < Gtk::VBox + attr_accessor :banner + def initialize + super + pack_start(@text=Gtk::TextView.new, true, true) + @text.justification = Gtk::JUSTIFY_CENTER + @text.cursor_visible=false + + end + def location=(url) + @url=url + @text.editable=true + @text.buffer.text="\n" + + w=Gtk::Image.new(@banner) + w.show_all + bold = @text.buffer.create_tag(nil, + { + 'weight' => + Pango::Weight::BOLD + }) + + iter=@text.buffer.end_iter + anchor = @text.buffer.create_child_anchor(iter) + @text.add_child_at_anchor(w, anchor) + @text.buffer.insert(iter, "\n\nBienvenue !\n\n", bold) + @text.buffer.insert_at_cursor("\n\n Cliquez sur le bouton ci-dessous pour accéder à la documentation dans votre navigateur : \n\n") + iter=@text.buffer.end_iter + anchor = @text.buffer.create_child_anchor(iter) + b1=Gtk::Button.new("#{@url}") + b1.show + b1.signal_connect("clicked") { mySystem("xdg-open #{@url} &") } + @text.add_child_at_anchor(b1, anchor) + @text.buffer.insert_at_cursor("\n\n") + @text.editable=false + end + end + + +### begin: pterms + +#!/usr/bin/env ruby + +require 'gtk2' + +if FileTest.exist?(ENV["VDN_PATH"]+"/distribs/hosts/"+ENV["HOST_RELEASE"]+"/vte.so") + #puts "load "+ENV["VDN_PATH"]+"/files/"+ENV["HOST_RELEASE"]+"/vte.so" + require ENV["VDN_PATH"]+"/distribs/hosts/"+ENV["HOST_RELEASE"]+"/vte.so" +else + require 'vte' +end + +class String + def to_b; self.downcase=="true" || self=="1" ; end +end + + +class Console < Gtk::EventBox + attr_reader :eventbox, :name, :term, :vte, :isGrouped + attr_accessor :icoButton, :area, :barea + attr_accessor :x, :y + + def initialize(term, stock) + @term=term + @panel=@term.panel + @stock=stock + super() + + add(@frame=Gtk::Frame.new) + @frame.add(@vbox=Gtk::VBox.new) + @vbox.border_width=2 + @vbox.pack_start(@eventbox=Gtk::EventBox.new,false,false) + @eventbox.height_request=18 + @eventbox.add(@hbox=Gtk::HBox.new) + + @hbox.pack_start(@label=Gtk::Label.new(), false, false) + @hbox.pack_start(f=Gtk::Frame.new, true, true) + f.shadow_type=Gtk::SHADOW_NONE + + @bclose=addButton(@hbox, @panel.iclose, + "Close", "closeConsoleAccel", :whenCloseButton) + + signal_connect('destroy') { |w| whenDestroy } + + @vbox.pack_start(@hbox2=Gtk::HBox.new, true, true) + + @vte=Vte::Terminal.new + + @vte.signal_connect('child-exited') { |w| whenExited } + + @vte.signal_connect('contents-changed') { |w| + Gtk.timeout_add(300) { @update=true; false; } + } + + @scrollbar=Gtk::VScrollbar.new(@vte.adjustment) + + p=props('rightBar').to_b + @hbox2.pack_start(@scrollbar, false, false) if !p + @hbox2.pack_start(@vte, true, true) + @hbox2.pack_start(@scrollbar, false, false) if p + + signal_connect('enter_notify_event') { |w,e| + if @panel.props("focusFollowMouse").to_b + focus + end + + } + + signal_connect('leave-notify-event') { |w,e| + name="GDK_NOTIFY_ANCESTOR" + if e.detail.name == name + deselect(self) + end + } + + + signal_connect('button-press-event') { |w,e| focus } + + # Button event (focus + paste clipboard) + + @vte.signal_connect('button-press-event') { |w,e| + case e.button + when 1; focus + when 2; broadcastEvent(e) + end + false + } + + # Button event (paste clipboard) + + @vte.signal_connect('button-release-event') { |w,e| + broadcastEvent(e) if e.button == 2 + } + + # Key event + @leftAccel=Gtk::Accelerator.parse( + @panel.props("switchTermRightAccel")) + + + init(term) + end + + def init(term) + @term=term + @pid=nil + @label.text=@term.name + + @vte.set_size(80,24) + @vte.set_word_chars(".a-zA-Z_0-9//-") + @vte.set_colors(Gdk::Color.parse(props('fgColor')), + Gdk::Color.parse(props('bgColor')),[]) + @vte.audible_bell=props('audibleBell').to_b + @vte.visible_bell=props('visibleBell').to_b + @vte.scrollback_lines=props('scrollbackLines').to_i + + a=args(term.cmd) + + #if ENV['GUI_INTERNAL'] == "1" + # @pid=@vte.fork_command(a[0], a) + #else + + #$stderr.puts "a:#{a}" + + @pid=@vte.fork_command(:argv => a) + #end + + show_all + + @bclose.hide if ! props("canClose").to_b + setFontArea + setHeader + + end + + def setHeader + if ! props("header").to_b || + ! @term.panel.props("globalHeaders").to_b + @eventbox.height_request=4 + @hbox.hide + else + @eventbox.height_request=18 + @hbox.show + end + end + + def props(name) + @term.props(name) + end + + def args(s) + r=[] + s.gsub(/'([^']*)'|"([^"]*)"|([^[:space:]]+)/) { |m| + r.push("#{$1}#{$2}#{$3}") + } + return r + end + + def addButton(w,p,t,a,handler) + i=Gtk::Image.new(p) + w.pack_start(b=Gtk::ToolButton.new(i), false, false) + + accel=props(a) + + b.signal_connect('clicked') { |w,e| send(handler) } + return b + end + + def broadcastEvent(e) + pterms=@term.panel + panelView=@term.panel + if @isGrouped && pterms.view.currentPanelView==panelView && + self==panelView.selected + pterms.view.sendEvent(panelView, self, e) + end + false + end + + def myClampPanel(wlen, adj, min, len) + value=adj.value + if min+len > value+wlen + delta=min+len-(value+wlen) + adj.value=value+delta + else + if min<value + adj.value=min + end + end + end + + + def clampPanel + a=allocation; x=a.x; y=a.y + p=parent.parent + myClampPanel(p.allocation.height, p.vadjustment, a.y, a.height) + myClampPanel(p.allocation.width, p.hadjustment, a.x, a.width) + end + + def deselect(c) + return if @term.panel.selected!=c + color=@term.panel.cnormal + w=c.eventbox + w.modify_bg(Gtk::STATE_NORMAL,color) if ! w.destroyed? + @term.panel.selected=nil + term.panel.main.main.add_main_accel_group + end + + def focus + @vte.has_focus=true + @vte.grab_focus + + selected=@term.panel.selected + return if selected==self + + deselect(selected) if selected + + @term.panel.selected=self + + color=@term.panel.cselect + @eventbox.modify_bg(Gtk::STATE_NORMAL,color) + + + term.panel.main.main.add_consoles_accel_group + + clampPanel + end + + def setFontArea + setFont(props("gridFont")) + end + + def setFont(font) + @vte.set_font(font, Vte::TerminalAntiAlias::USE_DEFAULT) + end + + def whenCloseButton + whenClose + end + + def whenDestroy + whenClose + end + + def whenExited + whenClose + end + + def whenClose + if @term + @term.close + @term.panel.update + end + end + + def close + return if ! parent # already closed (and stocked) + + begin + Process.kill('TERM',@pid) if @pid && (@pid != -1) + rescue + end + + deselect(self) + + s=@term.panel.selected + @term.panel.selectTerm(self, "right") if !s||s==self + deselect(self) if @term.panel.selected==self + + parent.remove(self) + + @vte.reset(true, true) + @stock.push(self) + @term.panel.update + end +end + +class ConsolesView < Gtk::Frame + attr_reader :main + attr_reader :iclose + attr_reader :cnormal, :cflash, :cselect + attr_reader :props, :stock, :accelsKeys + attr_accessor :selected + def initialize(main, list) + @main=main + super() + @selected=nil + @terms=[] + @stock=PtermsStock.new + @propsStack=[] + @x=@y=0 + + @props={ + + # Application property + + "globalHeaders" => "true", + "focusFollowMouse" => "true", + + # Main window properties + "tooltips" => "true", + + # Panel properties + + "gridNbCols" => "2", + + # Terminal properties + + "inGrid" => "true", + "gridFont" => "Monospace 8", + "zoomFont" => "Monospace 10", + + "header" => "true", + "canClose" => "true", + + "minWidth" => "100", + "minHeight" => "50", + + "fgColor" => "black", + "bgColor" => "white", + + "audibleBell" => "true", + "visibleBell" => "true", + "scrollbackLines" => "1000", + "rightBar" => "false", + + # Accelerators + + # Main window accels + "quitAccel" => "<Ctrl>x", + "toggleHeadersAccel" => "<Alt>h", + "toggleButtonsTextsAccel" => "<Alt>t", + "toggleFocusFollowMouseAccel" => "<Alt>f", + + "switchTermLeftAccel" => "<Shift><Alt>Left", + "switchTermRightAccel" => "<Shift><Alt>Right", + "switchTermUpAccel" => "<Shift><Alt>Up", + "switchTermDownAccel" => "<Shift><Alt>Down", + + "increaseZoomAccel" => "<Shift><Alt>KP_Add", + "decreaseZoomAccel" => "<Shift><Alt>KP_Subtract", + + # Terminal accels + "groupToggleAccel" => "<Ctrl>g", + "moveAccel" => "<Ctrl>m", + "closeConsoleAccel" => "<Ctrl>q", + + } + @accelsKeys=[] + @props.keys.each { |p| + next if (p=~/Accel/) == nil + @accelsKeys.push(Gtk::Accelerator.parse(props(p))) + } + # build small pixbufs (used by consoles) + + w=9; h=9 + @iclose=createPixbuf(Gtk::Stock::CLOSE, w, h) + + @cnormal=Gdk::Color.parse("#E8E8E8") + @cselect=Gdk::Color.parse("#84D7E5") + @cflash=Gdk::Color.parse("#ff4242") + add(@grid=Gtk::ScrolledWindow.new) + @grid.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC) + @grid.add_with_viewport(@grid=Gtk::Table.new(1,1)) + @grid.homogeneous=false + end + def props(name) + raise "Invalid property : #{name}" if ! @props[name] + @props[name] + end + def setProps(name, value) + raise "Invalid property : #{name}" if ! @props[name] + @props[name]=value + end + def createPixbuf(t,w,h) + return render_icon(t,s=Gtk::IconSize::MENU).scale(w, h) + end + def getPropsDup + return @props.dup + end + def addToGrid(widget, x, y) + @grid.attach(widget, x, x+1, y, y+1, + Gtk::EXPAND|Gtk::FILL, + Gtk::EXPAND|Gtk::FILL, 1, 1) if ! widget.parent + end + def selectTerm(c, direction) + end + def update + @terms.each { |t| redraw(t.view.vte) if t.view } + end + + def redraw(widget) + Gtk.timeout_add(200) { + begin + widget.queue_draw_area(0, 0, 10000, 10000) + rescue + end + false + } + end + def addTerm(name, cmd) + + #p "addTerm : #{name} #{cmd}" + + @terms.push(t=Term.new(self, name, cmd)) + n=props("gridNbCols").to_i + m=0 + if ! @grid.children.empty? + @grid.children.each { |i| + x=i.term.x + y=i.term.y + if y*n+x > m + m=y*n+x + end + } + @y=m/n + @x=m%n+1 + else + @x=@y=0 + end + if @x >= n + @y=@y+1 + @x=0 + end + t.build(@x,@y) + update + redraw(t.view.vte) + @x=@x+1 + if @x >= props("gridNbCols").to_i + @x=0; @y=@y+1 + end + end + + def close + @terms.each { |t| + t.close + } + end +end + +class Term + attr_reader :name, :cmd, :panel + attr_reader :x, :y + attr_accessor :view + + def initialize(panel, name, cmd) + @panel=panel + @props=panel.getPropsDup if panel + @name=name + @cmd=cmd + @view=nil + end + + def props(name) + raise "Invalid property : #{name}" if ! @props[name] + @props[name] + end + + def build(x,y) + @x=x; @y=y + @view=@panel.stock.pop(self) + @panel.addToGrid(@view, x, y) + w=@panel.props("minWidth").to_i + h=@panel.props("minHeight").to_i + @view.vte.set_size_request(w,h) + end + + def close + @view.close if @view + @view=nil + end +end + + +class PtermsStock + def initialize + @stock=[] + end + + def pop(term) + c=@stock.pop + if !c + c=Console.new(term, self) + else + c.init(term) + end + return c + end + + def push(console) + @stock.push(console) + end +end + +class ConsolesPanel < Gtk::EventBox + attr_reader :main + + def initialize(main, cmd, list="", comment="") + @main=main + super() + @cmd=cmd + @list=list + @cv=ConsolesView.new(@main, list).show_all + add(@vbox=Gtk::VBox.new) + @comment=comment + + + signal_connect('leave-notify-event') { |w,e| + selected=@cv.selected + selected.deselect(selected) if selected + } + + if @comment != "" + @vbox.pack_start(Gtk::Label.new(@comment), false, false) + end + + @vbox.pack_start(@hbox=Gtk::HBox.new, false, false) + @hbox.pack_start(@toolbar=Gtk::HBox.new, true, true) + + @vbox.add(@cv) + @cv.focus=true + + + #initBar + + end + + def addTerm(name, cmd=nil) + + + #p "addTerm name:#{name} cmd:#{cmd}" + cmd=@cmd+name if cmd == nil + #p "addTerm name:#{name} cmd:#{cmd}" + @cv.addTerm(name, cmd) + end + + def setProps(name, value) + @cv.setProps(name, value) + end + + def close + #p "close:cv:#{@cv}" + @cv.close + end +end + +class SshPanel < ConsolesPanel + + def initialize(main, cmd, list="", comment="") + super(main, cmd, list, comment) + end + + def addTerm(name, cmd=nil) + #p "addTerm ssh:cv:#{@cv}" + user=@main.net.combo.active_text + #p "addTerm name:#{name} cmd:#{cmd}" + cmd=@cmd+user+"@"+name if cmd == nil + #p "addTerm name:#{name} cmd:#{cmd}" + @cv.addTerm(name, cmd) + end + +end + +def startNet + if ! $main + + #p "Create network window" + net=Vdn.new + + $main=net + net.startListener + + trap("TERM") { r=net.whenQuit; Gtk::main_quit if r } + else + $main.clean + $main.open + end + +end + + + +### end: pterm + +# main + +#GC.disable + +#p "start GC" +#$lock=true + +#sleep 0.2 +#GC.enable +#GC.start +#GC.disable + +#$lock=false +#p "disable GC" + +ENV['VDN_GUI']="1" +#puts "ENV['VDN_GUI']:#{ENV['VDN_GUI']}" + + +$LOG_FIFO = File.open("#{ENV['TMPDIR']}/vdn-#{ENV['USER']}-gui-log", "r+") + +$VDN_PATH=File.dirname($0) +$VDN_PATH=File.dirname($VDN_PATH) + +#require "#{$VDN_PATH}/bin/vdn-gui-pterms.rb" +#require "#{$VDN_PATH}/bin/vnc-viewer/vdn-vnc-viewer-lib.rb" +#require "#{$VDN_PATH}/bin/vdn-spice-viewer-lib.rb" + +fifo="#{ENV['TMPDIR']}/vdn-gui-#{ENV['USER']}-fifo-ctrl" +#if File.exist?(fifo) +# mySystem("rm #{fifo}") +#end + +startNet + +Gtk.main_with_queue(100) diff --git a/vdn/bin/vdn-halt b/vdn/bin/vdn-halt new file mode 100755 index 0000000..ab86a60 --- /dev/null +++ b/vdn/bin/vdn-halt @@ -0,0 +1,91 @@ +#!/usr/bin/env bash + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] system +EOF +} + +help() { + cat << EOF + +`basename $0` arrête le système (la sauvegarde est effectuée). + +`synopsis` + +-h : affiche cette aide + +Retourne 1 en cas d'erreur. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 1 ] && usage + + GUEST_NAME="$1" + if echo $GUEST_NAME | grep -q '/'; then + error "$GUEST_NAME est un nom de système invalide" + fi +} + +haltSystemTgz() { + local r=0 + for i in 1 2 3; do + if vdn-alive $GUEST_NAME; then + echo "Save $GUEST_NAME..." + set +e + vdn-save $GUEST_NAME + r=$((r+$?)) + set -e + if [ $? -eq 0 ]; then + break + fi + #sleep 1 + fi + done + + #sleep 2 + + if [ $r = 0 ]; then + vdn-kill $GUEST_NAME || error "Échec de l'arrêt de $GUEST_NAME" + else + return 1 + fi + #return $r +} + + + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +loadGuestVars $GUEST_NAME + +if [ ! -e $GUEST_PATH ]; then + error "Le système $GUEST_NAME n'existe pas !" +fi + +case "$MODE" in + tgz|tgz2) haltSystemTgz;; + cow|direct|overlay) vdn-ssh root@$GUEST_NAME poweroff;; + *) error "Mode : \"$MODE\" invalide !";; +esac diff --git a/vdn/bin/vdn-halt-all b/vdn/bin/vdn-halt-all new file mode 100755 index 0000000..139e5a1 --- /dev/null +++ b/vdn/bin/vdn-halt-all @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] +EOF +} + +help() { + cat << EOF + +`basename $0` arrête les systèmes (la sauvegarde est effectuée). + +`synopsis` + +-h : affiche cette aide + +Retourne 1 en cas d'erreur. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 0 ] && usage || : +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +for i in $(vdn-alives); do + vdn-halt $i +done diff --git a/vdn/bin/vdn-infos b/vdn/bin/vdn-infos new file mode 100755 index 0000000..57e50a7 --- /dev/null +++ b/vdn/bin/vdn-infos @@ -0,0 +1,107 @@ +#!/usr/bin/env bash + +set -eu + +VAR="" + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] system [variable] +EOF +} + +help() { + cat << EOF + +`basename $0` affiche des informations sur un système. +Si une variable est précisée, son contenu est affiché. + +Exemple : `basename $0` societe PUBLIC_IP + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hr" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + + [ $# -gt 2 ] && usage + [ $# -lt 1 ] && usage + + [ $# -eq 2 ] && VAR=$2 + + GUEST_NAME="$1" +} + + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +. $VDN_PATH/allocators/$VDN_RESOURCES_ALLOCATOR + +setGuestVars $GUEST_NAME + +GUEST_OWNER=$USER + +loadGuestVars $GUEST_NAME + +PUBLIC_IP=$(computePublicIp $GUEST_NAME 0 || :) +MAC_0=$(computeMacAddr $GUEST_NAME 0) + +if [ -z "$VAR" ]; then + cat <<-EOF + MODE=$MODE + GUEST_NAME=$GUEST_NAME + GUEST_PATH="$GUEST_PATH" + GUEST_SYS=$GUEST_SYS + EMULATOR="$EMULATOR" + MEMORY="$MEMORY" + HDA="$HDA" + AUFS_SIZE="$AUFS_SIZE" AUFS_FILE="$AUFS_FILE" + SWAP_SIZE="$SWAP_SIZE" SWAP_FILE="$SWAP_FILE" + SAVE_FILE="$SAVE_FILE" + NETWORKS="$NETWORKS" + SERVICES="$EXTRA_SERVICES" + REDIRS="$REDIRS" + PUBLIC_IP="$PUBLIC_IP" + MAC_0="$MAC_0" + EOF + + if $VDN_PATH/bin/vdn-alive $GUEST_NAME; then + if [ -e $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-redirs ]; then + echo + echo "Redirections :" + cat $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-redirs + fi + fi + + echo + echo "Dernières sauvegardes : " + [ -e $SAVE_FILE ] && du -h $SAVE_FILE || echo "Never saved" + if [ -n "$HDB" ]; then + [ -z "$SAVE_DIR_HDB" ] && SAVE_DIR_HDB=$SAVE_DIR || : + [ -e $SAVE_DIR_HDB/$HDB ] && du -h $SAVE_DIR_HDB/$HDB || echo "Never saved" + fi + echo + +else + echo ${!VAR} +fi diff --git a/vdn/bin/vdn-kill b/vdn/bin/vdn-kill new file mode 100755 index 0000000..a429153 --- /dev/null +++ b/vdn/bin/vdn-kill @@ -0,0 +1,83 @@ +#!/usr/bin/env bash + +set -eu + +QUIET=0 +SILENT=0 + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [-q] [-s] system +EOF +} + +help() { + cat << EOF + +`basename $0` tue tous les processus associés au système. + +`synopsis` + +ATTENTION : cette action correspond à une coupure d'alimentation. + Dans le cas d'un système utilisant une union de systèmes de + fichiers, les modifications seront perdues ! + +-h : affiche cette aide +-q : n'affiche pas les PIDS des processus tué. +-s : pas d'erreur si le système n'est pas lancé. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hqs" opt; do + case $opt in + h) help; exit 0;; + q) QUIET=1;; + s) SILENT=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 1 ] && usage + + GUEST_NAME="$1" + if echo $GUEST_NAME | grep -q '/'; then + error "$GUEST_NAME est un nom de système invalide" + fi +} + +killSystem() { + pids="$(ps -w -w ux | grep -E $GUEST_NAME[-]$USER | tr -s ' ' | cut -d ' ' -f 2)" + if [ -z "$pids" ]; then + if [ $SILENT = 1 ]; then + exit 0 + fi + echo "Le système virtuel $GUEST_NAME.conf n'est pas lancé !" >&2 + exit 1 + fi + + [ $QUIET = 0 ] && \ + echo "Kill $GUEST_NAME: Suppression de(s) processus : "$pids + + kill $pids 2> /dev/null + + #rm -f $TMPDIR/vdn-vnc-$USER-$GUEST_NAME-fifo + rm -f $TMPDIR/vdn-vnc-$USER-$GUEST_NAME-raw-socket +} + + +# Programme principal + +GUEST_OWNER=$USER +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +killSystem diff --git a/vdn/bin/vdn-kvm b/vdn/bin/vdn-kvm new file mode 100755 index 0000000..9d5a951 --- /dev/null +++ b/vdn/bin/vdn-kvm @@ -0,0 +1,52 @@ +#!/usr/bin/env bash + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] +EOF +} + +help() { + cat << EOF + +`basename $0` démarre VDN sous KVM. + +`synopsis` + +-h : affiche cette aide. + +Remarque : vdn-kvm, en raison de la double virtualisation qu'il implique, + même correctement configuré (nested kvm), dégrade les performances, + notammentle démarrage, d'environ un facteur 5. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +qemu-system-x86_64 -smp 8 -enable-kvm -cpu host -device virtio-rng-pci,rng=rng0 \ + -object rng-random,filename=/dev/urandom,id=rng0 \ + -pidfile $TMPDIR/vdn-DebianBuster-amd64-$USER-pid -rtc base=localtime -m 2G \ + -boot order=c -drive file=$VDN_PATH/files/DebianBuster-amd64.disk,if=virtio,format=raw + diff --git a/vdn/bin/vdn-list b/vdn/bin/vdn-list new file mode 100755 index 0000000..f1eb551 --- /dev/null +++ b/vdn/bin/vdn-list @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] +EOF +} + +help() { + cat << EOF + +`basename $0` affiche la liste des systèmes. + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" +l="`ls $NETWORK_DIR/*.conf 2> /dev/null | sort -n`" +#echo "# network: $NETWORK_DIR" +for i in $l; do + echo $(basename $i .conf) +done diff --git a/vdn/bin/vdn-list-networks b/vdn/bin/vdn-list-networks new file mode 100755 index 0000000..28c6691 --- /dev/null +++ b/vdn/bin/vdn-list-networks @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +set -eu + +ONLY_BUILD=0 + +synopsis() { + cat << EOF +Usage : `basename $0` [-b] [-h] +EOF +} + +help() { + cat << EOF + +`basename $0` affiche la liste des réseaux. + +`synopsis` + +-h : affiche cette aide +-b : seulement ceux possédant un script build. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hb" opt; do + case $opt in + h) help; exit 0;; + b) ONLY_BUILD=1;; + ?) usage;; + esac + done +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +[ -z "NETWORK_DIR" ] && error "NETWORK_DIR not set !" || : + +if [ $ONLY_BUILD = 1 ]; then + ( cd $VDN_NETWORKS_BASE_DIR; find -maxdepth 2 -type f -name "build" -exec dirname {} \; | grep -v '^\.$' | sed -re 's/^..//' | sort ) +else + ( cd $VDN_NETWORKS_BASE_DIR; find -maxdepth 1 -type d -exec basename {} \; | grep -v '^\.$' |sort ) +fi + diff --git a/vdn/bin/vdn-manage-backups b/vdn/bin/vdn-manage-backups new file mode 100755 index 0000000..be00674 --- /dev/null +++ b/vdn/bin/vdn-manage-backups @@ -0,0 +1,80 @@ +#!/bin/bash + + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] system +EOF +} + +help() { + cat << EOF + +`basename $0` gestion des sauvegardes des systèmes. + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 0 ] && usage + return 0 +} + +manage() { + L=$(find $SAVE_PATH -type f -ls | sort -n -k 2 | tr -s ' ' | cut -d ' ' -f 12) + [ -z "$L" ] && { echo "Aucune sauvegarde !" >&2; sleep 3; exit 0; } || : + + for i in $L; do du -h $i; done + echo + echo "total : $(du -sh $SAVE_PATH)" + echo + [ -x /usr/bin/quota ] && { quota -v; echo; } || : + + echo "Remarques :" + echo + echo "pour retrouver l'aspect creux d'un fichier cow :" + echo "virt-sparsify --in-place fichier.cow" + echo + echo "pour inspecter le contenu d'une archive tgz :" + echo "tar tvf fichier.tgz" + echo + echo "Pour supprimer un fichier :" + echo "rm fichier" + echo + #echo "Tapez exit (ou CTRL D) pour quitter ce shell" + #echo + #cd /tmp; PS1="exit (or CTRL D) to quit $ " bash --noprofile --norc -i + #/bin/bash +} + + +# Programme principal + + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +#set -x + +manage + diff --git a/vdn/bin/vdn-manage-files b/vdn/bin/vdn-manage-files new file mode 100755 index 0000000..76ba201 --- /dev/null +++ b/vdn/bin/vdn-manage-files @@ -0,0 +1,65 @@ +#!/bin/bash + + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] system +EOF +} + +help() { + cat << EOF + +`basename $0` gestion des fichiers (disques, noyau/initramfs, ...). + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 0 ] && usage + return 0 +} + +manage() { + cd $VDN_PATH/files + du -h * | sort -h + echo + echo "Pour supprimer un fichier :" + echo "rm fichier" + echo + #echo "Tapez exit (ou CTRL D) pour quitter ce shell" + #echo + #cd /tmp; PS1="exit (or CTRL D) to quit $ " bash --noprofile --norc -i +} + + +# Programme principal + + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +#set -x + +manage + diff --git a/vdn/bin/vdn-mount-chroot b/vdn/bin/vdn-mount-chroot new file mode 100755 index 0000000..7b87f32 --- /dev/null +++ b/vdn/bin/vdn-mount-chroot @@ -0,0 +1,166 @@ +#!/usr/bin/env bash + +set -eu +#set -x + +FOR_ROOT=0 +USE_SUDO=0 +UMOUNT=0 + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [-r] [-i user] [-s] [-u] +EOF +} + +help() { + cat << EOF + +`basename $0` exécute VDN dans un environnement chroot en utilisant le disque : + +$VDN_DISK_ENV + + * Le mot de passe root vous sera demandé ! + +AVERTISSEMENTS : + +1. Cette commande n'a pas vocation à être exécutée manuellement. + +2. Quelques opérations sous root sont effectuées (montages, chroot, + démontages). Pour que le démontage se fasse correctement, fermez toutes + les fénêtres et processus de l'environnement chroot (VDN). + +3. L'isolation entre le système initial et le système chrooté n'est pas + totale. Les répertoires suivants du système initial sont partagés : + /home, /etc, /dev, /dev/pts, /sys, /proc, /tmp. + + Autrement dit, ne faites pas n'importe quoi avec ces répertoires, ce + sont ceux de votre système. + +`synopsis` + +-h : affiche cette aide. +-r : (réservé) exécution spécifique à l'utilisateur root. Ne pas utiliser + directement sans savoir ce que vous faites ! +-s : utilise "sudo" plutôt que "su -" pour basculer sous le compte root. +-i user : (réservé) indique l'utilisateur pour l'option -r. Ne pas utiliser + directement sans savoir ce que vous faites ! +-u : démontages seulement. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hrsi:u" opt; do + case $opt in + h) help; exit 0;; + r) FOR_ROOT=1;; + s) USE_SUDO=1;; + i) USER="$OPTARG";; + u) UMOUNT=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 0 ] && usage || : +} + +vdnMountChrootForRoot() { + + disp=$(cat $TMPDIR/vdn-display-$USER) + + d=$TMPDIR/vdn-chroot-$USER; + + if [ $UMOUNT = 0 ]; then + + mount | grep -q $d || mount -o loop,offset=$((2048*512)) $DISK $d + + for i in /dev /dev/pts /sys /proc /tmp /etc; do + mount | grep -q $d$i || { mount --bind $i $d$i; } + done + + mount --rbind /home $d/home + + + + chroot $d su - --session-command \ + "export DISPLAY=:"$disp"; export RUN_IN_CHROOT=1; \ + export VDN_DISK_ENV=$VDN_DISK_ENV; \ + export LANGUAGE=C.UTF-8; \ + export LANG=C.UTF-8; \ + export LC_ALL=C.UTF-8; \ + $VDN_PATH/bin/vdn -n" $USER || : + + fi + + mount | grep -q $d/home && { umount -l $d/home; } || : + + for i in /proc /sys /dev/pts /dev /etc /tmp; do + mount | grep -q $d$i && { umount $d$i || { umount -l $d$i; } ; } || : + done + + mount | grep -q $d && { umount $d || umount -l $d; } || : + + mount | grep $d + +} + +vdnMountChroot() { + + d=$TMPDIR/vdn-chroot-$USER; [ ! -d $d ] && mkdir $d || : + + if [ $UMOUNT = 0 ]; then + + # get display + + (rm -f $TMPDIR/vdn-display-$USER; umask 077 ; touch $TMPDIR/vdn-display-$USER) + DISP=$(echo $DISPLAY | cut -d ':' -f 2 | cut -d '.' -f 1) + echo $DISPLAY | cut -d ':' -f 2 >> $TMPDIR/vdn-display-$USER + + fi + + if [ $USE_SUDO = 0 ]; then + echo "Le mot de passe demandé est celui de l'administrateur (root)" + if [ $UMOUNT = 0 ]; then + su - -c "$VDN_PATH/bin/vdn-mount-chroot -r -i $USER" + else + su - -c "$VDN_PATH/bin/vdn-mount-chroot -r -i $USER -u" + fi + else + if [ $UMOUNT = 0 ]; then + sudo $VDN_PATH/bin/vdn-mount-chroot -r -i $USER + else + sudo $VDN_PATH/bin/vdn-mount-chroot -r -i $USER -u + fi + fi +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +export VDN_DISK_ENV="DebianBuster-amd64-env.disk" +export VDN_DISK_NAME="DebianBuster-amd64.disk" + +[ ! -e $VDN_PATH/files/$VDN_DISK_ENV ] && VDN_DISK_ENV=$VDN_DISK_NAME || : + +DISK=$VDN_PATH/files/$VDN_DISK_ENV + +[ ! -e $DISK ] && error "$DISK not found !" || : +if [ ! -w $DISK ]; then + error "$DISK doit être accessible à l'utilisateur en écriture !" +fi + +args "$@" + +if [ $FOR_ROOT = 1 ];then + vdnMountChrootForRoot +else + vdnMountChroot +fi diff --git a/vdn/bin/vdn-mount-chroot.bak b/vdn/bin/vdn-mount-chroot.bak new file mode 100755 index 0000000..aa3bcc4 --- /dev/null +++ b/vdn/bin/vdn-mount-chroot.bak @@ -0,0 +1,190 @@ +#!/usr/bin/env bash + +set -eu +#set -x + +DISK_NAME="DebianBuster-amd64.disk" +FOR_ROOT=0 +USE_SUDO=0 +UMOUNT=0 + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [-r] [-i user] [-s] [-u] +EOF +} + +help() { + cat << EOF + +`basename $0` exécute VDN dans un environnement chroot en utilisant le disque : + +$DISK + + * Le mot de passe root vous sera demandé ! + +AVERTISSEMENTS : + +1. de nombreuses opérations sous root sont effectuées (montages, chroot, +démontages). Pour que le démontage se fasse correctement, fermez toutes +les fénêtres et processus de l'environnement chroot (VDN). + +2. L'isolation entre le système initial et le système chrooté n'est pas + totale. Les répertoires suivants du système initial sont partagés : + /dev, /dev/pts, /sys, /proc, /tmp et /home/$USER. + + Autrement dit, ne faites pas n'importe quoi avec ces répertoires, ce + sont ceux de votre système. + +`synopsis` + +-h : affiche cette aide. +-r : (réservé) exécution spécifique à l'utilisateur root. Ne pas utiliser + directement sans savoir ce que vous faites ! +-s : utilise "sudo" plutôt que "su -" pour basculer sous le compte root. +-i user : (réservé) indique l'utilisateur pour l'option -r. Ne pas utiliser + directement sans savoir ce que vous faites ! +-u : démontages seulement. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hrsi:u" opt; do + case $opt in + h) help; exit 0;; + r) FOR_ROOT=1;; + s) USE_SUDO=1;; + i) USER="$OPTARG";; + u) UMOUNT=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 0 ] && usage || : +} + +vdnMountChrootForRoot() { + + #key="$(cat $TMPDIR/vdn-key-$USER)" + + disp=$(cat $TMPDIR/vdn-display-$USER) + + echo "USER:$USER" + + d=$TMPDIR/vdn-chroot-$USER; + + if [ $UMOUNT = 0 ]; then + + mount | grep -q $d || mount -o loop,offset=$((2048*512)) $DISK $d + + for i in /dev /dev/pts /sys /proc /tmp /etc; do + mount | grep -q $d$i || { mount --bind $i $d$i; } + done + + #mount --bind $VDN_PATH $d/home/test/vdn + mount --rbind /home $d/home + + #mount | grep $d + + #chroot $d su - -s /bin/bash -c "export DISPLAY=":"$disp; \ + #unset XAUTHORITY; rm -rf /home/test/.config/xfce4-session; \ + #rm -rf /home/test/.config/xfce4/terminal/; \ + #xauth add \$DISPLAY . $key; \ + #export NO_AT_BRIDGE=1; \ + #xfce4-terminal --disable-server # 2> /dev/null;" test + + whoami + + ls -l $VDN_PATH/bin/vdn + + #chroot $d su - $VDN_PATH/bin/vdn $USER + + chroot $d su - --session-command "export DISPLAY=:"$disp"; $VDN_PATH/bin/vdn" $USER || : + + #chroot $d su - -s /bin/bash -c "export DISPLAY=":"$disp; \ + #xfce4-terminal --disable-server # 2> /dev/null;" $USER + + fi + + for i in /tmp /proc /sys /dev/pts /dev /etc; do + mount | grep -q $d$i && { umount $d$i || { echo "umount lazy : $d$i"; umount -l $d$i; } ; } || : + done + + + fuser -mv $d/home + + mount | grep -q $d/home && { umount -l $d/home; } || : + sleep 1 + mount | grep -q $d && { umount $d || umount -l $d; } || : + + mount | grep $d + +} + +vdnMountChroot() { + + d=$TMPDIR/vdn-chroot-$USER; [ ! -d $d ] && mkdir $d || : + + if [ $UMOUNT = 0 ]; then + + # get display + + (rm -f $TMPDIR/vdn-display-$USER; umask 077 ; touch $TMPDIR/vdn-display-$USER) + DISP=$(echo $DISPLAY | cut -d ':' -f 2 | cut -d '.' -f 1) + echo $DISPLAY | cut -d ':' -f 2 >> $TMPDIR/vdn-display-$USER + + # get xauth key + + #key=$(xauth list| grep $(uname -n) | grep $DISP | tail -n 1 | tr -s ' ' | cut -d ' ' -f 3) + + #[ -n "$key" ] || error "Xauth key is empty !" + #echo $key | egrep -q '^[[:xdigit:]]+$' || error "Bad xauth key ($key) !" + + #(rm -f $TMPDIR/vdn-key-$USER; umask 077 ; touch $TMPDIR/vdn-key-$USER) + + #echo $key >> $TMPDIR/vdn-key-$USER + + + fi + + if [ $USE_SUDO = 0 ]; then + echo "Le mot de passe demandé est celui de l'administrateur (root)" + if [ $UMOUNT = 0 ]; then + su - -c "$VDN_PATH/bin/vdn-mount-chroot -r -i $USER" + else + su - -c "$VDN_PATH/bin/vdn-mount-chroot -r -i $USER -u" + fi + else + if [ $UMOUNT = 0 ]; then + sudo $VDN_PATH/bin/vdn-mount-chroot -r -i $USER + else + sudo $VDN_PATH/bin/vdn-mount-chroot -r -i $USER -u + fi + fi +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +DISK=$VDN_PATH/files/$DISK_NAME + +[ ! -e $DISK ] && error "$DISK not found !" || : +if [ ! -w $DISK ]; then + error "$DISK doit être accessible à l'utilisateur en écriture !" +fi + +args "$@" + +if [ $FOR_ROOT = 1 ];then +vdnMountChrootForRoot +else + vdnMountChroot +fi diff --git a/vdn/bin/vdn-new-network b/vdn/bin/vdn-new-network new file mode 100755 index 0000000..1f36dbd --- /dev/null +++ b/vdn/bin/vdn-new-network @@ -0,0 +1,68 @@ +#!/usr/bin/env bash + +#set -x + +NEW="" + +networkName="" + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [newNetworkName] + +EOF +} + +help() { + cat << EOF + +`basename $0` crée un réseau vide. + +`synopsis` + +-h : affiche cette aide. + +Si newNetworkName n'est pas précisé, il sera demandé sur l'entrée standard. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -eq 1 ] && { NEW=$1; shift; } + [ $# -ne 0 ] && usage; +} + +# main + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +while [ -z "$NEW" ]; do + echo -n "Nom destination : " + read NEW +done + +new=$(dirname $NETWORK_DIR)/$NEW +[ -e $new ] && error "Le réseau $NEW existe déja !" || : + +mkdir $new +cp $VDN_PATH/build-template $new/build +cp $VDN_PATH/net-template.svgz $new/net.svgz +mkdir $new/scripts +vdn-build-network $new + + diff --git a/vdn/bin/vdn-open-network b/vdn/bin/vdn-open-network new file mode 100755 index 0000000..4053725 --- /dev/null +++ b/vdn/bin/vdn-open-network @@ -0,0 +1,82 @@ +#!/usr/bin/env bash + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] networkDir +EOF +} + +help() { + cat << EOF + +`basename $0` définit le réseau courant. (fixe la variable i +NETWORK_DIR du fichier ~/.vdnrc). + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + + [ $# -ne 1 ] && usage; + + DIR=$1 +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +if [ ! -d "$DIR" ]; then + if [ ! -d $VDN_PATH/networks/$DIR ]; then + error "Network $DIR not found" + else + DIR=$VDN_PATH/networks/$DIR + fi +fi + +if [ ! -e ~/.vdnrc ]; then + cat <<EOF > ~/.vdnrc +#!/bin/bash + +# Chemin du répertoire associé au réseau + +NETWORK_DIR="$DIR" +EOF +else + if grep -q 'NETWORK_DIR' ~/.vdnrc; then + tmp=`mktemp` + cat ~/.vdnrc | \ + sed -re 's,^NETWORK_DIR=.*$,NETWORK_DIR="'$DIR'",' > $tmp + mv $tmp ~/.vdnrc + else + cat <<EOF >> ~/.vdnrc + +# Chemin du répertoire associé au réseau + +NETWORK_DIR="$DIR" +EOF + + fi +fi + diff --git a/vdn/bin/vdn-prepare b/vdn/bin/vdn-prepare new file mode 100755 index 0000000..4128d0f --- /dev/null +++ b/vdn/bin/vdn-prepare @@ -0,0 +1,85 @@ +#!/usr/bin/env bash + +set -eu + +OPTS="" +TEST=0 + +synopsis() { + cat << EOF +Usage : + `basename $0` [-h] [-f] [-t] + `basename $0` list +EOF +} + +help() { + cat << EOF + +`basename $0` : installe les logiciels nécessaires à l'utilisation de vdn. + +`synopsis` + +-h : affiche cette aide +-f : force l'installation des paquets : pas de demande de confirmation. +-t : test l'installation (code de retour à 1 si logiciels manquants). + +`basename $0` list : affiche la liste des distributions sur lesquelles VDN +est porté. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hft" opt; do + case $opt in + h) help; exit 0;; + f) OPTS="-y";; + t) TEST=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 0 ] && usage || : +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +[ $# -ge 1 ] && [ "$1" = "list" ] && { + cd $VDN_PATH/distribs/hosts + find . -mindepth 2 -type d | sed -re 's,^\./,,' + exit +} + + +args $@ + +[ ! -d $VDN_PATH/distribs/hosts/$HOST_RELEASE ] && { + echo "VDN n'est pas porté pour la distribution $HOST_RELEASE !" >&2 + echo "Consultez les FAQ.">&2 + exit 1 +} + +source $VDN_PATH/distribs/hosts/$HOST_RELEASE/prepare.sh + +if [ $TEST = 1 ]; then + testInstallDebian + exit +fi + +ID=$(id -u -n) + +[ $ID != root ] && error "Installation réservée à l'administrateur" + +PATH="$PATH:/usr/local/sbin:/usr/sbin:/sbin" + +runInstall $OPTS + diff --git a/vdn/bin/vdn-prepare1 b/vdn/bin/vdn-prepare1 new file mode 100755 index 0000000..52279b5 --- /dev/null +++ b/vdn/bin/vdn-prepare1 @@ -0,0 +1,86 @@ +#!/usr/bin/env bash + +set -eu +set -x + +OPTS="" +TEST=0 + +synopsis() { + cat << EOF +Usage : + `basename $0` [-h] [-f] [-t] + `basename $0` list +EOF +} + +help() { + cat << EOF + +`basename $0` : installe les logiciels nécessaires à l'utilisation de vdn. + +`synopsis` + +-h : affiche cette aide +-f : force l'installation des paquets : pas de demande de confirmation. +-t : test l'installation (code de retour à 1 si logiciels manquants). + +`basename $0` list : affiche la liste des distributions sur lesquelles VDN +est porté. + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hft" opt; do + case $opt in + h) help; exit 0;; + f) OPTS="-y";; + t) TEST=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 0 ] && usage || : +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +[ $# -ge 1 ] && [ "$1" = "list" ] && { + cd $VDN_PATH/distribs/hosts + find . -mindepth 2 -type d | sed -re 's,^\./,,' + exit +} + + +args $@ + +[ ! -d $VDN_PATH/distribs/hosts/$HOST_RELEASE ] && { + echo "VDN n'est pas porté pour la distribution $HOST_RELEASE !" >&2 + echo "Consultez les FAQ.">&2 + exit 1 +} + +source $VDN_PATH/distribs/hosts/$HOST_RELEASE/prepare.sh + +if [ $TEST = 1 ]; then + testInstallDebian + exit +fi + +ID=$(id -u -n) + +[ $ID != root ] && error "Installation réservée à l'administrateur" + +PATH="$PATH:/usr/local/sbin:/usr/sbin:/sbin" + +runInstall $OPTS + diff --git a/vdn/bin/vdn-publish-network b/vdn/bin/vdn-publish-network new file mode 100755 index 0000000..feb13b4 --- /dev/null +++ b/vdn/bin/vdn-publish-network @@ -0,0 +1,98 @@ +#!/usr/bin/env bash + +set -eu + +FORCE=0 +DRY=0 +SYSTEMS="" + +synopsis() { + cat << EOF +Usage : `basename $0` [-hdf] [network] +EOF +} + +help() { + cat << EOF + +`basename $0` dépose le réseau sur le serveur. + +`synopsis` + +Le réseau est "zipé" et est déposé sur le serveur via scp. + +Pour cela, la variable SSH_REPOSITORY doit avoir été fixée dans votre +fichier \$HOME/.vdnrc. Exemple : + +SSH_REPOSITORY="toto@truc.bidule.org:public_html/files" + +Remarque : les fichiers "*.disk" sont préalablement compressés (.gz). + +-h : affiche cette aide +-d : dry run +-f : force : pas de demande de confirmation ! + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hdf" opt; do + case $opt in + h) help; exit 0;; + d) DRY=1;; + f) FORCE=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -gt 1 ] && usage + [ $# = 1 ] && NETWORK=$1 || : +} + + +publishNetwork() { + + echo publish $1 + + d=$(dirname $1) + b=$(basename $1) + + rm -f $TMPDIR/$b.zip + + + (cd $d; umask 077 && zip --exclude \*.conf -r $TMPDIR/$b.zip $b) + + ls -l $TMPDIR/$b.zip + + if [ -z "$SSH_REPOSITORY" ]; then + error "SSH_REPOSITORY est vide" + fi + + if [ $DRY = 0 ]; then + if [ $FORCE = 0 ]; then + request "Publish to $SSH_REPOSITORY ? :" + fi + scp $TMPDIR/$b.zip $SSH_REPOSITORY + fi +} + + +# Programme principal + +GUEST_OWNER=$USER +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +NETWORK=$NETWORK_DIR + +args "$@" + +[ -z "$NETWORK" ] && usage + + +publishNetwork $NETWORK diff --git a/vdn/bin/vdn-push b/vdn/bin/vdn-push new file mode 100755 index 0000000..93e3bef --- /dev/null +++ b/vdn/bin/vdn-push @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` +EOF +} + +help() { + cat << EOF + +`basename $0` effectue un git push de VDN. + +`synopsis` +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + [ $# -ne 0 ] && usage + return 0 +} + + +# Programme principal + +GUEST_OWNER=$USER +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +git push vdn@opale.iut-clermont.uca.fr:public_html/vdn/git/vdn.git + diff --git a/vdn/bin/vdn-query b/vdn/bin/vdn-query new file mode 100755 index 0000000..2938863 --- /dev/null +++ b/vdn/bin/vdn-query @@ -0,0 +1,102 @@ +#!/bin/bash + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] request [arg...] host + +requests : + REDIR proto port : proto : tcp/udp, port : port à rediriger + LOCAL_USER_NUM : numéro local de l'utilisateur sur la machine (%32) + PUBLIC_IP N # N : public IP NUMBER + MAC_ADDR N # N : network interface NUMBER + ETH_LINK N # N : Ethernet link NUMBER +EOF +} + +help() { + cat << EOF + +`basename $0` affiche des infos sur host.network.user.vdn + +La machine n'a pas besoin d'être démarrée (infos statiques) + +Pour obtenir des infos dynamiques (redirection de ports) voir +vdn-infos + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + + [ $# -lt 2 ] && usage; + + req=$1 + shift + + reqArgs="" + while [ $# -gt 1 ]; do + reqArgs="$reqArgs $1" + shift + done + + [ "$reqArgs" = "" ] && reqArgs=0 + + + host=$1 + + if [ $host = current ]; then + set +u + [ -z "$GUEST_NAME" ] && error "You can't user current in this context !" + set -u + host=$GUEST_NAME + fi + +} + +all() { + echo "REDIR $(reqArgs) : $(computeRedir $host $reqArgs)" + echo "LOCAL_USER_NUM: $(computePublicIp $host $reqArgs)" + echo "PUBLIC_IP: $(computePublicIp $host $reqArgs)" + echo "MAC_ADDR: $(computeMacAddr $host $reqArgs)" + echo "ETH_LINK: $(computeEthLink $host $reqArgs)" +} + + +# main + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +#set -x +args "$@" + +. $VDN_PATH/allocators/$VDN_RESOURCES_ALLOCATOR + +case "$req" in + REDIR) computeRedir $host $reqArgs;; + LOCAL_USER_NUM) computeLocalUser $host $reqArgs;; + PUBLIC_IP) computePublicIp $host $reqArgs;; + MAC_ADDR) computeMacAddr $host $reqArgs;; + ETH_LINK) computeEthLink $host $reqArgs;; + all) all;; + *) usage;; +esac + diff --git a/vdn/bin/vdn-restart b/vdn/bin/vdn-restart new file mode 100755 index 0000000..6279fed --- /dev/null +++ b/vdn/bin/vdn-restart @@ -0,0 +1,58 @@ +#!/usr/bin/env bash + +set -eu + +set -x + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] system +EOF +} + +help() { + cat << EOF + +`basename $0` system : vdn-shalt suivi de vdn-start. + +`synopsis` +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "gh" opt; do + case $opt in + h) help; exit 0;; + g) ;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 1 ] && usage + + GUEST_NAME="$1" +} + + +# Programme principal + +GUEST_OWNER=$USER +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +if vdn-alive $GUEST_NAME; then + vdn-halt $GUEST_NAME || error "can't halt $GUEST_NAME" + sleep 2 +fi + +echo "vdn-restart start : $@" +vdn-start $@ + + diff --git a/vdn/bin/vdn-restore-extra-eth b/vdn/bin/vdn-restore-extra-eth new file mode 100755 index 0000000..40422c0 --- /dev/null +++ b/vdn/bin/vdn-restore-extra-eth @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + +set -eu + +VAR="" + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] system +EOF +} + +help() { + cat << EOF + +`basename $0` restaure l'état de l'interface suppémentaire utilisée pour +joindre la machine virtuelle (précisée en argument). + +Exemple : `basename $0` bigboss + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + + [ $# -ne 1 ] && usage + + GUEST_NAME="$1" +} + + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +setGuestVars $GUEST_NAME + +GUEST_OWNER=$USER + +loadGuestVars $GUEST_NAME + +vdn-infos $GUEST_NAME GUEST_NAME > /dev/null || exit 1 + +if ! $VDN_PATH/bin/vdn-alive $GUEST_NAME; then + error "Le système $GUEST_NAME n'est pas démarré !" +fi + + +[ ! -e $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-serial ] && \ + error "$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-serial not found !" + +echo "ok" + + +CMD=" +stty -echo +PS1= +ls /tmp +iptables -F +iptables -F -t nat +iptables -L +iptables -L -t nat +eth=\$(ip a | egrep '^[0-9]+:' | sed -re 's/^.*(eth[0-9]+).*$/\1/' | tail -n 1) +echo eth=\$eth +ip a flush \$eth +dhclient \$eth +ip a show dev \$eth +ip a show dev \$eth | grep -q 10.0.2.15 && echo ok || echo ERROR +" + +#echo socat STDIO UNIX-CLIENT:$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-serial +(echo "$CMD"; sleep 1) | socat STDIO UNIX-CLIENT:$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-serial +echo +#echo "$CMD" | socat STDIO UNIX-CLIENT:$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-serial +#socat STDIO UNIX-CLIENT:$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-serial + +#cat << EOF | socat STDIO UNIX-CLIENT:$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-serial +#ip a | egrep '^[0-9]+:' | sed -re 's/^.*(eth[0-9]+).*$/\1/' | tail -n 1" +#EOF + diff --git a/vdn/bin/vdn-save b/vdn/bin/vdn-save new file mode 100755 index 0000000..ac00471 --- /dev/null +++ b/vdn/bin/vdn-save @@ -0,0 +1,100 @@ +#!/usr/bin/env bash + +set -eu + +#set -x + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] system +EOF +} + +help() { + cat << EOF + +`basename $0` sauvegarde le système. + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 1 ] && usage + + GUEST_NAME="$1" + if echo $GUEST_NAME | grep -q '/'; then + error "$GUEST_NAME est un nom de système invalide" + fi +} + +saveSystem() { + + o="$SAVE_FILE" + n="$SAVE_FILE.tmp.tgz" + d="$(dirname $n)" + + [ ! -d $d ] && mkdir -p $d + + set +e + ( umask 077 && vdn-ssh root@$GUEST_NAME "/etc/vdn/save" > $n ) + r=$? + set -e + + if [ $r = 0 ]; then + mv $n $o + resizeMultipleOf512 $o + r=$? + fi + + return $r +} + + + + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +loadGuestVars $GUEST_NAME + +case $MODE in + tgz|tgz2) ;; + *|overlay) exit 0;; +esac + +if [ ! -e $GUEST_PATH ]; then + error "Le système $GUEST_NAME n'existe pas !" +fi + +#vdn-ssh root@$GUEST_NAME echo > /dev/null || error "Can't connect to $GUEST_NAME" + +cmd=saveSystem + +if $cmd ; then + s=$(du -h $SAVE_FILE | tr '\t' ' ' | cut -d ' ' -f 1) + echo "Sauvegarde $SAVE_FILE effectuée ($s) !" + exit 0 +else + echo "vdn-save ($GUEST_NAME) : Échec de la sauvegarde !" >&2 + exit 1 +fi diff --git a/vdn/bin/vdn-scp b/vdn/bin/vdn-scp new file mode 100755 index 0000000..91c7357 --- /dev/null +++ b/vdn/bin/vdn-scp @@ -0,0 +1,115 @@ +#!/usr/bin/env bash + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [option...] src dst +EOF +} + +help() { + cat << EOF + +`basename $0` effectue un scp à partir ou à destination d'un système virtuel. + +`synopsis` + +-h : affiche cette aide + +Les options autorisées sont celles de scp(1). + +Exemple : + + # Copie de l'hôte vers la machine virtuelle + # /etc/passwd de l'hôte vers /tmp de la machine virtuelle + + vdn-scp /etc/passwd test@vm-1:/tmp + + # Copie de la machine virtuelle vers l'hôte + # /etc/passwd de la machine virtuelle vers /tmp de l'hôte + + vdn-scp test@vm-1:/etc/passwd /tmp + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + opts="" + + [ $# -eq 1 -a "$1" = "-h" ] && { help; exit 0; } + + while [ $# -gt 2 ]; do + if [ "$1" = "-h" ]; then help; exit 0; fi + opts="$opts $1" + shift + done + + LOGIN="${USER}@" + GUEST_NAME="" + + for i in 1 2; do + reg=':' + if [[ "$1" =~ "$reg" ]]; then + user=`echo $1 | cut -d ':' -f 1` + path=`echo $1 | cut -d ':' -f 2` + LOGIN="${USER}@" + GUEST_NAME="$user" + reg="@" + if [[ "$user" =~ "$reg" ]]; then + LOGIN=`echo $user | cut -d '@' -f 1`@ + GUEST_NAME=`echo $user | cut -d '@' -f 2` + fi + path="${LOGIN}localhost:$path" + else + path="$1" + fi + + [ $i -eq 1 ] && src="$path" || dst="$path" + + shift + done + + #echo "opts=$opts src=$src dst=$dst GUEST_NAME=$GUEST_NAME" + +} + + +# Programme principal + +GUEST_OWNER=$USER + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +[ -z "$GUEST_NAME" ] && usage + +#setGuestVars $GUEST_NAME +#loadGuestVars $GUEST_NAME + +[ ! -e $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-redirs ] && + error "Impossible de joindre $GUEST_NAME" + +SSH_REDIR_PORT=`cat $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-redirs | \ + sed -rne 's/^tcp:([0-9]+):22(:|$).*$/\1/p'` + +[ -z "$SSH_REDIR_PORT" ] && error "Impossible de joindre $GUEST_NAME" + +if [ -z "$SSH_REDIR_PORT" ]; then + error "Aucune redirection vers le port 22 du système $GUEST_NAME !" + exit 1 +fi + +SSH_MASTER="" +[ $SSH_GUEST_MASTER = 1 ] && { + sshGuestControlMaster + SSH_MASTER="-o ControlPath=$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-guest-%r@%h:%p" +} + +scp $SSH_MASTER $SCP_OPTS $opts -P $SSH_REDIR_PORT $src $dst diff --git a/vdn/bin/vdn-scripts b/vdn/bin/vdn-scripts new file mode 100755 index 0000000..bcc28a2 --- /dev/null +++ b/vdn/bin/vdn-scripts @@ -0,0 +1,227 @@ +#!/usr/bin/env bash + +set -eu +#set -x + +export READ=${READ:-0} +DOC=0 +VDN_TRACE=${VDN_TRACE:-0} +EDIT=0 +export PAUSE=${PAUSE:-0} + +export IN_PARALLEL=${IN_PARALLEL:-0} + +set +u +export FORCE_SEQUENTIAL=${FORCE_SEQUENTIAL:-0} +set -u +export PAUSE_IF_ERROR=0 +export VDN_TRACE + + + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [-r] [-n] [-d] [-t] script1... +EOF +} + +help() { + cat << EOF + +`basename $0` exécute les scripts du réseau. + +`synopsis` + +-h : affiche cette aide. +-d : n'exécute pas le script mais affiche sa description. +-e : édite le script. +-n : pas de pause à l'issue du script. +-t : trace l'exécution des commandes effectuées (debug) +-r : attendre la touche "Entrée" pour terminer +-s : force l'exécution séquentielle des scripts." +-w : attendre si erreur + + +Cette commande, après avoir fixé quelques variables et +quelques fonctions appelle les scripts du réseau. + +Remarque : si la variable d'environnement RUN_PARALLEL est fixée à 1 (cf. +~/.vdnrc) alors si plusieurs scripts sont précisés en arguments ils sont +exécutés en parallèle (via tmuxinator). + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "dehrnpstw" opt; do + case $opt in + h) help; exit 0;; + d) DOC=1;; + e) EDIT=1;; + r) READ=1;; + t) VDN_TRACE=1;; + n) PAUSE=0;; + p) PAUSE=1;; + w) PAUSE_IF_ERROR=1;; + s) FORCE_SEQUENTIAL=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + SCRIPTS="$@" +} + +realSeq() { + # in sequential + #export IN_PARALLEL=0 + + set +e + r=0 + + local SYSTEMS=$(vdn-list | grep -v '^#') + + #echo '°°°°' + #ps + #echo '°°°°' + + runSequential $SCRIPTS || r=$? + + #echo '°°°°' + #ps + #echo '°°°°' + + set -e + + #if [ $r -ne 0 -a $VDN_SCRIPTS_LEVEL = 1 ]; then + # error "$r" + # + #fi + + #pause + + return $r +} + + +# main + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh +. $VDN_PATH/bin/functions-scripts.sh + +args "$@" + +#echo '0000' +# ps +#echo 'OOOO' + + +export VDN_PATH + +export PATH="$VDN_PATH/bin:$PATH" + +#echo "fake script..." + +export READ + +. $VDN_PATH/bin/functions-scripts.sh + +cd $NETWORK_DIR/scripts + +if [ $DOC = 1 ]; then + for i in $SCRIPTS; do + . ./$i + echo "$i $DESC" + done + exit +fi + +if [ $EDIT = 1 ]; then + set +u + [ -z "$EDITOR" ] && export EDITOR="vi" + + set -u + $EDITOR $SCRIPTS + exit +fi + + +[ $VDN_DEBUG = 1 ] && set -x + +set +u +[ -z "$VDN_SCRIPTS_LEVEL" ] && export VDN_SCRIPTS_LEVEL=0 || : +set -u + +VDN_SCRIPTS_LEVEL=$((VDN_SCRIPTS_LEVEL+1)) + + +#if [ $VDN_SCRIPTS_LEVEL = 1 ]; then +# if canRunParallel $SCRIPTS; then +# nothing=0 +# fi +#fi + +#echo "FORCE_SEQ:$FORCE_SEQUENTIAL" +#echo "RUN_PARALLEL=$RUN_PARALLEL" +#sleep 2 +#set -x + +#set -x + +#export IN_PARALLEL=1 + +#set -x +#set +u +#echo "SCRIPTS:$SCRIPTS DISABLE_SCAN:$DISABLE_SCAN" +#set -u + +if [ $VDN_SCRIPTS_LEVEL = 1 ]; then + #echo "RESET ERRORS" + errors=0 + success=0 +fi + +if canRunParallel $SCRIPTS && [ "$FORCE_SEQUENTIAL" = 0 ]; then + + # in parallel + #echo "Run parallel ($SCRIPTS)." + export IN_PARALLEL=1 + set +u + + set -u + + #set -x + #parallelDisablePause + if [ $(echo "$SCRIPTS" | wc -w) -gt 1 ]; then + + #echo "=== PARALLEL" >&2 + export IN_PARALLEL=1 + runParallel $SCRIPTS + r=$? + else + export IN_PARALLEL=0 + r=0 + #echo "=== SEQ" >&2 + realSeq $SCRIPTS || { r=$?; } + + #pause + + fi + +else + #echo "=== SEQ2" >&2 + export IN_PARALLEL=0 + r=0 + realSeq $SCRIPTS || { r=$?; } +fi + +pause + +#echo "vdn-script: return : r:$r" + +exit $r diff --git a/vdn/bin/vdn-scripts.old b/vdn/bin/vdn-scripts.old new file mode 100755 index 0000000..380ba97 --- /dev/null +++ b/vdn/bin/vdn-scripts.old @@ -0,0 +1,215 @@ +#!/usr/bin/env bash + +set -eu +#set -x + +export READ=${READ:-0} +DOC=0 +VDN_TRACE=${VDN_TRACE:-0} +EDIT=0 +export PAUSE=${PAUSE:-0} +set +u +export FORCE_SEQUENTIAL=${FORCE_SEQUENTIAL:-0} +set -u +export PAUSE_IF_ERROR=0 +export VDN_TRACE + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [-r] [-n] [-d] [-t] script1... +EOF +} + +help() { + cat << EOF + +`basename $0` exécute les scripts du réseau. + +`synopsis` + +-h : affiche cette aide. +-d : n'exécute pas le script mais affiche sa description. +-e : édite le script. +-n : pas de pause à l'issue du script. +-t : trace l'exécution des commandes effectuées (debug) +-r : attendre la touche "Entrée" pour terminer +-s : force l'exécution séquentielle des scripts." +-w : attendre si erreur + + +Cette commande, après avoir fixé quelques variables et +quelques fonctions appelle les scripts du réseau. + +Remarque : si la variable d'environnement RUN_PARALLEL est fixée à 1 (cf. +~/.vdnrc) alors si plusieurs scripts sont précisés en arguments ils sont +exécutés en parallèle (via tmuxinator). + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "dehrnpstw" opt; do + case $opt in + h) help; exit 0;; + d) DOC=1;; + e) EDIT=1;; + r) READ=1;; + t) VDN_TRACE=1;; + n) PAUSE=0;; + p) PAUSE=1;; + w) PAUSE_IF_ERROR=1;; + s) FORCE_SEQUENTIAL=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + SCRIPTS="$@" +} + +realSeq() { + # in sequential + #export IN_PARALLEL=0 + + set +e + r=0 + + local SYSTEMS=$(vdn-list | grep -v '^#') + + runSequential $SCRIPTS || r=$? + + set -e + + #if [ $r -ne 0 -a $VDN_SCRIPTS_LEVEL = 1 ]; then + # error "$r" + # + #fi + + #pause + + return $r +} + + +# main + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh +. $VDN_PATH/bin/functions-scripts.sh + +args "$@" + +export VDN_PATH + +export PATH="$VDN_PATH/bin:$PATH" + +export READ + +. $VDN_PATH/bin/functions-scripts.sh + +cd $NETWORK_DIR/scripts + +if [ $DOC = 1 ]; then + for i in $SCRIPTS; do + . ./$i + echo "$i $DESC" + done + exit +fi + +if [ $EDIT = 1 ]; then + set +u + [ -z "$EDITOR" ] && export EDITOR="vi" + + set -u + $EDITOR $SCRIPTS + exit +fi + + +[ $VDN_DEBUG = 1 ] && set -x + +set +u +[ -z "$VDN_SCRIPTS_LEVEL" ] && export VDN_SCRIPTS_LEVEL=0 || : +set -u + +VDN_SCRIPTS_LEVEL=$((VDN_SCRIPTS_LEVEL+1)) + + +#if [ $VDN_SCRIPTS_LEVEL = 1 ]; then +# if canRunParallel $SCRIPTS; then +# nothing=0 +# fi +#fi + +#echo "FORCE_SEQ:$FORCE_SEQUENTIAL" +#echo "RUN_PARALLEL=$RUN_PARALLEL" +#sleep 2 +#set -x + +#set -x + +#export IN_PARALLEL=1 + +#set -x +#set +u +#echo "SCRIPTS:$SCRIPTS DISABLE_SCAN:$DISABLE_SCAN" +#set -u + +if [ $VDN_SCRIPTS_LEVEL = 1 ]; then + #echo "RESET ERRORS" + errors=0 + success=0 +fi + +if canRunParallel $SCRIPTS && [ "$FORCE_SEQUENTIAL" = 0 ]; then + + # in parallel + #echo "Run parallel ($SCRIPTS)." + export IN_PARALLEL=1 + set +u + + set -u + + #set -x + #parallelDisablePause + if [ $(echo "$SCRIPTS" | wc -w) -gt 1 ]; then + export IN_PARALLEL=1 + runParallel $SCRIPTS + r=$? + else + #export IN_PARALLEL=1 + #( + export IN_PARALLEL=0 + #p=$PAUSE + #export PAUSE=1 + #VDN_SCRIPTS_LEVEL=$((VDN_SCRIPTS_LEVEL+1)) + #set -x + #[ $VDN_SCRIPTS_LEVEL != 1 ] && export IN_PARALLEL=0 || : + r=0 + realSeq $SCRIPTS || { r=$?; } + + #PAUSE=$p + #[ $VDN_SCRIPTS_LEVEL = 1 ] && export IN_PARALLEL=1 || : + #pause + #) + + fi + +else + export IN_PARALLEL=0 + #[ $VDN_SCRIPTS_LEVEL == 1 ] && export IN_PARALLEL=0 + #export PAUSE=1 + r=0 + realSeq $SCRIPTS || { r=$?; } +fi + +pause + +#echo "vdn-script: return : r:$r" + +exit $r diff --git a/vdn/bin/vdn-send-proxy b/vdn/bin/vdn-send-proxy new file mode 100755 index 0000000..be57e6c --- /dev/null +++ b/vdn/bin/vdn-send-proxy @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] +EOF +} + +help() { + cat << EOF + +`basename $0` émet une commande au proxy (websockets). + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +if [ -e $VDN_WS_PROXY_SOCKET ]; then + echo $@ | socat - UNIX-CONNECT:$VDN_WS_PROXY_SOCKET +fi + + diff --git a/vdn/bin/vdn-set-network-dir b/vdn/bin/vdn-set-network-dir new file mode 100755 index 0000000..0c0c0f2 --- /dev/null +++ b/vdn/bin/vdn-set-network-dir @@ -0,0 +1,84 @@ +#!/usr/bin/env bash + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] networkDir +EOF +} + +help() { + cat << EOF + +`basename $0` définit le réseau courant. (fixe la variable i +NETWORK_DIR du fichier ~/.vdnrc). + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + + [ $# -ne 1 ] && usage; + + DIR=$1 +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +if [ "$DIR" != "" ]; then + if [ ! -d "$DIR" ]; then + if [ ! -d $VDN_NETWORKS_BASE_DIR/$DIR ]; then + error "Network $DIR not found" + else + DIR=$VDN_NETWORKS_BASE_DIR/$DIR + fi + fi +fi + +if [ ! -e ~/.vdnrc ]; then + cat <<EOF > ~/.vdnrc +#!/bin/bash + +# Chemin du répertoire associé au réseau + +NETWORK_DIR="$DIR" +EOF +else + if grep -q 'NETWORK_DIR' ~/.vdnrc; then + tmp=`mktemp` + cat ~/.vdnrc | \ + sed -re 's,^NETWORK_DIR=.*$,NETWORK_DIR="'$DIR'",' > $tmp + mv $tmp ~/.vdnrc + else + cat <<EOF >> ~/.vdnrc + +# Chemin du répertoire associé au réseau + +NETWORK_DIR="$DIR" +EOF + + fi +fi + diff --git a/vdn/bin/vdn-set-var b/vdn/bin/vdn-set-var new file mode 100755 index 0000000..547f6fa --- /dev/null +++ b/vdn/bin/vdn-set-var @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` var value +EOF +} + +help() { + cat << EOF + +`basename $0` fixe la variable dans ~/.vdnrc. + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hr" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + + [ $# != 2 ] && usage + + VAR=$1 + VALUE=$2 + +} + + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +f=$HOME/.vdnrc + +[ ! -e $f ] && touch $f + +if cat $f | grep -q "^$VAR="; then + sed -i -re "s,$VAR=.*$,$VAR=\"$VALUE\"," $f || echo "Error" +else + echo "$VAR=\"$VALUE\"" >> $f +fi + diff --git a/vdn/bin/vdn-shell b/vdn/bin/vdn-shell new file mode 100755 index 0000000..feb630e --- /dev/null +++ b/vdn/bin/vdn-shell @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +name=vdn-shell + +synopsis() { + cat << EOF +Usage : $name [-h] +EOF +} + +help() { + cat << EOF + +$name exécute un shell evec les fonctions et les variables VDN. + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done +} + +# Programme principal + +#xclock +args $@ + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +echo "Start..." + +#export PS1='[VDN] \u@\h:\w\$ ' + +#$SLASH/usr/bin/env | $SLASH/bin/grep PATH + +#export DISPLAY='127.0.0.1:10.0' + +#xclock + +$SLASH/usr/bin/env $SLASH/bin/bash diff --git a/vdn/bin/vdn-show b/vdn/bin/vdn-show new file mode 100755 index 0000000..6d2e2e9 --- /dev/null +++ b/vdn/bin/vdn-show @@ -0,0 +1,214 @@ +#!/usr/bin/env bash + +set -eu + +synopsis() { + cat << EOF +Usage : $(basename $0) [-h] +EOF +} + +help() { + cat << EOF + +$(basename $0) Affiche les configurations des systèmes. + +$(synopsis) + +-h : affiche cette aide +-r : attendre la touche "Entrée" pour terminer + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) +} + + +i1() { + printf "%10s %8s %s\n" "GUEST" "IDENT" "GUEST_SYS" + + for i in $guests; do + a=$(vdn-config $i IDENT) + b=$(vdn-config $i GUEST_SYS) + printf "%10s %8s %s\n" $i $a $b + done + + echo +} + +i2() { + printf "%10s %8s %s\n" "GUEST" "MEMORY" "HDA" + sm=0 + for i in $guests; do + m=$(vdn-config $i MEMORY) + d=$(vdn-config $i HDA) + printf "%10s %8s %s\n" $i $m $d + sm=$(($sm+$m)) + done + + echo + echo "TOTAL MEMORY = $sm" + echo +} + +i3() { + printf "%10s %8s %s\n" "GUEST" "NETWORKS" + + for i in $guests; do + b=$(vdn-config $i NETWORKS) + printf "%10s %8s %s\n" $i "$b" + done + + echo +} + +i4() { + nets="NET_G" + for i in $(seq 1 9); do + nets="$nets NET_$i" + done + + printf "%10s %s\n" NETWORKS " GUESTS(ETH)" + + for i in $nets; do + l="" + for s in $guests; do + setGuestVars $s + grep -q '^[^#]*NETWORKS=.*'$i $GUEST_CONF && { + l="$l $s" + } + done + l2="" + for j in $l; do + a=$(vdn-config $j NETWORKS) + b=$(echo "$a" | sed -re 's/^(.*)'$i'.*$/\1/') + c=$(echo "$b" | sed -re 's/[^ ]//g') + d=$(echo "$c" | wc -c) + d=$(($d-1)) + #echo "$i $j(eth$d)" + l2="$l2 $j(eth$d)" + done + [ -n "$l2" ] && { + printf "%10s %s\n" $i "$l2" + } + done + + echo + +} + +i5() { + printf "%10s %s\n" "GUEST" "REDIRS" + + for i in $guests; do + a="$(vdn-config $i REDIRS)" + printf "%10s %s\n" $i "$a" + done + + echo +} + +i6() { + nothing=1 +} + + +i7() { + printf "%10s %12s %s\n" "GUEST" "AUFS_SIZE" "AUFS_FILE" + + for i in $guests; do + a="$(vdn-config $i AUFS_SIZE)" + b="$(vdn-config $i AUFS_FILE)" + printf "%10s %12s %s\n" $i "$a" "$b" + done + + echo +} + +i8() { + printf "%10s %12s %s\n" "GUEST" "SWAP_SIZE" "SWAP_FILE" + + for i in $guests; do + a="$(vdn-config $i SWAP_SIZE)" + b="$(vdn-config $i SWAP_FILE)" + printf "%10s %12s %s\n" $i "$a" "$b" + done + + echo +} + + +i9() { + + printf "%10s %s\n" "GUEST" "SAVE_EXCLUDE" + + for i in $guests; do + a="$(vdn-config $i SAVE_EXCLUDE)" + printf "%10s %s\n" $i "$a" + done + + echo +} + + +i10() { + printf "%10s %s\n" "GUEST" "EXTRA_SERVICES" + + for i in $guests; do + a="$(vdn-config $i EXTRA_SERVICES)" + printf "%10s %s\n" $i "$a" + done + + echo +} + +i11() { + printf "%10s %s\n" "GUEST" "EXCLUDE_SERVICES" + + for i in $guests; do + a="$(vdn-config $i EXCLUDE_SERVICES)" + printf "%10s %s\n" $i "$a" + done + + echo + +} + + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +#IDENT=0; computeNetworks + +guests="$(find $NETWORK_DIR -follow -name "*.conf" | sed -re 's/^.*\/([^/]+).conf$/\1/')" + +i1 +i2 +i3 +i4 +i5 +vdn-graph # -a +i6 +i7 +i8 +i9 +i10 +i11 + diff --git a/vdn/bin/vdn-singularity b/vdn/bin/vdn-singularity new file mode 100755 index 0000000..082f116 --- /dev/null +++ b/vdn/bin/vdn-singularity @@ -0,0 +1,8 @@ +#!/bin/bash + +export VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +DIST=$(echo $HOST_RELEASE | cut -d '/' -f 2) + +singularity shell -u /tmp/vdn-$DIST.sif + diff --git a/vdn/bin/vdn-spice-viewer b/vdn/bin/vdn-spice-viewer new file mode 100755 index 0000000..0342998 --- /dev/null +++ b/vdn/bin/vdn-spice-viewer @@ -0,0 +1,74 @@ +#!/usr/bin/env bash + +set -eu + +#set -x + +BG=0 + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [-b] system +EOF +} + +help() { + cat << EOF + +`basename $0` démarre un client SPICE présentant l'écran du système. + +`synopsis` + +Remarque : seuls les systèmes KVM avec leur variable KVM_VIEWER fixée à "spice" + proposent un écran SPICE. + +-h : affiche cette aide +-b : start in background + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hb" opt; do + case $opt in + h) help; exit 0;; + b) BG=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + + [ $# -ne 1 ] && usage || : + + GUEST_NAME=$1; shift; + +} + +# Programme principal + +export VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +[ $VDN_DEBUG = 1 ] && set -x || : + +[ $GUEST_NAME != "nested" ] && setGuestVars $GUEST_NAME + +GUEST_OWNER=$USER + +[ $GUEST_NAME != "nested" ] && loadGuestVars $GUEST_NAME + +if [ $BG = 1 ]; then + remote-viewer -t $GUEST_NAME spice+unix://$TMPDIR/vdn-spice-$USER-$GUEST_NAME-socket & +else + remote-viewer -t $GUEST_NAME spice+unix://$TMPDIR/vdn-spice-$USER-$GUEST_NAME-socket +fi + +sleep 1 + diff --git a/vdn/bin/vdn-ssh b/vdn/bin/vdn-ssh new file mode 100755 index 0000000..5bd7877 --- /dev/null +++ b/vdn/bin/vdn-ssh @@ -0,0 +1,124 @@ +#!/usr/bin/env bash + +set -eu +#set -x + +#[ "$USER" = "gudavala" ] && set -x || : + +NO_MASTER=0 + +# ATTENTION : Ce script ne doit rien afficher sur la sortie standard +# car utilisé pour la sauvegarde. + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [option...] [login@]system [command] +EOF +} + +help() { + cat << EOF + +`basename $0` démarre une connexion ssh à destination d'un système virtuel. + +`synopsis` + +-h : affiche cette aide +-n : no master mode (utile dans certains cas) + +Les options autorisées sont celles de ssh(1). + +Exemple : + + vdn-ssh -X root@vm-1 # -X pour recevoir les fenêtres graphiques de vm-1. + + # Pour quitter le shell distant : + exit + +EOF +} + +usage() { + synopsis + exit 1 +} + + +args() { + OPTS="" + while [ $# -ne 0 ]; do + reg='^-' + if [[ "$1" =~ $reg ]]; then + OPTS="$OPTS $1" + case "$1" in + -h) help; exit 0;; + -n) NO_MASTER=1;; + -b|-c|-D|-e|-F|-I|-i|-L|-l|-m|-O|-o|-p|-R|-S|-w) + OPTS="$OPTS $2"; shift;; + esac + shift + else + break + fi + done + + LOGIN="" + + GUEST_NAME="$1" + + if echo $1 | grep -q -- '@'; then + LOGIN=`echo $1 | cut -d '@' -f 1`@ + GUEST_NAME=`echo $1 | cut -d '@' -f 2` + fi + + shift + + COMMAND="$@" +} + +# Programme principal + +GUEST_OWNER=$USER + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +#if [ $GUEST_NAME = nested ]; then +# SSH_REDIR_PORT=2222 +#else + +#set -x + + [ ! -e $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-redirs ] && \ + error "Impossible de joindre $GUEST_NAME" + + SSH_REDIR_PORT=`cat $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-redirs | \ + sed -rne 's/^tcp:([0-9]+):22(:|$).*$/\1/p'` + + [ -z "$SSH_REDIR_PORT" ] && error "Impossible de joindre $GUEST_NAME" +#fi + +# No master mode when X11 forwarding +echo $OPTS | grep -q -- -X && { + #echo "Workaround X11 forwarding" >&2 + SSH_GUEST_MASTER=0 +} + + +SSH_MASTER="" +[ $SSH_GUEST_MASTER = 1 -a $NO_MASTER != 1 ] && { + sshGuestControlMaster + SSH_MASTER="$SSH_OPTS -o ControlPersist=10m -o ControlMaster=auto -S $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-guest-%r@%h:%p" +} + +set +e +export TERM=xterm-256color + +#if [ -z "$COMMAND" ]; then +# COMMAND="bash" +#fi + +#COMMAND="export http_proxy=$http_proxy; export https_proxy=$https_proxy; $COMMAND" +#set -x +ssh $SSH_MASTER $SSH_OPTS -o ServerAliveInterval=5 $OPTS -p $SSH_REDIR_PORT ${LOGIN}localhost "$COMMAND" diff --git a/vdn/bin/vdn-ssh-copy-id b/vdn/bin/vdn-ssh-copy-id new file mode 100755 index 0000000..bef0a48 --- /dev/null +++ b/vdn/bin/vdn-ssh-copy-id @@ -0,0 +1,106 @@ +#!/usr/bin/env bash + +# début des fonctions + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [-i [identity_file]] [login@]system +EOF +} + +help() { + cat << EOF + +`basename $0` copie votre clé publique dans un système virtuel. + +`synopsis` + +-h : affiche cette aide +-i : indique le fichier contenant la clé publique à copier + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hi:" opt; do + case $opt in + h) help; exit 0;; + i) IDENTITY="$OPTARG";; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 1 ] && usage + + LAST="$1" +} + + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +IDENTITY="" + +args $@ + +LOGIN="$USER@" +GUEST_NAME=$LAST +if echo $LAST | grep -q '@'; then + LOGIN=`echo $LAST | cut -d '@' -f 1`@ + GUEST_NAME=`echo $LAST | cut -d '@' -f 2` +fi + +if echo $GUEST_NAME | grep -q '/'; then + error "$GUEST_NAME est un nom de système invalide" +fi + +[ $GUEST_NAME != nested ] && setGuestVars $GUEST_NAME + +GUEST_OWNER=$USER + +[ $GUEST_NAME != nested ] && loadGuestVars $GUEST_NAME + +if [ $GUEST_NAME = nested ]; then + SSH_REDIR_PORT=2222 + SSH_GUEST_MASTER=0 +else + [ ! -e $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-redirs ] && { + echo "Le fichier $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-redirs n'existe pas !" >&2 + echo "Le système $GUEST_NAME est-il démarré ?" >&2 + exit 1 + } + + SSH_REDIR_PORT=`cat $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-redirs | \ + sed -rne 's/^tcp:([0-9]+):22(:|$).*$/\1/p'` +fi + +if [ -z "$SSH_REDIR_PORT" ]; then + echo "Aucune redirection vers le port 22 du système $GUEST_NAME !" >&2 + exit 1 +fi + +opts="-p $SSH_REDIR_PORT -o NoHostAuthenticationForLocalhost=yes" + +[ -n "$IDENTITY" ] && opts="-i $IDENTITY $opts" + + +RUSER=$USER +RUSER=$(echo $@ | sed -rne 's/^.*(^|[[:space:]])(.*)@.*$/\2/p') +[ -z "$RUSER" ] && RUSER=$USER + +name=$(echo $@ | sed -re 's/^.*@(.*)$/\1/') +args=$(echo $LAST | sed -re "s/$name/localhost/g") + +ssh-copy-id $opts $args + +[ $? -eq 0 ] && { + echo -e "Try : \n\nvdn-ssh $RUSER@$name\n" +} + diff --git a/vdn/bin/vdn-ssh-loop b/vdn/bin/vdn-ssh-loop new file mode 100755 index 0000000..444267e --- /dev/null +++ b/vdn/bin/vdn-ssh-loop @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [option...] [login@]system +EOF +} + +help() { + cat << EOF + +`basename $0` effectue, en boucle un ssh à destination d'un système virtuel. + +`synopsis` + +-h : affiche cette aide + +Les options autorisées sont celles de ssh(1). + +Les options précisées dans la variable SSH_OPTS du fichier de configuration +sont implicitement ajoutées. + +Si la connexion échoue, un nouvel essai est effectué après 5 secondes. + +EOF +} + +usage() { + synopsis + exit 1 +} + +usage() { + echo "usage : $0 systemDir [login]" >&2 + exit 1 +} + +args() { + if [ "$1" = "-h" ]; then + help; exit 0; + fi +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +while :; do + $VDN_PATH/bin/vdn-ssh $@ + echo "Retry \"vdn-ssh $1\" in 3 s..." + sleep 3 +done diff --git a/vdn/bin/vdn-sshfs b/vdn/bin/vdn-sshfs new file mode 100755 index 0000000..76b5e56 --- /dev/null +++ b/vdn/bin/vdn-sshfs @@ -0,0 +1,118 @@ +#!/usr/bin/env bash + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [option...] [login@]system:[path] mountpoint +EOF +} + +help() { + cat << EOF + +`basename $0` monte un répertoire du système virtuel dans un répertoire de l'hôte. + +Remarque : nécessite fuse et sshfs. + +`synopsis` + +-h : affiche cette aide + +Les options autorisées sont celles de sshfs(1). + +Exemple : + + mkdir /tmp/d + vdn-sshfs test@vm-1: /tmp/d # le HOME de test sur vm-1 est monté dans /tmp/d + + # Pour démonter + fusermount -u /tmp/d + +EOF +} + +usage() { + synopsis + exit 1 +} + + +args() { + OPTS="" + while [ $# -ne 0 ]; do + reg='^-' + if [[ "$1" =~ $reg ]]; then + OPTS="$OPTS $1" + case "$1" in + -h) help; exit 0;; + -b|-c|-D|-e|-F|-I|-i|-L|-l|-m|-O|-o|-p|-R|-S|-w) + OPTS="$OPTS $2"; shift;; + esac + shift + else + break + fi + done + + LOGIN="" + DIR="" + GUEST_NAME="$1" + + if echo $1 | grep -q -- '@'; then + LOGIN=`echo $1 | cut -d '@' -f 1`@ + GUEST_NAME=`echo $1 | cut -d '@' -f 2` + + if ! echo $GUEST_NAME | grep -q -- ':'; then + usage + fi + + DIR=$(echo $GUEST_NAME | cut -d ':' -f 2) + GUEST_NAME=$(echo $GUEST_NAME | cut -d ':' -f 1) + fi + + shift + + set +u + MOUNT_DIR="$1" + [ -z "$MOUNT_DIR" -o -n "$2" ] && usage + set -u +} + +# Programme principal + +GUEST_OWNER=$USER + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +#if [ $GUEST_NAME = nested ]; then +# SSH_REDIR_PORT=2222 +#else + [ ! -e $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-redirs ] && + error "Impossible de joindre $GUEST_NAME" + + SSH_REDIR_PORT=`cat $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-redirs | \ + sed -rne 's/^tcp:([0-9]+):22(:|$).*$/\1/p'` + + [ -z "$SSH_REDIR_PORT" ] && error "Impossible de joindre $GUEST_NAME" +#fi + +# No master mode when X11 forwarding +echo $OPTS | grep -q -- -X && { + #echo "Workaround X11 forwarding" >&2 + SSH_GUEST_MASTER=0 +} + +SSH_MASTER="" +[ $SSH_GUEST_MASTER = 1 ] && { + sshGuestControlMaster + SSH_MASTER="$SSH_OPTS -o ControlPersist=10m -o ControlMaster=auto,ControlPath=$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-guest-%r@%h:%p" +} + + +set +e + +#ssh $SSH_MASTER $SSH_OPTS -o ServerAliveInterval=5 $OPTS -p $SSH_REDIR_PORT ${LOGIN}localhost "$COMMAND" +sshfs ${LOGIN}localhost:$DIR $MOUNT_DIR $SSH_MASTER $SSH_OPTS -o ServerAliveInterval=5 $OPTS -p $SSH_REDIR_PORT diff --git a/vdn/bin/vdn-start b/vdn/bin/vdn-start new file mode 100755 index 0000000..69de3eb --- /dev/null +++ b/vdn/bin/vdn-start @@ -0,0 +1,993 @@ +#!/usr/bin/env bash + +set -eu + +set -m # Jobs control + +# Script pour l'exécution d'un système virtuel +# -------------------------------------------- + +NICE=10 +EXPR="" +READ_ON_ERROR=0 +GUI=0; +VDN_TERM=0 +BG=0 + +EXCLUDE_SERVICES="" + +set -a + +# Dans le cas où une redirection (cf. REDIRS ci-dessus) échoue, +# attendre que le port se libère (0) ou chercher le premier port libre +# suivant (1). + +PORT_INC_ALLOWED=1 + +set +a + +# début des fonctions + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [-f] [-g] [-e] [-t] [-v expr] system +EOF +} + +help() { + cat << EOF + +`basename $0` démarre un système virtuel. + +`synopsis` + +Un nom de système correspond au nom d'un répertoire situé dans le +sous répertoire "systems" de Vdn. + +-h : affiche cette aide +-b : execute le système en arrière plan. +-d : mode DEBUG. +-g : si l'interface graphique est démarrée, lui délègue le démarrage. +-t : le terminal courant est utilisé en console. +-e : Attendre "Entrée" si erreur. +-v exp : évalue une expression. Pratique pour la surcharge de variables. + exemple : -v "MEMORY=32; SWAP_SIZE=32" + +EOF +} + +usage() { + synopsis + exit 2 +} + +args() { + local opt + while getopts "hebdgtv:" opt; do + case $opt in + h) help; exit 0;; + b) BG=1;; + d) export VDN_DEBUG=1;; + e) READ_ON_ERROR=1;; + g) GUI=1;; + t) VDN_TERM=1;; + v) export EXPR="$OPTARG";; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 1 ] && usage + + GUEST_NAME="$1" + if echo $GUEST_NAME | grep -q '/'; then + error "$GUEST_NAME est un nom de système invalide" + fi + + case "$GUEST_NAME" in + sae103) + + VDN_TERM=1 + + net=$(vdn-get-network) + if [ "$net" != "/home/UCA/vdn/vdn-bullseye/networks/sae103" ]; then + vdn-set-network-dir /home/UCA/vdn/vdn-bullseye/networks/sae103 + export NETWORK_DIR=/home/UCA/vdn/vdn-bullseye/networks/sae103 + SAVE_DIR="$SAVE_PATH/$(basename $NETWORK_DIR)" + fi + ;; + esac +} + +testIfAlreadyStarted() { + set +e + vdn-alive $GUEST_NAME + r=$? + + [ $r -eq 0 ] && error "Le système virtuel $GUEST_NAME est déjà lancé" +} + + +testVariables() { + [ -z "$AUFS_SIZE" ] && error "AUFS_SIZE not set" +} + +createConfigFile() { + local dir=$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-config/etc/vdn + set +u + [ -z "$http_proxy" ] && export http_proxy="" + [ -z "$https_proxy" ] && export https_proxy="" + [ -z "$POST_BOOT" ] && POST_BOOT="" + set -u + + NB_ETH=$(echo $NETWORKS | wc -w) + + + echo -n "Compute network vars... " + #PUBLICS_IP=$(for i in $(vdn-list); do ip=$(vdn-infos $i | grep PUB | sed -re 's/^.*"([0-9.]+)" .*$/\1/'); echo -n "$i:$ip "; done) + PUBLICS_IP=$(for i in $(vdn-list); do ip=$(vdn-query PUBLIC_IP $i); echo -n "$i:$ip "; done) + + PUBLIC_IP=$(vdn-query PUBLIC_IP 0 $GUEST_NAME.$NETWORK_NAME) + + echo "done" + + echo >&2 + echo "NETWORKS : $NETWORKS" >&2 + echo "NB_ETH : $NB_ETH" >&2 + echo "PUBLICS_IP: $PUBLICS_IP" >&2 + + cat <<EOF > $dir/config + +PUBLICS_IP="$PUBLICS_IP" +HOSTS="$HOSTS" +NETWORKS="$NETWORKS" +NETWORK_DIR="$NETWORK_DIR" + +VDN_RESOLV="$VDN_RESOLV" + +VDN_RESOURCES_ALLOCATOR="$VDN_RESOURCES_ALLOCATOR" + + +VDN_PATH="$VDN_PATH" +GUEST_SYS="$GUEST_SYS" +MOUNT_ROOT_PATH="$MOUNT_ROOT_PATH" +EMULATOR="$EMULATOR" + +MODE="$MODE" + +HDA="$HDA" +HDB="$HDB" +HDB_PART_FORMAT="$HDB_PART_FORMAT" +HDB_DIRS="$HDB_DIRS" + +GUEST_PATH="$GUEST_PATH" +GUEST_NAME="$GUEST_NAME" +GUEST_OWNER="$GUEST_OWNER" + +NB_ETH="$NB_ETH" +NB_DISK="$NB_DISK" +PUBLIC_IP="$PUBLIC_IP" + +ON_BOOT="$ON_BOOT" # deprecié +POST_BOOT="$POST_BOOT" +SET_HOSTNAME="$SET_HOSTNAME" + +EXTRA_ETH="$EXTRA_ETH" +EXTRA_ETH_DEFAULT_ROUTE="$EXTRA_ETH_DEFAULT_ROUTE" +EXTRA_ETH_MASQUERADING="$EXTRA_ETH_MASQUERADING" +SET_PROXY="$SET_PROXY" + +AUFS_FILE="$AUFS_FILE" +AUFS_SIZE="$AUFS_SIZE" + +SAVE_EXCLUDE="$SAVE_EXCLUDE" +CLEAR_LOG_WHEN_SAVE="$CLEAR_LOG_WHEN_SAVE" +DELETE_LOG_GZ="$DELETE_LOG_GZ" + +SWAP_FILE="$SWAP_FILE" +SWAP_SIZE="$SWAP_SIZE" + +SSH_IDENTITY="$SSH_IDENTITY" + +EXTRA_SERVICES="$EXTRA_SERVICES" +EXCLUDE_SERVICES="$EXCLUDE_SERVICES" + +RUNLEVEL="$RUNLEVEL" + +DATE=`date +%Y.%m.%d-%T` + +if [ "\$SET_PROXY" = 1 ]; then + + HTTP_PROXY="$http_proxy" + HTTPS_PROXY="$https_proxy" + + echo "export http_proxy=\"\$HTTP_PROXY\"" >> /etc/bash.bashrc + echo "export https_proxy=\"\$HTTPS_PROXY\"" >> /etc/bash.bashrc +fi + +DEFAULT_LANG="$DEFAULT_LANG" + +TIMEZONE="$TIMEZONE" + +XKBMODEL="$XKBMODEL" +XKBLAYOUT="$XKBLAYOUT" +XKBVARIANT="$XKBVARIANT" +XKBOPTIONS="$XKBOPTIONS" +BACKSPACE="$BACKSPACE" + +VDN_DEBUG="$VDN_DEBUG" +EOF +} + +waitEndOfRedirsOld() { + local n=0 + #while netstat -A inet -a -n | grep TIME_WAIT | \ + while ss -a -f inet -n -i state time-wait | \ + grep -q "^$1[[:space:]].*:$2[[:space:]]"; do + if [ $n = 0 ]; then + echo "Attente de la libération du port $2 (1 minute environ...)">&2 + fi + n=1 + sleep 1 + done +} + + + +# Create partition for union + +createUnionPart() { + echo "Create overlayfs ($AUFS_SIZE Mo). " + + + + if [ -n "$AUFS_FILE" ]; then + + [ ! -d $(dirname $AUFS_FILE) ] && mkdir -p $(dirname $AUFS_FILE) + + [ -e $AUFS_FILE ] && rm $AUFS_FILE + dd of=$AUFS_FILE bs=1k seek=$(($AUFS_SIZE*1024)) count=0 &> /dev/null + /sbin/mke2fs -q -F -t ext4 $AUFS_FILE + fi + + #rm -f $OUT_FILE + #dd of=$OUT_FILE bs=1k seek=$(($AUFS_SIZE*1024)) count=0 + + +} + +prepareSwap() { + if [ -n "$SWAP_FILE" ]; then + [ -e $SWAP_FILE ] && rm $SWAP_FILE + if [ -z "$SWAP_SIZE" ]; then + echo -e "SWAP_SIZE not set !" >&2 + exit 2 + fi + echo "Create swap ($SWAP_SIZE Mo). " + dd of=$SWAP_FILE bs=1k seek=$(($SWAP_SIZE*1024)) count=0 &> /dev/null + chmod 600 $SWAP_FILE + /sbin/mkswap $SWAP_FILE > /dev/null + #echo " done." + fi +} + +tgzPrepare() { + createUnionPart +} + +injectScriptsInConfigDir() { + local srcDir=$1 + local dstDir=$2 + + if [ -d $srcDir ]; then + local list=$(cd $srcDir; ls | grep -v prepare.sh*) + if [ -n "$list" ]; then + ( cd $srcDir; cp -a $list $dir/etc/vdn ) + if [ -e $dir/etc/vdn/rc.local ]; then + mv $dir/etc/vdn/rc.local $dir/etc + chmod 755 $dir/etc/rc.local + #echo "SET FILE : $dir/etc/rc.local" + #echo "=== EXTRA === : " + #cat $dir/etc/rc.local | grep EXTRA + fi + fi + fi +} + +createConfigDir() { + local dir=$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-config + local tgz="$dir.tgz" + + + #echo "Create config dir..." + + rm -Rf $dir + + mkdir -m 700 $dir + + mkdir -p $dir/etc/vdn + + # Copie des fichiers d'initialisation (/etc/rc.local et autres + # du répertoire direct + + injectScriptsInConfigDir $VDN_PATH/distribs/guests/direct/$GUEST_SYS $dir + + # idem mais spécialise les fichiers (COW, OVERLAY, TGZ) + + if [ $MODE != direct ]; then + injectScriptsInConfigDir $VDN_PATH/distribs/guests/$MODE/$GUEST_SYS $dir + fi + + createConfigFile + + local cp=0 + + for i in $SSH_IDENTITY; do + [ ! -d $dir/etc/vdn/.ssh ] && { + mkdir -p $dir/etc/vdn/.ssh + chmod 700 $dir/etc/vdn/.ssh + } + if [ -e $i ]; then + cp $i $dir/etc/vdn/.ssh/ + cp=1 + fi + done + + [ $cp = 0 ] && error "Aucune clé SSH !" + + [ -e $NETWORK_DIR/authorized-root.txt ] && \ + cp $NETWORK_DIR/authorized-root.txt $dir/etc/vdn + + # Add host files + + for i in $HOST_FILES; do + [ ! -d $dir/etc/vdn/host/$(dirname $i) ] && mkdir -p $dir/etc/vdn/host/$(dirname $i) || : + cp -a $i $dir/etc/vdn/host/$(dirname $i) + done + + if [ -d $NETWORK_DIR/all ]; then + [ ! -d $dir/etc/vdn/all ] && mkdir -p $dir/etc/vdn/all + ( cd $NETWORK_DIR/all && tar czf - . ) | ( cd $dir/etc/vdn/all && tar -xpzf -) + fi + + if [ -d $NETWORK_DIR/$GUEST_NAME ]; then + [ ! -d $dir/etc/vdn/guest ] && mkdir -p $dir/etc/vdn/guest + ( cd $NETWORK_DIR/$GUEST_NAME && tar czf - . ) | ( cd $dir/etc/vdn/guest && tar -xpzf - ) + fi + + # note used + #cp /etc/hosts $dir/etc/vdn + #cp /etc/resolv.conf $dir/etc/vdn + + if [ -d $VDN_PATH/scripts ]; then + cp -a $VDN_PATH/scripts/* $dir/etc/vdn + fi + + # Add allocator + [ -d $dir/etc/vdn/allocators ] && rm -Rf $dir/etc/vdn/allocators + cp -a $VDN_PATH/allocators $dir/etc/vdn + + # Add vdn resolv + cp $VDN_PATH/tools/libnss_vdn.so $dir/etc/vdn + + # Build disk + + ( cd $dir; tar -czf $tgz .; chmod 600 $tgz) + #echo -n "Create config disk... " + dd if=/dev/zero bs=512 count=1 >> $tgz 2> /dev/null + #echo "done." + + #echo "done." + +} + +### KVM (Kernel Virtual Machine) + + +kvm_query_networks() { + + . $VDN_PATH/allocators/$VDN_RESOURCES_ALLOCATOR + + + # 1. redirections + + #if [ $EXTRA_ETH = 1 ]; then + + rm -f $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-redirs + REDIRS=$(echo "$REDIRS" | sed -re 's/[[:space:]]+/ /g') + REDIRS=$(echo "$REDIRS" | sed -re 's/^[[:space:]]+//g') + REDIRS=$(echo "$REDIRS" | sed -re 's/[[:space:]]+$//g') + REDIRS=$(echo "$REDIRS" | sed -re 's/[[:space:]]/\n/g') + + + #echo "REDIRS:$REDIRS" >&2 + + redirs=` + redirsOpt="" + [ -n "$REDIRS" ] || error "REDIRS empty !" + echo "$REDIRS" | ( + export IFS=":" + i=0 + while read proto dstPort com; do + [ -z "$dstPort" ] && continue + + + #echo "dstPort:$dstPort" >&2 + #srcPort=$(vdn_redir $dstPort) + [ -z "$proto" ] && continue + + #set -x + + srcPort=$(computeRedir $GUEST_NAME $proto $dstPort) + + echo "port:$srcPort" >&2 + #set +x + + #if [ "$PORT_INC_ALLOWED" = 1 ]; then + # srcPort=$(findUnusedPort $proto $srcPort $dstPort) + #fi + #waitEndOfRedirs $proto $srcPort + redirsOpt="$redirsOpt -redir $proto:$srcPort::$dstPort" + + echo "Add to : $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-redirs" >&2 + echo "$proto:$srcPort:$dstPort:$com">>$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-redirs + done + echo "$redirsOpt" + ) + ` + #fi + + # 2. cartes Ethernet + + set - $NETWORKS + + #echo -n "-net user " + + #for i in `seq 0 $(($NB_ETH-1))`; do + + ETH=0 + + for i; do + #set -x + net="$i" + + comment=$(echo $net | cut -d '#' -f 2) + net=$(echo $net | cut -d '#' -f 1) + [ "$net" = "$comment" ] && comment="" + + + + [ "$net" = "NET_G" ] && net="NET_0" + + [ "$net" = "$comment" ] && comment="" + + netNum=$(echo $net | sed -re 's/^ *NET_([0-9]+).*$/\1/') + + mac=$(computeMacAddr $GUEST_NAME $ETH) + + if [ "$net" = "none" ]; then + local qemuVersion=$(qemu-system-x86_64 --version | grep version | sed -re 's/^.*version ([0-9.]+).*$/\1/') + if [ "$qemuVersion" \< "3.0.0" ]; then + echo -n "-device virtio-net-pci,mac=$mac " + else + echo -n "-device virtio-net-pci,mac=$mac -nic none " + fi + else + if [ $netNum = 0 ]; then + group=$MCAST_COMMON_ADDR + port=$MCAST_BASE_PORT + else + mcast=$(computeEthLink $GUEST_NAME $netNum) + echo "inetNum:$netNum mcast:$mcast" >&2 + group=`echo $mcast | cut -d : -f 1` + port=`echo $mcast | cut -d : -f 2` + fi + + echo -n "-device virtio-net-pci,netdev=n$(($netNum)),mac=$mac -netdev socket,id=n$(($netNum)),mcast=$group:$port " + fi + + ETH=$(($ETH+1)) + + done + + [ $EXTRA_ETH = 1 ] && { + mac=$(computeMacAddr $GUEST_NAME $NB_ETH) + redirs=$(echo $redirs | sed -re 's/^ *//') + + echo -n "-device virtio-net-pci,netdev=e0,mac=$mac -netdev user,id=e0$redirs" + #echo -n "-net nic,vlan=0,model=$NET_MODEL -net user,vlan=0$redirs" + + } || : +} + +kvm_graphic() { + GRAPHICAL_OPTS="" + + if [ $KVM_VIEWER = "vnc" ]; then + set +e + ps auwx | grep -v grep |grep -q 'ruby.*vdn-gui' + GUI_RUNNING=$? + set -e + if [ $KVM_VIEWER_AUTOSTART = 1 ]; then + if [ $KVM_VIEWER_EMBEDDED = 1 -a $GUI_RUNNING = 0 ]; then + ( sleep 3; sendToGui "vnc-viewer $GUEST_NAME" ) & + else + (sleep 3; vdn-vnc-viewer $GUEST_NAME ) & + fi + fi + GRAPHICAL_OPTS="-serial mon:stdio -monitor null -vnc unix:$TMPDIR/vdn-vnc-$USER-$GUEST_NAME-socket -spice unix,disable-ticketing,addr=$TMPDIR/vdn-spice-$USER-$GUEST_NAME-socket" + #GRAPHICAL_OPTS="$GRAPHICAL_OPTS -device virtio-serial -chardev spicevmc,id=vdagent,debug=0,name=vdagent -device virtserialport,chardev=vdagent,name=com.redhat.spice.0" + + elif [ $KVM_VIEWER = "spice" ]; then + set +e + ps auwx | grep -v grep |grep -q 'ruby.*vdn-gui' + GUI_RUNNING=$? + set -e + if [ $KVM_VIEWER_AUTOSTART = 1 ]; then + #if [ $KVM_VIEWER_EMBEDDED = 1 -a $GUI_RUNNING = 0 ]; then + # ( sleep 3; sendToGui "spice-viewer $GUEST_NAME" ) & + #else + (sleep 1; vdn-spice-viewer -b $GUEST_NAME ) & + #fi + fi + GRAPHICAL_OPTS="-serial mon:stdio -monitor null -vnc unix:$TMPDIR/vdn-vnc-$USER-$GUEST_NAME-socket -spice unix,disable-ticketing,addr=$TMPDIR/vdn-spice-$USER-$GUEST_NAME-socket" + GRAPHICAL_OPTS="$GRAPHICAL_OPTS -device virtio-serial -chardev spicevmc,id=vdagent,debug=0,name=vdagent -device virtserialport,chardev=vdagent,name=com.redhat.spice.0" + #GRAPHICAL_OPTS="$GRAPHICAL_OPTS -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel1,id=channel1,name=org.spice-space.stream.0 -chardev spiceport,name=org.spice-space.stream.0,id=charchannel1" + + elif [ $KVM_VIEWER = "sdl" ]; then + GRAPHICAL_OPTS="-serial mon:stdio -monitor null" + + else + GRAPHICAL_OPTS="-serial mon:stdio -monitor null -nographic" + fi +} + +startKvmTgz() { + + # Config + + local r=0 + + [ ! -d $(dirname $SAVE_FILE) ] && mkdir -p $(dirname $SAVE_FILE) + + case "$MODE" in + tgz) + # Sauvegarde + [ ! -e $SAVE_FILE ] && { + #echo -n "Create minimal save file. " + dd if=/dev/zero of=$SAVE_FILE count=1 bs=1 &> /dev/null + #echo "done." + } + DISK_OPTS="$DISK_OPTS -drive file=$SAVE_FILE,if=$KVM_DISK_MODEL,media=disk,format=raw" + + # aufs part + DISK_OPTS="$DISK_OPTS -drive file=$AUFS_FILE,if=$KVM_DISK_MODEL,media=disk,format=raw" + + # swap + [ -n "$SWAP_FILE" ] && + DISK_OPTS="$DISK_OPTS -drive file=$SWAP_FILE,if=$KVM_DISK_MODEL,media=disk,format=raw" + + #DISK_OPTS="$DISK_OPTS -drive file=$OUT_FILE,if=$KVM_DISK_MODEL,media=disk,format=raw" + ;; + tgz2) + # Sauvegarde + [ ! -e $SAVE_FILE ] && { + #echo -n "Create minimal save file. " + dd if=/dev/zero of=$SAVE_FILE count=1 bs=1 &> /dev/null + #echo "done." + } + DISK_OPTS="$DISK_OPTS -drive file=$SAVE_FILE,if=$KVM_DISK_MODEL,media=disk,format=raw" + + # aufs part + DISK_OPTS="$DISK_OPTS -drive file=$AUFS_FILE,if=$KVM_DISK_MODEL,media=disk,format=raw" + + # swap + [ -n "$SWAP_FILE" ] && + DISK_OPTS="$DISK_OPTS -drive file=$SWAP_FILE,if=$KVM_DISK_MODEL,media=disk,format=raw" + + + ;; + overlay) + # Sauvegarde + [ ! -e $SAVE_FILE ] && { + #echo -n "Create minimal save file. " + dd of=$SAVE_FILE bs=1k seek=$(($AUFS_SIZE*1024)) count=0 &> /dev/null + /sbin/mke2fs -q -F -t ext4 $SAVE_FILE + #echo "done." + } + DISK_OPTS="$DISK_OPTS -drive file=$SAVE_FILE,if=$KVM_DISK_MODEL,media=disk,format=raw" + + # aufs part + # none, is $SAVE_FILE + + # swap + + [ -n "$SWAP_FILE" ] && + DISK_OPTS="$DISK_OPTS -drive file=$SWAP_FILE,if=$KVM_DISK_MODEL,media=disk,format=raw" + + ;; + esac + + KVM_NETWORKS_OPTS="$networks" + + # Options passées au noyau + + case "$MODE" in + tgz2) KOPTS="";; + *) KOPTS="root=/dev/vda1 ro console=ttyS0,115200n8" + KOPTS="$KOPTS vdn-emulator=kvm vdn-mode=$MODE" + KOPTS="$KOPTS net.ifnames=0 noresume" # fastboot quiet" + + KOPTS="root=/dev/vda1 ro console=ttyS0,115200n8" + KOPTS="$KOPTS vdn-emulator=kvm vdn-mode=$MODE" + KOPTS="$KOPTS net.ifnames=0 noresume" # fastboot quiet" + esac + + createConfigDir + + # config disk (last disk) + configTgz=$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-config.tgz + DISK_OPTS="$DISK_OPTS -drive file=$configTgz,if=$KVM_DISK_MODEL,media=disk,format=raw" + + kvm_graphic + + echo "Start begin (EMULATOR=$EMULATOR, SAVE_FILE=$SAVE_FILE)" + + case "$MODE" in + tgz2) cmd="ionice -c 3 nice -$NICE $EMULATOR \ + $KVM_OPTS $GRAPHICAL_OPTS \ + $DISK_OPTS \ + $KVM_NETWORKS_OPTS \ + " + + echo "==> CMD: $cmd" + + ;; + + *) cmd="ionice -c 3 nice -$NICE $EMULATOR \ + $KVM_OPTS $GRAPHICAL_OPTS \ + -initrd $VDN_PATH/files/$INITRAMFS \ + -kernel $VDN_PATH/files/$KERNEL \ + -append '$KOPTS' \ + $DISK_OPTS \ + $KVM_NETWORKS_OPTS \ + " + ;; + esac + + set +u + [ -z "$FORCE_BG" ] && export FORCE_BG=0 || : + + set -u + + #echo $cmd | tr ' ' '\n' + + if [ $BG = 1 -o \( $FORCE_BG = 1 -a $WITH_GUI = 0 \) ]; then + eval $cmd < /dev/null &> /dev/null & + #r=$? + #trap - 0 + return 0 + fi + #if [ $FORCE_BG = 1 ]; then + # eval $cmd & + #fi + + + if [ "$VDN_TERM" = 0 ]; then + set -e + + $VDN_PATH/bin/vdn-terminal "$cmd" + + r=$? + set +e + else + set +e + eval $cmd + r=$? + stty sane + set -e + fi + return $r +} + +startKvmDirectOrCow() { + + local r=0 + + set +u + if [ "$HDA" = "$VDN_DISK_ENV" ]; then + error "Impossible de monter en écriture le disque $VDN_DISK_ENV \nservant à l'environnement chroot.\nAbandon" + fi + set -u + + if [ ! -e "$VDN_PATH/files/$HDA" ]; then + [ -z "$HDA_SIZE" ] && error "Need HDA_SIZE (in Mo)" + echo "Create $HDA. Size=$HDA_SIZE (Mo)" + dd if=/dev/zero of=$VDN_PATH/files/$HDA count=1 bs=512 + dd of=$VDN_PATH/files/$HDA count=0 bs=1M seek=$HDA_SIZE + fi + + [ $MODE = direct -a ! -w $VDN_PATH/files/$HDA ] && \ + error "No write permission on $VDN_PATH/files/$HDA" + + KVM_NETWORKS_OPTS="$networks" + #KVM_NETWORKS_OPTS="$(eval echo $networks)" + + [ -n "$SWAP_FILE" ] && + DISK_OPTS="$DISK_OPTS -drive file=$SWAP_FILE,if=$KVM_DISK_MODEL,media=disk,format=raw" + + createConfigDir + configTgz=$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-config.tgz + + set +u + [ -z "$DISK_OPTS" ] && DISK_OPTS="" + set -u + + DISK_OPTS="$DISK_OPTS -drive file=$configTgz,if=$KVM_DISK_MODEL,media=disk,format=raw" + + kvm_graphic + + echo "Start startKvmDirect begin (EMULATOR=$EMULATOR)" + + cmd="ionice -c 3 nice -$NICE $EMULATOR \ + $KVM_OPTS $GRAPHICAL_OPTS \ + $DISK_OPTS \ + $KVM_NETWORKS_OPTS \ + " + + if [ $BG = 1 ]; then + eval $cmd < /dev/null &> /dev/null & + r=$? + trap - 0 + return $r + fi + + if [ "$VDN_TERM" = 0 ]; then + set -e + $VDN_PATH/bin/vdn-terminal "$cmd" + r=$? + set +e + else + set +e + eval $cmd + r=$? + stty sane + set -e + fi + + return $r +} + +startKvm() { + + local r=0 + + echo "Start KVM" + + networks=`kvm_query_networks` + + # for last QEMU versions ( -redir -> hostfwd ) + if echo "$networks" | grep -q -- -redir; then + n=$(echo "$networks" | sed -re 's/-redir +(tcp|udp):([^:]+)::([0-9]+)( |$)/,hostfwd=\1::\2-:\3/g') + networks=$(echo "$n" | sed -re 's/-net user /-net user/g') + fi + + echo "networks : $NETWORKS" >&2 + + NB_DISK=0 + DISK_OPTS="" + + #echo "MODE 1:$MODE" + case "$MODE" in + tgz|overlay|tgz2) + [ $BOOT_CDROM = 1 ] && error "BOOT_CDROM=1 : Can't boot on cdrom !" + #[ -n "$CDROM" ] && warning "CDROM not allowed in tgz mode" + #CDROM="" + tgzPrepare + ;; + cow) + [ -z "$HDA" ] && error "Mode COW : Need HDA Disk" || : + [ -z "$SAVE_FILE" ] && error "Mode COW : Need SAVE_FILE" || : + [ ! -d $(dirname $SAVE_FILE) ] && mkdir -p $(dirname $SAVE_FILE) + [ ! -e "$SAVE_FILE" ] && { + #echo "Create $SAVE_FILE" + + [ $VDN_DEBUG = 1 ] && set -x || : + ( umask 077; qemu-img create -b $VDN_PATH/files/$HDA -f qcow2 $SAVE_FILE ) + set +x + } + ;; + esac + + local boot_hda=on + local boot_cdrom=off + local boot_drive=c + local boot_order=c + + [ $BOOT_CDROM = 1 ] && { + boot_hda=off + boot_cdrom=on + local boot_drive=d + local boot_order=d + } + + #set +x + + case "$MODE" in + tgz|overlay|tgz2) + DISK_OPTS="-boot order=$boot_order -drive file=$VDN_PATH/files/$HDA,if=$KVM_DISK_MODEL,snapshot=on,format=raw" + ;; + cow) + DISK_OPTS="-boot order=$boot_order -drive file=$SAVE_FILE,if=$KVM_DISK_MODEL" + ;; + direct) + DISK_OPTS="-boot order=$boot_order -drive file=$VDN_PATH/files/$HDA,if=$KVM_DISK_MODEL,format=raw" + ;; + *) error "Invalide mode : $MODE" + ;; + esac + + NB_DISK=$(($NB_DISK+1)) + + set +u + [ -z "$SAVE_DIR_HDB" ] && SAVE_DIR_HDB=$SAVE_DIR || : + set -u + + [ ! -d $SAVE_DIR_HDB ] && mkdir -p $SAVE_DIR_HDB || : + + [ -n "$HDB" ] && { + [ ! -e "$SAVE_DIR_HDB/$HDB" ] && { + [ -n "$HDB_SIZE" ] && { + #echo -n "Create HDB ($HDB_SIZE) : $SAVE_DIR_HDB/$HDB... " + dd of=$SAVE_DIR_HDB/$HDB count=0 bs=1M seek=$HDB_SIZE + #echo "done." + } + } + DISK_OPTS="$DISK_OPTS -drive file=$SAVE_DIR_HDB/$HDB,if=$KVM_DISK_MODEL,format=raw" + NB_DISK=$(($NB_DISK+1)) + } + + [ -n "$CDROM" ] && { + [ ! -e "$VDN_PATH/files/$CDROM" ] && { + warning "Cdrom \"$CDROM\" not found !" + } || { + DISK_OPTS="-boot order=$boot_order $DISK_OPTS -drive file=$VDN_PATH/files/$CDROM,media=cdrom" + #NB_DISK=$(($NB_DISK+1)) # /dev/cdrom -> /dev/sr0 + } + } + + prepareSwap + + if [ $KVM_USB_DEVICE_TABLET = 1 ]; then + KVM_OPTS="$KVM_OPTS -usbdevice tablet" + fi + + case $KVM_VIEWER in + no) KVM_OPTS="$KVM_OPTS -nographic";; + sdl) ;; + vnc) ;; + esac + + case "$EMULATOR" in + kvm) [ -w /dev/kvm ] && { + KVM_OPTS="-enable-kvm -cpu host $KVM_OPTS" + cpu=$(getconf _NPROCESSORS_ONLN) + KVM_OPTS="-smp $cpu $KVM_OPTS" + } + EMULATOR=qemu-system-x86_64 + + ;; + qemu) KVM_OPTS="-smp 1 $KVM_OPTS" + EMULATOR=qemu-system-x86_64 + ;; + esac + + #echo "MODE: beforeStart : $MODE" + case $MODE in + tgz|overlay|tgz2) startKvmTgz; r=$?;; + direct|cow) startKvmDirectOrCow; r=$?;; + *) error "Mode $MODE not available" + esac + + return $r + +} + +quit() { + echo "" + #echo "*** $GUEST_NAME stopped !" + #echo "Wait return before rm files !" + #read + #rm -Rf $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-* +} + +# Programme principal + +echo "vdn-start $@" + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +myLocalHostname=$(hostname) + +if [ "$myLocalHostname" = "tokyo" -o "$myLocalHostname" = "iutclinfvm01l" ]; then + echo "Lancer des VM sur $myLocalHostname n'est ni autorisé ni judicieux !" >&2 + echo "Allez sur une machine de TP (commande scan-dept pour lister celles allumées) !" >&2 + exit 9 +fi + +set +u +[ "$VDN_DEBUG" = "1" ] && set -x || : +set -u + +#verifIdent || exit 2 + +export HOSTS="" + +setGuestVars $GUEST_NAME + +GUEST_OWNER=$USER + +DIRECT=0 + +loadGuestVars $GUEST_NAME + +#if ! /sbin/route -n | grep -q '0.0.0.0' ; then +if ! /sbin/ip route | grep -q default; then + error "Pas de route par défaut ! Consultez la FAQ" +fi + +AUFS_OPTS="" + +NB_ETH=`echo $NETWORKS | wc -w` + + +testIfAlreadyStarted + + +# Délègue à interface graphique + +set +u +[ -z "$WITH_GUI" ] && export WITH_GUI=0 +[ -z "$VDN_GUI" ] && export VDN_GUI=0 +set -u + +if [ $GUI = 1 ]; then + if ps auwx | grep -v grep | grep -q 'ruby.*vdn-gui' ; then + sendToGui "start $GUEST_NAME $EXPR" + exit 0 + fi +fi + +set +u +if [ ! -e $VDN_PATH/files/$INITRAMFS_PATH ]; then + if [ $MODE = "tgz" -o $MODE = "overlay" -o $MODE = "tgz2"]; then + error "Impossible de trouver : $INITRAMFS_PATH" + fi +fi +set -u + + +export MOUNT_ROOT_PATH="$VDN_PATH/distribs/guests/$GUEST_SYS/mount-root" + +#echo +#echo "*** Start $GUEST_NAME ($EMULATOR)" +#echo + + +trap quit 0 + +[ -z "$EMULATOR" ] && EMULATOR="kvm" + +case "$EMULATOR" in + kvm|qemu*) + #EXCLUDE_SERVICES="" + #echo "Start kvm..." + startKvm + r=$?;; + + *) echo "L'émulateur $EMULATOR n'est pas supporté !" >&2; exit 2;; +esac + +exit $r + diff --git a/vdn/bin/vdn-start-secure-1 b/vdn/bin/vdn-start-secure-1 new file mode 100755 index 0000000..ce93ba6 --- /dev/null +++ b/vdn/bin/vdn-start-secure-1 @@ -0,0 +1,79 @@ +#!/bin/bash + +VDN_PATH=/home/prof/vdn/vdn +. $VDN_PATH/bin/functions-scripts.sh + +echo "Démarrage du réseau secure-1" + +if [ ! -e ~/.ssh/id_rsa ]; then + echo "Vous de disposez pas de clés RSA nécessaire pour contacter" + echo "les machines virtuelle." + echo + echo "Créez un couple de clés RSA ? (O/n)" + read reply + case "$reply" in + '\n'|''|o|O) ;; + *) echo "Bye !"; exit 0;; + esac + + echo "==========================================================" + echo "Gardez les choix par défaut (touche Entrée) sauf pour" + echo "la \"passphrase\"." + echo + ssh-keygen -t rsa || exit 1 +fi + +n=debian-1 + +if ! vdn-alive $n; then + echo + echo "Démarrage de l'unique VM : $n" + vdn-set-network-dir /home/prof/vdn/vdn/networks/secure-1 + vdn-start -b $n +fi + +echo "Ouverture d'une connexion ssh sur $n ... (Patientez 10..30 secondes...)" +waitSsh $n + +#echo $? +#echo "Configuration de debian-1" +#vdn-ssh root@$n "hostname" +echo +echo "Machine virtuelle : $n démarrée et opérationnelle" +echo + +echo "Commandes de base" +echo "-----------------" +echo +echo "Connexion SSH à $n : dans autant d'autres terminaux que vous le souhaitez" +echo +echo " vdn-ssh root@debian-1 # pour ouvrir une connexion SSH avec $n" +echo +echo +echo "Arrêter la machine virtuelle $n : à faire en fin de scéance." +echo +echo " vdn-halt $n # A faire sur l'hôte." +echo +echo +echo "Tuer la VM (la \"débrancher\" brutalement, à utiliser en dernier recours !)" +echo +echo " vdn-kill $n" +echo +echo +echo "Nettoyer $n : repart d'une configuration vierge." +echo +echo " vdn-clean $n # $n DOIT être arrêtée avant !" +echo +echo +echo "Commandes supplémentaires" +echo "-------------------------" +echo "Outre vdn-ssh, les commandes vdn-scp, vdn-sshfs, vdn-ssh-copy-id permettent" +echo "des transferts de fichiers entre l'hôte et la VM." +echo "Chacune de ses commandes s'utilise presque comme l'orginale et dispose d'une" +echo "aide intégrée affichée via l'option -h" +echo +echo "Exemple :" +echo " vdn-scp hosts root@debian-1:/etc # pour"injecter" un fichier dans la VM." +echo +echo + diff --git a/vdn/bin/vdn-start-wrapper b/vdn/bin/vdn-start-wrapper new file mode 100755 index 0000000..8baf9b0 --- /dev/null +++ b/vdn/bin/vdn-start-wrapper @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] [les options de vdn-start] +EOF +} + +help() { + cat << EOF + +`basename $0` ne fait qu'appeler vdn-start et analyser son + code de retour. + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + + +# Programme principal + +[ "$1" = '-h' ] && { help; exit 0; } + +vdn-start "$@" +r=$? + +[ -z "$VDN_DEBUG" ] && VDN_DEBUG=0 || : + +# 1 : when linux killed +# 143 : when kvm is killed +set -x +#if [ $VDN_DEBUG = 1 -o \( $r != 1 -a $r != 143 -a $r != 0 \) ]; then +if [ $VDN_DEBUG = 1 -o \( $r != 143 -a $r != 0 \) ]; then + echo + echo "DEBUG MODE (ret=$r) : Press Return to exit" + read < /dev/tty +#else +# read < /dev/tty +fi diff --git a/vdn/bin/vdn-terminal b/vdn/bin/vdn-terminal new file mode 100755 index 0000000..05466b1 --- /dev/null +++ b/vdn/bin/vdn-terminal @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +name=vdn-terminal + +BIG=0 + +synopsis() { + cat << EOF +Usage : $name [-h] +EOF +} + +help() { + cat << EOF + +$name lance un terminal exécutant une commande en arrière plan. + +`synopsis` + +-h : affiche cette aide +-b : police de 10 et géométrie de 140x43 (big) + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hb" opt; do + case $opt in + h) help; exit 0;; + b) BIG=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + ARGS=$@ +} + +# Programme principal + +args $@ + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +export VDN_PATH + +cmd=$ARGS + +#geom="-fa 'Monospace' -fs 12" +#[ $BIG = 1 ] && geom="-fa 'Monospace' -fs 10 -geometry 140x43" + +opts="-j -rightbar -sb -si -sk -vb" + +geom="" +[ $BIG = 1 ] && geom="--geometry 140x43 --font 12" + + +#c="gnome-terminal --name=\"$name\" -- $cmd" +c="xfce4-terminal $geom --disable-server -T \"$name\" -x $cmd" + +#c="xterm $opts $geom -T \"$name\" -e $cmd" + +echo "vdn-terminal cmd:$c" +eval $c 2> /dev/null & +#vdn-terminal.rb $@ diff --git a/vdn/bin/vdn-test b/vdn/bin/vdn-test new file mode 100755 index 0000000..fdcec31 --- /dev/null +++ b/vdn/bin/vdn-test @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +echo ok diff --git a/vdn/bin/vdn-test-all b/vdn/bin/vdn-test-all new file mode 100755 index 0000000..39925d2 --- /dev/null +++ b/vdn/bin/vdn-test-all @@ -0,0 +1,187 @@ +#!/usr/bin/env bash + +set -eu + +export WITH_GUI=0 + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] +EOF +} + +help() { + cat << EOF + +`basename $0` tests les scripts "repair*" des réseaux." + +`synopsis` + +-h : affiche cette aide +-g : avec l'interface graphique + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hg" opt; do + case $opt in + h) help; exit 0;; + g) WITH_GUI=1;; + ?) usage;; + esac + done +} + +testHeader() { + n=$1 + echo + echo "Test $n" + echo "==================" + + vdn-set-network-dir $VDN_PATH/networks/$n + export NETWORK_DIR=$VDN_PATH/networks/$n + + if [ $WITH_GUI = 1 ]; then + sendToGui "quit" + vdn $n & + fi +} + +testFinish() { + + systems=$@ + + for i in $systems; do + vdn-halt $i + done + + #wait + + #vdn-clean -f $systems + + if [ $WITH_GUI = 1 ]; then + sendToGui "quit" + fi +} + +testRoutingStatic() { + local n + + n=routing-static + testHeader $n + systems=$(vdn-list | grep -v '^#') + vdn-clean -f $systems + vdn-scripts -n configAll + vdn-scripts -n repairAll + vdn-scripts -n testAll + testFinish $systems +} + +testRoutingOspf() { + local n + + n=routing-ospf + testHeader $n + systems=$(vdn-list | grep -v '^#') + vdn-clean -f $systems + vdn-scripts -n configAll + vdn-scripts -n repairAll + vdn-scripts -n testAll + testFinish $systems +} + +testRoutingRip() { + local n + + n=routing-rip + testHeader $n + systems=$(vdn-list | grep -v '^#') + vdn-clean -f $systems + vdn-scripts -n configAll + vdn-scripts -n repairAll + vdn-scripts -n testAll + testFinish $systems +} + + + +testFirewall() { + local n + + n=firewall + testHeader $n + systems=$(vdn-list | grep -v '^#') + vdn-clean -f $systems + vdn-scripts -n configAll + vdn-scripts -n repairFirewall + vdn-scripts -n testFirewall + vdn-scripts -n repairIPv6 + vdn-scripts -n testIPv6 + testFinish $systems +} + +testFixme() { + local n + + n=fixme + testHeader $n + systems=$(vdn-list | grep -v '^#') + vdn-clean -f $systems + vdn-scripts -n configAll + vdn-scripts -n repairAll + vdn-scripts -n testAll + testFinish $systems + +} + +testDocker() { + local n + + n=docker + testHeader $n + systems=$(vdn-list | grep -v '^#') + vdn-clean -f $systems + vdn-scripts -n configAll + vdn-scripts -n testAll + testFinish $systems +} + +testNagios() { + local n + + n=nagios + testHeader $n + systems=$(vdn-list | grep -v '^#') + vdn-clean -f $systems + vdn-scripts -n configAll + vdn-scripts -n testAll + testFinish $systems +} + + + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +export DISABLE_PARALLEL=1 # force sequential mode +export FORCE_BG=1 + +time ( +#time testFirewall +#time testRoutingStatic +#time testRoutingOspf +#time testRoutingRip +#time testFixme +#time testDocker +time testNagios +) diff --git a/vdn/bin/vdn-test-kvm b/vdn/bin/vdn-test-kvm new file mode 100755 index 0000000..04e9dc5 --- /dev/null +++ b/vdn/bin/vdn-test-kvm @@ -0,0 +1,88 @@ +#!/usr/bin/env bash + +set -eu + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] +EOF +} + +help() { + cat << EOF + +`basename $0` analyse les capacités de virtualisation de l'hôte. + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done +} + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +grep -Eq '(vmx|svm)' /proc/cpuinfo +virtproc=$? +[ -w /dev/kvm ] +kvmwrite=$? +lsmod | grep -q 'kvm_' +kvmproc=$? +lsmod | grep -q 'kvm[^_]' + +kvm=0 +ret=1 + +if [ $virtproc -ne 0 ]; then + echo "Votre processeur ne dispose pas d'instructions de virtualisation :-( !" +fi +if [ $virtproc -eq 0 -a $kvmwrite -ne 0 ]; then + echo + echo "Votre processeur dispose d'instructions de virtualisation." + echo "Cependant vous ne pouvez pas les utiliser :-( !" + echo + + if [ -e /dev/kvm ]; then + msg=" Vous n'avez pas les droits de lecture/écriture sur /dev/kvm !\n L'administrateur (root) doit, au choix, effectuer les actions suivantes :\n 1. chmod 666 /dev/kvm.\n 2. Vous ajouter au groupe $(stat -c %G /dev/kvm).\n Si la deuxième solution est choisie, vous devrez vous déconnecter de votre\n session graphique et vous reconnecter." + + elif lsmod | grep -q kvm; then + msg=" La virtualisation n'est pas activée dans votre BIOS/UEFI." + + + else + proc="intel" + if cat /proc/cpuinfo | grep -i -q amd; then + proc="amd" + fi + msg=" Le module noyau \"kvm-$proc\" n'est pas chargé !\n L'administrateur du système doit exécuter : modprobe kvm-$proc ." + fi + echo "Il semblerait que la raison soit :" + echo -e "$msg" + echo +fi + +if [ $virtproc -eq 0 -a $kvmwrite -eq 0 ]; then + echo "Instructions de virtualisation accessibles." + ret=0 +fi + +exit $ret diff --git a/vdn/bin/vdn-upload-disks b/vdn/bin/vdn-upload-disks new file mode 100755 index 0000000..ba1c4fb --- /dev/null +++ b/vdn/bin/vdn-upload-disks @@ -0,0 +1,177 @@ +#!/usr/bin/env bash + +set -eu + +#set -x + +FORCE=0 +DRY=0 +SYSTEMS="" + +synopsis() { + cat << EOF +Usage : `basename $0` [-hdf] system... +EOF +} + +help() { + cat << EOF + +`basename $0` dépose les disques associés au(x) système(s) sur le serveur. + +`synopsis` + +Les disques des systèmes spécifiés sont déposés sur le serveur (rsync via ssh). + +Pour cela, la variable SSH_REPOSITORY doit avoir été fixée dans votre +fichier \$HOME/.vdnrc. Exemple : + +SSH_REPOSITORY="toto@truc.bidule.org:public_html/files" + +Remarque : les fichiers "*.disk" sont préalablement compressés (.gz). + +-h : affiche cette aide +-d : dry run +-f : force : pas de demande de confirmation ! + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "hdf" opt; do + case $opt in + h) help; exit 0;; + d) DRY=1;; + f) FORCE=1;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -lt 1 ] && usage + SYSTEMS=$@ +} + + +uploadDisks() { + + local error=0 absent=0 + + LIST="" + LIST_DISKS="" + + if [ -z "$SSH_REPOSITORY" ]; then + error "SSH_REPOSITORY est vide" + fi + + + # find all files (uniq) + + for i; do + GUEST_NAME="$i" + if echo $GUEST_NAME | grep -q '/'; then + error "$GUEST_NAME est un nom de système invalide" + fi + + DISKS_REPOSITOY=""; + CDROM_REPOSITORY=""; + HDA=""; HDB=""; CDROM=""; BOOT_CDROM="0"; + KERNEL=""; INITRAMFS="" + + loadGuestVars $GUEST_NAME + + [ "$MODE" = "tgz" -o "$MODE" = "overlay" ] && { + [ -n "$KERNEL" ] && LIST="$LIST $DISKS_REPOSITORY/$KERNEL" + [ -n "$INITRAMFS" ] && LIST="$LIST $DISKS_REPOSITORY/$INITRAMFS" + } + + [ -n "$CDROM" -a "$BOOT_CDROM" = 1 ] && \ + LIST="$LIST $CDROM_REPOSITORY/$CDROM" + + [ -n "$HDA" ] && LIST_DISKS="$LIST_DISKS $DISKS_REPOSITORY/$HDA.gz" + [ -n "$HDB" ] && LIST_DISKS="$LIST_DISKS $DISKS_REPOSITORY/$HDB.gz" + + done + + #set -x + LIST_DISKS=$(echo $LIST_DISKS | tr -s ' ' '\n' | sort -u | grep -v '^$') + + LIST=$(echo $LIST | tr -s ' ' '\n' | sort -u | grep -v '^$' ||:) + + LIST="$LIST $LIST_DISKS" + + # test dates + + LIST_UPLOAD="" + + for i in $LIST; do + file=$(basename $i .gz) + + set +e + reInfos="$(wget --spider -S $i 2>&1)" + if [ $? -ne 0 ]; then + reDate=0 + else + reDate=$(echo "$reInfos" | grep "Last-Modified:" | cut -d ':' -f 2-) + reDate=$(date -d "$reDate" +%s) + fi + set -e + + locDate=0 + if [ -e $VDN_PATH/files/$file ]; then + locDate=$(stat -c %Y $VDN_PATH/files/$file) + else + warning "$(basename $i) not found" + absent=1 + continue + fi + + [ $locDate -gt $reDate ] && LIST_UPLOAD="$LIST_UPLOAD $i" || + echo "$file : is up to date" + done + + echo $LIST_UPLOAD + + # upload + + for i in $LIST_UPLOAD; do + file=$(basename $i .gz) + if [[ $i =~ \.gz ]]; then + if [ $DRY = 1 ]; then + echo "Dry run : upload $i" + else + tmp=$(mktemp) + echo "Compression ($file). Patience... (environ 5 mn)" + gzip -c -n --rsyncable $VDN_PATH/files/$file > $tmp + chmod 644 $tmp + + echo "Synchronisation. Patience..." + rsync -S --progress $tmp $SSH_REPOSITORY/$file.gz + rm $tmp + fi + else + if [ $DRY = 1 ]; then + echo "Dry run : upload $i" + else + rsync -S --progress $VDN_PATH/files/$file $SSH_REPOSITORY + fi + fi + done + + [ $absent = 1 ] && return 1 || : +} + + +# Programme principal + +GUEST_OWNER=$USER +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +uploadDisks $SYSTEMS diff --git a/vdn/bin/vdn-viewer b/vdn/bin/vdn-viewer new file mode 100755 index 0000000..5afd2c9 --- /dev/null +++ b/vdn/bin/vdn-viewer @@ -0,0 +1,65 @@ +#!/usr/bin/env bash + +set -eu + +#set -x + +DEBUG=0 + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] system +EOF +} + +help() { + cat << EOF + +`basename $0` démarre un client SPICE présentant l'écran du système. + +`synopsis` + +Remarque : seuls les systèmes KVM avec leur variable KVM_VIEWER fixée à "spice" + proposent un écran SPICE. + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + + [ $# -ne 1 ] && usage || : + + GUEST_NAME=$1; shift; + +} + +# Programme principal + +export VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +[ $DEBUG = 1 ] && set -x || : + +[ $GUEST_NAME != "nested" ] && setGuestVars $GUEST_NAME + +GUEST_OWNER=$USER + +[ $GUEST_NAME != "nested" ] && loadGuestVars $GUEST_NAME + +remote-viewer -t $GUEST_NAME spice+unix://$TMPDIR/vdn-spice-$USER-$GUEST_NAME-socket & diff --git a/vdn/build-template b/vdn/build-template new file mode 100644 index 0000000..527f837 --- /dev/null +++ b/vdn/build-template @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +build() { + echo "build..." +} + diff --git a/vdn/config.rc b/vdn/config.rc new file mode 100644 index 0000000..63d7708 --- /dev/null +++ b/vdn/config.rc @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +# Ce fichier contient les préférences par défaut de l'application VDN +# L'utilisateur peut redéfinir la valeur des variables dans son fichier +# ~/.vdnrc + +# URL par défault des fichiers à télécharger (disque, réseaux, ...) + +DEFAULT_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Taille du disque + +REMOTE_DISK_SIZE=6291456000 + +# Emulateur utilisé. Si vide, autodétection entre KVM et QEMU. + +EMULATOR="" + +# Répertoire du dernier réseau ouvert (par la GUI). +# Ici il joue le rôle de réseau ouvert par défaut. + +NETWORK_DIR="$VDN_PATH/networks/demo" + +# Répertoire des sauvegardes. + +SAVE_PATH="/home/scratch/$USER/vdn-save" + +# Répertoire pour les fichiers temporaires. + +TMPDIR="/tmp/vdn-$USER" + +# Chemin SSH du répertoire distant des disques (devel). + +SSH_REPOSITORY="" + +## Les options ci-dessous sont relatives à l'interface graphique (GUI). + +# Taille de la police pour les terminaux intégrés à VDN + +GRID_FONT="Monospace 11" + +# A fixer à 1 pour que les scripts (prévus pour) soient exécutés en parallèle. + +RUN_PARALLEL=1 + +# Montrer le graphe généré par graphviz plutôt que le graphe édité par Inkscape. + +RAW_GRAPH=0 + +# Autorise l'utilisateur à surcharger ces variables. + +[ -r $HOME/.vdnrc ] && . $HOME/.vdnrc || : + diff --git a/vdn/config.rc.local b/vdn/config.rc.local new file mode 100644 index 0000000..63d7708 --- /dev/null +++ b/vdn/config.rc.local @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +# Ce fichier contient les préférences par défaut de l'application VDN +# L'utilisateur peut redéfinir la valeur des variables dans son fichier +# ~/.vdnrc + +# URL par défault des fichiers à télécharger (disque, réseaux, ...) + +DEFAULT_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Taille du disque + +REMOTE_DISK_SIZE=6291456000 + +# Emulateur utilisé. Si vide, autodétection entre KVM et QEMU. + +EMULATOR="" + +# Répertoire du dernier réseau ouvert (par la GUI). +# Ici il joue le rôle de réseau ouvert par défaut. + +NETWORK_DIR="$VDN_PATH/networks/demo" + +# Répertoire des sauvegardes. + +SAVE_PATH="/home/scratch/$USER/vdn-save" + +# Répertoire pour les fichiers temporaires. + +TMPDIR="/tmp/vdn-$USER" + +# Chemin SSH du répertoire distant des disques (devel). + +SSH_REPOSITORY="" + +## Les options ci-dessous sont relatives à l'interface graphique (GUI). + +# Taille de la police pour les terminaux intégrés à VDN + +GRID_FONT="Monospace 11" + +# A fixer à 1 pour que les scripts (prévus pour) soient exécutés en parallèle. + +RUN_PARALLEL=1 + +# Montrer le graphe généré par graphviz plutôt que le graphe édité par Inkscape. + +RAW_GRAPH=0 + +# Autorise l'utilisateur à surcharger ces variables. + +[ -r $HOME/.vdnrc ] && . $HOME/.vdnrc || : + diff --git a/vdn/config.template b/vdn/config.template new file mode 100644 index 0000000..0a5fbbe --- /dev/null +++ b/vdn/config.template @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="128" + +# Chemin du premier disque du système. + +HDA="DebianBuster-amd64.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/config.template.local b/vdn/config.template.local new file mode 100644 index 0000000..9face95 --- /dev/null +++ b/vdn/config.template.local @@ -0,0 +1,231 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="128" + +# Chemin du premier disque du système. + +#HDA="debian.disk" +HDA="DebianBuster-amd64.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/distribs/guests/direct/debian/bullseye/prepare-sae.sh b/vdn/distribs/guests/direct/debian/bullseye/prepare-sae.sh new file mode 100755 index 0000000..7f38c77 --- /dev/null +++ b/vdn/distribs/guests/direct/debian/bullseye/prepare-sae.sh @@ -0,0 +1,571 @@ +#!/usr/bin/env bash + +dir=$(readlink -f $(dirname $0)); +dist=$(echo $dir | sed -re 's,/.*/([^/]+/[^/]+)$,\1,') + +GUEST_RELEASE=$dist + + +[ -z "$http_proxy" ] && http_proxy="" +[ -z "$https_proxy" ] && https_proxy="" + +set -eu + +#http_proxy=http://193.49.118.36:8080 +#https_proxy=http://193.49.118.36:8080 + + +installAll() { + vdn-ssh -t root@$GUEST_NAME " + export http_proxy=$http_proxy + apt-get update -y; apt-get dist-upgrade -y; apt-get install rsync git mingetty + " + #preInstallForTgz + #installModulesReseaux + #installDocker + #installLamp + #installNagios3 + #installBackportKernel # NE FONCTIONNE PAS, pas utile. + #installVdn + #installPodman + #installForTgz +} + +installPodman() { + # Already installed. + + # WARNING : set kernel.unprivileged_userns_clone + + vdn-ssh -t root@$GUEST_NAME " + cat /etc/sysctl.conf | \ + grep kernel.unprivileged_userns_clone || \ + { echo -e '\\nkernel.unprivileged_userns_clone=1' >> /etc/sysctl.conf; sysctl --system; } + " +} + +## +### Modules réseaux-1 et réseaux-2 ### +### + +installModulesReseaux() { + + # Bad to stretch from squeeze + # php5 php5-mysql smbfs cifs-utils console-tools dhcp3-client samba-doc dhcp3-server sux fuse-utils gproftpd xsmbrowser netkit-ping heartbeat-gui hapm + + # Aucune version du paquet smbfs n'est disponible, mais il existe dans la base + #de données. Cela signifie en général que le paquet est manquant, qu'il est devenu obsolète + #ou qu'il n'est disponible que sur une autre source + #Cependant les paquets suivants le remplacent : + # cifs-utils + + #Aucune version du paquet samba-doc n'est disponible, mais il existe dans la base + #de données. Cela signifie en général que le paquet est manquant, qu'il est devenu obsolète + #ou qu'il n'est disponible que sur une autre source + #Cependant les paquets suivants le remplacent : + # winbind smbclient samba-testsuite samba-common-bin samba-common samba + # registry-tools libsmbclient libpam-winbind + + DEBS="less ssh mingetty rsync net-tools haveged rng-tools dnsutils zerofree" + #DEBS="$DEBS dhcp3-client dhcp3-server sux fuse-utils gproftpd xsmbrowser netkit-ping heartbeat-gui hapm" + #DEBS="$DEBS python-gtk-vnc" + #console-tools console-data console-common + DEBS="$DEBS vim slirp nfs-common nfs-kernel-server" + DEBS="$DEBS sshfs psmisc bsdutils strace busybox-static" + DEBS="$DEBS tcpdump wireshark-gtk nmap" + DEBS="$DEBS manpages" + DEBS="$DEBS curlftpfs ftp curl dillo" + DEBS="$DEBS libapache2-mod-php apache2-doc" + DEBS="$DEBS xbase-clients" + DEBS="$DEBS lynx psmisc file strace lsof telnet links links2" + DEBS="$DEBS iputils-ping" + DEBS="$DEBS rsync dialog" + DEBS="$DEBS firefox-esr" + DEBS="$DEBS nautilus" + DEBS="$DEBS user-mode-linux" + DEBS="$DEBS openvpn" + DEBS="$DEBS quagga proftpd isc-dhcp-server" + + DEBS="$DEBS busybox-static rpcbind debootstrap" + DEBS="$DEBS user-mode-linux" + + DEBS="$DEBS vim-gtk gedit" + + DEBS="$DEBS gpm vde2" + DEBS="$DEBS spice-vdagent" + DEBS="$DEBS gpm vde2" + DEBS="$DEBS gcc make autoconf uidmap pkg-config glib-2.0-dev \ + glib-2.0 libglib2.0-dev dpkg-dev \ + libcap-dev libcap2 libseccomp2 libseccomp-dev" + + # TP Pascal : + DEBS="$DEBS john hashcat sqlmap php default-mysql-server" + + echo "apt-get..." + vdn-ssh -t root@$GUEST_NAME " + export http_proxy=$http_proxy + apt-get install -y $DEBS + " + # cas de lighttpd + vdn-ssh -t root@$GUEST_NAME " + export http_proxy=$http_proxy + apt-get install -y lighttpd + systemctl disable lighttpd + " + + + # disable services + + local l="ModemManager NetworkManager NetworkManager-dispatcher NetworkManager-wait-online anacron apparmor autovt@ bgpd dbus-fi.w1.wpa_supplicant1 dbus-org.freedesktop.Avahi dbus-org.freedesktop.ModemManager1 dbus-org.freedesktop.nm-dispatcher dbus-org.freedesktop.timesync1 getty@ hddtemp isisd lighttpd lm-sensors network-manager nfs-kernel-server nmbd openbsd-inetd openvpn ospf6d ospfd pimd portmap pppd-dns ripd ripngd rpcbind rsync smbd speech-dispatcher syslog systemd-timesyncd udisks2 wpa_supplicant zebra nfs-blkmap uml-utilities apache2 proftpd isc-dhcp-server nfs-server" + + vdn-ssh -t root@$GUEST_NAME "for i in $l; do echo \"Disable \$i\"; systemctl disable \$i; done" + + # services (enable) : + #l="avahi-daemon console-setup cron inetd keyboard-setup networking rsyslog ssh sshd uml-utilities" + #l="$l apache2 haveged isc-dhcp-server nfs-server proftpd" + + + +} + +installBackportKernel() { + + local kvers=$(vdn-ssh root@$GUEST_NAME uname -r) + + if ! vdn-ssh root@$GUEST_NAME "grep -q backport /etc/apt/sources.list"; then + vdn-ssh root@$GUEST_NAME 'echo "deb http://ftp.debian.org/debian buster-backports main" >> /etc/apt/sources.list' + fi + + vdn-ssh -t root@$GUEST_NAME "apt-get update; apt-get -y install linux-image-5.3.0-0.bpo.2-amd64" + + vdn-ssh -t root@$GUEST_NAME 'grep -v buster-backports /etc/apt/sources.list > /tmp/o; mv /tmp/o /etc/apt/sources.list' + + vdn-ssh -t root@$GUEST_NAME "apt-get update; apt-get -y install --reinstall linux-image-amd64; update-initramfs -u -k $kvers" +} + +installDocker() { + + set +u + [ -z "$http_proxy" ] && http_proxy="" || : + [ -z "$https_proxy" ] && https_proxy="" || : + set -u + + # désactive le service docker, Voir les scripts de post-configuration + # n'ajoute aucun utilisateur au groupe docker par défaut. Voir les scripts de post-configuration + + vdn-ssh -t root@$GUEST_NAME " + export http_proxy=$http_proxy + export https_proxy=$https_proxy + apt-get update + apt-get -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common + curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - + apt-key fingerprint 0EBFCD88 + add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/debian \$(lsb_release -cs) stable\" + apt-get update + apt-get -y install docker-ce docker-ce-cli containerd.io docker-compose + curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose + + systemctl mask containerd docker +" +} + +installLamp() { + vdn-ssh root@$GUEST_NAME " + export http_proxy=$http_proxy + apt-get -y install apache2 php mariadb-server libapache2-mod-php php-gd php-mysql + systemctl disable mariadb mysql + " +} + +preInstallForTgz() { + + echo "Set /etc/modprobe.d/blacklist-floppy.conf..." + vdn-ssh root@$GUEST_NAME "f=/etc/modprobe.d/blacklist-floppy.conf; ! grep -q floppy \$f && echo \"blacklist floppy\" >> \$f || :" + + echo "Set /etc/initramfs-tools/modules..." + vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q ne2k_pci \$f && echo ne2k_pci >> \$f || :" + vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q 8390 \$f && echo 8390 >> \$f || :" + vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q virtio_net \$f && echo virtio_net >> \$f || :" + + vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q overlay \$f && echo overlay >> \$f || :" + vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q aufs \$f && echo aufs >> \$f || :" + + echo "Create /etc/initramfs-tools/scripts/local-bottom/overlay.sh ..." + + + cat << EOF | vdn-ssh root@$GUEST_NAME "cat > /etc/initramfs-tools/scripts/local-bottom/overlay.sh" +#!/bin/sh + + listDisks() { + if [ "\$EMULATOR" = linux ]; then + ls /dev/ubd[[:lower:]] # | grep -E 'udb[[:lower:]]r?' + else + ls /dev/?d[[:lower:]] + fi + } + + +PREREQ="" + + prereqs() + { + echo "\$PREREQ" + } + +case \$1 in + prereqs) + prereqs + exit 0 + ;; + esac + + +! grep -E -q 'vdn-mode=(tgz|overlay)' /proc/cmdline && { + echo "*** local-bottom/overlay.sh : exit (no mode tgz or overlay)" >&2 + exit 0 +} + + + +echo +echo "*** local-bottom/overlay.sh ***" + +echo "Extract configuration..." + +listDisks + +confDisk=\$(listDisks | tail -n 1) + +echo confDisk=\$confDisk + +mkdir /vdn +tar -C / -xvzf \$confDisk + +if [ \$? -ne 0 ]; then + echo "Erreur lors de l'extraction de la configuration" >&2 + echo "Lancement d'un shell pour inspection..." >&2 + export PS1="initramfs:\w# " + /bin/sh -i +fi + +if [ -e /etc/vdn/mount-root ]; then + sh /etc/vdn/mount-root +else + echo "/etc/vdn/mount-root introuvable !" >&2 + echo "ARRÊT du système !">&2 + while :; do sleep 1000; done +fi + +EOF + + vdn-ssh root@$GUEST_NAME chmod 755 /etc/initramfs-tools/scripts/local-bottom/overlay.sh +} + + +installForTgz() { + + echo "Install for tgz..." + + + local kvers + + kvers=$(vdn-ssh root@$GUEST_NAME ls /lib/modules | sort -Vr | head -n1) + [ -z "$kvers" ] && { + echo "Warning : /lib/modules is empty !" >&2 + kvers=$(vdn-ssh root@$GUEST_NAME uname -r) + echo "Use current kernel : $kvers" + } + + rsync -e vdn-ssh root@$GUEST_NAME:/boot/vmlinuz-$kvers $VDN_PATH/files + + # initramfs (created it if necessary) + + + vdn-ssh root@$GUEST_NAME " + rm -f /boot/initrd.img-$kvers.keep + if [ -e /boot/initrd.img-$kvers ]; then + cp /boot/initrd.img-$kvers /boot/initrd.img-$kvers.keep + fi + + echo \"update-initramfs ...\" >&2 + update-initramfs -u -k $kvers + + #cat /etc/initramfs-tools/scripts/local-bottom/overlay.sh + rm /etc/initramfs-tools/scripts/local-bottom/overlay.sh + + cp /boot/initrd.img-$kvers /boot/initrd-tgz.img-$kvers + + if [ -e /boot/initrd.img-$kvers.keep ]; then + mv /boot/initrd.img-$kvers.keep /boot/initrd.img-$kvers + fi +" + + rsync -e vdn-ssh root@$GUEST_NAME:/boot/initrd-tgz.img-$kvers $VDN_PATH/files + +} + +installNagios1() { + # from https://www.itzgeek.com/how-tos/linux/debian/how-to-install-nagios-on-debian-9-stretch.html + + vdn-ssh root@$GUEST_NAME " + export http_proxy=$http_proxy + apt update + apt install -y build-essential apache2 php openssl perl make php-gd libgd2-xpm-dev libapache2-mod-php libperl-dev libssl-dev daemon wget apache2-utils unzip + useradd nagios + groupadd nagcmd + usermod -a -G nagcmd nagios + usermod -a -G nagcmd www-data + cd /tmp/ + wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.5.tar.gz + tar -zxvf nagios-4.4.5.tar.gz + cd /tmp/nagios-4.4.5/ + ./configure --with-nagios-group=nagios --with-command-group=nagcmd --with-httpd_conf=/etc/apache2/sites-enabled/ + make all + make install + make install-init + make install-config + make install-commandmode + make install-webconf +" +} + +installNagios2() { + + ### sudo nano /usr/local/nagios/etc/objects/contacts.cfg + vdn-ssh root@$GUEST_NAME " + export http_proxy=$http_proxy + #sed -i -re 's/^.*email.*$/email root@localhost ;/' /usr/local/nagios/etc/objects/contacts.cfg + htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin + a2enmod cgi + systemctl restart apache2 + cd /tmp + wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz + tar -zxvf /tmp/nagios-plugins-2.2.1.tar.gz + cd /tmp/nagios-plugins-2.2.1/ + ./configure --with-nagios-user=nagios --with-nagios-group=nagios + make + make install + /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg +" + +} + +installNagios3() { + vdn-ssh root@$GUEST_NAME " + export http_proxy=$http_proxy + apt install -y nagios-nrpe-server nagios-plugins + apt -y install nagios-nrpe-plugin +" +} + +installVdn() { + vdn-ssh root@$GUEST_NAME " + export http_proxy=$http_proxy + cd /tmp + rm -Rf vdn + git clone http://opale.u-clermont1.fr/vdn/git/vdn.git + echo "vdn/bin/vdn-prepare $GUEST_RELEASE" + vdn/bin/vdn-prepare $GUEST_RELEASE +" +} + + + + +# début des fonctions + +synopsis() { + cat << EOF +Usage : `basename $0` [-i identity] system +EOF +} + +help() { + cat << EOF + +`basename $0` prepare un système virtuel pour fonctionner en mode DIRECT. + +`synopsis` + +Une identification par clé pour ssh est mise en place (cf. -i identity) +pour éviter les identification par mot de passe lors des connexions ssh +de l'hôte vers l'invité nécessaires à l'opération. + +Les mots de passes sont fixés de façon aléatoire + +-h : affiche cette aide +-i identity : chemin de la clé publique à utiliser. + +EOF +} + +usage() { + synopsis + exit 2 +} + +args() { + local opt + while getopts "hi:" opt; do + case $opt in + h) help; exit 0;; + i) IDENTITY="$OPTARG";; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 1 ] && usage + + GUEST_NAME="$1" + if echo $GUEST_NAME | grep -q '/'; then + error "$GUEST_NAME est un nom de système invalide" + fi +} + + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/../../../../..); . $VDN_PATH/bin/functions.sh + +args "$@" + +PROG_DIR=$(readlink -f $(dirname $0)) + +if ! $VDN_PATH/bin/vdn-alive $GUEST_NAME; then + error "Le système $GUEST_NAME n'est pas démarré" +fi + +loadGuestVars $GUEST_NAME + +foundIdentity=0 +for i in $SSH_IDENTITY; do + if [ -e $i ]; then + IDENTITY=$i + foundIdentity=1 + fi +done + +[ $foundIdentity = 0 ] && error "Aucune clé SSH !" + +if vdn-ssh -n -o PasswordAuthentication=no root@$GUEST_NAME exit 0 ; then + vdn-ssh-copy-id -i $IDENTITY root@$GUEST_NAME +fi + +#echo "apt-get..." +#vdn-ssh root@$GUEST_NAME apt-get install rsync net-tools + +#echo "Set /etc/initramfs-tools/modules..." +#vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q ne2k_pci \$f && echo ne2k_pci >> \$f || :" +#vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q 8390 \$f && echo 8390 >> \$f || :" +#vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q virtio_net \$f && echo virtio_net >> \$f || :" + +#echo "Set /etc/modprobe.d/blacklist-floppy.conf..." +#vdn-ssh root@$GUEST_NAME "f=/etc/modprobe.d/blacklist-floppy.conf; ! grep -q floppy \$f && echo \"blacklist floppy\" >> \$f || :" + + +vdn-ssh -t root@$GUEST_NAME chmod 755 / + +echo "Add test user to kvm group (for nested)" +vdn-ssh root@$GUEST_NAME "addgroup test kvm" + +echo "Add test user to kvm group (for nested)" +vdn-ssh root@$GUEST_NAME "addgroup test docker || :" + + +#echo "Add test user to sudo group" +#vdn-ssh root@$GUEST_NAME "addgroup test sudo" + +echo "Set vim syntax=on" +vdn-ssh root@$GUEST_NAME "cat /etc/vim/vimrc | sed -re 's/^.*syntax on.*$/syntax on/' > /etc/vim/vimrc.new" +vdn-ssh root@$GUEST_NAME "mv /etc/vim/vimrc.new /etc/vim/vimrc" +vdn-ssh root@$GUEST_NAME "cp /etc/vim/vimrc ~/.vimrc" +vdn-ssh root@$GUEST_NAME "cp /etc/vim/vimrc /home/test/.vimrc; chown test: /home/test/.vimrc" + +echo "Allow root autologin on ttyS0" +vdn-ssh root@$GUEST_NAME "sed -i -re 's,^ExecStart=.*$,ExecStart=-/sbin/mingetty --noclear --autologin root %I,' /lib/systemd/system/serial-getty@.service" + +# kernel params (in grub ) + +echo "Allow net.ifnames=0 in GRUB " +vdn-ssh root@$GUEST_NAME "sed -i -re 's,^GRUB_CMDLINE_LINUX_DEFAULT=.*$,GRUB_CMDLINE_LINUX_DEFAULT=\"net.ifnames=0 console=ttyS0\,115200n8\",' /etc/default/grub" +echo " 1s timout for menu" +vdn-ssh root@$GUEST_NAME "sed -i -re 's,^GRUB_TIMEOUT=.*$,GRUB_TIMEOUT=1,' /etc/default/grub" +vdn-ssh root@$GUEST_NAME "update-grub" + +########################## + +export http_proxy=\"$http_proxy\" +export https_proxy=\"$https_proxy\" + +echo "http_proxy:$http_proxy" +echo "https_proxy:$https_proxy" + +#echo "For debug : exit to guit" +#vdn-ssh root@$GUEST_NAME + +installAll + +vdn-ssh root@$GUEST_NAME "systemctl mask nagios" + +########################## + +echo "Set rc.local..." +if [ -e $PROG_DIR/rc.local ]; then + vdn-scp -p $PROG_DIR/rc.local root@$GUEST_NAME:/etc + vdn-ssh root@$GUEST_NAME chmod 755 /etc/rc.local +fi + +## Install lxdm +#echo "Install lxdm..." +# +#vdn-ssh -t root@$GUEST_NAME " +#apt-get -y install lxdm +#apt-get -y remove openbox +#" + +#echo "Default xsession : xfce4 " +#vdn-ssh root@$GUEST_NAME "sed -i -re 's,^# session=.*$,session=/usr/bin/startxfce4,' /etc/lxdm/lxdm.conf" + +#echo "For debug : exit to guit" +#vdn-ssh root@$GUEST_NAME + +# Clear + +echo "Clear /var/log, history, ..." +vdn-ssh -t root@$GUEST_NAME ' +export http_proxy=$http_proxy + +rm -Rf /etc/vdn + +#for i in $(find /var/log -type f); do cat /dev/null > $i; done +find /var/log -name "*.gz" -delete + +echo "Clear .bash_history" + +rm -f /root/.bash_history +touch /root/.bash_history +chmod 600 /root/.bash_history +rm -f /home/test/.bash_history +touch /home/test/.bash_history +chmod 600 /home/test/.bash_history + +echo "Clear .cache .mozilla" +for d in /root /home/test; do + rm -Rf $d/.cache + rm -Rf $d/.mozilla +done + +echo "Clear authorized_keys" + +for d in /root /home/test; do + rm -f $d/.ssh/authorized_keys + rm -f $d/.ssh/authorized_keys +done + +echo "Clear apt-cache..." +apt autoremove -y +sleep 1 +apt-get clean + +echo end of cleaning ! +' + diff --git a/vdn/distribs/guests/direct/debian/bullseye/prepare.sh b/vdn/distribs/guests/direct/debian/bullseye/prepare.sh new file mode 100755 index 0000000..8ffe0ba --- /dev/null +++ b/vdn/distribs/guests/direct/debian/bullseye/prepare.sh @@ -0,0 +1,568 @@ +#!/usr/bin/env bash + +dir=$(readlink -f $(dirname $0)); +dist=$(echo $dir | sed -re 's,/.*/([^/]+/[^/]+)$,\1,') + +GUEST_RELEASE=$dist + + +[ -z "$http_proxy" ] && http_proxy="" +[ -z "$https_proxy" ] && https_proxy="" + +set -eu + +#http_proxy=http://193.49.118.36:8080 +#https_proxy=http://193.49.118.36:8080 + + +installAll() { + vdn-ssh -t root@$GUEST_NAME " + export http_proxy=$http_proxy + apt-get update -y; apt-get dist-upgrade -y; apt-get install rsync git mingetty + " + preInstallForTgz + installModulesReseaux + installDocker + installLamp + #installNagios3 + #installBackportKernel # NE FONCTIONNE PAS, pas utile. + #installVdn + #installPodman + installForTgz +} + +installPodman() { + # Already installed. + + # WARNING : set kernel.unprivileged_userns_clone + + vdn-ssh -t root@$GUEST_NAME " + cat /etc/sysctl.conf | \ + grep kernel.unprivileged_userns_clone || \ + { echo -e '\\nkernel.unprivileged_userns_clone=1' >> /etc/sysctl.conf; sysctl --system; } + " +} + +## +### Modules réseaux-1 et réseaux-2 ### +### + +installModulesReseaux() { + + # Bad to stretch from squeeze + # php5 php5-mysql smbfs cifs-utils console-tools dhcp3-client samba-doc dhcp3-server sux fuse-utils gproftpd xsmbrowser netkit-ping heartbeat-gui hapm + + # Aucune version du paquet smbfs n'est disponible, mais il existe dans la base + #de données. Cela signifie en général que le paquet est manquant, qu'il est devenu obsolète + #ou qu'il n'est disponible que sur une autre source + #Cependant les paquets suivants le remplacent : + # cifs-utils + + #Aucune version du paquet samba-doc n'est disponible, mais il existe dans la base + #de données. Cela signifie en général que le paquet est manquant, qu'il est devenu obsolète + #ou qu'il n'est disponible que sur une autre source + #Cependant les paquets suivants le remplacent : + # winbind smbclient samba-testsuite samba-common-bin samba-common samba + # registry-tools libsmbclient libpam-winbind + + DEBS="less ssh mingetty rsync net-tools haveged rng-tools dnsutils zerofree" + #DEBS="$DEBS dhcp3-client dhcp3-server sux fuse-utils gproftpd xsmbrowser netkit-ping heartbeat-gui hapm" + #DEBS="$DEBS python-gtk-vnc" + #console-tools console-data console-common + DEBS="$DEBS vim slirp nfs-common nfs-kernel-server" + DEBS="$DEBS sshfs psmisc bsdutils strace busybox-static" + DEBS="$DEBS tcpdump wireshark-gtk nmap" + DEBS="$DEBS manpages" + DEBS="$DEBS curlftpfs ftp curl dillo" + DEBS="$DEBS libapache2-mod-php apache2-doc" + DEBS="$DEBS xbase-clients" + DEBS="$DEBS lynx psmisc file strace lsof telnet links links2" + DEBS="$DEBS iputils-ping" + DEBS="$DEBS rsync dialog" + DEBS="$DEBS firefox-esr" + DEBS="$DEBS nautilus" + DEBS="$DEBS user-mode-linux" + DEBS="$DEBS openvpn" + DEBS="$DEBS quagga proftpd isc-dhcp-server" + + DEBS="$DEBS busybox-static rpcbind debootstrap" + DEBS="$DEBS user-mode-linux" + + DEBS="$DEBS vim-gtk gedit" + + DEBS="$DEBS gpm vde2" + DEBS="$DEBS spice-vdagent" + DEBS="$DEBS gpm vde2" + DEBS="$DEBS gcc make autoconf uidmap pkg-config glib-2.0-dev \ + glib-2.0 libglib2.0-dev dpkg-dev \ + libcap-dev libcap2 libseccomp2 libseccomp-dev" + + # TP Pascal : + DEBS="$DEBS john hashcat sqlmap php default-mysql-server" + + echo "apt-get..." + vdn-ssh -t root@$GUEST_NAME " + export http_proxy=$http_proxy + apt-get install -y $DEBS + " + # cas de lighttpd + vdn-ssh -t root@$GUEST_NAME " + export http_proxy=$http_proxy + apt-get install -y lighttpd + systemctl disable lighttpd + " + + + # disable services + + local l="ModemManager NetworkManager NetworkManager-dispatcher NetworkManager-wait-online anacron apparmor autovt@ bgpd dbus-fi.w1.wpa_supplicant1 dbus-org.freedesktop.Avahi dbus-org.freedesktop.ModemManager1 dbus-org.freedesktop.nm-dispatcher dbus-org.freedesktop.timesync1 getty@ hddtemp isisd lighttpd lm-sensors network-manager nfs-kernel-server nmbd openbsd-inetd openvpn ospf6d ospfd pimd portmap pppd-dns ripd ripngd rpcbind rsync smbd speech-dispatcher syslog systemd-timesyncd udisks2 wpa_supplicant zebra nfs-blkmap uml-utilities apache2 proftpd isc-dhcp-server nfs-server" + + vdn-ssh -t root@$GUEST_NAME "for i in $l; do echo \"Disable \$i\"; systemctl disable \$i; done" + + # services (enable) : + #l="avahi-daemon console-setup cron inetd keyboard-setup networking rsyslog ssh sshd uml-utilities" + #l="$l apache2 haveged isc-dhcp-server nfs-server proftpd" +} + +installBackportKernel() { + + local kvers=$(vdn-ssh root@$GUEST_NAME uname -r) + + if ! vdn-ssh root@$GUEST_NAME "grep -q backport /etc/apt/sources.list"; then + vdn-ssh root@$GUEST_NAME 'echo "deb http://ftp.debian.org/debian buster-backports main" >> /etc/apt/sources.list' + fi + + vdn-ssh -t root@$GUEST_NAME "apt-get update; apt-get -y install linux-image-5.3.0-0.bpo.2-amd64" + + vdn-ssh -t root@$GUEST_NAME 'grep -v buster-backports /etc/apt/sources.list > /tmp/o; mv /tmp/o /etc/apt/sources.list' + + vdn-ssh -t root@$GUEST_NAME "apt-get update; apt-get -y install --reinstall linux-image-amd64; update-initramfs -u -k $kvers" +} + +installDocker() { + + set +u + [ -z "$http_proxy" ] && http_proxy="" || : + [ -z "$https_proxy" ] && https_proxy="" || : + set -u + + # désactive le service docker, Voir les scripts de post-configuration + # n'ajoute aucun utilisateur au groupe docker par défaut. Voir les scripts de post-configuration + + vdn-ssh -t root@$GUEST_NAME " + export http_proxy=$http_proxy + export https_proxy=$https_proxy + apt-get update + apt-get -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common + curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - + apt-key fingerprint 0EBFCD88 + add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/debian \$(lsb_release -cs) stable\" + apt-get update + apt-get -y install docker-ce docker-ce-cli containerd.io docker-compose + curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose + + systemctl mask containerd docker +" +} + +installLamp() { + vdn-ssh root@$GUEST_NAME " + export http_proxy=$http_proxy + apt-get -y install apache2 php mariadb-server libapache2-mod-php php-gd php-mysql + systemctl disable mariadb mysql + " +} + +preInstallForTgz() { + + echo "Set /etc/modprobe.d/blacklist-floppy.conf..." + vdn-ssh root@$GUEST_NAME "f=/etc/modprobe.d/blacklist-floppy.conf; ! grep -q floppy \$f && echo \"blacklist floppy\" >> \$f || :" + + echo "Set /etc/initramfs-tools/modules..." + vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q ne2k_pci \$f && echo ne2k_pci >> \$f || :" + vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q 8390 \$f && echo 8390 >> \$f || :" + vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q virtio_net \$f && echo virtio_net >> \$f || :" + + vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q overlay \$f && echo overlay >> \$f || :" + vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q aufs \$f && echo aufs >> \$f || :" + + echo "Create /etc/initramfs-tools/scripts/local-bottom/overlay.sh ..." + + + cat << EOF | vdn-ssh root@$GUEST_NAME "cat > /etc/initramfs-tools/scripts/local-bottom/overlay.sh" +#!/bin/sh + + listDisks() { + if [ "\$EMULATOR" = linux ]; then + ls /dev/ubd[[:lower:]] # | grep -E 'udb[[:lower:]]r?' + else + ls /dev/?d[[:lower:]] + fi + } + + +PREREQ="" + + prereqs() + { + echo "\$PREREQ" + } + +case \$1 in + prereqs) + prereqs + exit 0 + ;; + esac + + +! grep -E -q 'vdn-mode=(tgz|overlay)' /proc/cmdline && { + echo "*** local-bottom/overlay.sh : exit (no mode tgz or overlay)" >&2 + exit 0 +} + + + +echo +echo "*** local-bottom/overlay.sh ***" + +echo "Extract configuration..." + +listDisks + +confDisk=\$(listDisks | tail -n 1) + +echo confDisk=\$confDisk + +mkdir /vdn +tar -C / -xvzf \$confDisk + +if [ \$? -ne 0 ]; then + echo "Erreur lors de l'extraction de la configuration" >&2 + echo "Lancement d'un shell pour inspection..." >&2 + export PS1="initramfs:\w# " + /bin/sh -i +fi + +if [ -e /etc/vdn/mount-root ]; then + sh /etc/vdn/mount-root +else + echo "/etc/vdn/mount-root introuvable !" >&2 + echo "ARRÊT du système !">&2 + while :; do sleep 1000; done +fi + +EOF + + vdn-ssh root@$GUEST_NAME chmod 755 /etc/initramfs-tools/scripts/local-bottom/overlay.sh +} + + +installForTgz() { + + echo "Install for tgz..." + + + local kvers + + kvers=$(vdn-ssh root@$GUEST_NAME ls /lib/modules | sort -Vr | head -n1) + [ -z "$kvers" ] && { + echo "Warning : /lib/modules is empty !" >&2 + kvers=$(vdn-ssh root@$GUEST_NAME uname -r) + echo "Use current kernel : $kvers" + } + + rsync -e vdn-ssh root@$GUEST_NAME:/boot/vmlinuz-$kvers $VDN_PATH/files + + # initramfs (created it if necessary) + + + vdn-ssh root@$GUEST_NAME " + rm -f /boot/initrd.img-$kvers.keep + if [ -e /boot/initrd.img-$kvers ]; then + cp /boot/initrd.img-$kvers /boot/initrd.img-$kvers.keep + fi + + echo \"update-initramfs ...\" >&2 + update-initramfs -u -k $kvers + + #cat /etc/initramfs-tools/scripts/local-bottom/overlay.sh + rm /etc/initramfs-tools/scripts/local-bottom/overlay.sh + + cp /boot/initrd.img-$kvers /boot/initrd-tgz.img-$kvers + + if [ -e /boot/initrd.img-$kvers.keep ]; then + mv /boot/initrd.img-$kvers.keep /boot/initrd.img-$kvers + fi +" + + rsync -e vdn-ssh root@$GUEST_NAME:/boot/initrd-tgz.img-$kvers $VDN_PATH/files + +} + +installNagios1() { + # from https://www.itzgeek.com/how-tos/linux/debian/how-to-install-nagios-on-debian-9-stretch.html + + vdn-ssh root@$GUEST_NAME " + export http_proxy=$http_proxy + apt update + apt install -y build-essential apache2 php openssl perl make php-gd libgd2-xpm-dev libapache2-mod-php libperl-dev libssl-dev daemon wget apache2-utils unzip + useradd nagios + groupadd nagcmd + usermod -a -G nagcmd nagios + usermod -a -G nagcmd www-data + cd /tmp/ + wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.5.tar.gz + tar -zxvf nagios-4.4.5.tar.gz + cd /tmp/nagios-4.4.5/ + ./configure --with-nagios-group=nagios --with-command-group=nagcmd --with-httpd_conf=/etc/apache2/sites-enabled/ + make all + make install + make install-init + make install-config + make install-commandmode + make install-webconf +" +} + +installNagios2() { + + ### sudo nano /usr/local/nagios/etc/objects/contacts.cfg + vdn-ssh root@$GUEST_NAME " + export http_proxy=$http_proxy + #sed -i -re 's/^.*email.*$/email root@localhost ;/' /usr/local/nagios/etc/objects/contacts.cfg + htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin + a2enmod cgi + systemctl restart apache2 + cd /tmp + wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz + tar -zxvf /tmp/nagios-plugins-2.2.1.tar.gz + cd /tmp/nagios-plugins-2.2.1/ + ./configure --with-nagios-user=nagios --with-nagios-group=nagios + make + make install + /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg +" + +} + +installNagios3() { + vdn-ssh root@$GUEST_NAME " + export http_proxy=$http_proxy + apt install -y nagios-nrpe-server nagios-plugins + apt -y install nagios-nrpe-plugin +" +} + +installVdn() { + vdn-ssh root@$GUEST_NAME " + export http_proxy=$http_proxy + cd /tmp + rm -Rf vdn + git clone http://opale.u-clermont1.fr/vdn/git/vdn.git + echo "vdn/bin/vdn-prepare $GUEST_RELEASE" + vdn/bin/vdn-prepare $GUEST_RELEASE +" +} + + + + +# début des fonctions + +synopsis() { + cat << EOF +Usage : `basename $0` [-i identity] system +EOF +} + +help() { + cat << EOF + +`basename $0` prepare un système virtuel pour fonctionner en mode DIRECT. + +`synopsis` + +Une identification par clé pour ssh est mise en place (cf. -i identity) +pour éviter les identification par mot de passe lors des connexions ssh +de l'hôte vers l'invité nécessaires à l'opération. + +Les mots de passes sont fixés de façon aléatoire + +-h : affiche cette aide +-i identity : chemin de la clé publique à utiliser. + +EOF +} + +usage() { + synopsis + exit 2 +} + +args() { + local opt + while getopts "hi:" opt; do + case $opt in + h) help; exit 0;; + i) IDENTITY="$OPTARG";; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 1 ] && usage + + GUEST_NAME="$1" + if echo $GUEST_NAME | grep -q '/'; then + error "$GUEST_NAME est un nom de système invalide" + fi +} + + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/../../../../..); . $VDN_PATH/bin/functions.sh + +args "$@" + +PROG_DIR=$(readlink -f $(dirname $0)) + +if ! $VDN_PATH/bin/vdn-alive $GUEST_NAME; then + error "Le système $GUEST_NAME n'est pas démarré" +fi + +loadGuestVars $GUEST_NAME + +foundIdentity=0 +for i in $SSH_IDENTITY; do + if [ -e $i ]; then + IDENTITY=$i + foundIdentity=1 + fi +done + +[ $foundIdentity = 0 ] && error "Aucune clé SSH !" + +if vdn-ssh -n -o PasswordAuthentication=no root@$GUEST_NAME exit 0 ; then + vdn-ssh-copy-id -i $IDENTITY root@$GUEST_NAME +fi + +#echo "apt-get..." +#vdn-ssh root@$GUEST_NAME apt-get install rsync net-tools + +#echo "Set /etc/initramfs-tools/modules..." +#vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q ne2k_pci \$f && echo ne2k_pci >> \$f || :" +#vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q 8390 \$f && echo 8390 >> \$f || :" +#vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q virtio_net \$f && echo virtio_net >> \$f || :" + +#echo "Set /etc/modprobe.d/blacklist-floppy.conf..." +#vdn-ssh root@$GUEST_NAME "f=/etc/modprobe.d/blacklist-floppy.conf; ! grep -q floppy \$f && echo \"blacklist floppy\" >> \$f || :" + + +vdn-ssh -t root@$GUEST_NAME chmod 755 / + +echo "Add test user to kvm group (for nested)" +vdn-ssh root@$GUEST_NAME "addgroup test kvm" + +echo "Add test user to kvm group (for nested)" +vdn-ssh root@$GUEST_NAME "addgroup test docker || :" + + +#echo "Add test user to sudo group" +#vdn-ssh root@$GUEST_NAME "addgroup test sudo" + +echo "Set vim syntax=on" +vdn-ssh root@$GUEST_NAME "cat /etc/vim/vimrc | sed -re 's/^.*syntax on.*$/syntax on/' > /etc/vim/vimrc.new" +vdn-ssh root@$GUEST_NAME "mv /etc/vim/vimrc.new /etc/vim/vimrc" +vdn-ssh root@$GUEST_NAME "cp /etc/vim/vimrc ~/.vimrc" +vdn-ssh root@$GUEST_NAME "cp /etc/vim/vimrc /home/test/.vimrc; chown test: /home/test/.vimrc" + +echo "Allow root autologin on ttyS0" +vdn-ssh root@$GUEST_NAME "sed -i -re 's,^ExecStart=.*$,ExecStart=-/sbin/mingetty --noclear --autologin root %I,' /lib/systemd/system/serial-getty@.service" + +# kernel params (in grub ) + +echo "Allow net.ifnames=0 in GRUB " +vdn-ssh root@$GUEST_NAME "sed -i -re 's,^GRUB_CMDLINE_LINUX_DEFAULT=.*$,GRUB_CMDLINE_LINUX_DEFAULT=\"net.ifnames=0 console=ttyS0\,115200n8\",' /etc/default/grub" +echo " 1s timout for menu" +vdn-ssh root@$GUEST_NAME "sed -i -re 's,^GRUB_TIMEOUT=.*$,GRUB_TIMEOUT=1,' /etc/default/grub" +vdn-ssh root@$GUEST_NAME "update-grub" + +########################## + +export http_proxy=\"$http_proxy\" +export https_proxy=\"$https_proxy\" + +echo "http_proxy:$http_proxy" +echo "https_proxy:$https_proxy" + +#echo "For debug : exit to guit" +#vdn-ssh root@$GUEST_NAME + +installAll + +vdn-ssh root@$GUEST_NAME "systemctl mask nagios" + +########################## + +echo "Set rc.local..." +if [ -e $PROG_DIR/rc.local ]; then + vdn-scp -p $PROG_DIR/rc.local root@$GUEST_NAME:/etc + vdn-ssh root@$GUEST_NAME chmod 755 /etc/rc.local +fi + +## Install lxdm +#echo "Install lxdm..." +# +#vdn-ssh -t root@$GUEST_NAME " +#apt-get -y install lxdm +#apt-get -y remove openbox +#" + +#echo "Default xsession : xfce4 " +#vdn-ssh root@$GUEST_NAME "sed -i -re 's,^# session=.*$,session=/usr/bin/startxfce4,' /etc/lxdm/lxdm.conf" + +#echo "For debug : exit to guit" +#vdn-ssh root@$GUEST_NAME + +# Clear + +echo "Clear /var/log, history, ..." +vdn-ssh -t root@$GUEST_NAME ' +export http_proxy=$http_proxy + +rm -Rf /etc/vdn + +#for i in $(find /var/log -type f); do cat /dev/null > $i; done +find /var/log -name "*.gz" -delete + +echo "Clear .bash_history" + +rm -f /root/.bash_history +touch /root/.bash_history +chmod 600 /root/.bash_history +rm -f /home/test/.bash_history +touch /home/test/.bash_history +chmod 600 /home/test/.bash_history + +echo "Clear .cache .mozilla" +for d in /root /home/test; do + rm -Rf $d/.cache + rm -Rf $d/.mozilla +done + +echo "Clear authorized_keys" + +for d in /root /home/test; do + rm -f $d/.ssh/authorized_keys + rm -f $d/.ssh/authorized_keys +done + +echo "Clear apt-cache..." +apt autoremove -y +sleep 1 +apt-get clean + +echo end of cleaning ! +' + diff --git a/vdn/distribs/guests/direct/debian/bullseye/rc.local.disable b/vdn/distribs/guests/direct/debian/bullseye/rc.local.disable new file mode 100755 index 0000000..909a800 --- /dev/null +++ b/vdn/distribs/guests/direct/debian/bullseye/rc.local.disable @@ -0,0 +1,189 @@ +#!/bin/bash + +# Script de configuration utilisé par VDN. + +getRandomPasswd() { + local k + + while :; do + k=$(tr -dc _A-Z-a-z-0-9 < /dev/urandom 2> /dev/null | head -c${1:-32} ) + if [ $(echo -n $k | wc -c) = 32 ]; then + break + fi + echo "Wait for entropy avail : $(cat /proc/sys/kernel/random/entropy_avail)" >&2 + sleep 1 + done + echo -n $k +} + +echo "Start rc.local..." + +echo "cmdline:$(cat /proc/cmdline)" + +lastDisk=$(lsblk -i -n -o PATH | grep '/...$' | tail -n 1) +lastDiskSize=$(lsblk -n -b -o SIZE $lastDisk) + +# Disque supplémentaire (avec la clé publique, ...) ? + +#[ $lastDiskSize -gt 200000 ] && exit 0 + +# Si oui + +# Désarchive la configuration en provenance de VDN + +# le fichier /etc/vdn/rc.vdn n'est modifié que si absent +# Consultez les répertoires distribs/guest/... + +[ ! -d /etc/vdn ] && mkdir /etc/vdn + +tar -C / -xzf $lastDisk + +[ -e /etc/vdn/config ] && { + set -a + . /etc/vdn/config +} + +[ $VDN_DEBUG = 1 ] && set -x || : + +# set real / mode +chmod 755 / +chown root:root / /etc +chown -R root:root /etc/vdn + +systemctl restart haveged + +# extract files (host, all, guest) +if [ $MODE = "cow" ]; then + for d in /etc/vdn/host /etc/vdn/all /etc/vdn/guest; do + if [ -d $d ]; then + ( cd $d && tar czf - . ) | ( cd / && tar --no-same-owner --sparse -xpzf - ) + fi + done +fi + + +# swap +if [ $SWAP_SIZE != 0 ]; then + swapDev=$(lsblk -n -o PATH | grep '/...$' | tail -n 2 | head -n 1) + swapoff -a + swapon $swapDev +fi + + +if [ ! -e /etc/vdn-$MODE-initialized ]; then + + # regenerate ssh_host_keys + + rm -f /etc/ssh/ssh_host_* + + dpkg-reconfigure openssh-server + + #systemctl restart ssh + + # Random root and test password + + echo "Random passwords." + + k=$(getRandomPasswd) + #echo "root passwd : $k" + passwdRoot=$k #$(cat /dev/urandom | tr -dc _A-Z-a-z-0-9 | head -c${1:-32};) + k=$(getRandomPasswd) + #echo "test passwd : $k" + passwdTest=$k #$(cat /dev/urandom | tr -dc _A-Z-a-z-0-9 | head -c${1:-32};) + + cat <<- EOF | chpasswd +root:$passwdRoot +test:$passwdTest +EOF + + touch /etc/vdn-$MODE-initialized + +fi + +# Add user id_rsa.pub to /root/.ssh/authorized_keys + +[ ! -d /root/.ssh ] && { + mkdir /root/.ssh + chmod 700 /root/.ssh +} + +[ ! -e /root/.ssh/authorized_keys ] && + touch /root/.ssh/authorized_keys + +k=$(cat /etc/vdn/.ssh/id_rsa.pub) + +[ -n "$k" ] && { + ! fgrep -q "$k" /root/.ssh/authorized_keys && + echo "$k" >> /root/.ssh/authorized_keys +} + + +# Add user id_rsa.pub to /home/test/.ssh/authorized_keys + +if [ -d "/home/test" ]; then + if [ ! -d /home/test/.ssh ]; then + mkdir /home/test/.ssh + chown test: /home/test/.ssh + chmod 700 /home/test/.ssh + fi + + [ ! -e /home/test/.ssh/authorized_keys ] && + touch /home/test/.ssh/authorized_keys + + chown test: /home/test/.ssh + + if [ -n "$k" ]; then + ! fgrep -q "$k" /home/test/.ssh/authorized_keys && + echo "$k" >> /home/test/.ssh/authorized_keys + fi +fi + + +# init slirp connection + +lastEth=$(ifconfig -a | grep eth[0-9] | tail -n 1 | cut -d ':' -f 1) +echo "lastEth=$lastEth" + +[ -n "$lastEth" ] && { + ifconfig $lastEth down + sleep 1 + dhclient $lastEth + + if [ "$EXTRA_ETH_DEFAULT_ROUTE" = 0 ]; then + # Set default root to host (slirp) + #route add default gw 10.0.2.2 &> /dev/null + route del default gw 10.0.2.2 &> /dev/null + else + echo "Set default route to 10.0.2.2" + route add default gw 10.0.2.2 &> /dev/null + fi + ping -c 1 10.0.2.2 &> /dev/null & +} + +### ON_BOOT + +if [ ! -z "$ON_BOOT" ]; then + echo "ON_BOOT:$ON_BOOT" + eval $ON_BOOT +fi + +### run rc scripts + +rcScripts=$(ls /etc/vdn/[0-9]* 2> /dev/null) + +# Add vdn.rc + +[ -e /etc/vdn/vdn.rc ] && rcScripts="$rcScripts /etc/vdn/vdn.rc" + +# run rc scripts + +for i in $rcScripts; do + echo "Run script : $i" + . $i +done + +systemctl unmask ssh +sleep 1 +systemctl enable ssh +systemctl start ssh + diff --git a/vdn/distribs/guests/direct/debian/buster/prepare.sh b/vdn/distribs/guests/direct/debian/buster/prepare.sh new file mode 100755 index 0000000..aa2e3b1 --- /dev/null +++ b/vdn/distribs/guests/direct/debian/buster/prepare.sh @@ -0,0 +1,558 @@ +#!/usr/bin/env bash + +dir=$(readlink -f $(dirname $0)); +dist=$(echo $dir | sed -re 's,/.*/([^/]+/[^/]+)$,\1,') + +GUEST_RELEASE=$dist + +[ -z "$http_proxy" ] && http_proxy="" +[ -z "$https_proxy" ] && https_proxy="" + +set -eu + +#http_proxy=http://193.49.118.36:8080 +#https_proxy=http://193.49.118.36:8080 + + +installAll() { + vdn-ssh -t root@$GUEST_NAME " + export http_proxy=$http_proxy + apt-get update -y; apt-get dist-upgrade -y; apt-get install rsync git mingetty + " + preInstallForTgz + installModulesReseaux + installDocker + installLamp + #installNagios3 + #installBackportKernel # NE FONCTIONNE PAS, pas utile. + #installVdn + installForTgz +} + +## +### Modules réseaux-1 et réseaux-2 ### +### + +installModulesReseaux() { + + # Bad to stretch from squeeze + # php5 php5-mysql smbfs cifs-utils console-tools dhcp3-client samba-doc dhcp3-server sux fuse-utils gproftpd xsmbrowser netkit-ping heartbeat-gui hapm + + # Aucune version du paquet smbfs n'est disponible, mais il existe dans la base + #de données. Cela signifie en général que le paquet est manquant, qu'il est devenu obsolète + #ou qu'il n'est disponible que sur une autre source + #Cependant les paquets suivants le remplacent : + # cifs-utils + + #Aucune version du paquet samba-doc n'est disponible, mais il existe dans la base + #de données. Cela signifie en général que le paquet est manquant, qu'il est devenu obsolète + #ou qu'il n'est disponible que sur une autre source + #Cependant les paquets suivants le remplacent : + # winbind smbclient samba-testsuite samba-common-bin samba-common samba + # registry-tools libsmbclient libpam-winbind + + DEBS="less ssh mingetty rsync net-tools haveged rng-tools dnsutils zerofree" + #DEBS="$DEBS dhcp3-client dhcp3-server sux fuse-utils gproftpd xsmbrowser netkit-ping heartbeat-gui hapm" + #DEBS="$DEBS python-gtk-vnc" + #console-tools console-data console-common + DEBS="$DEBS vim slirp nfs-common nfs-kernel-server" + DEBS="$DEBS sshfs psmisc bsdutils strace busybox-static" + DEBS="$DEBS tcpdump wireshark-gtk nmap" + DEBS="$DEBS manpages" + DEBS="$DEBS curlftpfs ftp curl dillo" + DEBS="$DEBS libapache2-mod-php apache2-doc" + DEBS="$DEBS xbase-clients" + DEBS="$DEBS lynx psmisc file strace lsof telnet links links2" + DEBS="$DEBS iputils-ping" + DEBS="$DEBS rsync dialog" + DEBS="$DEBS firefox-esr" + DEBS="$DEBS nautilus" + DEBS="$DEBS user-mode-linux" + DEBS="$DEBS openvpn" + DEBS="$DEBS quagga proftpd isc-dhcp-server" + + DEBS="$DEBS busybox-static rpcbind debootstrap" + DEBS="$DEBS user-mode-linux" + + DEBS="$DEBS vim-gtk gedit" + + DEBS="$DEBS gpm vde2" + DEBS="$DEBS spice-vdagent" + + DEBS="$DEBS gcc make autoconf uidmap pkg-config glib-2.0-dev \ + glib-2.0 libglib2.0-dev dpkg-dev \ + libcap-dev libcap2 libseccomp2 libseccomp-dev" + + # TP Pascal : + DEBS="$DEBS john hashcat sqlmap php default-mysql-server webcheck" + + echo "apt-get..." + vdn-ssh -t root@$GUEST_NAME " + export http_proxy=$http_proxy + echo ========== + apt-get install -y $DEBS + " + # cas de lighttpd + vdn-ssh -t root@$GUEST_NAME " + export http_proxy=$http_proxy + apt-get install -y lighttpd + systemctl disable lighttpd + " + + + # disable services + + local l="ModemManager NetworkManager NetworkManager-dispatcher NetworkManager-wait-online anacron apparmor autovt@ bgpd dbus-fi.w1.wpa_supplicant1 dbus-org.freedesktop.Avahi dbus-org.freedesktop.ModemManager1 dbus-org.freedesktop.nm-dispatcher dbus-org.freedesktop.timesync1 getty@ hddtemp isisd lighttpd lm-sensors network-manager nfs-kernel-server nmbd openbsd-inetd openvpn ospf6d ospfd pimd portmap pppd-dns ripd ripngd rpcbind rsync smbd speech-dispatcher syslog systemd-timesyncd udisks2 wpa_supplicant zebra nfs-blkmap uml-utilities apache2 proftpd isc-dhcp-server nfs-server" + + vdn-ssh -t root@$GUEST_NAME "for i in $l; do echo \"Disable \$i\"; systemctl disable \$i; done" + + # services (enable) : + #l="avahi-daemon console-setup cron inetd keyboard-setup networking rsyslog ssh sshd uml-utilities" + #l="$l apache2 haveged isc-dhcp-server nfs-server proftpd" + + + +} + +installBackportKernel() { + + local kvers=$(vdn-ssh root@$GUEST_NAME uname -r) + + if ! vdn-ssh root@$GUEST_NAME "grep -q backport /etc/apt/sources.list"; then + vdn-ssh root@$GUEST_NAME 'echo "deb http://ftp.debian.org/debian buster-backports main" >> /etc/apt/sources.list' + fi + + vdn-ssh -t root@$GUEST_NAME "apt-get update; apt-get -y install linux-image-5.3.0-0.bpo.2-amd64" + + vdn-ssh -t root@$GUEST_NAME 'grep -v buster-backports /etc/apt/sources.list > /tmp/o; mv /tmp/o /etc/apt/sources.list' + + vdn-ssh -t root@$GUEST_NAME "apt-get update; apt-get -y install --reinstall linux-image-amd64; update-initramfs -u -k $kvers" +} + +installDocker() { + + set +u + [ -z "$http_proxy" ] && http_proxy="" || : + [ -z "$https_proxy" ] && https_proxy="" || : + set -u + + # désactive le service docker, Voir les scripts de post-configuration + # n'ajoute aucun utilisateur au groupe docker par défaut. Voir les scripts de post-configuration + + vdn-ssh -t root@$GUEST_NAME " + export http_proxy=$http_proxy + export https_proxy=$https_proxy + apt-get update + apt-get -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common + curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - + apt-key fingerprint 0EBFCD88 + add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/debian \$(lsb_release -cs) stable\" + apt-get update + apt-get -y install docker-ce docker-ce-cli containerd.io docker-compose + curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose + + systemctl mask containerd docker +" +} + +installLamp() { + vdn-ssh root@$GUEST_NAME " + export http_proxy=$http_proxy + apt-get -y install apache2 php mariadb-server libapache2-mod-php php-gd php-mysql + systemctl disable mariadb mysql + " +} + +preInstallForTgz() { + + echo "Set /etc/modprobe.d/blacklist-floppy.conf..." + vdn-ssh root@$GUEST_NAME "f=/etc/modprobe.d/blacklist-floppy.conf; ! grep -q floppy \$f && echo \"blacklist floppy\" >> \$f || :" + + echo "Set /etc/initramfs-tools/modules..." + vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q ne2k_pci \$f && echo ne2k_pci >> \$f || :" + vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q 8390 \$f && echo 8390 >> \$f || :" + vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q virtio_net \$f && echo virtio_net >> \$f || :" + + vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q overlay \$f && echo overlay >> \$f || :" + vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q aufs \$f && echo aufs >> \$f || :" + + echo "Create /etc/initramfs-tools/scripts/local-bottom/overlay.sh ..." + + + cat << EOF | vdn-ssh root@$GUEST_NAME "cat > /etc/initramfs-tools/scripts/local-bottom/overlay.sh" +#!/bin/sh + + listDisks() { + if [ "\$EMULATOR" = linux ]; then + ls /dev/ubd[[:lower:]] # | grep -E 'udb[[:lower:]]r?' + else + ls /dev/?d[[:lower:]] + fi + } + + +PREREQ="" + + prereqs() + { + echo "\$PREREQ" + } + +case \$1 in + prereqs) + prereqs + exit 0 + ;; + esac + + +! grep -E -q 'vdn-mode=(tgz|overlay)' /proc/cmdline && { + echo "*** local-bottom/overlay.sh : exit (no mode tgz or overlay)" >&2 + exit 0 +} + + + +echo +echo "*** local-bottom/overlay.sh ***" + +echo "Extract configuration..." + +listDisks + +confDisk=\$(listDisks | tail -n 1) + +echo confDisk=\$confDisk + +mkdir /vdn +tar -C / -xvzf \$confDisk + +if [ \$? -ne 0 ]; then + echo "Erreur lors de l'extraction de la configuration" >&2 + echo "Lancement d'un shell pour inspection..." >&2 + export PS1="initramfs:\w# " + /bin/sh -i +fi + +if [ -e /etc/vdn/mount-root ]; then + sh /etc/vdn/mount-root +else + echo "/etc/vdn/mount-root introuvable !" >&2 + echo "ARRÊT du système !">&2 + while :; do sleep 1000; done +fi + +EOF + + vdn-ssh root@$GUEST_NAME chmod 755 /etc/initramfs-tools/scripts/local-bottom/overlay.sh +} + + +installForTgz() { + + echo "Install for tgz..." + + + local kvers + + kvers=$(vdn-ssh root@$GUEST_NAME ls /lib/modules | sort -Vr | head -n1) + [ -z "$kvers" ] && { + echo "Warning : /lib/modules is empty !" >&2 + kvers=$(vdn-ssh root@$GUEST_NAME uname -r) + echo "Use current kernel : $kvers" + } + + rsync -e vdn-ssh root@$GUEST_NAME:/boot/vmlinuz-$kvers $VDN_PATH/files + + # initramfs (created it if necessary) + + + vdn-ssh root@$GUEST_NAME " + rm -f /boot/initrd.img-$kvers.keep + if [ -e /boot/initrd.img-$kvers ]; then + cp /boot/initrd.img-$kvers /boot/initrd.img-$kvers.keep + fi + + echo \"update-initramfs ...\" >&2 + update-initramfs -u -k $kvers + + #cat /etc/initramfs-tools/scripts/local-bottom/overlay.sh + rm /etc/initramfs-tools/scripts/local-bottom/overlay.sh + + cp /boot/initrd.img-$kvers /boot/initrd-tgz.img-$kvers + + if [ -e /boot/initrd.img-$kvers.keep ]; then + mv /boot/initrd.img-$kvers.keep /boot/initrd.img-$kvers + fi +" + + rsync -e vdn-ssh root@$GUEST_NAME:/boot/initrd-tgz.img-$kvers $VDN_PATH/files + +} + +installNagios1() { + # from https://www.itzgeek.com/how-tos/linux/debian/how-to-install-nagios-on-debian-9-stretch.html + + vdn-ssh root@$GUEST_NAME " + export http_proxy=$http_proxy + apt update + apt install -y build-essential apache2 php openssl perl make php-gd libgd2-xpm-dev libapache2-mod-php libperl-dev libssl-dev daemon wget apache2-utils unzip + useradd nagios + groupadd nagcmd + usermod -a -G nagcmd nagios + usermod -a -G nagcmd www-data + cd /tmp/ + wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.5.tar.gz + tar -zxvf nagios-4.4.5.tar.gz + cd /tmp/nagios-4.4.5/ + ./configure --with-nagios-group=nagios --with-command-group=nagcmd --with-httpd_conf=/etc/apache2/sites-enabled/ + make all + make install + make install-init + make install-config + make install-commandmode + make install-webconf +" +} + +installNagios2() { + + ### sudo nano /usr/local/nagios/etc/objects/contacts.cfg + vdn-ssh root@$GUEST_NAME " + export http_proxy=$http_proxy + #sed -i -re 's/^.*email.*$/email root@localhost ;/' /usr/local/nagios/etc/objects/contacts.cfg + htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin + a2enmod cgi + systemctl restart apache2 + cd /tmp + wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz + tar -zxvf /tmp/nagios-plugins-2.2.1.tar.gz + cd /tmp/nagios-plugins-2.2.1/ + ./configure --with-nagios-user=nagios --with-nagios-group=nagios + make + make install + /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg +" + +} + +installNagios3() { + vdn-ssh root@$GUEST_NAME " + export http_proxy=$http_proxy + apt install -y nagios-nrpe-server nagios-plugins + apt -y install nagios-nrpe-plugin +" +} + +installVdn() { + vdn-ssh root@$GUEST_NAME " + export http_proxy=$http_proxy + cd /tmp + rm -Rf vdn + git clone http://opale.u-clermont1.fr/vdn/git/vdn.git + echo "vdn/bin/vdn-prepare $GUEST_RELEASE" + vdn/bin/vdn-prepare $GUEST_RELEASE +" +} + + + + +# début des fonctions + +synopsis() { + cat << EOF +Usage : `basename $0` [-i identity] system +EOF +} + +help() { + cat << EOF + +`basename $0` prepare un système virtuel pour fonctionner en mode DIRECT. + +`synopsis` + +Une identification par clé pour ssh est mise en place (cf. -i identity) +pour éviter les identification par mot de passe lors des connexions ssh +de l'hôte vers l'invité nécessaires à l'opération. + +Les mots de passes sont fixés de façon aléatoire + +-h : affiche cette aide +-i identity : chemin de la clé publique à utiliser. + +EOF +} + +usage() { + synopsis + exit 2 +} + +args() { + local opt + while getopts "hi:" opt; do + case $opt in + h) help; exit 0;; + i) IDENTITY="$OPTARG";; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + [ $# -ne 1 ] && usage + + GUEST_NAME="$1" + if echo $GUEST_NAME | grep -q '/'; then + error "$GUEST_NAME est un nom de système invalide" + fi +} + + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/../../../../..); . $VDN_PATH/bin/functions.sh + +args "$@" + +PROG_DIR=$(readlink -f $(dirname $0)) + +if ! $VDN_PATH/bin/vdn-alive $GUEST_NAME; then + error "Le système $GUEST_NAME n'est pas démarré" +fi + +loadGuestVars $GUEST_NAME + +foundIdentity=0 +for i in $SSH_IDENTITY; do + if [ -e $i ]; then + IDENTITY=$i + foundIdentity=1 + fi +done + +[ $foundIdentity = 0 ] && error "Aucune clé SSH !" + +if vdn-ssh -n -o PasswordAuthentication=no root@$GUEST_NAME exit 0 ; then + vdn-ssh-copy-id -i $IDENTITY root@$GUEST_NAME +fi + +#echo "apt-get..." +#vdn-ssh root@$GUEST_NAME apt-get install rsync net-tools + +#echo "Set /etc/initramfs-tools/modules..." +#vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q ne2k_pci \$f && echo ne2k_pci >> \$f || :" +#vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q 8390 \$f && echo 8390 >> \$f || :" +#vdn-ssh root@$GUEST_NAME "f=/etc/initramfs-tools/modules; ! grep -q virtio_net \$f && echo virtio_net >> \$f || :" + +#echo "Set /etc/modprobe.d/blacklist-floppy.conf..." +#vdn-ssh root@$GUEST_NAME "f=/etc/modprobe.d/blacklist-floppy.conf; ! grep -q floppy \$f && echo \"blacklist floppy\" >> \$f || :" + + +vdn-ssh -t root@$GUEST_NAME chmod 755 / + +echo "Add test user to kvm group (for nested)" +vdn-ssh root@$GUEST_NAME "addgroup test kvm" + +echo "Add test user to kvm group (for nested)" +vdn-ssh root@$GUEST_NAME "addgroup test docker || :" + + +#echo "Add test user to sudo group" +#vdn-ssh root@$GUEST_NAME "addgroup test sudo" + +echo "Set vim syntax=on" +vdn-ssh root@$GUEST_NAME "cat /etc/vim/vimrc | sed -re 's/^.*syntax on.*$/syntax on/' > /etc/vim/vimrc.new" +vdn-ssh root@$GUEST_NAME "mv /etc/vim/vimrc.new /etc/vim/vimrc" +vdn-ssh root@$GUEST_NAME "cp /etc/vim/vimrc ~/.vimrc" +vdn-ssh root@$GUEST_NAME "cp /etc/vim/vimrc /home/test/.vimrc; chown test: /home/test/.vimrc" + +echo "Allow root autologin on ttyS0" +vdn-ssh root@$GUEST_NAME "sed -i -re 's,^ExecStart=.*$,ExecStart=-/sbin/mingetty --noclear --autologin root %I,' /lib/systemd/system/serial-getty@.service" + +# kernel params (in grub ) + +echo "Allow net.ifnames=0 in GRUB " +vdn-ssh root@$GUEST_NAME "sed -i -re 's,^GRUB_CMDLINE_LINUX_DEFAULT=.*$,GRUB_CMDLINE_LINUX_DEFAULT=\"net.ifnames=0 console=ttyS0\,115200n8\",' /etc/default/grub" +echo " 1s timout for menu" +vdn-ssh root@$GUEST_NAME "sed -i -re 's,^GRUB_TIMEOUT=.*$,GRUB_TIMEOUT=1,' /etc/default/grub" +vdn-ssh root@$GUEST_NAME "update-grub" + +########################## + +export http_proxy=\"$http_proxy\" +export https_proxy=\"$https_proxy\" + +echo "http_proxy:$http_proxy" +echo "https_proxy:$https_proxy" + +#echo "For debug : exit to guit" +#vdn-ssh root@$GUEST_NAME + +installAll + +vdn-ssh root@$GUEST_NAME "systemctl mask nagios" + +########################## + +echo "Set rc.local..." +if [ -e $PROG_DIR/rc.local ]; then + vdn-scp -p $PROG_DIR/rc.local root@$GUEST_NAME:/etc + vdn-ssh root@$GUEST_NAME chmod 755 /etc/rc.local +fi + +## Install lxdm +#echo "Install lxdm..." +# +#vdn-ssh -t root@$GUEST_NAME " +#apt-get -y install lxdm +#apt-get -y remove openbox +#" + +#echo "Default xsession : xfce4 " +#vdn-ssh root@$GUEST_NAME "sed -i -re 's,^# session=.*$,session=/usr/bin/startxfce4,' /etc/lxdm/lxdm.conf" + +#echo "For debug : exit to guit" +#vdn-ssh root@$GUEST_NAME + +# Clear + +echo "Clear /var/log, history, ..." +vdn-ssh -t root@$GUEST_NAME ' +export http_proxy=$http_proxy + +rm -Rf /etc/vdn + +#for i in $(find /var/log -type f); do cat /dev/null > $i; done +find /var/log -name "*.gz" -delete + +echo "Clear .bash_history" + +rm -f /root/.bash_history +touch /root/.bash_history +chmod 600 /root/.bash_history +rm -f /home/test/.bash_history +touch /home/test/.bash_history +chmod 600 /home/test/.bash_history + +echo "Clear .cache .mozilla" +for d in /root /home/test; do + rm -Rf $d/.cache + rm -Rf $d/.mozilla +done + +echo "Clear authorized_keys" + +for d in /root /home/test; do + rm -f $d/.ssh/authorized_keys + rm -f $d/.ssh/authorized_keys +done + +echo "Clear apt-cache..." +apt autoremove -y +sleep 1 +apt-get clean + +echo end of cleaning ! +' + diff --git a/vdn/distribs/guests/direct/debian/buster/rc.local.disable b/vdn/distribs/guests/direct/debian/buster/rc.local.disable new file mode 100755 index 0000000..019bc77 --- /dev/null +++ b/vdn/distribs/guests/direct/debian/buster/rc.local.disable @@ -0,0 +1,202 @@ +#!/bin/bash + +# Script de configuration est utilisé par VDN. +# Ne pas supprimer/modifier + +getRandomPasswd() { + local k + + while :; do + k=$(tr -dc _A-Z-a-z-0-9 < /dev/urandom 2> /dev/null | head -c${1:-32} ) + if [ $(echo -n $k | wc -c) = 32 ]; then + break + fi + echo "Wait for entropy avail : $(cat /proc/sys/kernel/random/entropy_avail)" >&2 + sleep 1 + done + echo -n $k +} + +set -x + +echo "Start rc.local (buster)..." + +echo "cmdline:$(cat /proc/cmdline)" + +lastDisk=$(lsblk -i -n -o PATH | grep '/...$' | tail -n 1) +lastDiskSize=$(lsblk -n -b -o SIZE $lastDisk) + +# Disque supplémentaire (avec la clé publique, ...) ? + +#[ $lastDiskSize -gt 200000 ] && exit 0 + +# Si oui + +# Désarchive la configuration en provenance de VDN + +# le fichier /etc/vdn/rc.vdn n'est modifié que si absent +# Consultez les répertoires distribs/guest/... + +[ ! -d /etc/vdn ] && mkdir /etc/vdn + +tar -C / -xzf $lastDisk + +[ -e /etc/vdn/config ] && { + set -a + . /etc/vdn/config +} + +[ $VDN_DEBUG = 1 ] && set -x || : + +# set real / mode +chmod 755 / +chown root:root / /etc +chown -R root:root /etc/vdn + +systemctl restart haveged + +# extract files (host, all, guest) +if [ $MODE = "cow" ]; then + for d in /etc/vdn/host /etc/vdn/all /etc/vdn/guest; do + if [ -d $d ]; then + ( cd $d && tar czf - . ) | ( cd / && tar --no-same-owner --sparse -xpzf - ) + fi + done +fi + + +# swap +if [ $SWAP_SIZE != 0 ]; then + swapDev=$(lsblk -n -o PATH | grep '/...$' | tail -n 2 | head -n 1) + swapoff -a + swapon $swapDev +fi + + +if [ ! -e /etc/vdn-$MODE-initialized ]; then + + # regenerate ssh_host_keys + + rm -f /etc/ssh/ssh_host_* + + dpkg-reconfigure openssh-server + + #systemctl restart ssh + + # Random root and test password + + echo "Random passwords." + + k=$(getRandomPasswd) + #echo "root passwd : $k" + passwdRoot=$k #$(cat /dev/urandom | tr -dc _A-Z-a-z-0-9 | head -c${1:-32};) + k=$(getRandomPasswd) + #echo "test passwd : $k" + passwdTest=$k #$(cat /dev/urandom | tr -dc _A-Z-a-z-0-9 | head -c${1:-32};) + + cat <<- EOF | chpasswd +root:$passwdRoot +test:$passwdTest +EOF + + touch /etc/vdn-$MODE-initialized + +fi + +# Add user id_rsa.pub to /root/.ssh/authorized_keys + +[ ! -d /root/.ssh ] && { + mkdir /root/.ssh + chmod 700 /root/.ssh +} + +[ ! -e /root/.ssh/authorized_keys ] && + touch /root/.ssh/authorized_keys + +k=$(cat /etc/vdn/.ssh/id_rsa.pub) + +[ -n "$k" ] && { + ! fgrep -q "$k" /root/.ssh/authorized_keys && + echo "$k" >> /root/.ssh/authorized_keys +} + + +# Add user id_rsa.pub to /home/test/.ssh/authorized_keys + +if [ -d "/home/test" ]; then + if [ ! -d /home/test/.ssh ]; then + mkdir /home/test/.ssh + chown test: /home/test/.ssh + chmod 700 /home/test/.ssh + fi + + [ ! -e /home/test/.ssh/authorized_keys ] && + touch /home/test/.ssh/authorized_keys + + chown test: /home/test/.ssh + + if [ -n "$k" ]; then + ! fgrep -q "$k" /home/test/.ssh/authorized_keys && + echo "$k" >> /home/test/.ssh/authorized_keys + fi +fi + + +# init slirp connection + +lastEth=$(ifconfig -a | grep eth[0-9] | tail -n 1 | cut -d ':' -f 1) +echo "lastEth=$lastEth" + +[ -n "$lastEth" ] && { + ifconfig $lastEth down + sleep 1 + dhclient $lastEth + + + if [ "$EXTRA_ETH_DEFAULT_ROUTE" = 0 ]; then + # Set default root to host (slirp) + #route add default gw 10.0.2.2 &> /dev/null + route del default gw 10.0.2.2 &> /dev/null + else + echo "Set default route to 10.0.2.2" + route add default gw 10.0.2.2 &> /dev/null + fi + + ping -c 1 10.0.2.2 &> /dev/null & + + #echo "EXTRA_ETH_MASQUERADING:$EXTRA_ETH_MASQUERADING" + + if [ "$EXTRA_ETH_MASQUERADING" = 1 ]; then + #echo "iptables -t nat -A POSTROUTING -o $lastEth -j MASQUERADE" + iptables -t nat -A POSTROUTING -o $lastEth -j MASQUERADE + fi + +} + +### ON_BOOT + +if [ ! -z "$ON_BOOT" ]; then + echo "ON_BOOT:$ON_BOOT" + eval $ON_BOOT +fi + +### run rc scripts + +rcScripts=$(ls /etc/vdn/[0-9]* 2> /dev/null) + +# Add vdn.rc + +[ -e /etc/vdn/vdn.rc ] && rcScripts="$rcScripts /etc/vdn/vdn.rc" + +# run rc scripts + +for i in $rcScripts; do + echo "Run script : $i" + . $i +done + +systemctl unmask ssh +sleep 1 +systemctl enable ssh +systemctl start ssh + diff --git a/vdn/distribs/guests/overlay/debian/bullseye/mount-root b/vdn/distribs/guests/overlay/debian/bullseye/mount-root new file mode 100644 index 0000000..d136f88 --- /dev/null +++ b/vdn/distribs/guests/overlay/debian/bullseye/mount-root @@ -0,0 +1,502 @@ +#!/usr/bin/env sh + +# Script de l'initramfs pour le montage de la racine finale +# --------------------------------------------------------- + +# Ce script est appelé par l'initramfs pour monter la racine finale +# Ce script utilise les variables définies dans le fichier de configuration +# d'un système virtuel. + +# Monte les répertoires de l'union +mountUnionDirs_tgz() { + + echo "Mount in TGZ mode..." + [ ! -d /root-ro ] && mkdir /root-ro + [ ! -d /root-rw ] && mkdir /root-rw + + # readonly + if ! mount | grep -q /root && [ "$EMULATOR" = "linux" ]; then + ls -l /dev/ubd* + mount -o ro,noload /dev/ubda1 /root + #mount -o remount,ro /root + fi + #ls /root + mount -o move /root /root-ro + + # aufs + #mount -t tmpfs -o size=64m tmpfs /root-rw + if [ -z "$AUFS_FILE" ]; then + if [ -n "$AUFS_SIZE" ]; then + mount -o size=$((1024*1024*$AUFS_SIZE)) \ + -t tmpfs none /root-rw || exit 1 + else + mount -t tmpfs none /root-rw || exit 1 + fi + else + mount -t ext4 $aufsDev /root-rw || exit 1 + rm -Rf /root-rw/* + fi + + # union + + mkdir /root-rw/data /root-rw/work + + if [ 1 = 1 ]; then + modprobe overlay + mount none -t overlay -o redirect_dir=on -o lowerdir=/root-ro,upperdir=/root-rw/data,workdir=/root-rw/work /root + [ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount -o bind /root-ro /root/overlays/ro + mount -o bind /root-rw /root/overlays/rw + } + else + # aufs DEPRECATED, not functional + modprobe aufs + mount -v -t aufs -o br:/root-rw/data:/root-ro none /root + #[ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount --move /root-ro /root/overlays/ro + mount --move /root-rw /root/overlays/rw + #} + + fi + + if [ ! -d /root/etc ]; then + echo + echo "Error in overlay (tgz mode) !" + echo + sh -i + fi + +} + +mountUnionDirs_overlay() { + + echo "Mount in OVERLAY mode..." + [ ! -d /root-ro ] && mkdir /root-ro + [ ! -d /root-rw ] && mkdir /root-rw + + # readonly + if ! mount | grep -q /root && [ "$EMULATOR" = "linux" ]; then + ls -l /dev/ubd* + mount -o ro,noload /dev/ubda1 /root + #mount -o remount,ro /root + fi + #ls /root + mount -o move /root /root-ro + + mount -t ext4 $saveDev /root-rw || exit 1 + + # union + + [ ! -d /root-rw/data ] && mkdir /root-rw/data + [ ! -d /root-rw/work ] && mkdir /root-rw/work + + + + if [ 1 = 1 ]; then + + modprobe overlay #redirect_dir=on xino_auto metacopy=off + mount none -t overlay -o redirect_dir=on -o lowerdir=/root-ro,upperdir=/root-rw/data,workdir=/root-rw/work /root + #mount none -t overlay -o lowerdir=/root-ro,upperdir=/root-rw/data,workdir=/root-rw/work /root + + + [ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount -o bind /root-ro /root/overlays/ro + mount -o bind /root-rw /root/overlays/rw + } + + set +x + else + # deprecated, not fonctional ! + modprobe aufs + mount -v -t aufs -o br:/root-rw/data:/root-ro none /root + #[ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount --move /root-ro /root/overlays/ro + mount --move /root-rw /root/overlays/rw + #} + + fi + + if [ ! -d /root/etc ]; then + echo + echo "Error in overlay (overlay mode) !" + echo + sh -i + fi + +} + +setNetwork() { + + modprobe virtio_net + + for i in $(seq 0 $NB_ETH); do + ifconfig eth$i up + done + ifconfig -a + ifconfig eth$NB_ETH 10.0.2.15 netmask 255.255.255.0 + + #sh -i + + cat << EOF > /root/etc/network/interfaces +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +source /etc/network/interfaces.d/* + +# The loopback network interface +auto lo +iface lo inet loopback +EOF + +} + +cpSshIdentityOld() { + + # Copie de l'identité ssh + + authorized_keys=/root/.ssh/authorized_keys + [ -n "$SSH_IDENTITY" ] && { + [ ! -d /root//root/.ssh ] && mkdir -m 700 /root/root/.ssh + for i in $SSH_IDENTITY; do + f=/etc/vdn/.ssh/$(basename $i) + if [ -e $f ]; then + ident="$(cat $f)" + grep -q "$ident" /root/root/.ssh/authorized_keys || \ + cat $f >> /root/root/.ssh/authorized_keys + chmod 600 /root/root/.ssh/authorized_keys + echo "vdn : copie de $f" + cat /root/root/.ssh/authorized_keys + break + fi + done + } +} + + +beforeExtractTgz() { + + # Copie de la conf + + [ ! -d /root/etc/vdn ] && mkdir -p /root/etc/vdn + cp -a /etc/vdn/* /root/etc/vdn + + + # extract files (host, all, guest) + for d in /etc/vdn/host /etc/vdn/all /etc/vdn/guest; do + if [ -d $d ]; then + ( cd $d && tar czf - . ) | ( cd /root && tar --no-same-owner -xpzf - ) + fi + done + + if [ -e /etc/rc.local ]; then + cp /etc/rc.local /root/etc/rc.local + fi + +} + +extractSaveTgz() { + echo "Extract save tgz" + if [ -n "$saveDev" ]; then + tar -C /root -xzpf $saveDev #2> /dev/null + fi +} + +setServices() { + + generated=" +hddtemp +isc-dhcp-server +proftpd +speech-dispatcher +" + + base=" +avahi-daemon +console-setup +cron +inetd +keyboard-setup +networking +rsyslog +ssh +sshd +" + + cmd="systemctl list-unit-files --type service --no-legend --no-pager | egrep 'enabled|generated' | cut -d ' ' -f 1 | sed -re 's/\.service//'" + + + all=$(eval chroot /root $cmd) + all=$( { echo "$all"; echo "$generated"; } | tr ' ' '\n' | grep -v '^$' | sort ) + + base=$( echo "$base" | tr ' ' '\n' | grep -v '^$' | sort ) + + extra="$(echo $EXTRA_SERVICES | tr ' ' '\n' | grep -v '^$' | sort -u ) haveged" + + enable=$( { echo "$base"; echo "$extra"; } | tr ' ' '\n' | grep -v '^$' | sort -u ) + + echo "$all" > /root/tmp/all + echo "$enable" > /root/tmp/enable + + badEnable=$(chroot /root comm -1 -3 /tmp/all /tmp/enable) + + disable=$(chroot /root comm -2 -3 /tmp/all /tmp/enable) + + #echo "==== all (file) ====" + #cat /root/tmp/all + #echo "==== enable (file) ====" + #cat /root/tmp/enable + + #echo "================" + echo + echo "Services :" + echo + echo All services : $all + echo + echo Base services : $base + echo + echo Extra services : $extra + echo + echo enable : $enable + echo + echo disable : $disable + echo + echo mask : $EXCLUDE_SERVICES + echo + + #if [ -n "$badEnable" ]; then + # echo "!!! Invalid enable service(s) ! : $badEnable" + # sleep 1 + #fi + + export enable + export disable + + OLDROOT=$ROOT + unset ROOT + + set -x + for i in $enable; do + chroot /root systemctl unmask $i + chroot /root systemctl enable $i + done + + for i in $disable; do + chroot /root systemctl disable $i + done + + chroot /root systemctl mask $EXCLUDE_SERVICES + set +x + + ROOT=$OLDROOT + +} + +updateHdb() { + + #set -x + + if [ $HDB_PART_FORMAT = 1 ]; then + if ! fdisk -l /dev/vdb | grep -q vdb1; then + #/bin/sh -i + echo -e 'n\np\n1\n\n\np\nw\n' | fdisk /dev/vdb + /root/sbin/mkfs.ext4 -j /dev/vdb1 + #/bin/sh -i + #mv \$mdir \$mdir.bak + fi + [ ! -d /root/mnt/vdb1 ] && mkdir /root/mnt/vdb1 + mount -o errors=remount-ro /dev/vdb1 /root/mnt/vdb1 + fi + + + + if [ -n "$HDB_DIRS" ]; then + if ! mount | grep -q /root/mnt/vdb1 ; then + echo + echo "/root/mnt/vdb1 non monté ! Abandon du transfert des répertoires" + echo + sleep 3 + fi + + for i in $HDB_DIRS; do + if [ ! -d /root/mnt/vdb1/$i ]; then + [ ! -d $(dirname /root/mnt/vdb1/$i) ] && mkdir -p $(dirname /root/mnt/vdb1/$i) + if [ -d /root/$i ]; then + cp -a /root/$i /root/mnt/vdb1/$i + else + mkdir -p /root/mnt/vdb1/$i + fi + fi + + mount -o bind /root/mnt/vdb1/$i /root/$i || echo "Error mount /mnt/vdb1/$i !" >&2 + done + set +x + fi +} + +listDisks() { + if [ "$EMULATOR" = "linux" ]; then + ls /dev/ubd[[:lower:]] # | grep -E 'udb[:lower:]r?' + else + ls /dev/?d[[:lower:]] + fi +} + + +echo +echo "=== Start mount-root script..." +echo +#set -eu + +set -a +. /etc/vdn/config +set +a + +#cat /etc/vdn/config + +echo "EMULATOR=$EMULATOR" >&2 +echo "MODE=$MODE" >&2 +echo "NB_DISK=$NB_DISK" >&2 + +listDisks >&2 + +# Sauvegarde +saveDev=$(listDisks | head -n $((1+$NB_DISK)) | tail -n 1 ) + +if [ $MODE = tgz ]; then + if [ "$(dd if=$saveDev count=1 bs=512 2>/dev/null | wc -c)" = "0" ]; then + saveDev="" + fi +fi + +#echo "saveDev=$saveDev" + +# Aufs (now : overlayfs) + +aufsDev="" +if [ $MODE = tgz ]; then + aufsDev=$(listDisks | head -n $((2+$NB_DISK)) | tail -n 1 ) +fi +#echo "aufsDev=$aufsDev" + +mountUnionDirs_$MODE +updateHdb +beforeExtractTgz +setServices +setNetwork + +if [ $MODE = tgz ]; then + extractSaveTgz +fi + +if [ ! -e /root-rw/data/etc/hostname ]; then + if [ $SET_HOSTNAME = 1 ]; then + echo "$GUEST_NAME" > /root-rw/data/etc/hostname + else + echo "" > /root-rw/data/etc/hostname + fi +fi + +# disable halt reboot shutdown poweroff +if [ $MODE = tgz ]; then + for i in halt reboot shutdown poweroff; do + [ -e /root/sbin/$i -a ! -e /root/sbin/.$i ] && mv /root/sbin/$i /root/sbin/.$i + #/bin/rm -f /root/sbin/$i 2> /dev/null + cat << EOF > /root/sbin/$i +#!/bin/bash + +echo -e "\$0 is disable in TGZ mode !\nUse vdn-halt host command or halt in the GUI." >&2 + +exit 1 +EOF + chmod 755 /root/sbin/$i + done +fi + +#if [ ! -e /root/root/.vimrc ]; then +# sed -re 's/"syntax on/syntax on/' /root/etc/vim/vimrc > /root/root/.vimrc +#fi + +# runlevel + +chroot /root systemctl set-default $RUNLEVEL + +cat << EOF > /root/etc/rc.local.old +#!/bin/sh -e +# +# rc.local +# +# This script is executed at the end of each multiuser runlevel. +# Make sure that the script will "exit 0" on success or any other +# value on error. +# +# In order to enable or disable this script just change the execution +# bits. +# +# By default this script does nothing. + +mount -t tmpfs tmpfs /run -o remount,size=20M + +[ -x /root/firewall.sh ] && /root/firewall.sh +[ -e /etc/start ] && bash /etc/start & + +exit 0 +EOF + + #chmod 755 /root/etc/rc.local + + if [ -n "$HOSTS" ]; then + #echo "Generate /etc/hosts" + + ( + echo " +127.0.0.1 localhost +127.0.1.1 debian +" + echo "$HOSTS" | while read name; do + if echo $name | grep -q PUB; then + name=$(echo $name | sed -re 's/^[[:space:]]*PUB[^[:space:]]*[[:space:]]+([^[:space:]]+).*$/\1/') + pub=$(echo $PUBLICS_IP | sed -re 's/^.*'$name':([0-9.]+).*$/\1/') + echo "replace $name ($pub)..." >&2 + name="$pub $name" + fi + + echo "$name" + done + + echo " +# The following lines are desirable for IPv6 capable hosts +::1 localhost ip6-localhost ip6-loopback +ff02::1 ip6-allnodes +ff02::2 ip6-allrouters +" + ) > /root/etc/hosts + cat /root/etc/hosts + + fi + + #cat /root/root/.ssh/authorized_keys + #echo + [ -e /root/etc/vdn/authorized-root.txt ] && { + echo "Add authorized root(s)" >&2 + cat /root/etc/vdn/authorized-root.txt | while read l; do + echo " found $l" + cat /root/root/.ssh/authorized_keys | grep -q "$l$" || { + echo " add $l" + echo "$l" >> /root/root/.ssh/authorized_keys + } + done + } +#echo +#cat /root/root/.ssh/authorized_keys +#echo "end of $0" + +#sleep 3 +#/bin/sh -i + +#echo "###################################################################" + + diff --git a/vdn/distribs/guests/overlay/debian/bullseye/save b/vdn/distribs/guests/overlay/debian/bullseye/save new file mode 100755 index 0000000..41e33ae --- /dev/null +++ b/vdn/distribs/guests/overlay/debian/bullseye/save @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +set -eu + +sync + +if ! cat /proc/cmdline | grep -q vdn-emulator; then + echo "Commande réservée à un système VDN." >&2 + exit 1 +fi + +. /etc/vdn/config + +e="" +for i in $SAVE_EXCLUDE; do + e="$e --exclude $i" +done + +set +u +if [ "$CLEAR_LOG_WHEN_SAVE" = 1 ]; then + find /var/log -type f ! -name "*.gz" -exec truncate -s 0 {} \; + find /var/log -maxdepth 2 -type f -name '*log' -exec truncate -s 0 {} \; +fi + +if [ "$DELETE_LOG_GZ = 1" ]; then + find /var/log -type f -name "*.gz" -delete +fi +set -u + +cd /overlays/rw/data + +tar $e -czpf - . + +#umount -a +#sync + +#sleep 1 + +#/usr/sbin/.poweroff + + diff --git a/vdn/distribs/guests/overlay/debian/buster/mount-root b/vdn/distribs/guests/overlay/debian/buster/mount-root new file mode 100644 index 0000000..d136f88 --- /dev/null +++ b/vdn/distribs/guests/overlay/debian/buster/mount-root @@ -0,0 +1,502 @@ +#!/usr/bin/env sh + +# Script de l'initramfs pour le montage de la racine finale +# --------------------------------------------------------- + +# Ce script est appelé par l'initramfs pour monter la racine finale +# Ce script utilise les variables définies dans le fichier de configuration +# d'un système virtuel. + +# Monte les répertoires de l'union +mountUnionDirs_tgz() { + + echo "Mount in TGZ mode..." + [ ! -d /root-ro ] && mkdir /root-ro + [ ! -d /root-rw ] && mkdir /root-rw + + # readonly + if ! mount | grep -q /root && [ "$EMULATOR" = "linux" ]; then + ls -l /dev/ubd* + mount -o ro,noload /dev/ubda1 /root + #mount -o remount,ro /root + fi + #ls /root + mount -o move /root /root-ro + + # aufs + #mount -t tmpfs -o size=64m tmpfs /root-rw + if [ -z "$AUFS_FILE" ]; then + if [ -n "$AUFS_SIZE" ]; then + mount -o size=$((1024*1024*$AUFS_SIZE)) \ + -t tmpfs none /root-rw || exit 1 + else + mount -t tmpfs none /root-rw || exit 1 + fi + else + mount -t ext4 $aufsDev /root-rw || exit 1 + rm -Rf /root-rw/* + fi + + # union + + mkdir /root-rw/data /root-rw/work + + if [ 1 = 1 ]; then + modprobe overlay + mount none -t overlay -o redirect_dir=on -o lowerdir=/root-ro,upperdir=/root-rw/data,workdir=/root-rw/work /root + [ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount -o bind /root-ro /root/overlays/ro + mount -o bind /root-rw /root/overlays/rw + } + else + # aufs DEPRECATED, not functional + modprobe aufs + mount -v -t aufs -o br:/root-rw/data:/root-ro none /root + #[ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount --move /root-ro /root/overlays/ro + mount --move /root-rw /root/overlays/rw + #} + + fi + + if [ ! -d /root/etc ]; then + echo + echo "Error in overlay (tgz mode) !" + echo + sh -i + fi + +} + +mountUnionDirs_overlay() { + + echo "Mount in OVERLAY mode..." + [ ! -d /root-ro ] && mkdir /root-ro + [ ! -d /root-rw ] && mkdir /root-rw + + # readonly + if ! mount | grep -q /root && [ "$EMULATOR" = "linux" ]; then + ls -l /dev/ubd* + mount -o ro,noload /dev/ubda1 /root + #mount -o remount,ro /root + fi + #ls /root + mount -o move /root /root-ro + + mount -t ext4 $saveDev /root-rw || exit 1 + + # union + + [ ! -d /root-rw/data ] && mkdir /root-rw/data + [ ! -d /root-rw/work ] && mkdir /root-rw/work + + + + if [ 1 = 1 ]; then + + modprobe overlay #redirect_dir=on xino_auto metacopy=off + mount none -t overlay -o redirect_dir=on -o lowerdir=/root-ro,upperdir=/root-rw/data,workdir=/root-rw/work /root + #mount none -t overlay -o lowerdir=/root-ro,upperdir=/root-rw/data,workdir=/root-rw/work /root + + + [ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount -o bind /root-ro /root/overlays/ro + mount -o bind /root-rw /root/overlays/rw + } + + set +x + else + # deprecated, not fonctional ! + modprobe aufs + mount -v -t aufs -o br:/root-rw/data:/root-ro none /root + #[ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount --move /root-ro /root/overlays/ro + mount --move /root-rw /root/overlays/rw + #} + + fi + + if [ ! -d /root/etc ]; then + echo + echo "Error in overlay (overlay mode) !" + echo + sh -i + fi + +} + +setNetwork() { + + modprobe virtio_net + + for i in $(seq 0 $NB_ETH); do + ifconfig eth$i up + done + ifconfig -a + ifconfig eth$NB_ETH 10.0.2.15 netmask 255.255.255.0 + + #sh -i + + cat << EOF > /root/etc/network/interfaces +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +source /etc/network/interfaces.d/* + +# The loopback network interface +auto lo +iface lo inet loopback +EOF + +} + +cpSshIdentityOld() { + + # Copie de l'identité ssh + + authorized_keys=/root/.ssh/authorized_keys + [ -n "$SSH_IDENTITY" ] && { + [ ! -d /root//root/.ssh ] && mkdir -m 700 /root/root/.ssh + for i in $SSH_IDENTITY; do + f=/etc/vdn/.ssh/$(basename $i) + if [ -e $f ]; then + ident="$(cat $f)" + grep -q "$ident" /root/root/.ssh/authorized_keys || \ + cat $f >> /root/root/.ssh/authorized_keys + chmod 600 /root/root/.ssh/authorized_keys + echo "vdn : copie de $f" + cat /root/root/.ssh/authorized_keys + break + fi + done + } +} + + +beforeExtractTgz() { + + # Copie de la conf + + [ ! -d /root/etc/vdn ] && mkdir -p /root/etc/vdn + cp -a /etc/vdn/* /root/etc/vdn + + + # extract files (host, all, guest) + for d in /etc/vdn/host /etc/vdn/all /etc/vdn/guest; do + if [ -d $d ]; then + ( cd $d && tar czf - . ) | ( cd /root && tar --no-same-owner -xpzf - ) + fi + done + + if [ -e /etc/rc.local ]; then + cp /etc/rc.local /root/etc/rc.local + fi + +} + +extractSaveTgz() { + echo "Extract save tgz" + if [ -n "$saveDev" ]; then + tar -C /root -xzpf $saveDev #2> /dev/null + fi +} + +setServices() { + + generated=" +hddtemp +isc-dhcp-server +proftpd +speech-dispatcher +" + + base=" +avahi-daemon +console-setup +cron +inetd +keyboard-setup +networking +rsyslog +ssh +sshd +" + + cmd="systemctl list-unit-files --type service --no-legend --no-pager | egrep 'enabled|generated' | cut -d ' ' -f 1 | sed -re 's/\.service//'" + + + all=$(eval chroot /root $cmd) + all=$( { echo "$all"; echo "$generated"; } | tr ' ' '\n' | grep -v '^$' | sort ) + + base=$( echo "$base" | tr ' ' '\n' | grep -v '^$' | sort ) + + extra="$(echo $EXTRA_SERVICES | tr ' ' '\n' | grep -v '^$' | sort -u ) haveged" + + enable=$( { echo "$base"; echo "$extra"; } | tr ' ' '\n' | grep -v '^$' | sort -u ) + + echo "$all" > /root/tmp/all + echo "$enable" > /root/tmp/enable + + badEnable=$(chroot /root comm -1 -3 /tmp/all /tmp/enable) + + disable=$(chroot /root comm -2 -3 /tmp/all /tmp/enable) + + #echo "==== all (file) ====" + #cat /root/tmp/all + #echo "==== enable (file) ====" + #cat /root/tmp/enable + + #echo "================" + echo + echo "Services :" + echo + echo All services : $all + echo + echo Base services : $base + echo + echo Extra services : $extra + echo + echo enable : $enable + echo + echo disable : $disable + echo + echo mask : $EXCLUDE_SERVICES + echo + + #if [ -n "$badEnable" ]; then + # echo "!!! Invalid enable service(s) ! : $badEnable" + # sleep 1 + #fi + + export enable + export disable + + OLDROOT=$ROOT + unset ROOT + + set -x + for i in $enable; do + chroot /root systemctl unmask $i + chroot /root systemctl enable $i + done + + for i in $disable; do + chroot /root systemctl disable $i + done + + chroot /root systemctl mask $EXCLUDE_SERVICES + set +x + + ROOT=$OLDROOT + +} + +updateHdb() { + + #set -x + + if [ $HDB_PART_FORMAT = 1 ]; then + if ! fdisk -l /dev/vdb | grep -q vdb1; then + #/bin/sh -i + echo -e 'n\np\n1\n\n\np\nw\n' | fdisk /dev/vdb + /root/sbin/mkfs.ext4 -j /dev/vdb1 + #/bin/sh -i + #mv \$mdir \$mdir.bak + fi + [ ! -d /root/mnt/vdb1 ] && mkdir /root/mnt/vdb1 + mount -o errors=remount-ro /dev/vdb1 /root/mnt/vdb1 + fi + + + + if [ -n "$HDB_DIRS" ]; then + if ! mount | grep -q /root/mnt/vdb1 ; then + echo + echo "/root/mnt/vdb1 non monté ! Abandon du transfert des répertoires" + echo + sleep 3 + fi + + for i in $HDB_DIRS; do + if [ ! -d /root/mnt/vdb1/$i ]; then + [ ! -d $(dirname /root/mnt/vdb1/$i) ] && mkdir -p $(dirname /root/mnt/vdb1/$i) + if [ -d /root/$i ]; then + cp -a /root/$i /root/mnt/vdb1/$i + else + mkdir -p /root/mnt/vdb1/$i + fi + fi + + mount -o bind /root/mnt/vdb1/$i /root/$i || echo "Error mount /mnt/vdb1/$i !" >&2 + done + set +x + fi +} + +listDisks() { + if [ "$EMULATOR" = "linux" ]; then + ls /dev/ubd[[:lower:]] # | grep -E 'udb[:lower:]r?' + else + ls /dev/?d[[:lower:]] + fi +} + + +echo +echo "=== Start mount-root script..." +echo +#set -eu + +set -a +. /etc/vdn/config +set +a + +#cat /etc/vdn/config + +echo "EMULATOR=$EMULATOR" >&2 +echo "MODE=$MODE" >&2 +echo "NB_DISK=$NB_DISK" >&2 + +listDisks >&2 + +# Sauvegarde +saveDev=$(listDisks | head -n $((1+$NB_DISK)) | tail -n 1 ) + +if [ $MODE = tgz ]; then + if [ "$(dd if=$saveDev count=1 bs=512 2>/dev/null | wc -c)" = "0" ]; then + saveDev="" + fi +fi + +#echo "saveDev=$saveDev" + +# Aufs (now : overlayfs) + +aufsDev="" +if [ $MODE = tgz ]; then + aufsDev=$(listDisks | head -n $((2+$NB_DISK)) | tail -n 1 ) +fi +#echo "aufsDev=$aufsDev" + +mountUnionDirs_$MODE +updateHdb +beforeExtractTgz +setServices +setNetwork + +if [ $MODE = tgz ]; then + extractSaveTgz +fi + +if [ ! -e /root-rw/data/etc/hostname ]; then + if [ $SET_HOSTNAME = 1 ]; then + echo "$GUEST_NAME" > /root-rw/data/etc/hostname + else + echo "" > /root-rw/data/etc/hostname + fi +fi + +# disable halt reboot shutdown poweroff +if [ $MODE = tgz ]; then + for i in halt reboot shutdown poweroff; do + [ -e /root/sbin/$i -a ! -e /root/sbin/.$i ] && mv /root/sbin/$i /root/sbin/.$i + #/bin/rm -f /root/sbin/$i 2> /dev/null + cat << EOF > /root/sbin/$i +#!/bin/bash + +echo -e "\$0 is disable in TGZ mode !\nUse vdn-halt host command or halt in the GUI." >&2 + +exit 1 +EOF + chmod 755 /root/sbin/$i + done +fi + +#if [ ! -e /root/root/.vimrc ]; then +# sed -re 's/"syntax on/syntax on/' /root/etc/vim/vimrc > /root/root/.vimrc +#fi + +# runlevel + +chroot /root systemctl set-default $RUNLEVEL + +cat << EOF > /root/etc/rc.local.old +#!/bin/sh -e +# +# rc.local +# +# This script is executed at the end of each multiuser runlevel. +# Make sure that the script will "exit 0" on success or any other +# value on error. +# +# In order to enable or disable this script just change the execution +# bits. +# +# By default this script does nothing. + +mount -t tmpfs tmpfs /run -o remount,size=20M + +[ -x /root/firewall.sh ] && /root/firewall.sh +[ -e /etc/start ] && bash /etc/start & + +exit 0 +EOF + + #chmod 755 /root/etc/rc.local + + if [ -n "$HOSTS" ]; then + #echo "Generate /etc/hosts" + + ( + echo " +127.0.0.1 localhost +127.0.1.1 debian +" + echo "$HOSTS" | while read name; do + if echo $name | grep -q PUB; then + name=$(echo $name | sed -re 's/^[[:space:]]*PUB[^[:space:]]*[[:space:]]+([^[:space:]]+).*$/\1/') + pub=$(echo $PUBLICS_IP | sed -re 's/^.*'$name':([0-9.]+).*$/\1/') + echo "replace $name ($pub)..." >&2 + name="$pub $name" + fi + + echo "$name" + done + + echo " +# The following lines are desirable for IPv6 capable hosts +::1 localhost ip6-localhost ip6-loopback +ff02::1 ip6-allnodes +ff02::2 ip6-allrouters +" + ) > /root/etc/hosts + cat /root/etc/hosts + + fi + + #cat /root/root/.ssh/authorized_keys + #echo + [ -e /root/etc/vdn/authorized-root.txt ] && { + echo "Add authorized root(s)" >&2 + cat /root/etc/vdn/authorized-root.txt | while read l; do + echo " found $l" + cat /root/root/.ssh/authorized_keys | grep -q "$l$" || { + echo " add $l" + echo "$l" >> /root/root/.ssh/authorized_keys + } + done + } +#echo +#cat /root/root/.ssh/authorized_keys +#echo "end of $0" + +#sleep 3 +#/bin/sh -i + +#echo "###################################################################" + + diff --git a/vdn/distribs/guests/overlay/debian/buster/save b/vdn/distribs/guests/overlay/debian/buster/save new file mode 100755 index 0000000..41e33ae --- /dev/null +++ b/vdn/distribs/guests/overlay/debian/buster/save @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +set -eu + +sync + +if ! cat /proc/cmdline | grep -q vdn-emulator; then + echo "Commande réservée à un système VDN." >&2 + exit 1 +fi + +. /etc/vdn/config + +e="" +for i in $SAVE_EXCLUDE; do + e="$e --exclude $i" +done + +set +u +if [ "$CLEAR_LOG_WHEN_SAVE" = 1 ]; then + find /var/log -type f ! -name "*.gz" -exec truncate -s 0 {} \; + find /var/log -maxdepth 2 -type f -name '*log' -exec truncate -s 0 {} \; +fi + +if [ "$DELETE_LOG_GZ = 1" ]; then + find /var/log -type f -name "*.gz" -delete +fi +set -u + +cd /overlays/rw/data + +tar $e -czpf - . + +#umount -a +#sync + +#sleep 1 + +#/usr/sbin/.poweroff + + diff --git a/vdn/distribs/guests/tgz/debian/bullseye/mount-root b/vdn/distribs/guests/tgz/debian/bullseye/mount-root new file mode 100644 index 0000000..d136f88 --- /dev/null +++ b/vdn/distribs/guests/tgz/debian/bullseye/mount-root @@ -0,0 +1,502 @@ +#!/usr/bin/env sh + +# Script de l'initramfs pour le montage de la racine finale +# --------------------------------------------------------- + +# Ce script est appelé par l'initramfs pour monter la racine finale +# Ce script utilise les variables définies dans le fichier de configuration +# d'un système virtuel. + +# Monte les répertoires de l'union +mountUnionDirs_tgz() { + + echo "Mount in TGZ mode..." + [ ! -d /root-ro ] && mkdir /root-ro + [ ! -d /root-rw ] && mkdir /root-rw + + # readonly + if ! mount | grep -q /root && [ "$EMULATOR" = "linux" ]; then + ls -l /dev/ubd* + mount -o ro,noload /dev/ubda1 /root + #mount -o remount,ro /root + fi + #ls /root + mount -o move /root /root-ro + + # aufs + #mount -t tmpfs -o size=64m tmpfs /root-rw + if [ -z "$AUFS_FILE" ]; then + if [ -n "$AUFS_SIZE" ]; then + mount -o size=$((1024*1024*$AUFS_SIZE)) \ + -t tmpfs none /root-rw || exit 1 + else + mount -t tmpfs none /root-rw || exit 1 + fi + else + mount -t ext4 $aufsDev /root-rw || exit 1 + rm -Rf /root-rw/* + fi + + # union + + mkdir /root-rw/data /root-rw/work + + if [ 1 = 1 ]; then + modprobe overlay + mount none -t overlay -o redirect_dir=on -o lowerdir=/root-ro,upperdir=/root-rw/data,workdir=/root-rw/work /root + [ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount -o bind /root-ro /root/overlays/ro + mount -o bind /root-rw /root/overlays/rw + } + else + # aufs DEPRECATED, not functional + modprobe aufs + mount -v -t aufs -o br:/root-rw/data:/root-ro none /root + #[ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount --move /root-ro /root/overlays/ro + mount --move /root-rw /root/overlays/rw + #} + + fi + + if [ ! -d /root/etc ]; then + echo + echo "Error in overlay (tgz mode) !" + echo + sh -i + fi + +} + +mountUnionDirs_overlay() { + + echo "Mount in OVERLAY mode..." + [ ! -d /root-ro ] && mkdir /root-ro + [ ! -d /root-rw ] && mkdir /root-rw + + # readonly + if ! mount | grep -q /root && [ "$EMULATOR" = "linux" ]; then + ls -l /dev/ubd* + mount -o ro,noload /dev/ubda1 /root + #mount -o remount,ro /root + fi + #ls /root + mount -o move /root /root-ro + + mount -t ext4 $saveDev /root-rw || exit 1 + + # union + + [ ! -d /root-rw/data ] && mkdir /root-rw/data + [ ! -d /root-rw/work ] && mkdir /root-rw/work + + + + if [ 1 = 1 ]; then + + modprobe overlay #redirect_dir=on xino_auto metacopy=off + mount none -t overlay -o redirect_dir=on -o lowerdir=/root-ro,upperdir=/root-rw/data,workdir=/root-rw/work /root + #mount none -t overlay -o lowerdir=/root-ro,upperdir=/root-rw/data,workdir=/root-rw/work /root + + + [ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount -o bind /root-ro /root/overlays/ro + mount -o bind /root-rw /root/overlays/rw + } + + set +x + else + # deprecated, not fonctional ! + modprobe aufs + mount -v -t aufs -o br:/root-rw/data:/root-ro none /root + #[ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount --move /root-ro /root/overlays/ro + mount --move /root-rw /root/overlays/rw + #} + + fi + + if [ ! -d /root/etc ]; then + echo + echo "Error in overlay (overlay mode) !" + echo + sh -i + fi + +} + +setNetwork() { + + modprobe virtio_net + + for i in $(seq 0 $NB_ETH); do + ifconfig eth$i up + done + ifconfig -a + ifconfig eth$NB_ETH 10.0.2.15 netmask 255.255.255.0 + + #sh -i + + cat << EOF > /root/etc/network/interfaces +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +source /etc/network/interfaces.d/* + +# The loopback network interface +auto lo +iface lo inet loopback +EOF + +} + +cpSshIdentityOld() { + + # Copie de l'identité ssh + + authorized_keys=/root/.ssh/authorized_keys + [ -n "$SSH_IDENTITY" ] && { + [ ! -d /root//root/.ssh ] && mkdir -m 700 /root/root/.ssh + for i in $SSH_IDENTITY; do + f=/etc/vdn/.ssh/$(basename $i) + if [ -e $f ]; then + ident="$(cat $f)" + grep -q "$ident" /root/root/.ssh/authorized_keys || \ + cat $f >> /root/root/.ssh/authorized_keys + chmod 600 /root/root/.ssh/authorized_keys + echo "vdn : copie de $f" + cat /root/root/.ssh/authorized_keys + break + fi + done + } +} + + +beforeExtractTgz() { + + # Copie de la conf + + [ ! -d /root/etc/vdn ] && mkdir -p /root/etc/vdn + cp -a /etc/vdn/* /root/etc/vdn + + + # extract files (host, all, guest) + for d in /etc/vdn/host /etc/vdn/all /etc/vdn/guest; do + if [ -d $d ]; then + ( cd $d && tar czf - . ) | ( cd /root && tar --no-same-owner -xpzf - ) + fi + done + + if [ -e /etc/rc.local ]; then + cp /etc/rc.local /root/etc/rc.local + fi + +} + +extractSaveTgz() { + echo "Extract save tgz" + if [ -n "$saveDev" ]; then + tar -C /root -xzpf $saveDev #2> /dev/null + fi +} + +setServices() { + + generated=" +hddtemp +isc-dhcp-server +proftpd +speech-dispatcher +" + + base=" +avahi-daemon +console-setup +cron +inetd +keyboard-setup +networking +rsyslog +ssh +sshd +" + + cmd="systemctl list-unit-files --type service --no-legend --no-pager | egrep 'enabled|generated' | cut -d ' ' -f 1 | sed -re 's/\.service//'" + + + all=$(eval chroot /root $cmd) + all=$( { echo "$all"; echo "$generated"; } | tr ' ' '\n' | grep -v '^$' | sort ) + + base=$( echo "$base" | tr ' ' '\n' | grep -v '^$' | sort ) + + extra="$(echo $EXTRA_SERVICES | tr ' ' '\n' | grep -v '^$' | sort -u ) haveged" + + enable=$( { echo "$base"; echo "$extra"; } | tr ' ' '\n' | grep -v '^$' | sort -u ) + + echo "$all" > /root/tmp/all + echo "$enable" > /root/tmp/enable + + badEnable=$(chroot /root comm -1 -3 /tmp/all /tmp/enable) + + disable=$(chroot /root comm -2 -3 /tmp/all /tmp/enable) + + #echo "==== all (file) ====" + #cat /root/tmp/all + #echo "==== enable (file) ====" + #cat /root/tmp/enable + + #echo "================" + echo + echo "Services :" + echo + echo All services : $all + echo + echo Base services : $base + echo + echo Extra services : $extra + echo + echo enable : $enable + echo + echo disable : $disable + echo + echo mask : $EXCLUDE_SERVICES + echo + + #if [ -n "$badEnable" ]; then + # echo "!!! Invalid enable service(s) ! : $badEnable" + # sleep 1 + #fi + + export enable + export disable + + OLDROOT=$ROOT + unset ROOT + + set -x + for i in $enable; do + chroot /root systemctl unmask $i + chroot /root systemctl enable $i + done + + for i in $disable; do + chroot /root systemctl disable $i + done + + chroot /root systemctl mask $EXCLUDE_SERVICES + set +x + + ROOT=$OLDROOT + +} + +updateHdb() { + + #set -x + + if [ $HDB_PART_FORMAT = 1 ]; then + if ! fdisk -l /dev/vdb | grep -q vdb1; then + #/bin/sh -i + echo -e 'n\np\n1\n\n\np\nw\n' | fdisk /dev/vdb + /root/sbin/mkfs.ext4 -j /dev/vdb1 + #/bin/sh -i + #mv \$mdir \$mdir.bak + fi + [ ! -d /root/mnt/vdb1 ] && mkdir /root/mnt/vdb1 + mount -o errors=remount-ro /dev/vdb1 /root/mnt/vdb1 + fi + + + + if [ -n "$HDB_DIRS" ]; then + if ! mount | grep -q /root/mnt/vdb1 ; then + echo + echo "/root/mnt/vdb1 non monté ! Abandon du transfert des répertoires" + echo + sleep 3 + fi + + for i in $HDB_DIRS; do + if [ ! -d /root/mnt/vdb1/$i ]; then + [ ! -d $(dirname /root/mnt/vdb1/$i) ] && mkdir -p $(dirname /root/mnt/vdb1/$i) + if [ -d /root/$i ]; then + cp -a /root/$i /root/mnt/vdb1/$i + else + mkdir -p /root/mnt/vdb1/$i + fi + fi + + mount -o bind /root/mnt/vdb1/$i /root/$i || echo "Error mount /mnt/vdb1/$i !" >&2 + done + set +x + fi +} + +listDisks() { + if [ "$EMULATOR" = "linux" ]; then + ls /dev/ubd[[:lower:]] # | grep -E 'udb[:lower:]r?' + else + ls /dev/?d[[:lower:]] + fi +} + + +echo +echo "=== Start mount-root script..." +echo +#set -eu + +set -a +. /etc/vdn/config +set +a + +#cat /etc/vdn/config + +echo "EMULATOR=$EMULATOR" >&2 +echo "MODE=$MODE" >&2 +echo "NB_DISK=$NB_DISK" >&2 + +listDisks >&2 + +# Sauvegarde +saveDev=$(listDisks | head -n $((1+$NB_DISK)) | tail -n 1 ) + +if [ $MODE = tgz ]; then + if [ "$(dd if=$saveDev count=1 bs=512 2>/dev/null | wc -c)" = "0" ]; then + saveDev="" + fi +fi + +#echo "saveDev=$saveDev" + +# Aufs (now : overlayfs) + +aufsDev="" +if [ $MODE = tgz ]; then + aufsDev=$(listDisks | head -n $((2+$NB_DISK)) | tail -n 1 ) +fi +#echo "aufsDev=$aufsDev" + +mountUnionDirs_$MODE +updateHdb +beforeExtractTgz +setServices +setNetwork + +if [ $MODE = tgz ]; then + extractSaveTgz +fi + +if [ ! -e /root-rw/data/etc/hostname ]; then + if [ $SET_HOSTNAME = 1 ]; then + echo "$GUEST_NAME" > /root-rw/data/etc/hostname + else + echo "" > /root-rw/data/etc/hostname + fi +fi + +# disable halt reboot shutdown poweroff +if [ $MODE = tgz ]; then + for i in halt reboot shutdown poweroff; do + [ -e /root/sbin/$i -a ! -e /root/sbin/.$i ] && mv /root/sbin/$i /root/sbin/.$i + #/bin/rm -f /root/sbin/$i 2> /dev/null + cat << EOF > /root/sbin/$i +#!/bin/bash + +echo -e "\$0 is disable in TGZ mode !\nUse vdn-halt host command or halt in the GUI." >&2 + +exit 1 +EOF + chmod 755 /root/sbin/$i + done +fi + +#if [ ! -e /root/root/.vimrc ]; then +# sed -re 's/"syntax on/syntax on/' /root/etc/vim/vimrc > /root/root/.vimrc +#fi + +# runlevel + +chroot /root systemctl set-default $RUNLEVEL + +cat << EOF > /root/etc/rc.local.old +#!/bin/sh -e +# +# rc.local +# +# This script is executed at the end of each multiuser runlevel. +# Make sure that the script will "exit 0" on success or any other +# value on error. +# +# In order to enable or disable this script just change the execution +# bits. +# +# By default this script does nothing. + +mount -t tmpfs tmpfs /run -o remount,size=20M + +[ -x /root/firewall.sh ] && /root/firewall.sh +[ -e /etc/start ] && bash /etc/start & + +exit 0 +EOF + + #chmod 755 /root/etc/rc.local + + if [ -n "$HOSTS" ]; then + #echo "Generate /etc/hosts" + + ( + echo " +127.0.0.1 localhost +127.0.1.1 debian +" + echo "$HOSTS" | while read name; do + if echo $name | grep -q PUB; then + name=$(echo $name | sed -re 's/^[[:space:]]*PUB[^[:space:]]*[[:space:]]+([^[:space:]]+).*$/\1/') + pub=$(echo $PUBLICS_IP | sed -re 's/^.*'$name':([0-9.]+).*$/\1/') + echo "replace $name ($pub)..." >&2 + name="$pub $name" + fi + + echo "$name" + done + + echo " +# The following lines are desirable for IPv6 capable hosts +::1 localhost ip6-localhost ip6-loopback +ff02::1 ip6-allnodes +ff02::2 ip6-allrouters +" + ) > /root/etc/hosts + cat /root/etc/hosts + + fi + + #cat /root/root/.ssh/authorized_keys + #echo + [ -e /root/etc/vdn/authorized-root.txt ] && { + echo "Add authorized root(s)" >&2 + cat /root/etc/vdn/authorized-root.txt | while read l; do + echo " found $l" + cat /root/root/.ssh/authorized_keys | grep -q "$l$" || { + echo " add $l" + echo "$l" >> /root/root/.ssh/authorized_keys + } + done + } +#echo +#cat /root/root/.ssh/authorized_keys +#echo "end of $0" + +#sleep 3 +#/bin/sh -i + +#echo "###################################################################" + + diff --git a/vdn/distribs/guests/tgz/debian/bullseye/save b/vdn/distribs/guests/tgz/debian/bullseye/save new file mode 100755 index 0000000..41e33ae --- /dev/null +++ b/vdn/distribs/guests/tgz/debian/bullseye/save @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +set -eu + +sync + +if ! cat /proc/cmdline | grep -q vdn-emulator; then + echo "Commande réservée à un système VDN." >&2 + exit 1 +fi + +. /etc/vdn/config + +e="" +for i in $SAVE_EXCLUDE; do + e="$e --exclude $i" +done + +set +u +if [ "$CLEAR_LOG_WHEN_SAVE" = 1 ]; then + find /var/log -type f ! -name "*.gz" -exec truncate -s 0 {} \; + find /var/log -maxdepth 2 -type f -name '*log' -exec truncate -s 0 {} \; +fi + +if [ "$DELETE_LOG_GZ = 1" ]; then + find /var/log -type f -name "*.gz" -delete +fi +set -u + +cd /overlays/rw/data + +tar $e -czpf - . + +#umount -a +#sync + +#sleep 1 + +#/usr/sbin/.poweroff + + diff --git a/vdn/distribs/guests/tgz/debian/buster/mount-root b/vdn/distribs/guests/tgz/debian/buster/mount-root new file mode 100644 index 0000000..d136f88 --- /dev/null +++ b/vdn/distribs/guests/tgz/debian/buster/mount-root @@ -0,0 +1,502 @@ +#!/usr/bin/env sh + +# Script de l'initramfs pour le montage de la racine finale +# --------------------------------------------------------- + +# Ce script est appelé par l'initramfs pour monter la racine finale +# Ce script utilise les variables définies dans le fichier de configuration +# d'un système virtuel. + +# Monte les répertoires de l'union +mountUnionDirs_tgz() { + + echo "Mount in TGZ mode..." + [ ! -d /root-ro ] && mkdir /root-ro + [ ! -d /root-rw ] && mkdir /root-rw + + # readonly + if ! mount | grep -q /root && [ "$EMULATOR" = "linux" ]; then + ls -l /dev/ubd* + mount -o ro,noload /dev/ubda1 /root + #mount -o remount,ro /root + fi + #ls /root + mount -o move /root /root-ro + + # aufs + #mount -t tmpfs -o size=64m tmpfs /root-rw + if [ -z "$AUFS_FILE" ]; then + if [ -n "$AUFS_SIZE" ]; then + mount -o size=$((1024*1024*$AUFS_SIZE)) \ + -t tmpfs none /root-rw || exit 1 + else + mount -t tmpfs none /root-rw || exit 1 + fi + else + mount -t ext4 $aufsDev /root-rw || exit 1 + rm -Rf /root-rw/* + fi + + # union + + mkdir /root-rw/data /root-rw/work + + if [ 1 = 1 ]; then + modprobe overlay + mount none -t overlay -o redirect_dir=on -o lowerdir=/root-ro,upperdir=/root-rw/data,workdir=/root-rw/work /root + [ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount -o bind /root-ro /root/overlays/ro + mount -o bind /root-rw /root/overlays/rw + } + else + # aufs DEPRECATED, not functional + modprobe aufs + mount -v -t aufs -o br:/root-rw/data:/root-ro none /root + #[ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount --move /root-ro /root/overlays/ro + mount --move /root-rw /root/overlays/rw + #} + + fi + + if [ ! -d /root/etc ]; then + echo + echo "Error in overlay (tgz mode) !" + echo + sh -i + fi + +} + +mountUnionDirs_overlay() { + + echo "Mount in OVERLAY mode..." + [ ! -d /root-ro ] && mkdir /root-ro + [ ! -d /root-rw ] && mkdir /root-rw + + # readonly + if ! mount | grep -q /root && [ "$EMULATOR" = "linux" ]; then + ls -l /dev/ubd* + mount -o ro,noload /dev/ubda1 /root + #mount -o remount,ro /root + fi + #ls /root + mount -o move /root /root-ro + + mount -t ext4 $saveDev /root-rw || exit 1 + + # union + + [ ! -d /root-rw/data ] && mkdir /root-rw/data + [ ! -d /root-rw/work ] && mkdir /root-rw/work + + + + if [ 1 = 1 ]; then + + modprobe overlay #redirect_dir=on xino_auto metacopy=off + mount none -t overlay -o redirect_dir=on -o lowerdir=/root-ro,upperdir=/root-rw/data,workdir=/root-rw/work /root + #mount none -t overlay -o lowerdir=/root-ro,upperdir=/root-rw/data,workdir=/root-rw/work /root + + + [ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount -o bind /root-ro /root/overlays/ro + mount -o bind /root-rw /root/overlays/rw + } + + set +x + else + # deprecated, not fonctional ! + modprobe aufs + mount -v -t aufs -o br:/root-rw/data:/root-ro none /root + #[ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount --move /root-ro /root/overlays/ro + mount --move /root-rw /root/overlays/rw + #} + + fi + + if [ ! -d /root/etc ]; then + echo + echo "Error in overlay (overlay mode) !" + echo + sh -i + fi + +} + +setNetwork() { + + modprobe virtio_net + + for i in $(seq 0 $NB_ETH); do + ifconfig eth$i up + done + ifconfig -a + ifconfig eth$NB_ETH 10.0.2.15 netmask 255.255.255.0 + + #sh -i + + cat << EOF > /root/etc/network/interfaces +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +source /etc/network/interfaces.d/* + +# The loopback network interface +auto lo +iface lo inet loopback +EOF + +} + +cpSshIdentityOld() { + + # Copie de l'identité ssh + + authorized_keys=/root/.ssh/authorized_keys + [ -n "$SSH_IDENTITY" ] && { + [ ! -d /root//root/.ssh ] && mkdir -m 700 /root/root/.ssh + for i in $SSH_IDENTITY; do + f=/etc/vdn/.ssh/$(basename $i) + if [ -e $f ]; then + ident="$(cat $f)" + grep -q "$ident" /root/root/.ssh/authorized_keys || \ + cat $f >> /root/root/.ssh/authorized_keys + chmod 600 /root/root/.ssh/authorized_keys + echo "vdn : copie de $f" + cat /root/root/.ssh/authorized_keys + break + fi + done + } +} + + +beforeExtractTgz() { + + # Copie de la conf + + [ ! -d /root/etc/vdn ] && mkdir -p /root/etc/vdn + cp -a /etc/vdn/* /root/etc/vdn + + + # extract files (host, all, guest) + for d in /etc/vdn/host /etc/vdn/all /etc/vdn/guest; do + if [ -d $d ]; then + ( cd $d && tar czf - . ) | ( cd /root && tar --no-same-owner -xpzf - ) + fi + done + + if [ -e /etc/rc.local ]; then + cp /etc/rc.local /root/etc/rc.local + fi + +} + +extractSaveTgz() { + echo "Extract save tgz" + if [ -n "$saveDev" ]; then + tar -C /root -xzpf $saveDev #2> /dev/null + fi +} + +setServices() { + + generated=" +hddtemp +isc-dhcp-server +proftpd +speech-dispatcher +" + + base=" +avahi-daemon +console-setup +cron +inetd +keyboard-setup +networking +rsyslog +ssh +sshd +" + + cmd="systemctl list-unit-files --type service --no-legend --no-pager | egrep 'enabled|generated' | cut -d ' ' -f 1 | sed -re 's/\.service//'" + + + all=$(eval chroot /root $cmd) + all=$( { echo "$all"; echo "$generated"; } | tr ' ' '\n' | grep -v '^$' | sort ) + + base=$( echo "$base" | tr ' ' '\n' | grep -v '^$' | sort ) + + extra="$(echo $EXTRA_SERVICES | tr ' ' '\n' | grep -v '^$' | sort -u ) haveged" + + enable=$( { echo "$base"; echo "$extra"; } | tr ' ' '\n' | grep -v '^$' | sort -u ) + + echo "$all" > /root/tmp/all + echo "$enable" > /root/tmp/enable + + badEnable=$(chroot /root comm -1 -3 /tmp/all /tmp/enable) + + disable=$(chroot /root comm -2 -3 /tmp/all /tmp/enable) + + #echo "==== all (file) ====" + #cat /root/tmp/all + #echo "==== enable (file) ====" + #cat /root/tmp/enable + + #echo "================" + echo + echo "Services :" + echo + echo All services : $all + echo + echo Base services : $base + echo + echo Extra services : $extra + echo + echo enable : $enable + echo + echo disable : $disable + echo + echo mask : $EXCLUDE_SERVICES + echo + + #if [ -n "$badEnable" ]; then + # echo "!!! Invalid enable service(s) ! : $badEnable" + # sleep 1 + #fi + + export enable + export disable + + OLDROOT=$ROOT + unset ROOT + + set -x + for i in $enable; do + chroot /root systemctl unmask $i + chroot /root systemctl enable $i + done + + for i in $disable; do + chroot /root systemctl disable $i + done + + chroot /root systemctl mask $EXCLUDE_SERVICES + set +x + + ROOT=$OLDROOT + +} + +updateHdb() { + + #set -x + + if [ $HDB_PART_FORMAT = 1 ]; then + if ! fdisk -l /dev/vdb | grep -q vdb1; then + #/bin/sh -i + echo -e 'n\np\n1\n\n\np\nw\n' | fdisk /dev/vdb + /root/sbin/mkfs.ext4 -j /dev/vdb1 + #/bin/sh -i + #mv \$mdir \$mdir.bak + fi + [ ! -d /root/mnt/vdb1 ] && mkdir /root/mnt/vdb1 + mount -o errors=remount-ro /dev/vdb1 /root/mnt/vdb1 + fi + + + + if [ -n "$HDB_DIRS" ]; then + if ! mount | grep -q /root/mnt/vdb1 ; then + echo + echo "/root/mnt/vdb1 non monté ! Abandon du transfert des répertoires" + echo + sleep 3 + fi + + for i in $HDB_DIRS; do + if [ ! -d /root/mnt/vdb1/$i ]; then + [ ! -d $(dirname /root/mnt/vdb1/$i) ] && mkdir -p $(dirname /root/mnt/vdb1/$i) + if [ -d /root/$i ]; then + cp -a /root/$i /root/mnt/vdb1/$i + else + mkdir -p /root/mnt/vdb1/$i + fi + fi + + mount -o bind /root/mnt/vdb1/$i /root/$i || echo "Error mount /mnt/vdb1/$i !" >&2 + done + set +x + fi +} + +listDisks() { + if [ "$EMULATOR" = "linux" ]; then + ls /dev/ubd[[:lower:]] # | grep -E 'udb[:lower:]r?' + else + ls /dev/?d[[:lower:]] + fi +} + + +echo +echo "=== Start mount-root script..." +echo +#set -eu + +set -a +. /etc/vdn/config +set +a + +#cat /etc/vdn/config + +echo "EMULATOR=$EMULATOR" >&2 +echo "MODE=$MODE" >&2 +echo "NB_DISK=$NB_DISK" >&2 + +listDisks >&2 + +# Sauvegarde +saveDev=$(listDisks | head -n $((1+$NB_DISK)) | tail -n 1 ) + +if [ $MODE = tgz ]; then + if [ "$(dd if=$saveDev count=1 bs=512 2>/dev/null | wc -c)" = "0" ]; then + saveDev="" + fi +fi + +#echo "saveDev=$saveDev" + +# Aufs (now : overlayfs) + +aufsDev="" +if [ $MODE = tgz ]; then + aufsDev=$(listDisks | head -n $((2+$NB_DISK)) | tail -n 1 ) +fi +#echo "aufsDev=$aufsDev" + +mountUnionDirs_$MODE +updateHdb +beforeExtractTgz +setServices +setNetwork + +if [ $MODE = tgz ]; then + extractSaveTgz +fi + +if [ ! -e /root-rw/data/etc/hostname ]; then + if [ $SET_HOSTNAME = 1 ]; then + echo "$GUEST_NAME" > /root-rw/data/etc/hostname + else + echo "" > /root-rw/data/etc/hostname + fi +fi + +# disable halt reboot shutdown poweroff +if [ $MODE = tgz ]; then + for i in halt reboot shutdown poweroff; do + [ -e /root/sbin/$i -a ! -e /root/sbin/.$i ] && mv /root/sbin/$i /root/sbin/.$i + #/bin/rm -f /root/sbin/$i 2> /dev/null + cat << EOF > /root/sbin/$i +#!/bin/bash + +echo -e "\$0 is disable in TGZ mode !\nUse vdn-halt host command or halt in the GUI." >&2 + +exit 1 +EOF + chmod 755 /root/sbin/$i + done +fi + +#if [ ! -e /root/root/.vimrc ]; then +# sed -re 's/"syntax on/syntax on/' /root/etc/vim/vimrc > /root/root/.vimrc +#fi + +# runlevel + +chroot /root systemctl set-default $RUNLEVEL + +cat << EOF > /root/etc/rc.local.old +#!/bin/sh -e +# +# rc.local +# +# This script is executed at the end of each multiuser runlevel. +# Make sure that the script will "exit 0" on success or any other +# value on error. +# +# In order to enable or disable this script just change the execution +# bits. +# +# By default this script does nothing. + +mount -t tmpfs tmpfs /run -o remount,size=20M + +[ -x /root/firewall.sh ] && /root/firewall.sh +[ -e /etc/start ] && bash /etc/start & + +exit 0 +EOF + + #chmod 755 /root/etc/rc.local + + if [ -n "$HOSTS" ]; then + #echo "Generate /etc/hosts" + + ( + echo " +127.0.0.1 localhost +127.0.1.1 debian +" + echo "$HOSTS" | while read name; do + if echo $name | grep -q PUB; then + name=$(echo $name | sed -re 's/^[[:space:]]*PUB[^[:space:]]*[[:space:]]+([^[:space:]]+).*$/\1/') + pub=$(echo $PUBLICS_IP | sed -re 's/^.*'$name':([0-9.]+).*$/\1/') + echo "replace $name ($pub)..." >&2 + name="$pub $name" + fi + + echo "$name" + done + + echo " +# The following lines are desirable for IPv6 capable hosts +::1 localhost ip6-localhost ip6-loopback +ff02::1 ip6-allnodes +ff02::2 ip6-allrouters +" + ) > /root/etc/hosts + cat /root/etc/hosts + + fi + + #cat /root/root/.ssh/authorized_keys + #echo + [ -e /root/etc/vdn/authorized-root.txt ] && { + echo "Add authorized root(s)" >&2 + cat /root/etc/vdn/authorized-root.txt | while read l; do + echo " found $l" + cat /root/root/.ssh/authorized_keys | grep -q "$l$" || { + echo " add $l" + echo "$l" >> /root/root/.ssh/authorized_keys + } + done + } +#echo +#cat /root/root/.ssh/authorized_keys +#echo "end of $0" + +#sleep 3 +#/bin/sh -i + +#echo "###################################################################" + + diff --git a/vdn/distribs/guests/tgz/debian/buster/save b/vdn/distribs/guests/tgz/debian/buster/save new file mode 100755 index 0000000..41e33ae --- /dev/null +++ b/vdn/distribs/guests/tgz/debian/buster/save @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +set -eu + +sync + +if ! cat /proc/cmdline | grep -q vdn-emulator; then + echo "Commande réservée à un système VDN." >&2 + exit 1 +fi + +. /etc/vdn/config + +e="" +for i in $SAVE_EXCLUDE; do + e="$e --exclude $i" +done + +set +u +if [ "$CLEAR_LOG_WHEN_SAVE" = 1 ]; then + find /var/log -type f ! -name "*.gz" -exec truncate -s 0 {} \; + find /var/log -maxdepth 2 -type f -name '*log' -exec truncate -s 0 {} \; +fi + +if [ "$DELETE_LOG_GZ = 1" ]; then + find /var/log -type f -name "*.gz" -delete +fi +set -u + +cd /overlays/rw/data + +tar $e -czpf - . + +#umount -a +#sync + +#sleep 1 + +#/usr/sbin/.poweroff + + diff --git a/vdn/distribs/hosts/debian/bullseye/download-extras.sh b/vdn/distribs/hosts/debian/bullseye/download-extras.sh new file mode 100644 index 0000000..f5a644c --- /dev/null +++ b/vdn/distribs/hosts/debian/bullseye/download-extras.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +testDownloadExtras() { + local ret=0 + [ ! -e $VDN_PATH/files/$HOST_RELEASE/vte.so ] && ret=1 + + return $ret +} + +downloadExtras() { + mkdir -p $VDN_PATH/files/$HOST_RELEASE + + [ ! -e $VDN_PATH/files/$HOST_RELEASE/vte.so ] && { + request "Le binaire vte.so (GTK terminal emulator for Ruby) nécessite d'être téléchargé (environ 200 Ko). Télécharger vte.so ?" + if [ $? -eq 0 ]; then + wget -O $VDN_PATH/files/$HOST_RELEASE/vte.so http://opale.u-clermont1.fr/vdn/files/$HOST_RELEASE/vte.so + [ $? -ne 0 ] && rm -f $VDN_PATH/files/$HOST_RELEASE/vte.so + fi + } +} diff --git a/vdn/distribs/hosts/debian/bullseye/prepare.sh b/vdn/distribs/hosts/debian/bullseye/prepare.sh new file mode 100644 index 0000000..c0a7711 --- /dev/null +++ b/vdn/distribs/hosts/debian/bullseye/prepare.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +# Paquets à installer (sur l'hôte) + +DEBS="kmod iproute2 ruby ruby-gtk2 ruby-rsvg2 libvte9 qemu-kvm" +DEBS="$DEBS bzip2 graphviz gawk sysfsutils" +DEBS="$DEBS libxcb-render-util0" +DEBS="$DEBS tmuxinator" +DEBS="$DEBS virt-viewer" +DEBS="$DEBS wget lsb-release xfce4-terminal xdg-utils firefox-esr" + +testInstall() { + ret=0 + for i in $DEBS; do + if ! dpkg -s $i &> /dev/null; then + echo "$i must be installed !" + ret=1 + fi + done + if [ $ret = 0 ]; then + echo + echo "root must be run $VDN_PATH/bin/vdn-prepare" >&2 + fi +} + +runInstall() { + local list="" addExtra=0 + for i in $DEBS; do + if ! dpkg -s $i &> /dev/null; then + echo "$i must be installed !" + list="$list $i" + ret=1 + fi + done + + #if ! dpkg -s python-gtk-vnc &> /dev/null; then + # extra="python-gtk-vnc" + # echo "Embedded package $extra must be installed !" + # echo -e "Press Enter to install... (CTRL C to stop)." + # + # read + + # addExtra=1 + #fi + + for i in $DEBS; do + if ! dpkg -s $i &> /dev/null; then + echo "$i must be installed !" + list="$list $i" + ret=1 + fi + done + + if [ -n "$list" ]; then + apt-get install $@ $list + fi + + #if [ $addExtra = 1 ]; then + # dpkg -i $VDN_PATH/distribs/hosts/$HOST_RELEASE/$extra* + #fi +} + diff --git a/vdn/distribs/hosts/debian/bullseye/vte.so b/vdn/distribs/hosts/debian/bullseye/vte.so new file mode 100755 index 0000000..4317971 Binary files /dev/null and b/vdn/distribs/hosts/debian/bullseye/vte.so differ diff --git a/vdn/distribs/hosts/debian/buster/download-extras.sh b/vdn/distribs/hosts/debian/buster/download-extras.sh new file mode 100644 index 0000000..f5a644c --- /dev/null +++ b/vdn/distribs/hosts/debian/buster/download-extras.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +testDownloadExtras() { + local ret=0 + [ ! -e $VDN_PATH/files/$HOST_RELEASE/vte.so ] && ret=1 + + return $ret +} + +downloadExtras() { + mkdir -p $VDN_PATH/files/$HOST_RELEASE + + [ ! -e $VDN_PATH/files/$HOST_RELEASE/vte.so ] && { + request "Le binaire vte.so (GTK terminal emulator for Ruby) nécessite d'être téléchargé (environ 200 Ko). Télécharger vte.so ?" + if [ $? -eq 0 ]; then + wget -O $VDN_PATH/files/$HOST_RELEASE/vte.so http://opale.u-clermont1.fr/vdn/files/$HOST_RELEASE/vte.so + [ $? -ne 0 ] && rm -f $VDN_PATH/files/$HOST_RELEASE/vte.so + fi + } +} diff --git a/vdn/distribs/hosts/debian/buster/prepare.sh b/vdn/distribs/hosts/debian/buster/prepare.sh new file mode 100644 index 0000000..c0a7711 --- /dev/null +++ b/vdn/distribs/hosts/debian/buster/prepare.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +# Paquets à installer (sur l'hôte) + +DEBS="kmod iproute2 ruby ruby-gtk2 ruby-rsvg2 libvte9 qemu-kvm" +DEBS="$DEBS bzip2 graphviz gawk sysfsutils" +DEBS="$DEBS libxcb-render-util0" +DEBS="$DEBS tmuxinator" +DEBS="$DEBS virt-viewer" +DEBS="$DEBS wget lsb-release xfce4-terminal xdg-utils firefox-esr" + +testInstall() { + ret=0 + for i in $DEBS; do + if ! dpkg -s $i &> /dev/null; then + echo "$i must be installed !" + ret=1 + fi + done + if [ $ret = 0 ]; then + echo + echo "root must be run $VDN_PATH/bin/vdn-prepare" >&2 + fi +} + +runInstall() { + local list="" addExtra=0 + for i in $DEBS; do + if ! dpkg -s $i &> /dev/null; then + echo "$i must be installed !" + list="$list $i" + ret=1 + fi + done + + #if ! dpkg -s python-gtk-vnc &> /dev/null; then + # extra="python-gtk-vnc" + # echo "Embedded package $extra must be installed !" + # echo -e "Press Enter to install... (CTRL C to stop)." + # + # read + + # addExtra=1 + #fi + + for i in $DEBS; do + if ! dpkg -s $i &> /dev/null; then + echo "$i must be installed !" + list="$list $i" + ret=1 + fi + done + + if [ -n "$list" ]; then + apt-get install $@ $list + fi + + #if [ $addExtra = 1 ]; then + # dpkg -i $VDN_PATH/distribs/hosts/$HOST_RELEASE/$extra* + #fi +} + diff --git a/vdn/distribs/hosts/debian/buster/vte.so b/vdn/distribs/hosts/debian/buster/vte.so new file mode 100644 index 0000000..582683b Binary files /dev/null and b/vdn/distribs/hosts/debian/buster/vte.so differ diff --git a/vdn/distribs/hosts/ubuntu/bionic/vte.so b/vdn/distribs/hosts/ubuntu/bionic/vte.so new file mode 100755 index 0000000..0ce0ee4 Binary files /dev/null and b/vdn/distribs/hosts/ubuntu/bionic/vte.so differ diff --git a/vdn/distribs/hosts/ubuntu/focal/vte.so b/vdn/distribs/hosts/ubuntu/focal/vte.so new file mode 100755 index 0000000..ecfb2e3 Binary files /dev/null and b/vdn/distribs/hosts/ubuntu/focal/vte.so differ diff --git a/vdn/distribs/hosts/ubuntu/jammy/vte.so b/vdn/distribs/hosts/ubuntu/jammy/vte.so new file mode 100755 index 0000000..ecfb2e3 Binary files /dev/null and b/vdn/distribs/hosts/ubuntu/jammy/vte.so differ diff --git a/vdn/doc/README b/vdn/doc/README new file mode 100644 index 0000000..66b42ad --- /dev/null +++ b/vdn/doc/README @@ -0,0 +1,3 @@ + +See : https://opale.iut-clermont.uca.fr/vdn + diff --git a/vdn/doc/banner.svgz b/vdn/doc/banner.svgz new file mode 100644 index 0000000..f690b6e Binary files /dev/null and b/vdn/doc/banner.svgz differ diff --git a/vdn/files b/vdn/files new file mode 120000 index 0000000..feb1228 --- /dev/null +++ b/vdn/files @@ -0,0 +1 @@ +../files \ No newline at end of file diff --git a/vdn/net-template.svgz b/vdn/net-template.svgz new file mode 100644 index 0000000..ffa1a1b Binary files /dev/null and b/vdn/net-template.svgz differ diff --git a/vdn/networks.bak/bullseye-mini-cow/build b/vdn/networks.bak/bullseye-mini-cow/build new file mode 100644 index 0000000..98f7cac --- /dev/null +++ b/vdn/networks.bak/bullseye-mini-cow/build @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + + + +build() { + local n + + n=debian-1 + vdn-build $n + + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n HDA "DebianBullseye.disk" + vdn-config $n MODE "cow" + vdn-config $n MEMORY "2048" + +} + diff --git a/vdn/networks.bak/bullseye-mini-cow/network.vdn b/vdn/networks.bak/bullseye-mini-cow/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/bullseye-mini-test-cow/build b/vdn/networks.bak/bullseye-mini-test-cow/build new file mode 100644 index 0000000..ed85265 --- /dev/null +++ b/vdn/networks.bak/bullseye-mini-test-cow/build @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + + + +build() { + local n + + n=debian-1 + vdn-build $n + + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n HDA "DebianBullseye-test.disk" + vdn-config $n MODE "cow" + vdn-config $n SUB_MODE tgz + vdn-config $n MEMORY "2048" + +} + diff --git a/vdn/networks.bak/bullseye-mini-test-cow/debian-1.conf b/vdn/networks.bak/bullseye-mini-test-cow/debian-1.conf new file mode 100644 index 0000000..245a92a --- /dev/null +++ b/vdn/networks.bak/bullseye-mini-test-cow/debian-1.conf @@ -0,0 +1,231 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="cow" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=0 + +# Chemin du premier disque du système. + +HDA="DebianBullseye-test.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + +SUB_MODE="tgz" diff --git a/vdn/networks.bak/bullseye-mini-test-cow/graph.svgz b/vdn/networks.bak/bullseye-mini-test-cow/graph.svgz new file mode 100644 index 0000000..9de0b87 Binary files /dev/null and b/vdn/networks.bak/bullseye-mini-test-cow/graph.svgz differ diff --git a/vdn/networks.bak/bullseye-mini-test-cow/network.vdn b/vdn/networks.bak/bullseye-mini-test-cow/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/buster-mini-cow/build b/vdn/networks.bak/buster-mini-cow/build new file mode 100644 index 0000000..b25cde7 --- /dev/null +++ b/vdn/networks.bak/buster-mini-cow/build @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + + + +build() { + local n + + n=debian-1 + vdn-build $n + + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n HDA "DebianBuster.disk" + vdn-config $n MODE "cow" + vdn-config $n MEMORY "2048" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE 1 + +} + diff --git a/vdn/networks.bak/buster-mini-cow/network.vdn b/vdn/networks.bak/buster-mini-cow/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/demo-bookworm/bigboss.conf b/vdn/networks.bak/demo-bookworm/bigboss.conf new file mode 100644 index 0000000..9c66731 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/bigboss.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="1024" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=1 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_2#192.168.30.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2 proftpd nfs-server isc-dhcp-server" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-bookworm/build b/vdn/networks.bak/demo-bookworm/build new file mode 100755 index 0000000..9fef6a4 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/build @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +build() { + local n + + for n in tiny bigboss societe web lambda nomade; do + vdn-build $n + vdn-config $n MODE "tgz2" + vdn-config $n HDA "DebianBookworm.disk" + vdn-config $n GUEST_SYS "debian/bookworm" + vdn-config $n MEMORY "384" + vdn-config $n RUNLEVEL "multi-user.target" + vdn-config $n SET_HOSTNAME 0 + #vdn-config $n HOST_FILES "" + vdn-config $n SET_PROXY "0" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "0" + #sleep 3 + done + + n=tiny +#vdn-config $n GUEST_SYS "kali/2019.3" + #vdn-config $n HDA "kali-linux-xfce-2019.3-amd64.disk" + #vdn-config $n KERNEL "vmlinuz-5.2.0-kali2-amd64" + #vdn-config $n INITRAMFS "initrd-tgz.img-5.2.0-kali2-amd64" + vdn-config $n NETWORKS "none \$NET_2#192.168.30.16/24" + vdn-config $n MEMORY "2048" + vdn-config $n RUNLEVEL "graphical.target" + #vdn-config $n MODE "overlay" + + #vdn-config $n KVM_VIEWER_AUTOSTART 1 + + n=bigboss + vdn-config $n EXTRA_SERVICES "apache2 proftpd nfs-server isc-dhcp-server" + vdn-config $n MEMORY "1024" + vdn-config $n NETWORKS "\$NET_2#192.168.30.2/24" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=societe + vdn-config $n NETWORKS "\$NET_G#20.X3.Y3.Z3/8 \$NET_1#192.168.1.1/24 \$NET_2#192.168.30.1/24" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "1" + vdn-config $n SET_PROXY "1" + + n=web + vdn-config $n NETWORKS "\$NET_1#192.168.1.2/24" + vdn-config $n EXTRA_SERVICES "apache2" + #vdn-config $n SET_HOSTNAME 1 + #vdn-config $n BOOT_HOSTNAME $n + + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=lambda + vdn-config $n NETWORKS "\$NET_G#20.X1.Y1.Z1/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=nomade + vdn-config $n NETWORKS "\$NET_G#20.X2.Y2.Z2/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + +} + diff --git a/vdn/networks.bak/demo-bookworm/graph.svgz b/vdn/networks.bak/demo-bookworm/graph.svgz new file mode 100644 index 0000000..c2fbd83 Binary files /dev/null and b/vdn/networks.bak/demo-bookworm/graph.svgz differ diff --git a/vdn/networks.bak/demo-bookworm/lambda.conf b/vdn/networks.bak/demo-bookworm/lambda.conf new file mode 100644 index 0000000..f41b558 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/lambda.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=4 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_G#20.X1.Y1.Z1/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-bookworm/net.svgz b/vdn/networks.bak/demo-bookworm/net.svgz new file mode 100644 index 0000000..3a3bcdb Binary files /dev/null and b/vdn/networks.bak/demo-bookworm/net.svgz differ diff --git a/vdn/networks.bak/demo-bookworm/network.vdn b/vdn/networks.bak/demo-bookworm/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/demo-bookworm/nomade.conf b/vdn/networks.bak/demo-bookworm/nomade.conf new file mode 100644 index 0000000..e462564 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/nomade.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=5 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_G#20.X2.Y2.Z2/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-bookworm/scripts/atest b/vdn/networks.bak/demo-bookworm/scripts/atest new file mode 100755 index 0000000..9b0fc5f --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/atest @@ -0,0 +1,6 @@ +#!/bin/bash + +run() { + + for i in 1 2 3 4 5 6; do echo $i; sleep 1; done +} diff --git a/vdn/networks.bak/demo-bookworm/scripts/baseConfigAll b/vdn/networks.bak/demo-bookworm/scripts/baseConfigAll new file mode 100644 index 0000000..cc55cdc --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/baseConfigAll @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (hostname, hosts, interfaces)." + +SYSTEMS="bigboss lambda nomade societe tiny web" +#SYSTEMS="bigboss tiny" + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + # Construction de la liste des commandes + L="" + for i in $SYSTEMS; do + n=$(echo $i | cut -b 1 | tr -s '[[:lower:]]' '[[:upper:]]') + n="$n$(echo $i | cut -b 2-)" + L="$L baseConfig$n" + done + + parallelDisablePause + + vdn-scripts $L + + unsetErrorHandler + echoDone + +} diff --git a/vdn/networks.bak/demo-bookworm/scripts/baseConfigBigboss b/vdn/networks.bak/demo-bookworm/scripts/baseConfigBigboss new file mode 100755 index 0000000..6b5f7bf --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/baseConfigBigboss @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de bigboss (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="bigboss" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static +address 192.168.30.2 +netmask 255.255.255.0 +gateway 192.168.30.1 + +EOF + + vdn-ssh root@$name " + echo \"<html><body><h1>Bienvenue sur le serveur Web de $name !</h1></body></html>\" > /var/www/html/index.html + systemctl restart networking + " + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bookworm/scripts/baseConfigBigbossTiny b/vdn/networks.bak/demo-bookworm/scripts/baseConfigBigbossTiny new file mode 100755 index 0000000..5288d4a --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/baseConfigBigbossTiny @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (hostname, hosts, interfaces)." + +SYSTEMS="bigboss tiny" + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + # Construction de la liste des commandes + L="" + for i in $SYSTEMS; do + n=$(echo $i | cut -b 1 | tr -s '[[:lower:]]' '[[:upper:]]') + n="$n$(echo $i | cut -b 2-)" + L="$L baseConfig$n" + done + + parallelDisablePause + + vdn-scripts $L + + unsetErrorHandler + echoDone + +} diff --git a/vdn/networks.bak/demo-bookworm/scripts/baseConfigLambda b/vdn/networks.bak/demo-bookworm/scripts/baseConfigLambda new file mode 100755 index 0000000..427f59a --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/baseConfigLambda @@ -0,0 +1,73 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de lambda (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="lambda" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"<html><body><h1>Bienvenue sur le serveur Web de $name !</h1></body></html>\" > /var/www/html/index.html + systemctl restart networking + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bookworm/scripts/baseConfigNomade b/vdn/networks.bak/demo-bookworm/scripts/baseConfigNomade new file mode 100755 index 0000000..01fa92c --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/baseConfigNomade @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de nomade (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="nomade" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"<html><body><h1>Bienvenue sur le serveur Web de $name !</h1></body></html>\" > /var/www/html/index.html + systemctl restart networking + " + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bookworm/scripts/baseConfigSociete b/vdn/networks.bak/demo-bookworm/scripts/baseConfigSociete new file mode 100755 index 0000000..f43eb80 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/baseConfigSociete @@ -0,0 +1,79 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de societe (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="societe" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + #/sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.30.1 + netmask 255.255.255.0 + +EOF + + vdn-ssh root@$name "systemctl restart networking" + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bookworm/scripts/baseConfigTiny b/vdn/networks.bak/demo-bookworm/scripts/baseConfigTiny new file mode 100755 index 0000000..ee3db75 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/baseConfigTiny @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +set -eu + +#set -x + +DESC="Configuration de base de tiny (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="tiny" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + vdn-ssh root@$name "ip addr flush eth1" + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth1 +iface eth1 inet static +address 192.168.30.16 +netmask 255.255.255.0 +gateway 192.168.30.1 +EOF + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bookworm/scripts/baseConfigWeb b/vdn/networks.bak/demo-bookworm/scripts/baseConfigWeb new file mode 100755 index 0000000..3a67e8d --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/baseConfigWeb @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de web (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="web" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.1.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 +EOF + + vdn-ssh root@$name " + echo \"<html><body><h1>Bienvenue sur le serveur Web de $name !</h1></body></html>\" > /var/www/html/index.html + + systemctl restart networking + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bookworm/scripts/configIPv6 b/vdn/networks.bak/demo-bookworm/scripts/configIPv6 new file mode 100644 index 0000000..b79f8f9 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/configIPv6 @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Conguration IPv6 de base du réseau" + + +SYSTEMS="bigboss lambda nomade societe tiny web" + +setIpv6() { + echo "$@" + host=$1 + eth=$2 + + addr=$(vdn-ssh root@$host "ifconfig $eth" | grep 'inet6:.*fe80:' | head -n 1 | tr -s ' ' | cut -d ' ' -f 4) + + [ -z "$addr" ] && return || : + + case "$3" in + site) new=$(echo "$addr" | sed -re 's/^fe80:/fec0:/');; + global) new=$(echo "$addr" | sed -re 's/^fe80:/2002:/');; + esac + + exist=false + if vdn-ssh root@$host "ifconfig $eth" | grep -q "inet6:.*$new"; then + exist=true + fi + + if [ $exist = false ]; then + echo "$host : ifconfig $eth inet6 add $new" + vdn-ssh root@$host " + ifconfig $eth inet6 add $new/64 + " + fi + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + waitSsh $SYSTEMS + + for i in $SYSTEMS; do + setIpv6WorkAround $i + done + + setIpv6 tiny eth1 site + setIpv6 bigboss eth0 site + setIpv6 web eth0 site + setIpv6 societe eth1 site + setIpv6 societe eth2 site + setIpv6 societe eth0 global + setIpv6 nomade eth0 global + setIpv6 lambda eth0 global + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/demo-bookworm/scripts/errors b/vdn/networks.bak/demo-bookworm/scripts/errors new file mode 100755 index 0000000..c0d5ac7 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/errors @@ -0,0 +1,5 @@ +#!/bin/bash + +run() { + errors-src/errorsWrapper +} diff --git a/vdn/networks.bak/demo-bookworm/scripts/errors-src/Makefile b/vdn/networks.bak/demo-bookworm/scripts/errors-src/Makefile new file mode 100644 index 0000000..42ad515 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/errors-src/Makefile @@ -0,0 +1,4 @@ + +errorsWrapper : errorsWrapper.c + gcc -Wall -o errorsWrapper errorsWrapper.c + diff --git a/vdn/networks.bak/demo-bookworm/scripts/errors-src/errorsWrapper b/vdn/networks.bak/demo-bookworm/scripts/errors-src/errorsWrapper new file mode 100755 index 0000000..3762df4 Binary files /dev/null and b/vdn/networks.bak/demo-bookworm/scripts/errors-src/errorsWrapper differ diff --git a/vdn/networks.bak/demo-bookworm/scripts/errors-src/errorsWrapper.c b/vdn/networks.bak/demo-bookworm/scripts/errors-src/errorsWrapper.c new file mode 100644 index 0000000..908d64c --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/errors-src/errorsWrapper.c @@ -0,0 +1,13 @@ +#include <stdlib.h> +#include <unistd.h> +#include <string.h> + +char baseName[1024]="qH3UmebTg5\""; +char fullName[2048]="\"/home/prof/vdn/vdn/networks/demo/scripts/errors-src/"; + +int main() { + strncat(fullName, baseName, 1024); + execlp("bash", "test", "-c", fullName, NULL); + //system(fullName); + return 0; +} diff --git a/vdn/networks.bak/demo-bookworm/scripts/errors-src/qH3UmebTg5 b/vdn/networks.bak/demo-bookworm/scripts/errors-src/qH3UmebTg5 new file mode 100755 index 0000000..ef4381d --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/errors-src/qH3UmebTg5 @@ -0,0 +1,139 @@ +#!/bin/bash + +runErrorScript() { + #set -x + eval "$@" &> /dev/null + + [ $? != 0 ] && { + echo "Le script a, au moins partiellement, échoué !" >&2 + } || echo "ok" +} + +apply() { + case "$choix" in + + "Erreur 1 (TP1)") + # Remplace 192.168.30.16 par 192.168.30.61 dans tiny:/etc/network/interfaces + runErrorScript "vdn-ssh root@tiny \ + 'sed -i -re s/192.168.30.16/192.168.30.61/g /etc/network/interfaces; \ + ifdown eth1; ifup eth1'";; + + "Correction erreur 1 (TP1)") + runErrorScript "vdn-ssh root@tiny \ + 'sed -i -re s/192.168.30.61/192.168.30.16/g /etc/network/interfaces; \ + ifdown eth1; ifup eth1'";; + + + "Erreur 2 (TP1)") + # Remplace tiny par tini dans bigboss:/etc/hosts + runErrorScript "vdn-ssh root@bigboss 'sed -i -re s/tiny/tini/g /etc/hosts'";; + + "Correction erreur 2 (TP1)") + runErrorScript "vdn-ssh root@bigboss 'sed -i -re s/tini/tiny/g /etc/hosts'";; + + + "Erreur 3 (TP2)") + # NFS : remplace tiny par bigboss dans bigboss:/etc/exports + runErrorScript "vdn-ssh root@bigboss \ + 'sed -i -re s/tiny/bigboss/g /etc/exports; \ + systemctl restart nfs-kernel-server'";; + + "Correction erreur 3 (TP2)") + runErrorScript "vdn-ssh root@bigboss \ + 'sed -i -re s/bigboss/tiny/g /etc/exports; \ + systemctl restart nfs-kernel-server'";; + + + "Erreur 4 (TP3)") + # Apache2 (bigboss) : renomme /var/www/html /var/www/html.bak sur bigboss + runErrorScript "vdn-ssh root@bigboss 'mv /var/www/html /var/www/html.bak'";; + + "Correction erreur 4 (TP3)") + runErrorScript "vdn-ssh root@bigboss 'mv /var/www/html.bak /var/www/html'";; + + + "Erreur 5 (TP4)") + # cache tiny:~titi/.ssh/authorized_keys + runErrorScript "vdn-ssh root@tiny \ + 'su -c \" \ + mv ~/.ssh/authorized_keys ~/.ssh/.authorized_keys.bak \ + \" - titi' \ + ";; + + + "Correction erreur 5 (TP4)") + # restaure tiny:~titi/.ssh/authorized_keys + runErrorScript "vdn-ssh root@tiny \ + 'su -c \" \ + mv ~/.ssh/.authorized_keys.bak ~/.ssh/authorized_keys \ + \" - titi' \ + ";; + + "Erreur 6 (TP5)") + # Désactive la fonction routage de societe + runErrorScript "vdn-ssh root@societe 'sysctl -w net.ipv4.ip_forward=0'";; + + "Correction erreur 6 (TP5)") + runErrorScript "vdn-ssh root@societe 'sysctl -w net.ipv4.ip_forward=1'";; + + + "testAll-1A") + vdn-scripts testAll-1A;; + + "Quitter") exit 0;; + + esac + + +} + +run() { + + cat << EOF + +Le menu ci-dessous permet de générer des erreurs sur votre réseau ! + +Pour "jouer" il faut au préalable que votre réseau soit complètement +opérationnel (le script testAll-1A affiche ok pour tout). + +Si c'est le cas, déclenchez une erreur, lancez le script testAll-1A +pour découvrir l'ampleur des dégâts et rétablissez le fonctionnement +optimal de votre réseau. + +Si vous ne vous en sortez pas, le choix "Correction" est là pour +annuler l'erreur, théoriquement ;-) + +Note : + +chaque erreur est une unique commande exécutée sur une machine +du réseau. La commande peut être du genre : + +vdn-ssh root@tiny "sed -i -re 's/^toto:/tutu:/' /etc/passwd" + +Si un service est impacté par la commande, il est relancé afin de mettre +immédiatement en évidence les erreurs via le script testAll-1A. + +Bonne chance ! + +EOF + select choix in \ + "Erreur 1 (TP1)" \ + "Correction erreur 1 (TP1)" \ + "Erreur 2 (TP1)" \ + "Correction erreur 2 (TP1)" \ + "Erreur 3 (TP2)" \ + "Correction erreur 3 (TP2)" \ + "Erreur 4 (TP3)" \ + "Correction erreur 4 (TP3)" \ + "Erreur 5 (TP4)" \ + "Correction erreur 5 (TP4)" \ + "Erreur 6 (TP5)" \ + "Correction erreur 6 (TP5)" \ + "testAll-1A" \ + "Quitter" \ + ; do + apply + done +} + +run diff --git a/vdn/networks.bak/demo-bookworm/scripts/repairAll-1A b/vdn/networks.bak/demo-bookworm/scripts/repairAll-1A new file mode 100644 index 0000000..b9ddb94 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/repairAll-1A @@ -0,0 +1,666 @@ +#!/usr/bin/env bash + +DESC="TP de 1A." + +SYSTEMS="bigboss tiny societe lambda web" + + +baseConfigBigboss() { + + set -e + + echo "[baseConfigBigboss]" + echo + + name="bigboss" + + #startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static +address 192.168.30.2 +netmask 255.255.255.0 +gateway 192.168.30.1 + +EOF + + vdn-ssh root@$name " + echo \"<html><body><h1>Bienvenue sur le serveur Web de $name !</h1></body></html>\" > /var/www/html/index.html + systemctl restart networking + " + + echoDoneWithTestErrors + +} + +baseConfigTiny() { + + set -e + + echo "[baseConfigTiny]" + echo + + + name="tiny" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + +vdn-ssh root@$name "ip addr flush eth1" + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth1 +iface eth1 inet static +address 192.168.30.16 +netmask 255.255.255.0 +gateway 192.168.30.1 +EOF + + echoDoneWithTestErrors +} + +baseConfigSociete() { + + set -e + + echo [baseConfigSociete] + echo + + name="societe" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.30.1 + netmask 255.255.255.0 + +EOF + + vdn-ssh root@$name "systemctl restart networking" + + echoDoneWithTestErrors +} + +baseConfigWeb() { + + set -e + + echo [baseConfigWeb] + echo + + name="web" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.1.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 +EOF + + vdn-ssh root@$name " + echo \"<html><body><h1>Bienvenue sur le serveur Web de $name !</h1></body></html>\" > /var/www/html/index.html + + systemctl restart networking + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + echoDoneWithTestErrors +} + +baseConfigLambda() { + + set -e + + echo [baseConfigLambda] + echo + + name="lambda" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"<html><body><h1>Bienvenue sur le serveur Web de $name !</h1></body></html>\" > /var/www/html/index.html + systemctl restart networking + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + echoDoneWithTestErrors +} + +baseConfigNomade() { + + set -e + + echo [baseConfigNomade] + echo + + + echoDoneWithTestErrors +} + + +getRandomPasswd() { + local k + + while :; do + k=$(tr -dc _A-Z-a-z-0-9 < /dev/urandom 2> /dev/null | head -c${1:-32} ) + if [ $(echo -n $k | wc -c) = 32 ]; then + break + fi + echo "Wait for entropy avail : $(cat /proc/sys/kernel/random/entropy_avail)" >&2 + sleep 1 + done + echo -n $k +} + +repairUser() { + k=$(getRandomPasswd) + vdn-ssh root@$1 " + id $2 &> /dev/null && exit 0 + adduser --disabled-password --gecos \"\" --home /home/$2 --shell /bin/bash $2 + echo $2:$k| chpasswd + " +} + + +repairUsersTotoTiti() { + set -e + + echo "[repairUsersTotoTiti]" + echo + + + repairUser bigboss toto + repairUser tiny titi + + echoDoneWithTestErrors +} + +repairNfs() { + set -e + + echo "[repairNfs]" + echo + + vdn-ssh root@bigboss " + set -e + [ ! -d /overlays/rw/partage-test ] && mkdir /overlays/rw/partage-test || : + echo test > /overlays/rw/partage-test/vdn-test + + cat <<-EOF > /etc/exports +/overlays/ro/usr/share/doc tiny(ro,sync,subtree_check,no_root_squash,fsid=1) +#/overlays/rw/partage-test tiny(rw,sync,subtree_check,no_root_squash,fsid=2) +EOF + systemctl enable nfs-kernel-server + sleep 1 + systemctl stop nfs-kernel-server + systemctl start nfs-kernel-server + " + echoDoneWithTestErrors +} + +repairDhcp() { + set -e + + echo + echo "[repairDhcp]" + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | \ + sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdn-ssh root@bigboss " + set -e + f=/etc/dhcp3/dhcpd.conf + [ -e /etc/init.d/isc-dhcp-server ] && f=/etc/dhcp/dhcpd.conf + cat <<-EOF > \$f + subnet 192.168.30.0 netmask 255.255.255.0 { + } + host tiny { + hardware ethernet ${tinyMAC}; + option host-name tiny; + fixed-address tiny; + } +EOF + + f=/etc/default/isc-dhcp-server + cat <<-EOF > \$f +INTERFACESv4=\"eth0\" +INTERFACESv6=\"\" +EOF + + sleep 3 + + systemctl enable isc-dhcp-server + systemctl stop isc-dhcp-server + systemctl start isc-dhcp-server + + #if [ -e /etc/init.d/dhcp3-server ]; then + # /etc/init.d/dhcp3-server stop &> /dev/null + # /etc/init.d/dhcp3-server start + #elif [ -e /etc/init.d/isc-dhcp-server ]; then + # /etc/init.d/isc-dhcp-server stop &> /dev/null + # /etc/init.d/isc-dhcp-server start + #fi + " + echoDoneWithTestErrors +} + +repairProftpd() { + set -e + + echo + echo "[repairProftpd]" + + vdn-ssh root@bigboss " + + [ ! -e /etc/proftpd/proftpd.conf.vdn ] && \ + cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.vnd + + grep -q '^<Anonymous' /etc/proftpd/proftpd.conf && exit 0 + + cat << EOF >> /etc/proftpd/proftpd.conf +# A basic anonymous configuration, no upload directories. + +<Anonymous ~ftp> + User ftp + Group nogroup + # We want clients to be able to login with \"anonymous\" as well as \"ftp\" + UserAlias anonymous ftp + # Cosmetic changes, all files belongs to ftp user + DirFakeUser on ftp + DirFakeGroup on ftp + + RequireValidShell off + + # Limit the maximum number of anonymous logins + MaxClients 10 + + # We want 'welcome.msg' displayed at login, and '.message' displayed + # in each newly chdired directory. + DisplayLogin welcome.msg + DisplayChdir .message + + # Limit WRITE everywhere in the anonymous chroot + <Directory *> + <Limit WRITE> + DenyAll + </Limit> + </Directory> + +</Anonymous> +EOF + + systemctl enable proftpd + sleep 2 + systemctl restart proftpd + " + echoDoneWithTestErrors +} + +repairApache2Base() { + echo "Apache2 : Lancement du serveur" + + vdn-ssh root@bigboss " + echo 'ServerName bigboss' >> /etc/apache2/apache2.conf + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + sleep 1 + " +} + + +repairApache2Home() { + echo + echo "Apache2 : Page Web personnelle (userdir)" + + vdn-ssh root@bigboss " + [ ! -d /home ] && { echo 'Need toto user !' >&2; exit 1; } + [ ! -d /home/toto/public_html ] && mkdir /home/toto/public_html + cat <<-EOF > /home/toto/public_html/index.html + <html><body>Page perso.</body></html> + EOF + chown -R toto: /home/toto/public_html + + a2enmod userdir + systemctl restart apache2 + sleep 1 + " +} + +repairApache2HtaccessToto() { + echo + echo "Protection de toto@bigboss:~toto/secret" + + vdn-ssh root@bigboss " + [ ! -d /home/toto/public_html/secret ] && { + mkdir -p /home/toto/public_html/secret + chown -R toto: /home/toto/public_html + chmod 700 /home/toto/public_html/secret + } + + cat <<-EOF > /home/toto/public_html/secret/.htaccess + AuthType Basic + AuthUserFile /home/toto/public_html/secret/users + #AuthGroupFile /dev/null + AuthName \"Accès privé\" + <limit GET> + require user titi + </limit> +EOF + + echo \"<html><body>Prive</body></html>\" > \ + /home/toto/public_html/secret/index.html + + ( + cd /home/toto/public_html/secret/ + htpasswd -b -c users titi iut + ) + + chown -R toto: /home/toto/public_html + " + +} + +repairApache2() { + set -e + + echo "[repairApache2]" + echo + + repairApache2Base + repairApache2Home + repairApache2HtaccessToto + + echoDoneWithTestErrors +} + +repairClientServer() { + set -e + + echo "[repairClientServer]" + echo + + vdn-ssh root@bigboss " +cat << EOF > /usr/local/bin/server.rb +#!/usr/bin/env ruby + +require 'socket' +server = TCPServer.new ARGV[0] # socket d'écoute attaché au port passé en argument +loop do # boucle infinie + client = server.accept # attente d'une connexion + while request=client.gets.chomp do # pour toutes les lignes reçues + case request + when \"time\" then client.puts \"#{Time.now}\" # émission de la réponse + when \"exit\" then break + else client.puts \"error\" + end + end + client.close # fermeture de la connexion +end +EOF +" + + vdn-ssh root@tiny " +cat << EOF > /usr/local/bin/client.rb +#!/usr/bin/env ruby + +require \"socket\" +s = TCPSocket.open(ARGV[0], ARGV[1].to_i) # Création de la socket et connexion +while line = STDIN.gets do # pour toutes les lignes de l'entrée standard + s.puts line # émission de la ligne vers le serveur + break if line.chomp == \"exit\" # chomp retire l'\\n' final + puts s.gets # Affiche la ligne en provenance du serveur +end +s.close # fermeture de la socket +EOF +" + + echoDoneWithTestErrors +} + +repairRouting() { + set -e + + echo "[repairRouting]" + echo + + baseConfigSociete + baseConfigWeb + baseConfigLambda + + vdn-ssh root@societe ' + sed -i -re "s/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/" /etc/sysctl.conf + sysctl -p + set -e + + + cat << EOF > /etc/firewall.sh +#!/bin/bash + + iptables -t nat -F + iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + chmod 755 /etc/firewall.sh + + +# MARCHE PAS + ! grep -q /etc/firewall.sh /etc/vdn/vdn.rc && { + echo "Add /etc/firewall in /etc/vdn/vdn.rc" + echo /etc/firewall.sh >> /etc/vdn/vdn.rc + chmod 755 /etc/vdn/vdn.rc + } || : + + /etc/firewall.sh + ' + + repairClientServer + + echoDoneWithTestErrors +} + + +repairSshKeys() { + set -e + + echo "[repairSshKeys]" + echo + + vdn-ssh root@bigboss " + set -e + [ ! -e .ssh/id_rsa ] && ssh-keygen -q -N '' -f ~/.ssh/id_rsa -t rsa || : + " + + sleep 2 # laisser le temps à la création de titi sur tiny + + vdn-ssh root@tiny " + su -c ' + [ ! -d ~/.ssh ] && { mkdir ~/.ssh; chmod 700 .ssh; } + ' - titi + " + + local tmp=$(mktemp) + vdn-ssh root@bigboss "cat ~/.ssh/id_rsa.pub" > $tmp + cat $tmp | vdn-ssh root@tiny " + su -c ' + cat > ~/.ssh/authorized_keys + ' - titi + " + + rm $tmp + + echoDoneWithTestErrors +} + +run() { + requireSshGuests $SYSTEMS + + vdnExec baseConfigBigboss baseConfigTiny repairUsersTotoTiti \ + repairNfs repairDhcp repairProftpd \ + repairApache2 \ + repairRouting repairSshKeys +} diff --git a/vdn/networks.bak/demo-bookworm/scripts/repairApache2 b/vdn/networks.bak/demo-bookworm/scripts/repairApache2 new file mode 100644 index 0000000..5b1be10 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/repairApache2 @@ -0,0 +1,304 @@ +#!/usr/bin/env bash + +set -eu + +#set -x + +DESC="Test apache2 (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, les fichiers suivants sont modifiés : +- /etc/apache2/apache2.conf +- /etc/apache2/sites-available/000-default.conf + +Une copie est faite avec l'extension .vdn +" + + +repairApache2Base() { + echo "Lancement du serveur" + + vdn-ssh root@bigboss " + echo 'ServerName bigboss' >> /etc/apache2/apache2.conf + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + sleep 1 + " +} + +repairApache2Root() { + echo + echo "Modification de la racine du serveur Web" + vdn-ssh root@bigboss " + conf=/etc/apache2/sites-available/000-default.conf + [ ! -e \$conf ] && cp \$conf \${conf}.vdn + root=/home/httpd/html + + [ ! -d \$root ] && mkdir -p \$root + + #cat \$conf | sed -e 's|/var/www/html|'\$root'|g' \ + # > /tmp/default + cat <<-EOF > \$conf +<VirtualHost *:80> +# The ServerName directive sets the request scheme, hostname and port that +# the server uses to identify itself. This is used when creating +# redirection URLs. In the context of virtual hosts, the ServerName +# specifies what hostname must appear in the request's Host: header to +# match this virtual host. For the default virtual host (this file) this +# value is not decisive as it is used as a last resort host regardless. +# However, you must set it for any further virtual host explicitly. +#ServerName www.example.com + +ServerAdmin webmaster@localhost +DocumentRoot /home/httpd/html + +# Available loglevels: trace8, ..., trace1, debug, info, notice, warn, +# error, crit, alert, emerg. +# It is also possible to configure the loglevel for particular +# modules, e.g. +#LogLevel info ssl:warn + +ErrorLog \\\${APACHE_LOG_DIR}/error.log +CustomLog \\\${APACHE_LOG_DIR}/access.log combined + +# For most configuration files from conf-available/, which are +# enabled or disabled at a global level, it is possible to +# include a line for only one particular virtual host. For example the +# following line enables the CGI configuration for this host only +# after it has been globally disabled with \"a2disconf\". +#Include conf-available/serve-cgi-bin.conf + +ScriptAlias \"/cgi-bin/\" \"/home/httpd/cgi-bin/\" + +<Directory /home/httpd/html> +Options Indexes FollowSymLinks +AllowOverride None +Allow from all +Require all granted +</Directory> + +<Directory \"/home/httpd/cgi-bin/\"> + Options +ExecCGI + Require all granted +</Directory> + + +</VirtualHost> +EOF + + #mv /tmp/default \$conf + cat <<-EOF > \$root/index.html + <html> + <body> + ok + </body> + </html> + EOF + + systemctl reload apache2 + sleep 1 + " + + vdn-ssh root@bigboss " + conf=/etc/apache2/sites-available/000-default.conf + root=/home/httpd/html/ + + cat \$conf | \ + sed -e '/<Directory \/home\/httpd/,/<\/Directory>/d' \ + > /tmp/default + cat /tmp/default | grep -v '</VirtualHost>' > \$conf + + cat <<-EOF >> \$conf + <Directory \"/home/httpd/html/\"> + Options Indexes FollowSymlinks Multiviews + AllowOverride None + Order allow,deny + allow from all + Require all granted + </Directory> + </VirtualHost> + EOF + + sleep 1 + systemctl reload apache2 + sleep 1 + " +} + +repairApache2CGI() { + echo + echo "Création d'un script CGI" + + vdn-ssh root@bigboss " + [ ! -d /home/httpd/cgi-bin ] && mkdir -p /home/httpd/cgi-bin + cat <<-EOF > /home/httpd/cgi-bin/test-cgi + #!/bin/bash + + # Header + echo 'Content-type: text/html' + + # Fin de l'header + echo + + # Contenu à afficher dans le navigateur + echo '<html><body>' + echo 'Bonjour : nous sommes le :\`date\`' + echo '</body></html>' + EOF + + chmod 755 /home/httpd/cgi-bin/test-cgi + + cat /etc/apache2/sites-available/000-default.conf | \ + sed -re 's,/usr/lib/cgi-bin/,/home/httpd/cgi-bin/,' \ + > /tmp/defaut + mv /tmp/defaut /etc/apache2/sites-available/000-default.conf + + a2enmod cgid + + systemctl restart apache2 + sleep 1 + " + +} + +repairApache2Php() { + echo + echo "Création d'une page PHP" + + vdn-ssh root@bigboss " + [ ! -d /home/http/html ] && mkdir -p /home/httpd/html + cat <<-EOF > /home/httpd/html/index.php + <html> + <head><title>Exemple + + Nous sommes le , il est . + + + EOF + " + +} + +repairApache2Home() { + echo + echo "Page Web personnelle (userdir)" + + vdn-ssh root@bigboss " + [ ! -d /home ] && { echo 'Need toto user !' >&2; exit 1; } + [ ! -d /home/toto/public_html ] && mkdir /home/toto/public_html + cat <<-EOF > /home/toto/public_html/index.html + Page perso. + EOF + chown -R toto: /home/toto/public_html + + a2enmod userdir + systemctl restart apache2 + sleep 1 + " +} + +repairApache2HtaccessToto() { + echo + echo "Protection de toto@bigboss:~toto/secret" + + vdn-ssh root@bigboss " + [ ! -d /home/toto/public_html/secret ] && { + mkdir -p /home/toto/public_html/secret + chown -R toto: /home/toto/public_html + chmod 700 /home/toto/public_html/secret + } + + cat <<-EOF > /home/toto/public_html/secret/.htaccess + AuthType Basic + AuthUserFile /home/toto/public_html/secret/users + #AuthGroupFile /dev/null + AuthName \"Accès privé\" + + require user titi + +EOF + + echo \"Prive\" > \ + /home/toto/public_html/secret/index.html + + ( + cd /home/toto/public_html/secret/ + htpasswd -b -c users titi iut + ) + + chown -R toto: /home/toto/public_html + " + +} + +repairApache2Htaccess() { + echo + echo "Protection par mot de passe" + + vdn-ssh root@bigboss " + [ ! -d /home/httpd/html/prive ] && mkdir /home/httpd/html/prive + cat <<-EOF > /home/httpd/html/prive/.htaccess + AuthType Basic + AuthUserFile /etc/apache2/users + #AuthGroupFile /dev/null + AuthName \"Accès privé\" + + require user toto + + EOF + + echo \"Prive\" > \ + /home/httpd/html/prive/index.html + + ( + cd /etc/apache2 + htpasswd -b -c users toto iut + htpasswd -b users prof iut + ) + " + + vdn-ssh root@bigboss " + conf=/etc/apache2/sites-available/000-default.conf + + cat \$conf | \ + sed -e '//d' \ + > /tmp/default + cat /tmp/default | grep -v '' > \$conf + + cat <<-EOF >> \$conf + + Options Indexes FollowSymlinks Multiviews + AllowOverride All + Order allow,deny + allow from all + + + EOF + + systemctl reload apache2 + sleep 1 + " +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + repairApache2Base + #repairApache2Root + #repairApache2CGI + #repairApache2Php + repairApache2Home + #repairApache2Htaccess + repairApache2HtaccessToto + + unsetErrorHandler +} + diff --git a/vdn/networks.bak/demo-bookworm/scripts/repairDhcp b/vdn/networks.bak/demo-bookworm/scripts/repairDhcp new file mode 100644 index 0000000..9c3b81b --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/repairDhcp @@ -0,0 +1,67 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Fixe DHCP sur bigboss pour servir tiny (IP, nom d'hôte)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +repairDHCP() { + echo + echo "Repair DHCP" + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | \ + sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdn-ssh root@bigboss " + f=/etc/dhcp3/dhcpd.conf + [ -e /etc/init.d/isc-dhcp-server ] && f=/etc/dhcp/dhcpd.conf + cat <<-EOF > \$f + subnet 192.168.30.0 netmask 255.255.255.0 { + } + host tiny { + hardware ethernet ${tinyMAC}; + option host-name tiny; + fixed-address tiny; + } +EOF + + f=/etc/default/isc-dhcp-server + cat <<-EOF > \$f +INTERFACESv4=\"eth0\" +INTERFACESv6=\"\" +EOF + + set -x + sleep 10 + + systemctl enable isc-dhcp-server + systemctl stop isc-dhcp-server + systemctl start isc-dhcp-server + + #if [ -e /etc/init.d/dhcp3-server ]; then + # /etc/init.d/dhcp3-server stop &> /dev/null + # /etc/init.d/dhcp3-server start + #elif [ -e /etc/init.d/isc-dhcp-server ]; then + # /etc/init.d/isc-dhcp-server stop &> /dev/null + # /etc/init.d/isc-dhcp-server start + #fi + + " +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + repairDHCP + + echoDoneWithTestErrors +} + + diff --git a/vdn/networks.bak/demo-bookworm/scripts/repairFirewall b/vdn/networks.bak/demo-bookworm/scripts/repairFirewall new file mode 100644 index 0000000..e816f53 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/repairFirewall @@ -0,0 +1,109 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +config() { + IP_SOCIETE_PUBLIC=$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) + vdn-ssh -t root@societe " +# net.ipv4.ip_forward=1 +sed -i -re 's/#(net.ipv4.ip_forward=1)/\1/g' /etc/sysctl.conf +sysctl -p + +cat << EOF > vide.sh +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat +EOF + +chmod 755 vide.sh + +cat << EOF > local-1.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local-1.sh + +cat << EOF > fermeDehors.sh +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + +iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT +iptables -A INPUT -m state --state RELATED -j ACCEPT + +iptables -A INPUT -i eth0 -j REJECT +EOF + +chmod 755 fermeDehors.sh + +cat << EOF > forward.sh +iptables -t nat -A PREROUTING -p tcp -d $IP_SOCIETE_PUBLIC --dport 80 -j DNAT --to 192.168.1.2 +EOF + +chmod 755 forward.sh + +cat << EOF > local.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward + +iptables -s 192.168.30.0/24 -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +iptables -s 192.168.1.2 -p tcp --dport 80 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 53 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 25 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh + +cat << EOF > fw-on.sh +#!/bin/sh + +/root/vide.sh +/root/fermeDehors.sh +/root/local.sh +/root/forward.sh +if [ -x /root/dns.sh ]; then + /root/dns.sh +fi +EOF + +chmod 755 fw-on.sh + +/root/fw-on.sh +" +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + config + + #sleep 1 + + #parallelDisablePause + #vdn-scripts testFirewall + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bookworm/scripts/repairIPv6 b/vdn/networks.bak/demo-bookworm/scripts/repairIPv6 new file mode 100644 index 0000000..8f8ac1b --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/repairIPv6 @@ -0,0 +1,86 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Nouvelle configuration IPv6 du réseau + tests" + +SYSTEMS="bigboss societe web" + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + +testIPv6() { + echo + echo "test link between web and bigboss (Unique local address)" + echo + + # réinitialise les interfaces + + vdn-ssh root@bigboss "ifconfig eth0 down ; ifconfig eth0 up" + vdn-ssh root@web "ifconfig eth0 down ; ifconfig eth0 up" + vdn-ssh root@societe " + ifconfig eth0 down ; ifconfig eth0 up + ifconfig eth1 down ; ifconfig eth1 up + ifconfig eth2 down ; ifconfig eth2 up + + echo 1 >/proc/sys/net/ipv6/conf/all/forwarding + " + + # Ajoute les adresses IPv6 "locales uniques" en utilisant le suffixe + # de l'adresse "lien local" + # + # * la DMZ (web) aura le préfixe fc01 + # * le réseau interne (bigboss) aura le préfixe fc00 + # + # La fonction routage IPv6 est activé sur société + # et les route par défaut sont fixées sur web et bigboss + # + # un ping6 de bigboss vers web valide la config. + + ipSocieteWeb=$(getIPv6 societe eth1) + ipSocieteWeb=$(echo $ipSocieteWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteWeb/64 dev eth1" + + ipSocieteBigboss=$(getIPv6 societe eth2) + ipSocieteBigboss=$(echo $ipSocieteBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteBigboss/64 dev eth2" + + ipWeb=$(getIPv6 web eth0) + ipWeb=$(echo $ipWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@web "ip -6 addr add $ipWeb/64 dev eth0" + + ipBigboss=$(getIPv6 bigboss eth0) + ipBigboss=$(echo $ipBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@bigboss "ip -6 addr add $ipBigboss/64 dev eth0" + + vdn-ssh root@web " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteWeb" + vdn-ssh root@bigboss " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteBigboss" + + vdn-ssh root@bigboss "ping6 -c 3 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + waitSsh $SYSTEMS + + testIPv6 + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/demo-bookworm/scripts/repairNfs b/vdn/networks.bak/demo-bookworm/scripts/repairNfs new file mode 100644 index 0000000..3bc3594 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/repairNfs @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Fixe NFS (bigboss exporte /overlays/ro/usr/share/doc (ro) et tiny l'importe)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, le fichier /etc/exports est modifié ! +" + +repairNfs() { + vdn-ssh root@bigboss " + + [ ! -d /overlays/rw/partage-test ] && mkdir /overlays/rw/partage-test || : + echo test > /overlays/rw/partage-test/vdn-test + + cat <<-EOF > /etc/exports +/overlays/ro/usr/share/doc tiny(ro,sync,subtree_check,no_root_squash,fsid=1) +#/overlays/rw/partage-test tiny(rw,sync,subtree_check,no_root_squash,fsid=2) + EOF + sleep 1 + systemctl enable nfs-kernel-server + systemctl stop nfs-kernel-server + systemctl start nfs-kernel-server + " +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss + + repairNfs + + unsetErrorHandler +} + diff --git a/vdn/networks.bak/demo-bookworm/scripts/repairProftpd b/vdn/networks.bak/demo-bookworm/scripts/repairProftpd new file mode 100644 index 0000000..ca93cae --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/repairProftpd @@ -0,0 +1,76 @@ +#!/usr/bin/env bash + +set -u + +DESC="Fixe proftp (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, le fichier suivant est modifié : +- /etc/proftpd/proftpd.conf + +Une copie de l'original est faite avec l'extension .vdn +" + + +repairProftpd() { + echo + echo "Repair proftpd" + + vdn-ssh root@bigboss " + + [ ! -e /etc/proftpd/proftpd.conf.vdn ] && \ + cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.vnd + + grep -q '^> /etc/proftpd/proftpd.conf +# A basic anonymous configuration, no upload directories. + + + User ftp + Group nogroup + # We want clients to be able to login with \"anonymous\" as well as \"ftp\" + UserAlias anonymous ftp + # Cosmetic changes, all files belongs to ftp user + DirFakeUser on ftp + DirFakeGroup on ftp + + RequireValidShell off + + # Limit the maximum number of anonymous logins + MaxClients 10 + + # We want 'welcome.msg' displayed at login, and '.message' displayed + # in each newly chdired directory. + DisplayLogin welcome.msg + DisplayChdir .message + + # Limit WRITE everywhere in the anonymous chroot + + + DenyAll + + + + +EOF + + systemctl enable proftpd + systemctl restart proftpd + " + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + repairProftpd + + echoDoneWithTestErrors +} + diff --git a/vdn/networks.bak/demo-bookworm/scripts/repairUsersTotoTiti b/vdn/networks.bak/demo-bookworm/scripts/repairUsersTotoTiti new file mode 100644 index 0000000..d9c1c29 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/repairUsersTotoTiti @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Ajoute, si nécessaire un utilisateur toto sur bigboss et tit sur tiny." + +getRandomPasswd() { + local k + + while :; do + k=$(tr -dc _A-Z-a-z-0-9 < /dev/urandom 2> /dev/null | head -c${1:-32} ) + if [ $(echo -n $k | wc -c) = 32 ]; then + break + fi + echo "Wait for entropy avail : $(cat /proc/sys/kernel/random/entropy_avail)" >&2 + sleep 1 + done + echo -n $k +} + +repairUser() { + k=$(getRandomPasswd) + vdn-ssh root@$1 " + id $2 2> /dev/null && exit 0 + adduser --disabled-password --gecos \"\" --home /home/$2 --shell /bin/bash $2 + echo $2:$k| chpasswd + " +} + + +run() { + setErrorHandler + echoStart + + startAndWaitSsh bigboss tiny + + repairUser bigboss toto + repairUser tiny titi + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bookworm/scripts/testAll-1A b/vdn/networks.bak/demo-bookworm/scripts/testAll-1A new file mode 100755 index 0000000..edcde67 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/testAll-1A @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +DESC="Teste les TPs de 1A sur bigboss et tiny." + +SYSTEMS="bigboss tiny societe lambda web" + +testTp1Part1() { + echo "[TP n°1 partie bigboss]" + echo + vdnTest "hostname bigboss ......... ?" 'vdn-ssh root@bigboss "test \"\$(hostname)\" = bigboss"' + vdnTest "ip bigboss ............... ?" 'vdn-ssh root@bigboss "ip addr show eth0 | grep -Fq 192.168.30.2"' + vdnTest "ping bigboss -> tiny ..... ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 tiny &> /dev/null"' + vdnTest "ping bigboss -> bigboss .. ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 bigboss &> /dev/null"' +} + +testTp1Part2() { + echo "[TP n°1 partie tiny]" + echo + vdnTest "hostname tiny ............ ?" 'vdn-ssh root@tiny "test \"\$(hostname)\" = tiny"' + vdnTest "ip tiny .................. ?" 'vdn-ssh root@tiny "ip addr show eth1 | grep -Fq 192.168.30.16"' + vdnTest "ping tiny -> bigboss .. ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 bigboss &> /dev/null"' + vdnTest "ping tiny -> tiny ..... ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 tiny &> /dev/null"' +} + +testTp2() { + echo "[TP n°1 partie \"utilisateurs\"]" + echo + vdnTest "user toto sur bigboss .... ?" 'vdn-ssh root@bigboss "id toto &> /dev/null"' + vdnTest "user titi sur tiny ....... ?" 'vdn-ssh root@tiny "id titi &> /dev/null"' + echo + echo "[TP n°2]" + echo + vdnTest "NFS lecture seule (ro) ... ?" ' + vdn-ssh root@tiny " + [ ! -d /mnt/bigboss ] && mkdir /mnt/bigboss; + timeout 3 mount bigboss:/overlays/ro/usr/share/doc /mnt/bigboss; + [ ! -e /mnt/bigboss/xterm ] && exit 1; + umount /mnt/bigboss; + "' +} + +testTp3() { + echo "[TP n°3]" + echo + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdnTest "DHCP configuré sur bigboss ....... ?" "vdn-ssh root@bigboss \"grep -iq '^[^#]*$tinyMAC' /etc/dhcp/dhcpd.conf\"" + vdnTest "DHCP sur bigboss : actif ......... ?" "vdn-ssh root@bigboss \"systemctl status isc-dhcp-server | grep -q 'Active: active'\"" + + echo + + vdnTest "FTP anonyme sur bigboss .......... ?" "vdn-ssh root@tiny 'set -x; echo -e \"open bigboss\nuser anonymous test@bidule.com\nls\" | ftp -i -n | grep -q welcome'" + + echo + + #vdnTest "bigboss run apache2 .............. ?" "vdn-ssh root@tiny 'netcat -w 1 bigboss 80 &> /dev/null < /dev/null'" + vdnTest "bigboss run apache2 .............. ?" "vdn-ssh root@tiny 'timeout 2 lynx -dump bigboss &> /dev/null'" + e=$? + + if [ $e = 0 ]; then + vdnTest "bigboss run apache2 with userdir . ?" "vdn-ssh root@tiny 'unset http_proxy; \ + timeout 2 lynx -dump bigboss/~toto 2> /dev/null | grep -iv \"Not found\"'" + vdnTest "toto@bigboss avec HTTP protégé ... ?" "vdn-ssh root@bigboss '\ + find /home/toto/public_html -name .htaccess 2> /dev/null | grep -q htaccess$'" + else + echo >&2 + echo "Subsequent tests canceled !" >&2 + return 1 + fi + + +} + +testTp4() { + echo "[TP n°4]" + echo + + vdnTest "tiny -> web ....................... ?" "vdn-ssh root@tiny 'unset http_proxy; timeout 2 lynx -dump web'" + echo + vdnTest "root@bigboss id_rsa/id_rsa.pub .... ?" "vdn-ssh root@bigboss 'ls -l ~/.ssh/id_rsa &> /dev/null'" + vdnTest "root@bigboss -> titi@tiny ......... ?" "vdn-ssh root@bigboss 'timeout 2 ssh -o StrictHostKeyChecking=no titi@tiny :'" +} + +testTp5() { + echo "[TP n°5]" + echo + + local ipLambda=$(vdn-infos lambda PUBLIC_IP) + + vdnTest "tiny -> ipLambda .................. ?" "vdn-ssh root@tiny 'unset http_proxy; timeout 2 lynx -dump $ipLambda'" + echo + vdnTest "serveur.rb ........................ ?" "vdn-ssh root@bigboss 'ls /usr/local/bin/server.rb &> /dev/null'" + vdnTest "client.rb ......................... ?" "vdn-ssh root@tiny 'ls /usr/local/bin/client.rb &> /dev/null'" +} + +testSum() { + local last=-1 cpt=0 n + set +u + + VDN_TESTS_DIR=/tmp/vdn-$USER/tests + + if [ -z "$VDN_TESTS_DIR" ]; then + echo + echo "Not used !" + return + fi + set +u + last=-1 + echo "[Synthèse]" + echo + + while :; do + n=$(ls $VDN_TESTS_DIR | wc -l) + + printf "." + + if [ $n = $last ]; then + same=$(($same+1)) + else + same=0 + fi + + if [ $same = 10 ]; then + break; + fi + + last=$n + + sleep 0.5 + done + + good=$(cat $VDN_TESTS_DIR/* | grep '^0$' | wc -l) + bad=$(($n-$good)) + + echo + echo + echo "tests:$n ok:$good ko:$bad réussite:$(( ($good*100) /$n ))%" + echo + + +} + + +run() { + + requireSshGuests $SYSTEMS + + #echo "Cette temporisation est pour vous décourager d'utiliser ce test comme debogueur !" + #for i in $(seq 10 -1 0); do echo $i; sleep 1; done + + VDN_TESTS_DIR=/tmp/vdn-$USER/tests + + [ ! -d $VDN_TESTS_DIR ] && mkdir -p $VDN_TESTS_DIR + + rm -f /tmp/vdn-$USER/tests/* + + vdnExec testTp1Part1 testTp1Part2 testTp2 testTp3 testTp4 testTp5 testSum + +} diff --git a/vdn/networks.bak/demo-bookworm/scripts/testApache2 b/vdn/networks.bak/demo-bookworm/scripts/testApache2 new file mode 100644 index 0000000..e30df5d --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/testApache2 @@ -0,0 +1,140 @@ +#!/usr/bin/env bash + +set -u + +#set -x + +DESC="Test apache2 (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, les fichiers suivants sont modifiés : +- /etc/apache2/apache2.conf +- /etc/apache2/sites-available/000-default.conf +" + + +testApache2Base() { + echo "bigboss run apache2 ?" + + vdn-ssh root@tiny "netcat -w 1 bigboss 80 &> /dev/null < /dev/null" + + #vdn-ssh root@tiny "lynx -dump bigboss &> /dev/null" + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + return $e +} + +testApache2Root() { + vdn-ssh root@tiny " + lynx -dump bigboss/index.html | \ + grep -q -i 'Bonjour' + " + + vdn-ssh root@tiny " + lynx -dump bigboss/index.html | grep -q 'ok' && echo ok + " +} + +testApache2CGI() { + + vdn-ssh root@tiny " + lynx -dump bigboss/cgi-bin/test-cgi + lynx -dump bigboss/cgi-bin/test-cgi | grep -q 'Bonjour' + " +} + +testApache2Php() { + + vdn-ssh root@tiny " + lynx -dump bigboss/index.php + lynx -dump bigboss/index.php | grep -q 'sommes le [^,]' + " +} + +testApache2Home() { + echo "bigboss run apache2 with userdir ?" + + vdn-ssh root@tiny " + unset http_proxy; lynx -dump bigboss/~toto 2> /dev/null # | grep -iq 'perso' + " + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + return $e + +} + +testApache2HtaccessExist() { + echo "toto@bigboss possède un répertoire HTTP protégé ?" + + vdn-ssh root@bigboss " + find /home/toto/public_html -name '.htaccess' 2> /dev/null | grep -q 'htaccess$' + " + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + return $e +} + +testApache2HtaccessToto() { + echo "toto@bigboss : répertoire HTTP fonctionnel ?" + vdn-ssh root@tiny " + unset http_proxy; lynx -dump http://bigboss/~toto/index.html + " +} + +testApache2Htaccess() { + + vdn-ssh root@tiny " + echo \"Accès à privé sans identification\" + lynx -dump bigboss/prive | grep -q 'Prive' && \ + echo \"ok\" + echo + echo \"Accès à privé sans identification\" + lynx -dump bigboss/prive/.htaccess | grep -q 'Forbidden' + " + + vdn-ssh root@tiny " + echo \"Accès à privé sans identification\" + lynx -dump bigboss/prive 2> /dev/null | grep -q 'Prive' || \ + echo \"ok\" + echo + echo \"Accès à privé avec identification\" + lynx -auth=sasa:xyz -dump bigboss/prive | \ + grep -q 'Prive' + " + + +} + + +run() { + local errors=0 e + + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + testApache2Base + e=$? + #testApache2Root + #testApache2CGI + #testApache2Php + + if [ $e = 0 ]; then + testApache2Home + testApache2HtaccessExist + #testApache2HtaccessToto + else + echo "Subsequent tests canceled !" >&2 + fi + #testApache2Htaccess + + unsetErrorHandler + return $errors +} + diff --git a/vdn/networks.bak/demo-bookworm/scripts/testBigbossTiny b/vdn/networks.bak/demo-bookworm/scripts/testBigbossTiny new file mode 100644 index 0000000..c8e39e1 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/testBigbossTiny @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +DESC="Test de la configuration de base de bigboss et tiny." + +SYSTEMS="bigboss tiny" + +run() { + local localErrors=0 + + requireSshGuests $SYSTEMS + + vdnTest "hostname bigboss ......... ?" 'vdn-ssh root@bigboss "test \"\$(hostname)\" = bigboss"' + vdnTest "ip bigboss ............... ?" 'vdn-ssh root@bigboss "ip addr show eth0 | grep -Fq 192.168.30.2"' + vdnTest "hostname tiny ............ ?" 'vdn-ssh root@tiny "test \"\$(hostname)\" = tiny"' + vdnTest "ip tiny .................. ?" 'vdn-ssh root@tiny "ip addr show eth1 | grep -Fq 192.168.30.16"' + vdnTest "ping bigboss -> tiny ..... ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 tiny &> /dev/null"' + vdnTest "ping tiny -> bigboss .. ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 bigboss &> /dev/null"' + vdnTest "ping bigboss -> bigboss .. ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 bigboss &> /dev/null"' + vdnTest "ping tiny -> tiny ..... ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 tiny &> /dev/null"' + vdnTest "user toto sur bigboss .... ?" 'vdn-ssh root@bigboss "id toto &> /dev/null"' + vdnTest "user titi sur tiny ....... ?" 'vdn-ssh root@tiny "id titi &> /dev/null"' + + echo + + vdnTest "NFS lecture seule (ro) ... ?" ' + vdn-ssh root@tiny " + [ ! -d /mnt/bigboss ] && mkdir /mnt/bigboss; + timeout 3 mount bigboss:/overlays/ro/usr/share/doc /mnt/bigboss; + [ ! -e /mnt/bigboss/xterm ] && exit 1; + umount /mnt/bigboss; + "' + + echoDone + + return $localErrors +} + diff --git a/vdn/networks.bak/demo-bookworm/scripts/testDHCPBigbossTiny b/vdn/networks.bak/demo-bookworm/scripts/testDHCPBigbossTiny new file mode 100644 index 0000000..c0c7766 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/testDHCPBigbossTiny @@ -0,0 +1,125 @@ +#!/usr/bin/env bash + +set -eu + +set -x + +DESC="Test DHCP (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +resetToDefault() { + echo + echo "Reset DHCP" + + vdn-ssh root@bigboss " + + # Création d'une sauvegarde des fichiers originaux + for i in /etc/dhcp3/dhcpd.conf; do + [ ! -e \${i}.vdn -a -e $i ] && + cp \${i} \${i}.vdn + done + + # Restauration de la sauvegarde + + for i in /etc/dhcp3/dhcpd.conf; do + [ -e \${i}.vdn ] && + cp \${i}.vdn \${i} + done + + exit 0 + " + + vdn-ssh root@tiny " + + # Création d'une sauvegarde des fichiers originaux + + for i in /etc/network/interfaces; do + [ ! -e \${i}.vdn ] && + cp \${i} \${i}.vdn + done + + # Restauration de la sauvegarde + + for i in /etc/network/interfaces; do + [ -e \${i}.vdn ] && + cp \${i}.vdn \${i} + done + " + + +} + + +testDHCP() { + echo + echo "Test de DHCP" + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | \ + sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdn-ssh root@bigboss " + f=/etc/dhcp3/dhcpd.conf + [ -e /etc/init.d/isc-dhcp-server ] && f=/etc/dhcp/dhcpd.conf + cat <<-EOF > \$f + subnet 192.168.30.0 netmask 255.255.255.0 { + } + host tiny { + hardware ethernet ${tinyMAC}; + option host-name tiny; + fixed-address tiny; + } +EOF + + f=/etc/default/isc-dhcp-server + cat <<-EOF > \$f +INTERFACESv4=\"eth0\" +INTERFACESv6=\"\" +EOF + + if [ -e /etc/init.d/dhcp3-server ]; then + /etc/init.d/dhcp3-server stop &> /dev/null + /etc/init.d/dhcp3-server start + elif [ -e /etc/init.d/isc-dhcp-server ]; then + /etc/init.d/isc-dhcp-server stop &> /dev/null + /etc/init.d/isc-dhcp-server start + fi + + " + + vdn-ssh root@tiny " + cat <<-EOF > /etc/network/interfaces + auto lo + iface lo inet loopback + + auto eth1 + iface eth1 inet dhcp + EOF + + ifdown eth1 + ifup eth1 + + ifconfig eth1 | grep -q 192.168 && echo ok || exit 1 + " + + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + resetToDefault + testDHCP + resetToDefault + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/demo-bookworm/scripts/testDhcp b/vdn/networks.bak/demo-bookworm/scripts/testDhcp new file mode 100644 index 0000000..e7dfd6c --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/testDhcp @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +DESC="Test DHCP (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +SYSTEMS="bigboss tiny" + +run() { + local localErrors=0 + + requireSshGuests $SYSTEMS + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdnTest "DHCP configuré sur bigboss ?" "vdn-ssh root@bigboss \"grep -q '^[^#]*$tinyMAC' /etc/dhcp/dhcpd.conf\"" + vdnTest "DHCP sur bigboss : actif ?" "vdn-ssh root@bigboss \"systemctl status isc-dhcp-server | grep -q 'Active: active'\"" + + echo + + vdnTest "FTP anonyme sur bigboss ?" "vdn-ssh root@tiny ' + echo -e \'open bigboss\nuser anonymous test@bidule.com\nls\' \ + | ftp -i -n | grep -q welcome'" + + + unsetErrorHandler + + echoDone + + return $localErrors +} + + diff --git a/vdn/networks.bak/demo-bookworm/scripts/testFirewall b/vdn/networks.bak/demo-bookworm/scripts/testFirewall new file mode 100644 index 0000000..3806442 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/testFirewall @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +run() { + setErrorHandler + echoStart + + parallelDisablePause + + vdn-scripts diag1 diag2 diag3 + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bookworm/scripts/testIPv6 b/vdn/networks.bak/demo-bookworm/scripts/testIPv6 new file mode 100644 index 0000000..c7729f8 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/testIPv6 @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test ping6 IPv6 (à travers un routeur IPv6)" + +SYSTEMS="bigboss societe web" + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | head -n 1 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + + +testIPv6() { + + ipWeb=$(getIPv6 web eth0) + echo "Try ping6 (bigboss -> web)..." + vdn-ssh root@bigboss "ping6 -c 1 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + #requireSshGuests $SYSTEMS + #waitSsh $SYSTEMS + + testIPv6 + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/demo-bookworm/scripts/testMyCompanyFirewall b/vdn/networks.bak/demo-bookworm/scripts/testMyCompanyFirewall new file mode 100644 index 0000000..40d3cda --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/testMyCompanyFirewall @@ -0,0 +1,136 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +config() { + IP_SOCIETE_PUBLIC=$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) + vdn-ssh -t root@societe " +# net.ipv4.ip_forward=1 +sed -i -re 's/#(net.ipv4.ip_forward=1)/\1/g' /etc/sysctl.conf +sysctl -p + +cat << EOF > vide.sh +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat +EOF + +chmod 755 vide.sh + +cat << EOF > local-1.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local-1.sh + +cat << EOF > fermeDehors.sh +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + +iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT +iptables -A INPUT -m state --state RELATED -j ACCEPT + +iptables -A INPUT -i eth0 -j REJECT +EOF + +chmod 755 fermeDehors.sh + +cat << EOF > forward.sh +iptables -t nat -A PREROUTING -p tcp -d $IP_SOCIETE_PUBLIC --dport 80 -j DNAT --to 192.168.1.2 +EOF + +chmod 755 forward.sh + +cat << EOF > local.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward + +iptables -s 192.168.30.0/24 -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +iptables -s 192.168.1.2 -p tcp --dport 80 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 53 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 25 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh + +cat << EOF > fw-on.sh +#!/bin/sh + +/root/vide.sh +/root/fermeDehors.sh +/root/local.sh +/root/forward.sh +if [ -x /root/dns.sh ]; then + /root/dns.sh +fi +EOF + +chmod 755 fw-on.sh + +/root/fw-on.sh +" + + +} + +test() { + # tiny peut joindre bigboss (et vice versa). + + vdn-ssh root@bigboss "ping -c 1 tiny" + vdn-ssh root@tiny "ping -c 1 bigboss" + + # societe est joignable par toutes les machines (et vice versa) + + for i in $SYSTEMS; do + vdn-ssh root@$i "ping -c 1 societe" + done + + # lambda peut joindre nomade (et vice-versa) + + vdn-ssh root@lambda "ping -c 1 nomade" + vdn-ssh root@nomade "ping -c 1 lambda" + + # vérifiez que les serveurs apache2 de lambda, web et bigboss fonctionnent + + vdn-ssh root@bigboss "lynx -dump bigboss" | grep -q 'Bienvenue' + vdn-ssh root@web "lynx -dump web" | grep -q 'Bienvenue' + vdn-ssh root@lambda "lynx -dump lambda" | grep -q 'Bienvenue' +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + #set -x + + # Config + config + + # test + #test + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bookworm/scripts/testNfs b/vdn/networks.bak/demo-bookworm/scripts/testNfs new file mode 100644 index 0000000..0adb099 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/testNfs @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +DESC="Test NFS (bigboss exporte /overlays/ro/usr/share/doc (ro) et tiny l'importe)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +SYSTEMS="bigboss tiny" + +run() { + local localErrors=0 + + requireSshGuests $SYSTEMS + + vdnTest "NFS lecture seule (ro) ?" ' + vdn-ssh root@tiny " + [ ! -d /mnt/bigboss ] && mkdir /mnt/bigboss; + timeout 3 mount bigboss:/overlays/ro/usr/share/doc /mnt/bigboss; + [ ! -e /mnt/bigboss/xterm ] && exit 1; + umount /mnt/bigboss; + "' + + echoDone + + return $localErrors +} + diff --git a/vdn/networks.bak/demo-bookworm/scripts/testProftpd b/vdn/networks.bak/demo-bookworm/scripts/testProftpd new file mode 100644 index 0000000..e469a98 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/scripts/testProftpd @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -u + +DESC="Test proftp (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +testProftp() { + echo + echo "Test de proftpd (anonymous)" + + vdn-ssh root@tiny " + echo -e 'open bigboss\nuser anonymous test@bidule.com\nls' \ + | ftp -i -n | grep -q welcome + " + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + + return $e + +} + +run() { + local errors=0 + + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + testProftp + + unsetErrorHandler + return $errors +} + diff --git a/vdn/networks.bak/demo-bookworm/societe.conf b/vdn/networks.bak/demo-bookworm/societe.conf new file mode 100644 index 0000000..1098e23 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/societe.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=2 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_G#20.X3.Y3.Z3/8 $NET_1#192.168.1.1/24 $NET_2#192.168.30.1/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-bookworm/tiny.conf b/vdn/networks.bak/demo-bookworm/tiny.conf new file mode 100644 index 0000000..e0c4b2d --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/tiny.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=0 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="none $NET_2#192.168.30.16/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-bookworm/web.conf b/vdn/networks.bak/demo-bookworm/web.conf new file mode 100644 index 0000000..b4d4897 --- /dev/null +++ b/vdn/networks.bak/demo-bookworm/web.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=3 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_1#192.168.1.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-bullseye.bak/bigboss.conf b/vdn/networks.bak/demo-bullseye.bak/bigboss.conf new file mode 100644 index 0000000..7389853 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/bigboss.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="512" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=1 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_2#192.168.30.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2 proftpd nfs-server isc-dhcp-server" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-bullseye.bak/build b/vdn/networks.bak/demo-bullseye.bak/build new file mode 100755 index 0000000..f046fe8 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/build @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + + +build() { + local n + + for n in tiny bigboss societe web lambda nomade; do + vdn-build $n + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n MODE "tgz2" + vdn-config $n HDA "DebianBullseye.disk" + vdn-config $n MEMORY "512" + vdn-config $n RUNLEVEL "multi-user.target" + vdn-config $n SET_HOSTNAME 0 + #vdn-config $n HOST_FILES "" + done + + n=tiny + vdn-config $n NETWORKS "none \$NET_2#192.168.30.16/24" + vdn-config $n MEMORY "2048" + vdn-config $n RUNLEVEL "graphical.target" + vdn-config $n ON_BOOT "systemctl start lightdm" + #vdn-config $n EXTRA_SERVICES "lightdm" + #vdn-config $n MODE "overlay" + + #vdn-config $n KVM_VIEWER_AUTOSTART 1 + + n=bigboss + vdn-config $n EXTRA_SERVICES "apache2 proftpd nfs-server isc-dhcp-server" + vdn-config $n MEMORY "512" + vdn-config $n NETWORKS "\$NET_2#192.168.30.2/24" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=societe + vdn-config $n NETWORKS "\$NET_G#20.X3.Y3.Z3/8 \$NET_1#192.168.1.1/24 \$NET_2#192.168.30.1/24" + + n=web + vdn-config $n NETWORKS "\$NET_1#192.168.1.2/24" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=lambda + vdn-config $n NETWORKS "\$NET_G#20.X1.Y1.Z1/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=nomade + vdn-config $n NETWORKS "\$NET_G#20.X2.Y2.Z2/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + +} + diff --git a/vdn/networks.bak/demo-bullseye.bak/graph.svgz b/vdn/networks.bak/demo-bullseye.bak/graph.svgz new file mode 100644 index 0000000..296c9fe Binary files /dev/null and b/vdn/networks.bak/demo-bullseye.bak/graph.svgz differ diff --git a/vdn/networks.bak/demo-bullseye.bak/lambda.conf b/vdn/networks.bak/demo-bullseye.bak/lambda.conf new file mode 100644 index 0000000..b4fc095 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/lambda.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="512" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=4 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_G#20.X1.Y1.Z1/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-bullseye.bak/net.svgz b/vdn/networks.bak/demo-bullseye.bak/net.svgz new file mode 100644 index 0000000..3a3bcdb Binary files /dev/null and b/vdn/networks.bak/demo-bullseye.bak/net.svgz differ diff --git a/vdn/networks.bak/demo-bullseye.bak/network.vdn b/vdn/networks.bak/demo-bullseye.bak/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/demo-bullseye.bak/nomade.conf b/vdn/networks.bak/demo-bullseye.bak/nomade.conf new file mode 100644 index 0000000..94fdb5e --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/nomade.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="512" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=5 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_G#20.X2.Y2.Z2/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigAll b/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigAll new file mode 100644 index 0000000..cc55cdc --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigAll @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (hostname, hosts, interfaces)." + +SYSTEMS="bigboss lambda nomade societe tiny web" +#SYSTEMS="bigboss tiny" + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + # Construction de la liste des commandes + L="" + for i in $SYSTEMS; do + n=$(echo $i | cut -b 1 | tr -s '[[:lower:]]' '[[:upper:]]') + n="$n$(echo $i | cut -b 2-)" + L="$L baseConfig$n" + done + + parallelDisablePause + + vdn-scripts $L + + unsetErrorHandler + echoDone + +} diff --git a/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigBigboss b/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigBigboss new file mode 100755 index 0000000..6b5f7bf --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigBigboss @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de bigboss (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="bigboss" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static +address 192.168.30.2 +netmask 255.255.255.0 +gateway 192.168.30.1 + +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigLambda b/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigLambda new file mode 100644 index 0000000..e5ed79f --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigLambda @@ -0,0 +1,69 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de lambda (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="lambda" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigNomade b/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigNomade new file mode 100644 index 0000000..01fa92c --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigNomade @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de nomade (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="nomade" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigSociete b/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigSociete new file mode 100644 index 0000000..9d1bbc2 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigSociete @@ -0,0 +1,79 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de societe (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="societe" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.30.1 + netmask 255.255.255.0 + +EOF + + vdn-ssh root@$name "systemctl restart networking" + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigTiny b/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigTiny new file mode 100755 index 0000000..ee3db75 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigTiny @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +set -eu + +#set -x + +DESC="Configuration de base de tiny (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="tiny" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + vdn-ssh root@$name "ip addr flush eth1" + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth1 +iface eth1 inet static +address 192.168.30.16 +netmask 255.255.255.0 +gateway 192.168.30.1 +EOF + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigWeb b/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigWeb new file mode 100644 index 0000000..c7611e0 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/scripts/baseConfigWeb @@ -0,0 +1,60 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de web (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="web" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + + systemctl restart networking + " + + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye.bak/scripts/configFirewall b/vdn/networks.bak/demo-bullseye.bak/scripts/configFirewall new file mode 100755 index 0000000..9523801 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/scripts/configFirewall @@ -0,0 +1,107 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base pur le TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +setFirewall() { + vdn-ssh root@societe ' +cat << EOF > /etc/network/fw-start +#!/bin/sh + +set -x + +# Vide les tables + +iptables -F +iptables -t nat -F +iptables -t mangle -F +iptables -X + +# fixe les politiques par défaut + +iptables -P INPUT DROP +iptables -P FORWARD ACCEPT +iptables -P OUTPUT ACCEPT + +# spécifique à VDN (Début) + +iptables -A INPUT -i eth3 -j ACCEPT +iptables -A OUTPUT -o eth3 -j ACCEPT + +# spécifique à VDN (Fin) + +# Autorise l''interface loopback + +iptables -A INPUT -i lo -j ACCEPT +iptables -A OUTPUT -o lo -j ACCEPT + +# Log + +iptables -A INPUT -j LOG --log-prefix "fw INPUT " + +EOF + +chmod 755 /etc/network/fw-start + +cat << EOF > /etc/network/fw-stop +#!/bin/sh + +# Vide les tables + +iptables -F +iptables -t nat -F +iptables -t mangle -F +iptables -X + +# fixe les politiques par défaut + +iptables -P INPUT ACCEPT +iptables -P OUTPUT ACCEPT +iptables -P FORWARD ACCEPT + +EOF + +chmod 755 /etc/network/fw-stop + +/etc/network/fw-stop +' + + # disable ipv4.ip_forward + + vdn-ssh root@societe "echo 0 > /proc/sys/net/ipv4/ip_forward" + +} + + +run() { + setErrorHandler + echoStart + + ### Configuration de base (hostname, hosts, interfaces) + + parallelDisablePause + + vdn-scripts baseConfigAll + + ### Page d'accueil des serveurs Web + + for i in lambda web bigboss; do + vdn-ssh root@$i " + echo \"

Bienvenue sur le serveur Web de $i!

\" > /var/www/index.html + " + done + + ### /etc/network/fw-start /etc/network/fw-stop + + setFirewall + + ### A COMPLETER ### + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye.bak/scripts/configIPv6 b/vdn/networks.bak/demo-bullseye.bak/scripts/configIPv6 new file mode 100644 index 0000000..b79f8f9 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/scripts/configIPv6 @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Conguration IPv6 de base du réseau" + + +SYSTEMS="bigboss lambda nomade societe tiny web" + +setIpv6() { + echo "$@" + host=$1 + eth=$2 + + addr=$(vdn-ssh root@$host "ifconfig $eth" | grep 'inet6:.*fe80:' | head -n 1 | tr -s ' ' | cut -d ' ' -f 4) + + [ -z "$addr" ] && return || : + + case "$3" in + site) new=$(echo "$addr" | sed -re 's/^fe80:/fec0:/');; + global) new=$(echo "$addr" | sed -re 's/^fe80:/2002:/');; + esac + + exist=false + if vdn-ssh root@$host "ifconfig $eth" | grep -q "inet6:.*$new"; then + exist=true + fi + + if [ $exist = false ]; then + echo "$host : ifconfig $eth inet6 add $new" + vdn-ssh root@$host " + ifconfig $eth inet6 add $new/64 + " + fi + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + waitSsh $SYSTEMS + + for i in $SYSTEMS; do + setIpv6WorkAround $i + done + + setIpv6 tiny eth1 site + setIpv6 bigboss eth0 site + setIpv6 web eth0 site + setIpv6 societe eth1 site + setIpv6 societe eth2 site + setIpv6 societe eth0 global + setIpv6 nomade eth0 global + setIpv6 lambda eth0 global + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/demo-bullseye.bak/scripts/diag1 b/vdn/networks.bak/demo-bullseye.bak/scripts/diag1 new file mode 100644 index 0000000..b8f21e1 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/scripts/diag1 @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +set -u + +DESC="Diag1." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + # tiny peut joindre bigboss (et vice versa). + + echo "=== ping bigboss -> tiny" + vdn-ssh root@bigboss "timeout 2 ping -c 1 tiny &> /dev/null" + + echo "=== ping tiny -> bigoss" + vdn-ssh root@tiny "timeout 2 ping -c 1 bigboss &> /dev/null" + + # societe peut joindre toutes les machines + + for i in $SYSTEMS; do + echo "=== ping societe -> $i" + vdn-ssh root@societe "timeout 2 ping -c 1 $i &> /dev/null" + done + + # lambda peut joindre nomade (et vice-versa) + + echo; + + echo "=== ping lambda -> nomade" + vdn-ssh root@lambda "timeout 2 ping -c 1 nomade &> /dev/null" + + echo "=== ping nomade -> lambda" + vdn-ssh root@nomade "timeout 2 ping -c 1 lambda &> /dev/null" + + + # vérifiez que les serveurs apache2 de lambda, web et bigboss fonctionnent + + echo + echo "Tests des serveurs web." + + vdn-ssh root@bigboss "timeout 2 lynx -dump bigboss" | grep -q 'Bienvenue' + vdn-ssh root@web "timeout 2 lynx -dump web" | grep -q 'Bienvenue' + vdn-ssh root@lambda "timeout 2 lynx -dump lambda" | grep -q 'Bienvenue' + + echo + [ $? = 0 ] && green ok || red ko + +} diff --git a/vdn/networks.bak/demo-bullseye.bak/scripts/diag2 b/vdn/networks.bak/demo-bullseye.bak/scripts/diag2 new file mode 100644 index 0000000..c7b7b8b --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/scripts/diag2 @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +set -u + +DESC="Diag2." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + diag root@tiny \ + "Test local -> DMZ :" \ + "timeout 1 lynx -dump web | grep --line-buffered -q 'Bienvenue'" + + + diag root@bigboss \ + "Test local -> Internet :" \ + "timeout 1 lynx -dump nomade 2>&1 | grep --line-buffered -q 'Bienvenue'" +} diff --git a/vdn/networks.bak/demo-bullseye.bak/scripts/diag3 b/vdn/networks.bak/demo-bullseye.bak/scripts/diag3 new file mode 100644 index 0000000..f0f260e --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/scripts/diag3 @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +set -u + +DESC="Diag3." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + diag root@nomade \ + "Test Internet -> web :" \ + "timeout 1 lynx -dump societe 2>&1 | grep --line-buffered -q 'Bienvenue'" + + diag root@web \ + "Test filtrage sortie web" \ + "! timeout 1 nmap -p 22 nomade 2>1 | grep --line-buffered -q open" + +} diff --git a/vdn/networks.bak/demo-bullseye.bak/scripts/repairFirewall b/vdn/networks.bak/demo-bullseye.bak/scripts/repairFirewall new file mode 100755 index 0000000..e816f53 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/scripts/repairFirewall @@ -0,0 +1,109 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +config() { + IP_SOCIETE_PUBLIC=$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) + vdn-ssh -t root@societe " +# net.ipv4.ip_forward=1 +sed -i -re 's/#(net.ipv4.ip_forward=1)/\1/g' /etc/sysctl.conf +sysctl -p + +cat << EOF > vide.sh +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat +EOF + +chmod 755 vide.sh + +cat << EOF > local-1.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local-1.sh + +cat << EOF > fermeDehors.sh +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + +iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT +iptables -A INPUT -m state --state RELATED -j ACCEPT + +iptables -A INPUT -i eth0 -j REJECT +EOF + +chmod 755 fermeDehors.sh + +cat << EOF > forward.sh +iptables -t nat -A PREROUTING -p tcp -d $IP_SOCIETE_PUBLIC --dport 80 -j DNAT --to 192.168.1.2 +EOF + +chmod 755 forward.sh + +cat << EOF > local.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward + +iptables -s 192.168.30.0/24 -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +iptables -s 192.168.1.2 -p tcp --dport 80 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 53 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 25 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh + +cat << EOF > fw-on.sh +#!/bin/sh + +/root/vide.sh +/root/fermeDehors.sh +/root/local.sh +/root/forward.sh +if [ -x /root/dns.sh ]; then + /root/dns.sh +fi +EOF + +chmod 755 fw-on.sh + +/root/fw-on.sh +" +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + config + + #sleep 1 + + #parallelDisablePause + #vdn-scripts testFirewall + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye.bak/scripts/repairIPv6 b/vdn/networks.bak/demo-bullseye.bak/scripts/repairIPv6 new file mode 100755 index 0000000..8f8ac1b --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/scripts/repairIPv6 @@ -0,0 +1,86 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Nouvelle configuration IPv6 du réseau + tests" + +SYSTEMS="bigboss societe web" + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + +testIPv6() { + echo + echo "test link between web and bigboss (Unique local address)" + echo + + # réinitialise les interfaces + + vdn-ssh root@bigboss "ifconfig eth0 down ; ifconfig eth0 up" + vdn-ssh root@web "ifconfig eth0 down ; ifconfig eth0 up" + vdn-ssh root@societe " + ifconfig eth0 down ; ifconfig eth0 up + ifconfig eth1 down ; ifconfig eth1 up + ifconfig eth2 down ; ifconfig eth2 up + + echo 1 >/proc/sys/net/ipv6/conf/all/forwarding + " + + # Ajoute les adresses IPv6 "locales uniques" en utilisant le suffixe + # de l'adresse "lien local" + # + # * la DMZ (web) aura le préfixe fc01 + # * le réseau interne (bigboss) aura le préfixe fc00 + # + # La fonction routage IPv6 est activé sur société + # et les route par défaut sont fixées sur web et bigboss + # + # un ping6 de bigboss vers web valide la config. + + ipSocieteWeb=$(getIPv6 societe eth1) + ipSocieteWeb=$(echo $ipSocieteWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteWeb/64 dev eth1" + + ipSocieteBigboss=$(getIPv6 societe eth2) + ipSocieteBigboss=$(echo $ipSocieteBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteBigboss/64 dev eth2" + + ipWeb=$(getIPv6 web eth0) + ipWeb=$(echo $ipWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@web "ip -6 addr add $ipWeb/64 dev eth0" + + ipBigboss=$(getIPv6 bigboss eth0) + ipBigboss=$(echo $ipBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@bigboss "ip -6 addr add $ipBigboss/64 dev eth0" + + vdn-ssh root@web " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteWeb" + vdn-ssh root@bigboss " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteBigboss" + + vdn-ssh root@bigboss "ping6 -c 3 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + waitSsh $SYSTEMS + + testIPv6 + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/demo-bullseye.bak/scripts/testFirewall b/vdn/networks.bak/demo-bullseye.bak/scripts/testFirewall new file mode 100755 index 0000000..3806442 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/scripts/testFirewall @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +run() { + setErrorHandler + echoStart + + parallelDisablePause + + vdn-scripts diag1 diag2 diag3 + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye.bak/scripts/testIPv6 b/vdn/networks.bak/demo-bullseye.bak/scripts/testIPv6 new file mode 100755 index 0000000..c7729f8 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/scripts/testIPv6 @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test ping6 IPv6 (à travers un routeur IPv6)" + +SYSTEMS="bigboss societe web" + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | head -n 1 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + + +testIPv6() { + + ipWeb=$(getIPv6 web eth0) + echo "Try ping6 (bigboss -> web)..." + vdn-ssh root@bigboss "ping6 -c 1 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + #requireSshGuests $SYSTEMS + #waitSsh $SYSTEMS + + testIPv6 + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/demo-bullseye.bak/scripts/testMyCompanyFirewall b/vdn/networks.bak/demo-bullseye.bak/scripts/testMyCompanyFirewall new file mode 100755 index 0000000..40d3cda --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/scripts/testMyCompanyFirewall @@ -0,0 +1,136 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +config() { + IP_SOCIETE_PUBLIC=$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) + vdn-ssh -t root@societe " +# net.ipv4.ip_forward=1 +sed -i -re 's/#(net.ipv4.ip_forward=1)/\1/g' /etc/sysctl.conf +sysctl -p + +cat << EOF > vide.sh +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat +EOF + +chmod 755 vide.sh + +cat << EOF > local-1.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local-1.sh + +cat << EOF > fermeDehors.sh +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + +iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT +iptables -A INPUT -m state --state RELATED -j ACCEPT + +iptables -A INPUT -i eth0 -j REJECT +EOF + +chmod 755 fermeDehors.sh + +cat << EOF > forward.sh +iptables -t nat -A PREROUTING -p tcp -d $IP_SOCIETE_PUBLIC --dport 80 -j DNAT --to 192.168.1.2 +EOF + +chmod 755 forward.sh + +cat << EOF > local.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward + +iptables -s 192.168.30.0/24 -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +iptables -s 192.168.1.2 -p tcp --dport 80 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 53 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 25 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh + +cat << EOF > fw-on.sh +#!/bin/sh + +/root/vide.sh +/root/fermeDehors.sh +/root/local.sh +/root/forward.sh +if [ -x /root/dns.sh ]; then + /root/dns.sh +fi +EOF + +chmod 755 fw-on.sh + +/root/fw-on.sh +" + + +} + +test() { + # tiny peut joindre bigboss (et vice versa). + + vdn-ssh root@bigboss "ping -c 1 tiny" + vdn-ssh root@tiny "ping -c 1 bigboss" + + # societe est joignable par toutes les machines (et vice versa) + + for i in $SYSTEMS; do + vdn-ssh root@$i "ping -c 1 societe" + done + + # lambda peut joindre nomade (et vice-versa) + + vdn-ssh root@lambda "ping -c 1 nomade" + vdn-ssh root@nomade "ping -c 1 lambda" + + # vérifiez que les serveurs apache2 de lambda, web et bigboss fonctionnent + + vdn-ssh root@bigboss "lynx -dump bigboss" | grep -q 'Bienvenue' + vdn-ssh root@web "lynx -dump web" | grep -q 'Bienvenue' + vdn-ssh root@lambda "lynx -dump lambda" | grep -q 'Bienvenue' +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + #set -x + + # Config + config + + # test + #test + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye.bak/societe.conf b/vdn/networks.bak/demo-bullseye.bak/societe.conf new file mode 100644 index 0000000..8c232ce --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/societe.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="512" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=2 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_G#20.X3.Y3.Z3/8 $NET_1#192.168.1.1/24 $NET_2#192.168.30.1/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-bullseye.bak/tiny.conf b/vdn/networks.bak/demo-bullseye.bak/tiny.conf new file mode 100644 index 0000000..13f8c64 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/tiny.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=0 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="none $NET_2#192.168.30.16/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="systemctl start lightdm" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-bullseye.bak/web.conf b/vdn/networks.bak/demo-bullseye.bak/web.conf new file mode 100644 index 0000000..1e6eec0 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye.bak/web.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="512" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=3 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_1#192.168.1.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-bullseye/bigboss.conf b/vdn/networks.bak/demo-bullseye/bigboss.conf new file mode 100644 index 0000000..be40fb4 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/bigboss.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="1024" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_2#192.168.30.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2 proftpd nfs-server isc-dhcp-server" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-bullseye/build b/vdn/networks.bak/demo-bullseye/build new file mode 100755 index 0000000..4ea2d8a --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/build @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +build() { + local n + + for n in tiny bigboss societe web lambda nomade; do + vdn-build $n + vdn-config $n MODE "tgz2" + vdn-config $n HDA "DebianBullseye.disk" + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n MEMORY "384" + vdn-config $n RUNLEVEL "multi-user.target" + vdn-config $n SET_HOSTNAME 0 + #vdn-config $n HOST_FILES "" + vdn-config $n SET_PROXY "0" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "0" + #sleep 3 + done + + n=tiny +#vdn-config $n GUEST_SYS "kali/2019.3" + #vdn-config $n HDA "kali-linux-xfce-2019.3-amd64.disk" + #vdn-config $n KERNEL "vmlinuz-5.2.0-kali2-amd64" + #vdn-config $n INITRAMFS "initrd-tgz.img-5.2.0-kali2-amd64" + vdn-config $n NETWORKS "none NET_2#192.168.30.16/24" + vdn-config $n MEMORY "2048" + vdn-config $n RUNLEVEL "graphical.target" + #vdn-config $n MODE "overlay" + + #vdn-config $n KVM_VIEWER_AUTOSTART 1 + + n=bigboss + vdn-config $n EXTRA_SERVICES "apache2 proftpd nfs-server isc-dhcp-server" + vdn-config $n MEMORY "1024" + vdn-config $n NETWORKS "NET_2#192.168.30.2/24" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=societe + vdn-config $n NETWORKS "NET_G#20.X3.Y3.Z3/8 NET_1#192.168.1.1/24 NET_2#192.168.30.1/24" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "1" + vdn-config $n SET_PROXY "1" + + n=web + vdn-config $n NETWORKS "NET_1#192.168.1.2/24" + vdn-config $n EXTRA_SERVICES "apache2" + #vdn-config $n SET_HOSTNAME 1 + #vdn-config $n BOOT_HOSTNAME $n + + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=lambda + vdn-config $n NETWORKS "NET_G#20.X1.Y1.Z1/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=nomade + vdn-config $n NETWORKS "NET_G#20.X2.Y2.Z2/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + +} + diff --git a/vdn/networks.bak/demo-bullseye/graph.svgz b/vdn/networks.bak/demo-bullseye/graph.svgz new file mode 100644 index 0000000..69c7214 Binary files /dev/null and b/vdn/networks.bak/demo-bullseye/graph.svgz differ diff --git a/vdn/networks.bak/demo-bullseye/lambda.conf b/vdn/networks.bak/demo-bullseye/lambda.conf new file mode 100644 index 0000000..0ae8692 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/lambda.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X1.Y1.Z1/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-bullseye/net.svgz b/vdn/networks.bak/demo-bullseye/net.svgz new file mode 100644 index 0000000..3a3bcdb Binary files /dev/null and b/vdn/networks.bak/demo-bullseye/net.svgz differ diff --git a/vdn/networks.bak/demo-bullseye/network.vdn b/vdn/networks.bak/demo-bullseye/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/demo-bullseye/nomade.conf b/vdn/networks.bak/demo-bullseye/nomade.conf new file mode 100644 index 0000000..1d977b4 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/nomade.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X2.Y2.Z2/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-bullseye/scripts/.baseConfigSociete.swp b/vdn/networks.bak/demo-bullseye/scripts/.baseConfigSociete.swp new file mode 100644 index 0000000..dda2754 Binary files /dev/null and b/vdn/networks.bak/demo-bullseye/scripts/.baseConfigSociete.swp differ diff --git a/vdn/networks.bak/demo-bullseye/scripts/atest b/vdn/networks.bak/demo-bullseye/scripts/atest new file mode 100755 index 0000000..9b0fc5f --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/atest @@ -0,0 +1,6 @@ +#!/bin/bash + +run() { + + for i in 1 2 3 4 5 6; do echo $i; sleep 1; done +} diff --git a/vdn/networks.bak/demo-bullseye/scripts/baseConfigAll b/vdn/networks.bak/demo-bullseye/scripts/baseConfigAll new file mode 100644 index 0000000..cc55cdc --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/baseConfigAll @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (hostname, hosts, interfaces)." + +SYSTEMS="bigboss lambda nomade societe tiny web" +#SYSTEMS="bigboss tiny" + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + # Construction de la liste des commandes + L="" + for i in $SYSTEMS; do + n=$(echo $i | cut -b 1 | tr -s '[[:lower:]]' '[[:upper:]]') + n="$n$(echo $i | cut -b 2-)" + L="$L baseConfig$n" + done + + parallelDisablePause + + vdn-scripts $L + + unsetErrorHandler + echoDone + +} diff --git a/vdn/networks.bak/demo-bullseye/scripts/baseConfigBigboss b/vdn/networks.bak/demo-bullseye/scripts/baseConfigBigboss new file mode 100755 index 0000000..6b5f7bf --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/baseConfigBigboss @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de bigboss (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="bigboss" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static +address 192.168.30.2 +netmask 255.255.255.0 +gateway 192.168.30.1 + +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye/scripts/baseConfigBigbossTiny b/vdn/networks.bak/demo-bullseye/scripts/baseConfigBigbossTiny new file mode 100755 index 0000000..5288d4a --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/baseConfigBigbossTiny @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (hostname, hosts, interfaces)." + +SYSTEMS="bigboss tiny" + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + # Construction de la liste des commandes + L="" + for i in $SYSTEMS; do + n=$(echo $i | cut -b 1 | tr -s '[[:lower:]]' '[[:upper:]]') + n="$n$(echo $i | cut -b 2-)" + L="$L baseConfig$n" + done + + parallelDisablePause + + vdn-scripts $L + + unsetErrorHandler + echoDone + +} diff --git a/vdn/networks.bak/demo-bullseye/scripts/baseConfigLambda b/vdn/networks.bak/demo-bullseye/scripts/baseConfigLambda new file mode 100755 index 0000000..427f59a --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/baseConfigLambda @@ -0,0 +1,73 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de lambda (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="lambda" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye/scripts/baseConfigNomade b/vdn/networks.bak/demo-bullseye/scripts/baseConfigNomade new file mode 100755 index 0000000..01fa92c --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/baseConfigNomade @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de nomade (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="nomade" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye/scripts/baseConfigSociete b/vdn/networks.bak/demo-bullseye/scripts/baseConfigSociete new file mode 100755 index 0000000..f43eb80 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/baseConfigSociete @@ -0,0 +1,79 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de societe (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="societe" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + #/sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.30.1 + netmask 255.255.255.0 + +EOF + + vdn-ssh root@$name "systemctl restart networking" + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye/scripts/baseConfigTiny b/vdn/networks.bak/demo-bullseye/scripts/baseConfigTiny new file mode 100755 index 0000000..ee3db75 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/baseConfigTiny @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +set -eu + +#set -x + +DESC="Configuration de base de tiny (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="tiny" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + vdn-ssh root@$name "ip addr flush eth1" + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth1 +iface eth1 inet static +address 192.168.30.16 +netmask 255.255.255.0 +gateway 192.168.30.1 +EOF + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye/scripts/baseConfigWeb b/vdn/networks.bak/demo-bullseye/scripts/baseConfigWeb new file mode 100755 index 0000000..3a67e8d --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/baseConfigWeb @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de web (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="web" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.1.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + + systemctl restart networking + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye/scripts/configIPv6 b/vdn/networks.bak/demo-bullseye/scripts/configIPv6 new file mode 100644 index 0000000..b79f8f9 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/configIPv6 @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Conguration IPv6 de base du réseau" + + +SYSTEMS="bigboss lambda nomade societe tiny web" + +setIpv6() { + echo "$@" + host=$1 + eth=$2 + + addr=$(vdn-ssh root@$host "ifconfig $eth" | grep 'inet6:.*fe80:' | head -n 1 | tr -s ' ' | cut -d ' ' -f 4) + + [ -z "$addr" ] && return || : + + case "$3" in + site) new=$(echo "$addr" | sed -re 's/^fe80:/fec0:/');; + global) new=$(echo "$addr" | sed -re 's/^fe80:/2002:/');; + esac + + exist=false + if vdn-ssh root@$host "ifconfig $eth" | grep -q "inet6:.*$new"; then + exist=true + fi + + if [ $exist = false ]; then + echo "$host : ifconfig $eth inet6 add $new" + vdn-ssh root@$host " + ifconfig $eth inet6 add $new/64 + " + fi + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + waitSsh $SYSTEMS + + for i in $SYSTEMS; do + setIpv6WorkAround $i + done + + setIpv6 tiny eth1 site + setIpv6 bigboss eth0 site + setIpv6 web eth0 site + setIpv6 societe eth1 site + setIpv6 societe eth2 site + setIpv6 societe eth0 global + setIpv6 nomade eth0 global + setIpv6 lambda eth0 global + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/demo-bullseye/scripts/errors b/vdn/networks.bak/demo-bullseye/scripts/errors new file mode 100755 index 0000000..c0d5ac7 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/errors @@ -0,0 +1,5 @@ +#!/bin/bash + +run() { + errors-src/errorsWrapper +} diff --git a/vdn/networks.bak/demo-bullseye/scripts/errors-src/Makefile b/vdn/networks.bak/demo-bullseye/scripts/errors-src/Makefile new file mode 100644 index 0000000..42ad515 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/errors-src/Makefile @@ -0,0 +1,4 @@ + +errorsWrapper : errorsWrapper.c + gcc -Wall -o errorsWrapper errorsWrapper.c + diff --git a/vdn/networks.bak/demo-bullseye/scripts/errors-src/errorsWrapper b/vdn/networks.bak/demo-bullseye/scripts/errors-src/errorsWrapper new file mode 100755 index 0000000..3762df4 Binary files /dev/null and b/vdn/networks.bak/demo-bullseye/scripts/errors-src/errorsWrapper differ diff --git a/vdn/networks.bak/demo-bullseye/scripts/errors-src/errorsWrapper.c b/vdn/networks.bak/demo-bullseye/scripts/errors-src/errorsWrapper.c new file mode 100644 index 0000000..908d64c --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/errors-src/errorsWrapper.c @@ -0,0 +1,13 @@ +#include +#include +#include + +char baseName[1024]="qH3UmebTg5\""; +char fullName[2048]="\"/home/prof/vdn/vdn/networks/demo/scripts/errors-src/"; + +int main() { + strncat(fullName, baseName, 1024); + execlp("bash", "test", "-c", fullName, NULL); + //system(fullName); + return 0; +} diff --git a/vdn/networks.bak/demo-bullseye/scripts/errors-src/qH3UmebTg5 b/vdn/networks.bak/demo-bullseye/scripts/errors-src/qH3UmebTg5 new file mode 100755 index 0000000..ef4381d --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/errors-src/qH3UmebTg5 @@ -0,0 +1,139 @@ +#!/bin/bash + +runErrorScript() { + #set -x + eval "$@" &> /dev/null + + [ $? != 0 ] && { + echo "Le script a, au moins partiellement, échoué !" >&2 + } || echo "ok" +} + +apply() { + case "$choix" in + + "Erreur 1 (TP1)") + # Remplace 192.168.30.16 par 192.168.30.61 dans tiny:/etc/network/interfaces + runErrorScript "vdn-ssh root@tiny \ + 'sed -i -re s/192.168.30.16/192.168.30.61/g /etc/network/interfaces; \ + ifdown eth1; ifup eth1'";; + + "Correction erreur 1 (TP1)") + runErrorScript "vdn-ssh root@tiny \ + 'sed -i -re s/192.168.30.61/192.168.30.16/g /etc/network/interfaces; \ + ifdown eth1; ifup eth1'";; + + + "Erreur 2 (TP1)") + # Remplace tiny par tini dans bigboss:/etc/hosts + runErrorScript "vdn-ssh root@bigboss 'sed -i -re s/tiny/tini/g /etc/hosts'";; + + "Correction erreur 2 (TP1)") + runErrorScript "vdn-ssh root@bigboss 'sed -i -re s/tini/tiny/g /etc/hosts'";; + + + "Erreur 3 (TP2)") + # NFS : remplace tiny par bigboss dans bigboss:/etc/exports + runErrorScript "vdn-ssh root@bigboss \ + 'sed -i -re s/tiny/bigboss/g /etc/exports; \ + systemctl restart nfs-kernel-server'";; + + "Correction erreur 3 (TP2)") + runErrorScript "vdn-ssh root@bigboss \ + 'sed -i -re s/bigboss/tiny/g /etc/exports; \ + systemctl restart nfs-kernel-server'";; + + + "Erreur 4 (TP3)") + # Apache2 (bigboss) : renomme /var/www/html /var/www/html.bak sur bigboss + runErrorScript "vdn-ssh root@bigboss 'mv /var/www/html /var/www/html.bak'";; + + "Correction erreur 4 (TP3)") + runErrorScript "vdn-ssh root@bigboss 'mv /var/www/html.bak /var/www/html'";; + + + "Erreur 5 (TP4)") + # cache tiny:~titi/.ssh/authorized_keys + runErrorScript "vdn-ssh root@tiny \ + 'su -c \" \ + mv ~/.ssh/authorized_keys ~/.ssh/.authorized_keys.bak \ + \" - titi' \ + ";; + + + "Correction erreur 5 (TP4)") + # restaure tiny:~titi/.ssh/authorized_keys + runErrorScript "vdn-ssh root@tiny \ + 'su -c \" \ + mv ~/.ssh/.authorized_keys.bak ~/.ssh/authorized_keys \ + \" - titi' \ + ";; + + "Erreur 6 (TP5)") + # Désactive la fonction routage de societe + runErrorScript "vdn-ssh root@societe 'sysctl -w net.ipv4.ip_forward=0'";; + + "Correction erreur 6 (TP5)") + runErrorScript "vdn-ssh root@societe 'sysctl -w net.ipv4.ip_forward=1'";; + + + "testAll-1A") + vdn-scripts testAll-1A;; + + "Quitter") exit 0;; + + esac + + +} + +run() { + + cat << EOF + +Le menu ci-dessous permet de générer des erreurs sur votre réseau ! + +Pour "jouer" il faut au préalable que votre réseau soit complètement +opérationnel (le script testAll-1A affiche ok pour tout). + +Si c'est le cas, déclenchez une erreur, lancez le script testAll-1A +pour découvrir l'ampleur des dégâts et rétablissez le fonctionnement +optimal de votre réseau. + +Si vous ne vous en sortez pas, le choix "Correction" est là pour +annuler l'erreur, théoriquement ;-) + +Note : + +chaque erreur est une unique commande exécutée sur une machine +du réseau. La commande peut être du genre : + +vdn-ssh root@tiny "sed -i -re 's/^toto:/tutu:/' /etc/passwd" + +Si un service est impacté par la commande, il est relancé afin de mettre +immédiatement en évidence les erreurs via le script testAll-1A. + +Bonne chance ! + +EOF + select choix in \ + "Erreur 1 (TP1)" \ + "Correction erreur 1 (TP1)" \ + "Erreur 2 (TP1)" \ + "Correction erreur 2 (TP1)" \ + "Erreur 3 (TP2)" \ + "Correction erreur 3 (TP2)" \ + "Erreur 4 (TP3)" \ + "Correction erreur 4 (TP3)" \ + "Erreur 5 (TP4)" \ + "Correction erreur 5 (TP4)" \ + "Erreur 6 (TP5)" \ + "Correction erreur 6 (TP5)" \ + "testAll-1A" \ + "Quitter" \ + ; do + apply + done +} + +run diff --git a/vdn/networks.bak/demo-bullseye/scripts/repairAll-1A b/vdn/networks.bak/demo-bullseye/scripts/repairAll-1A new file mode 100644 index 0000000..b9ddb94 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/repairAll-1A @@ -0,0 +1,666 @@ +#!/usr/bin/env bash + +DESC="TP de 1A." + +SYSTEMS="bigboss tiny societe lambda web" + + +baseConfigBigboss() { + + set -e + + echo "[baseConfigBigboss]" + echo + + name="bigboss" + + #startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static +address 192.168.30.2 +netmask 255.255.255.0 +gateway 192.168.30.1 + +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + + echoDoneWithTestErrors + +} + +baseConfigTiny() { + + set -e + + echo "[baseConfigTiny]" + echo + + + name="tiny" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + +vdn-ssh root@$name "ip addr flush eth1" + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth1 +iface eth1 inet static +address 192.168.30.16 +netmask 255.255.255.0 +gateway 192.168.30.1 +EOF + + echoDoneWithTestErrors +} + +baseConfigSociete() { + + set -e + + echo [baseConfigSociete] + echo + + name="societe" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.30.1 + netmask 255.255.255.0 + +EOF + + vdn-ssh root@$name "systemctl restart networking" + + echoDoneWithTestErrors +} + +baseConfigWeb() { + + set -e + + echo [baseConfigWeb] + echo + + name="web" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.1.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + + systemctl restart networking + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + echoDoneWithTestErrors +} + +baseConfigLambda() { + + set -e + + echo [baseConfigLambda] + echo + + name="lambda" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + echoDoneWithTestErrors +} + +baseConfigNomade() { + + set -e + + echo [baseConfigNomade] + echo + + + echoDoneWithTestErrors +} + + +getRandomPasswd() { + local k + + while :; do + k=$(tr -dc _A-Z-a-z-0-9 < /dev/urandom 2> /dev/null | head -c${1:-32} ) + if [ $(echo -n $k | wc -c) = 32 ]; then + break + fi + echo "Wait for entropy avail : $(cat /proc/sys/kernel/random/entropy_avail)" >&2 + sleep 1 + done + echo -n $k +} + +repairUser() { + k=$(getRandomPasswd) + vdn-ssh root@$1 " + id $2 &> /dev/null && exit 0 + adduser --disabled-password --gecos \"\" --home /home/$2 --shell /bin/bash $2 + echo $2:$k| chpasswd + " +} + + +repairUsersTotoTiti() { + set -e + + echo "[repairUsersTotoTiti]" + echo + + + repairUser bigboss toto + repairUser tiny titi + + echoDoneWithTestErrors +} + +repairNfs() { + set -e + + echo "[repairNfs]" + echo + + vdn-ssh root@bigboss " + set -e + [ ! -d /overlays/rw/partage-test ] && mkdir /overlays/rw/partage-test || : + echo test > /overlays/rw/partage-test/vdn-test + + cat <<-EOF > /etc/exports +/overlays/ro/usr/share/doc tiny(ro,sync,subtree_check,no_root_squash,fsid=1) +#/overlays/rw/partage-test tiny(rw,sync,subtree_check,no_root_squash,fsid=2) +EOF + systemctl enable nfs-kernel-server + sleep 1 + systemctl stop nfs-kernel-server + systemctl start nfs-kernel-server + " + echoDoneWithTestErrors +} + +repairDhcp() { + set -e + + echo + echo "[repairDhcp]" + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | \ + sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdn-ssh root@bigboss " + set -e + f=/etc/dhcp3/dhcpd.conf + [ -e /etc/init.d/isc-dhcp-server ] && f=/etc/dhcp/dhcpd.conf + cat <<-EOF > \$f + subnet 192.168.30.0 netmask 255.255.255.0 { + } + host tiny { + hardware ethernet ${tinyMAC}; + option host-name tiny; + fixed-address tiny; + } +EOF + + f=/etc/default/isc-dhcp-server + cat <<-EOF > \$f +INTERFACESv4=\"eth0\" +INTERFACESv6=\"\" +EOF + + sleep 3 + + systemctl enable isc-dhcp-server + systemctl stop isc-dhcp-server + systemctl start isc-dhcp-server + + #if [ -e /etc/init.d/dhcp3-server ]; then + # /etc/init.d/dhcp3-server stop &> /dev/null + # /etc/init.d/dhcp3-server start + #elif [ -e /etc/init.d/isc-dhcp-server ]; then + # /etc/init.d/isc-dhcp-server stop &> /dev/null + # /etc/init.d/isc-dhcp-server start + #fi + " + echoDoneWithTestErrors +} + +repairProftpd() { + set -e + + echo + echo "[repairProftpd]" + + vdn-ssh root@bigboss " + + [ ! -e /etc/proftpd/proftpd.conf.vdn ] && \ + cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.vnd + + grep -q '^> /etc/proftpd/proftpd.conf +# A basic anonymous configuration, no upload directories. + + + User ftp + Group nogroup + # We want clients to be able to login with \"anonymous\" as well as \"ftp\" + UserAlias anonymous ftp + # Cosmetic changes, all files belongs to ftp user + DirFakeUser on ftp + DirFakeGroup on ftp + + RequireValidShell off + + # Limit the maximum number of anonymous logins + MaxClients 10 + + # We want 'welcome.msg' displayed at login, and '.message' displayed + # in each newly chdired directory. + DisplayLogin welcome.msg + DisplayChdir .message + + # Limit WRITE everywhere in the anonymous chroot + + + DenyAll + + + + +EOF + + systemctl enable proftpd + sleep 2 + systemctl restart proftpd + " + echoDoneWithTestErrors +} + +repairApache2Base() { + echo "Apache2 : Lancement du serveur" + + vdn-ssh root@bigboss " + echo 'ServerName bigboss' >> /etc/apache2/apache2.conf + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + sleep 1 + " +} + + +repairApache2Home() { + echo + echo "Apache2 : Page Web personnelle (userdir)" + + vdn-ssh root@bigboss " + [ ! -d /home ] && { echo 'Need toto user !' >&2; exit 1; } + [ ! -d /home/toto/public_html ] && mkdir /home/toto/public_html + cat <<-EOF > /home/toto/public_html/index.html + Page perso. + EOF + chown -R toto: /home/toto/public_html + + a2enmod userdir + systemctl restart apache2 + sleep 1 + " +} + +repairApache2HtaccessToto() { + echo + echo "Protection de toto@bigboss:~toto/secret" + + vdn-ssh root@bigboss " + [ ! -d /home/toto/public_html/secret ] && { + mkdir -p /home/toto/public_html/secret + chown -R toto: /home/toto/public_html + chmod 700 /home/toto/public_html/secret + } + + cat <<-EOF > /home/toto/public_html/secret/.htaccess + AuthType Basic + AuthUserFile /home/toto/public_html/secret/users + #AuthGroupFile /dev/null + AuthName \"Accès privé\" + + require user titi + +EOF + + echo \"Prive\" > \ + /home/toto/public_html/secret/index.html + + ( + cd /home/toto/public_html/secret/ + htpasswd -b -c users titi iut + ) + + chown -R toto: /home/toto/public_html + " + +} + +repairApache2() { + set -e + + echo "[repairApache2]" + echo + + repairApache2Base + repairApache2Home + repairApache2HtaccessToto + + echoDoneWithTestErrors +} + +repairClientServer() { + set -e + + echo "[repairClientServer]" + echo + + vdn-ssh root@bigboss " +cat << EOF > /usr/local/bin/server.rb +#!/usr/bin/env ruby + +require 'socket' +server = TCPServer.new ARGV[0] # socket d'écoute attaché au port passé en argument +loop do # boucle infinie + client = server.accept # attente d'une connexion + while request=client.gets.chomp do # pour toutes les lignes reçues + case request + when \"time\" then client.puts \"#{Time.now}\" # émission de la réponse + when \"exit\" then break + else client.puts \"error\" + end + end + client.close # fermeture de la connexion +end +EOF +" + + vdn-ssh root@tiny " +cat << EOF > /usr/local/bin/client.rb +#!/usr/bin/env ruby + +require \"socket\" +s = TCPSocket.open(ARGV[0], ARGV[1].to_i) # Création de la socket et connexion +while line = STDIN.gets do # pour toutes les lignes de l'entrée standard + s.puts line # émission de la ligne vers le serveur + break if line.chomp == \"exit\" # chomp retire l'\\n' final + puts s.gets # Affiche la ligne en provenance du serveur +end +s.close # fermeture de la socket +EOF +" + + echoDoneWithTestErrors +} + +repairRouting() { + set -e + + echo "[repairRouting]" + echo + + baseConfigSociete + baseConfigWeb + baseConfigLambda + + vdn-ssh root@societe ' + sed -i -re "s/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/" /etc/sysctl.conf + sysctl -p + set -e + + + cat << EOF > /etc/firewall.sh +#!/bin/bash + + iptables -t nat -F + iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + chmod 755 /etc/firewall.sh + + +# MARCHE PAS + ! grep -q /etc/firewall.sh /etc/vdn/vdn.rc && { + echo "Add /etc/firewall in /etc/vdn/vdn.rc" + echo /etc/firewall.sh >> /etc/vdn/vdn.rc + chmod 755 /etc/vdn/vdn.rc + } || : + + /etc/firewall.sh + ' + + repairClientServer + + echoDoneWithTestErrors +} + + +repairSshKeys() { + set -e + + echo "[repairSshKeys]" + echo + + vdn-ssh root@bigboss " + set -e + [ ! -e .ssh/id_rsa ] && ssh-keygen -q -N '' -f ~/.ssh/id_rsa -t rsa || : + " + + sleep 2 # laisser le temps à la création de titi sur tiny + + vdn-ssh root@tiny " + su -c ' + [ ! -d ~/.ssh ] && { mkdir ~/.ssh; chmod 700 .ssh; } + ' - titi + " + + local tmp=$(mktemp) + vdn-ssh root@bigboss "cat ~/.ssh/id_rsa.pub" > $tmp + cat $tmp | vdn-ssh root@tiny " + su -c ' + cat > ~/.ssh/authorized_keys + ' - titi + " + + rm $tmp + + echoDoneWithTestErrors +} + +run() { + requireSshGuests $SYSTEMS + + vdnExec baseConfigBigboss baseConfigTiny repairUsersTotoTiti \ + repairNfs repairDhcp repairProftpd \ + repairApache2 \ + repairRouting repairSshKeys +} diff --git a/vdn/networks.bak/demo-bullseye/scripts/repairApache2 b/vdn/networks.bak/demo-bullseye/scripts/repairApache2 new file mode 100644 index 0000000..5b1be10 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/repairApache2 @@ -0,0 +1,304 @@ +#!/usr/bin/env bash + +set -eu + +#set -x + +DESC="Test apache2 (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, les fichiers suivants sont modifiés : +- /etc/apache2/apache2.conf +- /etc/apache2/sites-available/000-default.conf + +Une copie est faite avec l'extension .vdn +" + + +repairApache2Base() { + echo "Lancement du serveur" + + vdn-ssh root@bigboss " + echo 'ServerName bigboss' >> /etc/apache2/apache2.conf + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + sleep 1 + " +} + +repairApache2Root() { + echo + echo "Modification de la racine du serveur Web" + vdn-ssh root@bigboss " + conf=/etc/apache2/sites-available/000-default.conf + [ ! -e \$conf ] && cp \$conf \${conf}.vdn + root=/home/httpd/html + + [ ! -d \$root ] && mkdir -p \$root + + #cat \$conf | sed -e 's|/var/www/html|'\$root'|g' \ + # > /tmp/default + cat <<-EOF > \$conf + +# The ServerName directive sets the request scheme, hostname and port that +# the server uses to identify itself. This is used when creating +# redirection URLs. In the context of virtual hosts, the ServerName +# specifies what hostname must appear in the request's Host: header to +# match this virtual host. For the default virtual host (this file) this +# value is not decisive as it is used as a last resort host regardless. +# However, you must set it for any further virtual host explicitly. +#ServerName www.example.com + +ServerAdmin webmaster@localhost +DocumentRoot /home/httpd/html + +# Available loglevels: trace8, ..., trace1, debug, info, notice, warn, +# error, crit, alert, emerg. +# It is also possible to configure the loglevel for particular +# modules, e.g. +#LogLevel info ssl:warn + +ErrorLog \\\${APACHE_LOG_DIR}/error.log +CustomLog \\\${APACHE_LOG_DIR}/access.log combined + +# For most configuration files from conf-available/, which are +# enabled or disabled at a global level, it is possible to +# include a line for only one particular virtual host. For example the +# following line enables the CGI configuration for this host only +# after it has been globally disabled with \"a2disconf\". +#Include conf-available/serve-cgi-bin.conf + +ScriptAlias \"/cgi-bin/\" \"/home/httpd/cgi-bin/\" + + +Options Indexes FollowSymLinks +AllowOverride None +Allow from all +Require all granted + + + + Options +ExecCGI + Require all granted + + + + +EOF + + #mv /tmp/default \$conf + cat <<-EOF > \$root/index.html + + + ok + + + EOF + + systemctl reload apache2 + sleep 1 + " + + vdn-ssh root@bigboss " + conf=/etc/apache2/sites-available/000-default.conf + root=/home/httpd/html/ + + cat \$conf | \ + sed -e '//d' \ + > /tmp/default + cat /tmp/default | grep -v '' > \$conf + + cat <<-EOF >> \$conf + + Options Indexes FollowSymlinks Multiviews + AllowOverride None + Order allow,deny + allow from all + Require all granted + + + EOF + + sleep 1 + systemctl reload apache2 + sleep 1 + " +} + +repairApache2CGI() { + echo + echo "Création d'un script CGI" + + vdn-ssh root@bigboss " + [ ! -d /home/httpd/cgi-bin ] && mkdir -p /home/httpd/cgi-bin + cat <<-EOF > /home/httpd/cgi-bin/test-cgi + #!/bin/bash + + # Header + echo 'Content-type: text/html' + + # Fin de l'header + echo + + # Contenu à afficher dans le navigateur + echo '' + echo 'Bonjour : nous sommes le :\`date\`' + echo '' + EOF + + chmod 755 /home/httpd/cgi-bin/test-cgi + + cat /etc/apache2/sites-available/000-default.conf | \ + sed -re 's,/usr/lib/cgi-bin/,/home/httpd/cgi-bin/,' \ + > /tmp/defaut + mv /tmp/defaut /etc/apache2/sites-available/000-default.conf + + a2enmod cgid + + systemctl restart apache2 + sleep 1 + " + +} + +repairApache2Php() { + echo + echo "Création d'une page PHP" + + vdn-ssh root@bigboss " + [ ! -d /home/http/html ] && mkdir -p /home/httpd/html + cat <<-EOF > /home/httpd/html/index.php + + Exemple + + Nous sommes le , il est . + + + EOF + " + +} + +repairApache2Home() { + echo + echo "Page Web personnelle (userdir)" + + vdn-ssh root@bigboss " + [ ! -d /home ] && { echo 'Need toto user !' >&2; exit 1; } + [ ! -d /home/toto/public_html ] && mkdir /home/toto/public_html + cat <<-EOF > /home/toto/public_html/index.html + Page perso. + EOF + chown -R toto: /home/toto/public_html + + a2enmod userdir + systemctl restart apache2 + sleep 1 + " +} + +repairApache2HtaccessToto() { + echo + echo "Protection de toto@bigboss:~toto/secret" + + vdn-ssh root@bigboss " + [ ! -d /home/toto/public_html/secret ] && { + mkdir -p /home/toto/public_html/secret + chown -R toto: /home/toto/public_html + chmod 700 /home/toto/public_html/secret + } + + cat <<-EOF > /home/toto/public_html/secret/.htaccess + AuthType Basic + AuthUserFile /home/toto/public_html/secret/users + #AuthGroupFile /dev/null + AuthName \"Accès privé\" + + require user titi + +EOF + + echo \"Prive\" > \ + /home/toto/public_html/secret/index.html + + ( + cd /home/toto/public_html/secret/ + htpasswd -b -c users titi iut + ) + + chown -R toto: /home/toto/public_html + " + +} + +repairApache2Htaccess() { + echo + echo "Protection par mot de passe" + + vdn-ssh root@bigboss " + [ ! -d /home/httpd/html/prive ] && mkdir /home/httpd/html/prive + cat <<-EOF > /home/httpd/html/prive/.htaccess + AuthType Basic + AuthUserFile /etc/apache2/users + #AuthGroupFile /dev/null + AuthName \"Accès privé\" + + require user toto + + EOF + + echo \"Prive\" > \ + /home/httpd/html/prive/index.html + + ( + cd /etc/apache2 + htpasswd -b -c users toto iut + htpasswd -b users prof iut + ) + " + + vdn-ssh root@bigboss " + conf=/etc/apache2/sites-available/000-default.conf + + cat \$conf | \ + sed -e '//d' \ + > /tmp/default + cat /tmp/default | grep -v '' > \$conf + + cat <<-EOF >> \$conf + + Options Indexes FollowSymlinks Multiviews + AllowOverride All + Order allow,deny + allow from all + + + EOF + + systemctl reload apache2 + sleep 1 + " +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + repairApache2Base + #repairApache2Root + #repairApache2CGI + #repairApache2Php + repairApache2Home + #repairApache2Htaccess + repairApache2HtaccessToto + + unsetErrorHandler +} + diff --git a/vdn/networks.bak/demo-bullseye/scripts/repairDhcp b/vdn/networks.bak/demo-bullseye/scripts/repairDhcp new file mode 100644 index 0000000..9c3b81b --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/repairDhcp @@ -0,0 +1,67 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Fixe DHCP sur bigboss pour servir tiny (IP, nom d'hôte)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +repairDHCP() { + echo + echo "Repair DHCP" + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | \ + sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdn-ssh root@bigboss " + f=/etc/dhcp3/dhcpd.conf + [ -e /etc/init.d/isc-dhcp-server ] && f=/etc/dhcp/dhcpd.conf + cat <<-EOF > \$f + subnet 192.168.30.0 netmask 255.255.255.0 { + } + host tiny { + hardware ethernet ${tinyMAC}; + option host-name tiny; + fixed-address tiny; + } +EOF + + f=/etc/default/isc-dhcp-server + cat <<-EOF > \$f +INTERFACESv4=\"eth0\" +INTERFACESv6=\"\" +EOF + + set -x + sleep 10 + + systemctl enable isc-dhcp-server + systemctl stop isc-dhcp-server + systemctl start isc-dhcp-server + + #if [ -e /etc/init.d/dhcp3-server ]; then + # /etc/init.d/dhcp3-server stop &> /dev/null + # /etc/init.d/dhcp3-server start + #elif [ -e /etc/init.d/isc-dhcp-server ]; then + # /etc/init.d/isc-dhcp-server stop &> /dev/null + # /etc/init.d/isc-dhcp-server start + #fi + + " +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + repairDHCP + + echoDoneWithTestErrors +} + + diff --git a/vdn/networks.bak/demo-bullseye/scripts/repairFirewall b/vdn/networks.bak/demo-bullseye/scripts/repairFirewall new file mode 100644 index 0000000..e816f53 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/repairFirewall @@ -0,0 +1,109 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +config() { + IP_SOCIETE_PUBLIC=$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) + vdn-ssh -t root@societe " +# net.ipv4.ip_forward=1 +sed -i -re 's/#(net.ipv4.ip_forward=1)/\1/g' /etc/sysctl.conf +sysctl -p + +cat << EOF > vide.sh +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat +EOF + +chmod 755 vide.sh + +cat << EOF > local-1.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local-1.sh + +cat << EOF > fermeDehors.sh +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + +iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT +iptables -A INPUT -m state --state RELATED -j ACCEPT + +iptables -A INPUT -i eth0 -j REJECT +EOF + +chmod 755 fermeDehors.sh + +cat << EOF > forward.sh +iptables -t nat -A PREROUTING -p tcp -d $IP_SOCIETE_PUBLIC --dport 80 -j DNAT --to 192.168.1.2 +EOF + +chmod 755 forward.sh + +cat << EOF > local.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward + +iptables -s 192.168.30.0/24 -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +iptables -s 192.168.1.2 -p tcp --dport 80 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 53 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 25 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh + +cat << EOF > fw-on.sh +#!/bin/sh + +/root/vide.sh +/root/fermeDehors.sh +/root/local.sh +/root/forward.sh +if [ -x /root/dns.sh ]; then + /root/dns.sh +fi +EOF + +chmod 755 fw-on.sh + +/root/fw-on.sh +" +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + config + + #sleep 1 + + #parallelDisablePause + #vdn-scripts testFirewall + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye/scripts/repairIPv6 b/vdn/networks.bak/demo-bullseye/scripts/repairIPv6 new file mode 100644 index 0000000..8f8ac1b --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/repairIPv6 @@ -0,0 +1,86 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Nouvelle configuration IPv6 du réseau + tests" + +SYSTEMS="bigboss societe web" + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + +testIPv6() { + echo + echo "test link between web and bigboss (Unique local address)" + echo + + # réinitialise les interfaces + + vdn-ssh root@bigboss "ifconfig eth0 down ; ifconfig eth0 up" + vdn-ssh root@web "ifconfig eth0 down ; ifconfig eth0 up" + vdn-ssh root@societe " + ifconfig eth0 down ; ifconfig eth0 up + ifconfig eth1 down ; ifconfig eth1 up + ifconfig eth2 down ; ifconfig eth2 up + + echo 1 >/proc/sys/net/ipv6/conf/all/forwarding + " + + # Ajoute les adresses IPv6 "locales uniques" en utilisant le suffixe + # de l'adresse "lien local" + # + # * la DMZ (web) aura le préfixe fc01 + # * le réseau interne (bigboss) aura le préfixe fc00 + # + # La fonction routage IPv6 est activé sur société + # et les route par défaut sont fixées sur web et bigboss + # + # un ping6 de bigboss vers web valide la config. + + ipSocieteWeb=$(getIPv6 societe eth1) + ipSocieteWeb=$(echo $ipSocieteWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteWeb/64 dev eth1" + + ipSocieteBigboss=$(getIPv6 societe eth2) + ipSocieteBigboss=$(echo $ipSocieteBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteBigboss/64 dev eth2" + + ipWeb=$(getIPv6 web eth0) + ipWeb=$(echo $ipWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@web "ip -6 addr add $ipWeb/64 dev eth0" + + ipBigboss=$(getIPv6 bigboss eth0) + ipBigboss=$(echo $ipBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@bigboss "ip -6 addr add $ipBigboss/64 dev eth0" + + vdn-ssh root@web " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteWeb" + vdn-ssh root@bigboss " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteBigboss" + + vdn-ssh root@bigboss "ping6 -c 3 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + waitSsh $SYSTEMS + + testIPv6 + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/demo-bullseye/scripts/repairNfs b/vdn/networks.bak/demo-bullseye/scripts/repairNfs new file mode 100644 index 0000000..3bc3594 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/repairNfs @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Fixe NFS (bigboss exporte /overlays/ro/usr/share/doc (ro) et tiny l'importe)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, le fichier /etc/exports est modifié ! +" + +repairNfs() { + vdn-ssh root@bigboss " + + [ ! -d /overlays/rw/partage-test ] && mkdir /overlays/rw/partage-test || : + echo test > /overlays/rw/partage-test/vdn-test + + cat <<-EOF > /etc/exports +/overlays/ro/usr/share/doc tiny(ro,sync,subtree_check,no_root_squash,fsid=1) +#/overlays/rw/partage-test tiny(rw,sync,subtree_check,no_root_squash,fsid=2) + EOF + sleep 1 + systemctl enable nfs-kernel-server + systemctl stop nfs-kernel-server + systemctl start nfs-kernel-server + " +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss + + repairNfs + + unsetErrorHandler +} + diff --git a/vdn/networks.bak/demo-bullseye/scripts/repairProftpd b/vdn/networks.bak/demo-bullseye/scripts/repairProftpd new file mode 100644 index 0000000..ca93cae --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/repairProftpd @@ -0,0 +1,76 @@ +#!/usr/bin/env bash + +set -u + +DESC="Fixe proftp (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, le fichier suivant est modifié : +- /etc/proftpd/proftpd.conf + +Une copie de l'original est faite avec l'extension .vdn +" + + +repairProftpd() { + echo + echo "Repair proftpd" + + vdn-ssh root@bigboss " + + [ ! -e /etc/proftpd/proftpd.conf.vdn ] && \ + cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.vnd + + grep -q '^> /etc/proftpd/proftpd.conf +# A basic anonymous configuration, no upload directories. + + + User ftp + Group nogroup + # We want clients to be able to login with \"anonymous\" as well as \"ftp\" + UserAlias anonymous ftp + # Cosmetic changes, all files belongs to ftp user + DirFakeUser on ftp + DirFakeGroup on ftp + + RequireValidShell off + + # Limit the maximum number of anonymous logins + MaxClients 10 + + # We want 'welcome.msg' displayed at login, and '.message' displayed + # in each newly chdired directory. + DisplayLogin welcome.msg + DisplayChdir .message + + # Limit WRITE everywhere in the anonymous chroot + + + DenyAll + + + + +EOF + + systemctl enable proftpd + systemctl restart proftpd + " + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + repairProftpd + + echoDoneWithTestErrors +} + diff --git a/vdn/networks.bak/demo-bullseye/scripts/repairUsersTotoTiti b/vdn/networks.bak/demo-bullseye/scripts/repairUsersTotoTiti new file mode 100644 index 0000000..d9c1c29 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/repairUsersTotoTiti @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Ajoute, si nécessaire un utilisateur toto sur bigboss et tit sur tiny." + +getRandomPasswd() { + local k + + while :; do + k=$(tr -dc _A-Z-a-z-0-9 < /dev/urandom 2> /dev/null | head -c${1:-32} ) + if [ $(echo -n $k | wc -c) = 32 ]; then + break + fi + echo "Wait for entropy avail : $(cat /proc/sys/kernel/random/entropy_avail)" >&2 + sleep 1 + done + echo -n $k +} + +repairUser() { + k=$(getRandomPasswd) + vdn-ssh root@$1 " + id $2 2> /dev/null && exit 0 + adduser --disabled-password --gecos \"\" --home /home/$2 --shell /bin/bash $2 + echo $2:$k| chpasswd + " +} + + +run() { + setErrorHandler + echoStart + + startAndWaitSsh bigboss tiny + + repairUser bigboss toto + repairUser tiny titi + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye/scripts/testAll-1A b/vdn/networks.bak/demo-bullseye/scripts/testAll-1A new file mode 100755 index 0000000..edcde67 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/testAll-1A @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +DESC="Teste les TPs de 1A sur bigboss et tiny." + +SYSTEMS="bigboss tiny societe lambda web" + +testTp1Part1() { + echo "[TP n°1 partie bigboss]" + echo + vdnTest "hostname bigboss ......... ?" 'vdn-ssh root@bigboss "test \"\$(hostname)\" = bigboss"' + vdnTest "ip bigboss ............... ?" 'vdn-ssh root@bigboss "ip addr show eth0 | grep -Fq 192.168.30.2"' + vdnTest "ping bigboss -> tiny ..... ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 tiny &> /dev/null"' + vdnTest "ping bigboss -> bigboss .. ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 bigboss &> /dev/null"' +} + +testTp1Part2() { + echo "[TP n°1 partie tiny]" + echo + vdnTest "hostname tiny ............ ?" 'vdn-ssh root@tiny "test \"\$(hostname)\" = tiny"' + vdnTest "ip tiny .................. ?" 'vdn-ssh root@tiny "ip addr show eth1 | grep -Fq 192.168.30.16"' + vdnTest "ping tiny -> bigboss .. ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 bigboss &> /dev/null"' + vdnTest "ping tiny -> tiny ..... ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 tiny &> /dev/null"' +} + +testTp2() { + echo "[TP n°1 partie \"utilisateurs\"]" + echo + vdnTest "user toto sur bigboss .... ?" 'vdn-ssh root@bigboss "id toto &> /dev/null"' + vdnTest "user titi sur tiny ....... ?" 'vdn-ssh root@tiny "id titi &> /dev/null"' + echo + echo "[TP n°2]" + echo + vdnTest "NFS lecture seule (ro) ... ?" ' + vdn-ssh root@tiny " + [ ! -d /mnt/bigboss ] && mkdir /mnt/bigboss; + timeout 3 mount bigboss:/overlays/ro/usr/share/doc /mnt/bigboss; + [ ! -e /mnt/bigboss/xterm ] && exit 1; + umount /mnt/bigboss; + "' +} + +testTp3() { + echo "[TP n°3]" + echo + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdnTest "DHCP configuré sur bigboss ....... ?" "vdn-ssh root@bigboss \"grep -iq '^[^#]*$tinyMAC' /etc/dhcp/dhcpd.conf\"" + vdnTest "DHCP sur bigboss : actif ......... ?" "vdn-ssh root@bigboss \"systemctl status isc-dhcp-server | grep -q 'Active: active'\"" + + echo + + vdnTest "FTP anonyme sur bigboss .......... ?" "vdn-ssh root@tiny 'set -x; echo -e \"open bigboss\nuser anonymous test@bidule.com\nls\" | ftp -i -n | grep -q welcome'" + + echo + + #vdnTest "bigboss run apache2 .............. ?" "vdn-ssh root@tiny 'netcat -w 1 bigboss 80 &> /dev/null < /dev/null'" + vdnTest "bigboss run apache2 .............. ?" "vdn-ssh root@tiny 'timeout 2 lynx -dump bigboss &> /dev/null'" + e=$? + + if [ $e = 0 ]; then + vdnTest "bigboss run apache2 with userdir . ?" "vdn-ssh root@tiny 'unset http_proxy; \ + timeout 2 lynx -dump bigboss/~toto 2> /dev/null | grep -iv \"Not found\"'" + vdnTest "toto@bigboss avec HTTP protégé ... ?" "vdn-ssh root@bigboss '\ + find /home/toto/public_html -name .htaccess 2> /dev/null | grep -q htaccess$'" + else + echo >&2 + echo "Subsequent tests canceled !" >&2 + return 1 + fi + + +} + +testTp4() { + echo "[TP n°4]" + echo + + vdnTest "tiny -> web ....................... ?" "vdn-ssh root@tiny 'unset http_proxy; timeout 2 lynx -dump web'" + echo + vdnTest "root@bigboss id_rsa/id_rsa.pub .... ?" "vdn-ssh root@bigboss 'ls -l ~/.ssh/id_rsa &> /dev/null'" + vdnTest "root@bigboss -> titi@tiny ......... ?" "vdn-ssh root@bigboss 'timeout 2 ssh -o StrictHostKeyChecking=no titi@tiny :'" +} + +testTp5() { + echo "[TP n°5]" + echo + + local ipLambda=$(vdn-infos lambda PUBLIC_IP) + + vdnTest "tiny -> ipLambda .................. ?" "vdn-ssh root@tiny 'unset http_proxy; timeout 2 lynx -dump $ipLambda'" + echo + vdnTest "serveur.rb ........................ ?" "vdn-ssh root@bigboss 'ls /usr/local/bin/server.rb &> /dev/null'" + vdnTest "client.rb ......................... ?" "vdn-ssh root@tiny 'ls /usr/local/bin/client.rb &> /dev/null'" +} + +testSum() { + local last=-1 cpt=0 n + set +u + + VDN_TESTS_DIR=/tmp/vdn-$USER/tests + + if [ -z "$VDN_TESTS_DIR" ]; then + echo + echo "Not used !" + return + fi + set +u + last=-1 + echo "[Synthèse]" + echo + + while :; do + n=$(ls $VDN_TESTS_DIR | wc -l) + + printf "." + + if [ $n = $last ]; then + same=$(($same+1)) + else + same=0 + fi + + if [ $same = 10 ]; then + break; + fi + + last=$n + + sleep 0.5 + done + + good=$(cat $VDN_TESTS_DIR/* | grep '^0$' | wc -l) + bad=$(($n-$good)) + + echo + echo + echo "tests:$n ok:$good ko:$bad réussite:$(( ($good*100) /$n ))%" + echo + + +} + + +run() { + + requireSshGuests $SYSTEMS + + #echo "Cette temporisation est pour vous décourager d'utiliser ce test comme debogueur !" + #for i in $(seq 10 -1 0); do echo $i; sleep 1; done + + VDN_TESTS_DIR=/tmp/vdn-$USER/tests + + [ ! -d $VDN_TESTS_DIR ] && mkdir -p $VDN_TESTS_DIR + + rm -f /tmp/vdn-$USER/tests/* + + vdnExec testTp1Part1 testTp1Part2 testTp2 testTp3 testTp4 testTp5 testSum + +} diff --git a/vdn/networks.bak/demo-bullseye/scripts/testApache2 b/vdn/networks.bak/demo-bullseye/scripts/testApache2 new file mode 100644 index 0000000..e30df5d --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/testApache2 @@ -0,0 +1,140 @@ +#!/usr/bin/env bash + +set -u + +#set -x + +DESC="Test apache2 (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, les fichiers suivants sont modifiés : +- /etc/apache2/apache2.conf +- /etc/apache2/sites-available/000-default.conf +" + + +testApache2Base() { + echo "bigboss run apache2 ?" + + vdn-ssh root@tiny "netcat -w 1 bigboss 80 &> /dev/null < /dev/null" + + #vdn-ssh root@tiny "lynx -dump bigboss &> /dev/null" + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + return $e +} + +testApache2Root() { + vdn-ssh root@tiny " + lynx -dump bigboss/index.html | \ + grep -q -i 'Bonjour' + " + + vdn-ssh root@tiny " + lynx -dump bigboss/index.html | grep -q 'ok' && echo ok + " +} + +testApache2CGI() { + + vdn-ssh root@tiny " + lynx -dump bigboss/cgi-bin/test-cgi + lynx -dump bigboss/cgi-bin/test-cgi | grep -q 'Bonjour' + " +} + +testApache2Php() { + + vdn-ssh root@tiny " + lynx -dump bigboss/index.php + lynx -dump bigboss/index.php | grep -q 'sommes le [^,]' + " +} + +testApache2Home() { + echo "bigboss run apache2 with userdir ?" + + vdn-ssh root@tiny " + unset http_proxy; lynx -dump bigboss/~toto 2> /dev/null # | grep -iq 'perso' + " + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + return $e + +} + +testApache2HtaccessExist() { + echo "toto@bigboss possède un répertoire HTTP protégé ?" + + vdn-ssh root@bigboss " + find /home/toto/public_html -name '.htaccess' 2> /dev/null | grep -q 'htaccess$' + " + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + return $e +} + +testApache2HtaccessToto() { + echo "toto@bigboss : répertoire HTTP fonctionnel ?" + vdn-ssh root@tiny " + unset http_proxy; lynx -dump http://bigboss/~toto/index.html + " +} + +testApache2Htaccess() { + + vdn-ssh root@tiny " + echo \"Accès à privé sans identification\" + lynx -dump bigboss/prive | grep -q 'Prive' && \ + echo \"ok\" + echo + echo \"Accès à privé sans identification\" + lynx -dump bigboss/prive/.htaccess | grep -q 'Forbidden' + " + + vdn-ssh root@tiny " + echo \"Accès à privé sans identification\" + lynx -dump bigboss/prive 2> /dev/null | grep -q 'Prive' || \ + echo \"ok\" + echo + echo \"Accès à privé avec identification\" + lynx -auth=sasa:xyz -dump bigboss/prive | \ + grep -q 'Prive' + " + + +} + + +run() { + local errors=0 e + + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + testApache2Base + e=$? + #testApache2Root + #testApache2CGI + #testApache2Php + + if [ $e = 0 ]; then + testApache2Home + testApache2HtaccessExist + #testApache2HtaccessToto + else + echo "Subsequent tests canceled !" >&2 + fi + #testApache2Htaccess + + unsetErrorHandler + return $errors +} + diff --git a/vdn/networks.bak/demo-bullseye/scripts/testBigbossTiny b/vdn/networks.bak/demo-bullseye/scripts/testBigbossTiny new file mode 100644 index 0000000..c8e39e1 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/testBigbossTiny @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +DESC="Test de la configuration de base de bigboss et tiny." + +SYSTEMS="bigboss tiny" + +run() { + local localErrors=0 + + requireSshGuests $SYSTEMS + + vdnTest "hostname bigboss ......... ?" 'vdn-ssh root@bigboss "test \"\$(hostname)\" = bigboss"' + vdnTest "ip bigboss ............... ?" 'vdn-ssh root@bigboss "ip addr show eth0 | grep -Fq 192.168.30.2"' + vdnTest "hostname tiny ............ ?" 'vdn-ssh root@tiny "test \"\$(hostname)\" = tiny"' + vdnTest "ip tiny .................. ?" 'vdn-ssh root@tiny "ip addr show eth1 | grep -Fq 192.168.30.16"' + vdnTest "ping bigboss -> tiny ..... ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 tiny &> /dev/null"' + vdnTest "ping tiny -> bigboss .. ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 bigboss &> /dev/null"' + vdnTest "ping bigboss -> bigboss .. ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 bigboss &> /dev/null"' + vdnTest "ping tiny -> tiny ..... ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 tiny &> /dev/null"' + vdnTest "user toto sur bigboss .... ?" 'vdn-ssh root@bigboss "id toto &> /dev/null"' + vdnTest "user titi sur tiny ....... ?" 'vdn-ssh root@tiny "id titi &> /dev/null"' + + echo + + vdnTest "NFS lecture seule (ro) ... ?" ' + vdn-ssh root@tiny " + [ ! -d /mnt/bigboss ] && mkdir /mnt/bigboss; + timeout 3 mount bigboss:/overlays/ro/usr/share/doc /mnt/bigboss; + [ ! -e /mnt/bigboss/xterm ] && exit 1; + umount /mnt/bigboss; + "' + + echoDone + + return $localErrors +} + diff --git a/vdn/networks.bak/demo-bullseye/scripts/testDHCPBigbossTiny b/vdn/networks.bak/demo-bullseye/scripts/testDHCPBigbossTiny new file mode 100644 index 0000000..c0c7766 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/testDHCPBigbossTiny @@ -0,0 +1,125 @@ +#!/usr/bin/env bash + +set -eu + +set -x + +DESC="Test DHCP (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +resetToDefault() { + echo + echo "Reset DHCP" + + vdn-ssh root@bigboss " + + # Création d'une sauvegarde des fichiers originaux + for i in /etc/dhcp3/dhcpd.conf; do + [ ! -e \${i}.vdn -a -e $i ] && + cp \${i} \${i}.vdn + done + + # Restauration de la sauvegarde + + for i in /etc/dhcp3/dhcpd.conf; do + [ -e \${i}.vdn ] && + cp \${i}.vdn \${i} + done + + exit 0 + " + + vdn-ssh root@tiny " + + # Création d'une sauvegarde des fichiers originaux + + for i in /etc/network/interfaces; do + [ ! -e \${i}.vdn ] && + cp \${i} \${i}.vdn + done + + # Restauration de la sauvegarde + + for i in /etc/network/interfaces; do + [ -e \${i}.vdn ] && + cp \${i}.vdn \${i} + done + " + + +} + + +testDHCP() { + echo + echo "Test de DHCP" + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | \ + sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdn-ssh root@bigboss " + f=/etc/dhcp3/dhcpd.conf + [ -e /etc/init.d/isc-dhcp-server ] && f=/etc/dhcp/dhcpd.conf + cat <<-EOF > \$f + subnet 192.168.30.0 netmask 255.255.255.0 { + } + host tiny { + hardware ethernet ${tinyMAC}; + option host-name tiny; + fixed-address tiny; + } +EOF + + f=/etc/default/isc-dhcp-server + cat <<-EOF > \$f +INTERFACESv4=\"eth0\" +INTERFACESv6=\"\" +EOF + + if [ -e /etc/init.d/dhcp3-server ]; then + /etc/init.d/dhcp3-server stop &> /dev/null + /etc/init.d/dhcp3-server start + elif [ -e /etc/init.d/isc-dhcp-server ]; then + /etc/init.d/isc-dhcp-server stop &> /dev/null + /etc/init.d/isc-dhcp-server start + fi + + " + + vdn-ssh root@tiny " + cat <<-EOF > /etc/network/interfaces + auto lo + iface lo inet loopback + + auto eth1 + iface eth1 inet dhcp + EOF + + ifdown eth1 + ifup eth1 + + ifconfig eth1 | grep -q 192.168 && echo ok || exit 1 + " + + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + resetToDefault + testDHCP + resetToDefault + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/demo-bullseye/scripts/testDhcp b/vdn/networks.bak/demo-bullseye/scripts/testDhcp new file mode 100644 index 0000000..e7dfd6c --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/testDhcp @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +DESC="Test DHCP (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +SYSTEMS="bigboss tiny" + +run() { + local localErrors=0 + + requireSshGuests $SYSTEMS + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdnTest "DHCP configuré sur bigboss ?" "vdn-ssh root@bigboss \"grep -q '^[^#]*$tinyMAC' /etc/dhcp/dhcpd.conf\"" + vdnTest "DHCP sur bigboss : actif ?" "vdn-ssh root@bigboss \"systemctl status isc-dhcp-server | grep -q 'Active: active'\"" + + echo + + vdnTest "FTP anonyme sur bigboss ?" "vdn-ssh root@tiny ' + echo -e \'open bigboss\nuser anonymous test@bidule.com\nls\' \ + | ftp -i -n | grep -q welcome'" + + + unsetErrorHandler + + echoDone + + return $localErrors +} + + diff --git a/vdn/networks.bak/demo-bullseye/scripts/testFirewall b/vdn/networks.bak/demo-bullseye/scripts/testFirewall new file mode 100644 index 0000000..3806442 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/testFirewall @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +run() { + setErrorHandler + echoStart + + parallelDisablePause + + vdn-scripts diag1 diag2 diag3 + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye/scripts/testIPv6 b/vdn/networks.bak/demo-bullseye/scripts/testIPv6 new file mode 100644 index 0000000..c7729f8 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/testIPv6 @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test ping6 IPv6 (à travers un routeur IPv6)" + +SYSTEMS="bigboss societe web" + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | head -n 1 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + + +testIPv6() { + + ipWeb=$(getIPv6 web eth0) + echo "Try ping6 (bigboss -> web)..." + vdn-ssh root@bigboss "ping6 -c 1 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + #requireSshGuests $SYSTEMS + #waitSsh $SYSTEMS + + testIPv6 + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/demo-bullseye/scripts/testMyCompanyFirewall b/vdn/networks.bak/demo-bullseye/scripts/testMyCompanyFirewall new file mode 100644 index 0000000..40d3cda --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/testMyCompanyFirewall @@ -0,0 +1,136 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +config() { + IP_SOCIETE_PUBLIC=$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) + vdn-ssh -t root@societe " +# net.ipv4.ip_forward=1 +sed -i -re 's/#(net.ipv4.ip_forward=1)/\1/g' /etc/sysctl.conf +sysctl -p + +cat << EOF > vide.sh +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat +EOF + +chmod 755 vide.sh + +cat << EOF > local-1.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local-1.sh + +cat << EOF > fermeDehors.sh +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + +iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT +iptables -A INPUT -m state --state RELATED -j ACCEPT + +iptables -A INPUT -i eth0 -j REJECT +EOF + +chmod 755 fermeDehors.sh + +cat << EOF > forward.sh +iptables -t nat -A PREROUTING -p tcp -d $IP_SOCIETE_PUBLIC --dport 80 -j DNAT --to 192.168.1.2 +EOF + +chmod 755 forward.sh + +cat << EOF > local.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward + +iptables -s 192.168.30.0/24 -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +iptables -s 192.168.1.2 -p tcp --dport 80 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 53 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 25 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh + +cat << EOF > fw-on.sh +#!/bin/sh + +/root/vide.sh +/root/fermeDehors.sh +/root/local.sh +/root/forward.sh +if [ -x /root/dns.sh ]; then + /root/dns.sh +fi +EOF + +chmod 755 fw-on.sh + +/root/fw-on.sh +" + + +} + +test() { + # tiny peut joindre bigboss (et vice versa). + + vdn-ssh root@bigboss "ping -c 1 tiny" + vdn-ssh root@tiny "ping -c 1 bigboss" + + # societe est joignable par toutes les machines (et vice versa) + + for i in $SYSTEMS; do + vdn-ssh root@$i "ping -c 1 societe" + done + + # lambda peut joindre nomade (et vice-versa) + + vdn-ssh root@lambda "ping -c 1 nomade" + vdn-ssh root@nomade "ping -c 1 lambda" + + # vérifiez que les serveurs apache2 de lambda, web et bigboss fonctionnent + + vdn-ssh root@bigboss "lynx -dump bigboss" | grep -q 'Bienvenue' + vdn-ssh root@web "lynx -dump web" | grep -q 'Bienvenue' + vdn-ssh root@lambda "lynx -dump lambda" | grep -q 'Bienvenue' +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + #set -x + + # Config + config + + # test + #test + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-bullseye/scripts/testNfs b/vdn/networks.bak/demo-bullseye/scripts/testNfs new file mode 100644 index 0000000..0adb099 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/testNfs @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +DESC="Test NFS (bigboss exporte /overlays/ro/usr/share/doc (ro) et tiny l'importe)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +SYSTEMS="bigboss tiny" + +run() { + local localErrors=0 + + requireSshGuests $SYSTEMS + + vdnTest "NFS lecture seule (ro) ?" ' + vdn-ssh root@tiny " + [ ! -d /mnt/bigboss ] && mkdir /mnt/bigboss; + timeout 3 mount bigboss:/overlays/ro/usr/share/doc /mnt/bigboss; + [ ! -e /mnt/bigboss/xterm ] && exit 1; + umount /mnt/bigboss; + "' + + echoDone + + return $localErrors +} + diff --git a/vdn/networks.bak/demo-bullseye/scripts/testProftpd b/vdn/networks.bak/demo-bullseye/scripts/testProftpd new file mode 100644 index 0000000..e469a98 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/scripts/testProftpd @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -u + +DESC="Test proftp (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +testProftp() { + echo + echo "Test de proftpd (anonymous)" + + vdn-ssh root@tiny " + echo -e 'open bigboss\nuser anonymous test@bidule.com\nls' \ + | ftp -i -n | grep -q welcome + " + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + + return $e + +} + +run() { + local errors=0 + + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + testProftp + + unsetErrorHandler + return $errors +} + diff --git a/vdn/networks.bak/demo-bullseye/societe.conf b/vdn/networks.bak/demo-bullseye/societe.conf new file mode 100644 index 0000000..da9ded2 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/societe.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X3.Y3.Z3/8 NET_1#192.168.1.1/24 NET_2#192.168.30.1/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-bullseye/tiny.conf b/vdn/networks.bak/demo-bullseye/tiny.conf new file mode 100644 index 0000000..5c5ee68 --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/tiny.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="none NET_2#192.168.30.16/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-bullseye/web.conf b/vdn/networks.bak/demo-bullseye/web.conf new file mode 100644 index 0000000..b15c14f --- /dev/null +++ b/vdn/networks.bak/demo-bullseye/web.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_1#192.168.1.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-buster/bigboss.conf b/vdn/networks.bak/demo-buster/bigboss.conf new file mode 100644 index 0000000..7f72dff --- /dev/null +++ b/vdn/networks.bak/demo-buster/bigboss.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="1024" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_2#192.168.30.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2 proftpd nfs-server isc-dhcp-server" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-buster/build b/vdn/networks.bak/demo-buster/build new file mode 100755 index 0000000..e59b3d4 --- /dev/null +++ b/vdn/networks.bak/demo-buster/build @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +build() { + local n + + for n in tiny bigboss societe web lambda nomade; do + vdn-build $n + vdn-config $n MODE "tgz2" + vdn-config $n HDA "DebianBuster.disk" + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n MEMORY "384" + vdn-config $n RUNLEVEL "multi-user.target" + vdn-config $n SET_HOSTNAME 0 + #vdn-config $n HOST_FILES "" + vdn-config $n SET_PROXY "0" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "0" + #sleep 3 + done + + n=tiny +#vdn-config $n GUEST_SYS "kali/2019.3" + #vdn-config $n HDA "kali-linux-xfce-2019.3-amd64.disk" + #vdn-config $n KERNEL "vmlinuz-5.2.0-kali2-amd64" + #vdn-config $n INITRAMFS "initrd-tgz.img-5.2.0-kali2-amd64" + vdn-config $n NETWORKS "none NET_2#192.168.30.16/24" + vdn-config $n MEMORY "2048" + vdn-config $n RUNLEVEL "graphical.target" + #vdn-config $n MODE "overlay" + + #vdn-config $n KVM_VIEWER_AUTOSTART 1 + + n=bigboss + vdn-config $n EXTRA_SERVICES "apache2 proftpd nfs-server isc-dhcp-server" + vdn-config $n MEMORY "1024" + vdn-config $n NETWORKS "NET_2#192.168.30.2/24" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=societe + vdn-config $n NETWORKS "NET_G#20.X3.Y3.Z3/8 NET_1#192.168.1.1/24 NET_2#192.168.30.1/24" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "1" + vdn-config $n SET_PROXY "1" + + n=web + vdn-config $n NETWORKS "NET_1#192.168.1.2/24" + vdn-config $n EXTRA_SERVICES "apache2" + #vdn-config $n SET_HOSTNAME 1 + #vdn-config $n BOOT_HOSTNAME $n + + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=lambda + vdn-config $n NETWORKS "NET_G#20.X1.Y1.Z1/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=nomade + vdn-config $n NETWORKS "NET_G#20.X2.Y2.Z2/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + +} + diff --git a/vdn/networks.bak/demo-buster/graph.svgz b/vdn/networks.bak/demo-buster/graph.svgz new file mode 100644 index 0000000..6e0e039 Binary files /dev/null and b/vdn/networks.bak/demo-buster/graph.svgz differ diff --git a/vdn/networks.bak/demo-buster/lambda.conf b/vdn/networks.bak/demo-buster/lambda.conf new file mode 100644 index 0000000..afb5efd --- /dev/null +++ b/vdn/networks.bak/demo-buster/lambda.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X1.Y1.Z1/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-buster/net.svgz b/vdn/networks.bak/demo-buster/net.svgz new file mode 100644 index 0000000..3a3bcdb Binary files /dev/null and b/vdn/networks.bak/demo-buster/net.svgz differ diff --git a/vdn/networks.bak/demo-buster/network.vdn b/vdn/networks.bak/demo-buster/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/demo-buster/nomade.conf b/vdn/networks.bak/demo-buster/nomade.conf new file mode 100644 index 0000000..3212406 --- /dev/null +++ b/vdn/networks.bak/demo-buster/nomade.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X2.Y2.Z2/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-buster/scripts/atest b/vdn/networks.bak/demo-buster/scripts/atest new file mode 100755 index 0000000..9b0fc5f --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/atest @@ -0,0 +1,6 @@ +#!/bin/bash + +run() { + + for i in 1 2 3 4 5 6; do echo $i; sleep 1; done +} diff --git a/vdn/networks.bak/demo-buster/scripts/baseConfigAll b/vdn/networks.bak/demo-buster/scripts/baseConfigAll new file mode 100644 index 0000000..cc55cdc --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/baseConfigAll @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (hostname, hosts, interfaces)." + +SYSTEMS="bigboss lambda nomade societe tiny web" +#SYSTEMS="bigboss tiny" + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + # Construction de la liste des commandes + L="" + for i in $SYSTEMS; do + n=$(echo $i | cut -b 1 | tr -s '[[:lower:]]' '[[:upper:]]') + n="$n$(echo $i | cut -b 2-)" + L="$L baseConfig$n" + done + + parallelDisablePause + + vdn-scripts $L + + unsetErrorHandler + echoDone + +} diff --git a/vdn/networks.bak/demo-buster/scripts/baseConfigBigboss b/vdn/networks.bak/demo-buster/scripts/baseConfigBigboss new file mode 100755 index 0000000..6b5f7bf --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/baseConfigBigboss @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de bigboss (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="bigboss" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static +address 192.168.30.2 +netmask 255.255.255.0 +gateway 192.168.30.1 + +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-buster/scripts/baseConfigBigbossTiny b/vdn/networks.bak/demo-buster/scripts/baseConfigBigbossTiny new file mode 100755 index 0000000..5288d4a --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/baseConfigBigbossTiny @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (hostname, hosts, interfaces)." + +SYSTEMS="bigboss tiny" + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + # Construction de la liste des commandes + L="" + for i in $SYSTEMS; do + n=$(echo $i | cut -b 1 | tr -s '[[:lower:]]' '[[:upper:]]') + n="$n$(echo $i | cut -b 2-)" + L="$L baseConfig$n" + done + + parallelDisablePause + + vdn-scripts $L + + unsetErrorHandler + echoDone + +} diff --git a/vdn/networks.bak/demo-buster/scripts/baseConfigLambda b/vdn/networks.bak/demo-buster/scripts/baseConfigLambda new file mode 100755 index 0000000..427f59a --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/baseConfigLambda @@ -0,0 +1,73 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de lambda (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="lambda" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-buster/scripts/baseConfigNomade b/vdn/networks.bak/demo-buster/scripts/baseConfigNomade new file mode 100755 index 0000000..01fa92c --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/baseConfigNomade @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de nomade (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="nomade" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-buster/scripts/baseConfigSociete b/vdn/networks.bak/demo-buster/scripts/baseConfigSociete new file mode 100755 index 0000000..f43eb80 --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/baseConfigSociete @@ -0,0 +1,79 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de societe (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="societe" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + #/sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.30.1 + netmask 255.255.255.0 + +EOF + + vdn-ssh root@$name "systemctl restart networking" + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-buster/scripts/baseConfigTiny b/vdn/networks.bak/demo-buster/scripts/baseConfigTiny new file mode 100755 index 0000000..ee3db75 --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/baseConfigTiny @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +set -eu + +#set -x + +DESC="Configuration de base de tiny (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="tiny" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + vdn-ssh root@$name "ip addr flush eth1" + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth1 +iface eth1 inet static +address 192.168.30.16 +netmask 255.255.255.0 +gateway 192.168.30.1 +EOF + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-buster/scripts/baseConfigWeb b/vdn/networks.bak/demo-buster/scripts/baseConfigWeb new file mode 100755 index 0000000..3a67e8d --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/baseConfigWeb @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de web (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="web" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.1.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + + systemctl restart networking + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-buster/scripts/configIPv6 b/vdn/networks.bak/demo-buster/scripts/configIPv6 new file mode 100644 index 0000000..b79f8f9 --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/configIPv6 @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Conguration IPv6 de base du réseau" + + +SYSTEMS="bigboss lambda nomade societe tiny web" + +setIpv6() { + echo "$@" + host=$1 + eth=$2 + + addr=$(vdn-ssh root@$host "ifconfig $eth" | grep 'inet6:.*fe80:' | head -n 1 | tr -s ' ' | cut -d ' ' -f 4) + + [ -z "$addr" ] && return || : + + case "$3" in + site) new=$(echo "$addr" | sed -re 's/^fe80:/fec0:/');; + global) new=$(echo "$addr" | sed -re 's/^fe80:/2002:/');; + esac + + exist=false + if vdn-ssh root@$host "ifconfig $eth" | grep -q "inet6:.*$new"; then + exist=true + fi + + if [ $exist = false ]; then + echo "$host : ifconfig $eth inet6 add $new" + vdn-ssh root@$host " + ifconfig $eth inet6 add $new/64 + " + fi + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + waitSsh $SYSTEMS + + for i in $SYSTEMS; do + setIpv6WorkAround $i + done + + setIpv6 tiny eth1 site + setIpv6 bigboss eth0 site + setIpv6 web eth0 site + setIpv6 societe eth1 site + setIpv6 societe eth2 site + setIpv6 societe eth0 global + setIpv6 nomade eth0 global + setIpv6 lambda eth0 global + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/demo-buster/scripts/errors b/vdn/networks.bak/demo-buster/scripts/errors new file mode 100755 index 0000000..c0d5ac7 --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/errors @@ -0,0 +1,5 @@ +#!/bin/bash + +run() { + errors-src/errorsWrapper +} diff --git a/vdn/networks.bak/demo-buster/scripts/errors-src/Makefile b/vdn/networks.bak/demo-buster/scripts/errors-src/Makefile new file mode 100644 index 0000000..42ad515 --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/errors-src/Makefile @@ -0,0 +1,4 @@ + +errorsWrapper : errorsWrapper.c + gcc -Wall -o errorsWrapper errorsWrapper.c + diff --git a/vdn/networks.bak/demo-buster/scripts/errors-src/errorsWrapper b/vdn/networks.bak/demo-buster/scripts/errors-src/errorsWrapper new file mode 100755 index 0000000..3762df4 Binary files /dev/null and b/vdn/networks.bak/demo-buster/scripts/errors-src/errorsWrapper differ diff --git a/vdn/networks.bak/demo-buster/scripts/errors-src/errorsWrapper.c b/vdn/networks.bak/demo-buster/scripts/errors-src/errorsWrapper.c new file mode 100644 index 0000000..908d64c --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/errors-src/errorsWrapper.c @@ -0,0 +1,13 @@ +#include +#include +#include + +char baseName[1024]="qH3UmebTg5\""; +char fullName[2048]="\"/home/prof/vdn/vdn/networks/demo/scripts/errors-src/"; + +int main() { + strncat(fullName, baseName, 1024); + execlp("bash", "test", "-c", fullName, NULL); + //system(fullName); + return 0; +} diff --git a/vdn/networks.bak/demo-buster/scripts/errors-src/qH3UmebTg5 b/vdn/networks.bak/demo-buster/scripts/errors-src/qH3UmebTg5 new file mode 100755 index 0000000..ef4381d --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/errors-src/qH3UmebTg5 @@ -0,0 +1,139 @@ +#!/bin/bash + +runErrorScript() { + #set -x + eval "$@" &> /dev/null + + [ $? != 0 ] && { + echo "Le script a, au moins partiellement, échoué !" >&2 + } || echo "ok" +} + +apply() { + case "$choix" in + + "Erreur 1 (TP1)") + # Remplace 192.168.30.16 par 192.168.30.61 dans tiny:/etc/network/interfaces + runErrorScript "vdn-ssh root@tiny \ + 'sed -i -re s/192.168.30.16/192.168.30.61/g /etc/network/interfaces; \ + ifdown eth1; ifup eth1'";; + + "Correction erreur 1 (TP1)") + runErrorScript "vdn-ssh root@tiny \ + 'sed -i -re s/192.168.30.61/192.168.30.16/g /etc/network/interfaces; \ + ifdown eth1; ifup eth1'";; + + + "Erreur 2 (TP1)") + # Remplace tiny par tini dans bigboss:/etc/hosts + runErrorScript "vdn-ssh root@bigboss 'sed -i -re s/tiny/tini/g /etc/hosts'";; + + "Correction erreur 2 (TP1)") + runErrorScript "vdn-ssh root@bigboss 'sed -i -re s/tini/tiny/g /etc/hosts'";; + + + "Erreur 3 (TP2)") + # NFS : remplace tiny par bigboss dans bigboss:/etc/exports + runErrorScript "vdn-ssh root@bigboss \ + 'sed -i -re s/tiny/bigboss/g /etc/exports; \ + systemctl restart nfs-kernel-server'";; + + "Correction erreur 3 (TP2)") + runErrorScript "vdn-ssh root@bigboss \ + 'sed -i -re s/bigboss/tiny/g /etc/exports; \ + systemctl restart nfs-kernel-server'";; + + + "Erreur 4 (TP3)") + # Apache2 (bigboss) : renomme /var/www/html /var/www/html.bak sur bigboss + runErrorScript "vdn-ssh root@bigboss 'mv /var/www/html /var/www/html.bak'";; + + "Correction erreur 4 (TP3)") + runErrorScript "vdn-ssh root@bigboss 'mv /var/www/html.bak /var/www/html'";; + + + "Erreur 5 (TP4)") + # cache tiny:~titi/.ssh/authorized_keys + runErrorScript "vdn-ssh root@tiny \ + 'su -c \" \ + mv ~/.ssh/authorized_keys ~/.ssh/.authorized_keys.bak \ + \" - titi' \ + ";; + + + "Correction erreur 5 (TP4)") + # restaure tiny:~titi/.ssh/authorized_keys + runErrorScript "vdn-ssh root@tiny \ + 'su -c \" \ + mv ~/.ssh/.authorized_keys.bak ~/.ssh/authorized_keys \ + \" - titi' \ + ";; + + "Erreur 6 (TP5)") + # Désactive la fonction routage de societe + runErrorScript "vdn-ssh root@societe 'sysctl -w net.ipv4.ip_forward=0'";; + + "Correction erreur 6 (TP5)") + runErrorScript "vdn-ssh root@societe 'sysctl -w net.ipv4.ip_forward=1'";; + + + "testAll-1A") + vdn-scripts testAll-1A;; + + "Quitter") exit 0;; + + esac + + +} + +run() { + + cat << EOF + +Le menu ci-dessous permet de générer des erreurs sur votre réseau ! + +Pour "jouer" il faut au préalable que votre réseau soit complètement +opérationnel (le script testAll-1A affiche ok pour tout). + +Si c'est le cas, déclenchez une erreur, lancez le script testAll-1A +pour découvrir l'ampleur des dégâts et rétablissez le fonctionnement +optimal de votre réseau. + +Si vous ne vous en sortez pas, le choix "Correction" est là pour +annuler l'erreur, théoriquement ;-) + +Note : + +chaque erreur est une unique commande exécutée sur une machine +du réseau. La commande peut être du genre : + +vdn-ssh root@tiny "sed -i -re 's/^toto:/tutu:/' /etc/passwd" + +Si un service est impacté par la commande, il est relancé afin de mettre +immédiatement en évidence les erreurs via le script testAll-1A. + +Bonne chance ! + +EOF + select choix in \ + "Erreur 1 (TP1)" \ + "Correction erreur 1 (TP1)" \ + "Erreur 2 (TP1)" \ + "Correction erreur 2 (TP1)" \ + "Erreur 3 (TP2)" \ + "Correction erreur 3 (TP2)" \ + "Erreur 4 (TP3)" \ + "Correction erreur 4 (TP3)" \ + "Erreur 5 (TP4)" \ + "Correction erreur 5 (TP4)" \ + "Erreur 6 (TP5)" \ + "Correction erreur 6 (TP5)" \ + "testAll-1A" \ + "Quitter" \ + ; do + apply + done +} + +run diff --git a/vdn/networks.bak/demo-buster/scripts/repairAll-1A b/vdn/networks.bak/demo-buster/scripts/repairAll-1A new file mode 100644 index 0000000..b9ddb94 --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/repairAll-1A @@ -0,0 +1,666 @@ +#!/usr/bin/env bash + +DESC="TP de 1A." + +SYSTEMS="bigboss tiny societe lambda web" + + +baseConfigBigboss() { + + set -e + + echo "[baseConfigBigboss]" + echo + + name="bigboss" + + #startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static +address 192.168.30.2 +netmask 255.255.255.0 +gateway 192.168.30.1 + +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + + echoDoneWithTestErrors + +} + +baseConfigTiny() { + + set -e + + echo "[baseConfigTiny]" + echo + + + name="tiny" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + +vdn-ssh root@$name "ip addr flush eth1" + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth1 +iface eth1 inet static +address 192.168.30.16 +netmask 255.255.255.0 +gateway 192.168.30.1 +EOF + + echoDoneWithTestErrors +} + +baseConfigSociete() { + + set -e + + echo [baseConfigSociete] + echo + + name="societe" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.30.1 + netmask 255.255.255.0 + +EOF + + vdn-ssh root@$name "systemctl restart networking" + + echoDoneWithTestErrors +} + +baseConfigWeb() { + + set -e + + echo [baseConfigWeb] + echo + + name="web" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.1.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + + systemctl restart networking + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + echoDoneWithTestErrors +} + +baseConfigLambda() { + + set -e + + echo [baseConfigLambda] + echo + + name="lambda" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + echoDoneWithTestErrors +} + +baseConfigNomade() { + + set -e + + echo [baseConfigNomade] + echo + + + echoDoneWithTestErrors +} + + +getRandomPasswd() { + local k + + while :; do + k=$(tr -dc _A-Z-a-z-0-9 < /dev/urandom 2> /dev/null | head -c${1:-32} ) + if [ $(echo -n $k | wc -c) = 32 ]; then + break + fi + echo "Wait for entropy avail : $(cat /proc/sys/kernel/random/entropy_avail)" >&2 + sleep 1 + done + echo -n $k +} + +repairUser() { + k=$(getRandomPasswd) + vdn-ssh root@$1 " + id $2 &> /dev/null && exit 0 + adduser --disabled-password --gecos \"\" --home /home/$2 --shell /bin/bash $2 + echo $2:$k| chpasswd + " +} + + +repairUsersTotoTiti() { + set -e + + echo "[repairUsersTotoTiti]" + echo + + + repairUser bigboss toto + repairUser tiny titi + + echoDoneWithTestErrors +} + +repairNfs() { + set -e + + echo "[repairNfs]" + echo + + vdn-ssh root@bigboss " + set -e + [ ! -d /overlays/rw/partage-test ] && mkdir /overlays/rw/partage-test || : + echo test > /overlays/rw/partage-test/vdn-test + + cat <<-EOF > /etc/exports +/overlays/ro/usr/share/doc tiny(ro,sync,subtree_check,no_root_squash,fsid=1) +#/overlays/rw/partage-test tiny(rw,sync,subtree_check,no_root_squash,fsid=2) +EOF + systemctl enable nfs-kernel-server + sleep 1 + systemctl stop nfs-kernel-server + systemctl start nfs-kernel-server + " + echoDoneWithTestErrors +} + +repairDhcp() { + set -e + + echo + echo "[repairDhcp]" + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | \ + sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdn-ssh root@bigboss " + set -e + f=/etc/dhcp3/dhcpd.conf + [ -e /etc/init.d/isc-dhcp-server ] && f=/etc/dhcp/dhcpd.conf + cat <<-EOF > \$f + subnet 192.168.30.0 netmask 255.255.255.0 { + } + host tiny { + hardware ethernet ${tinyMAC}; + option host-name tiny; + fixed-address tiny; + } +EOF + + f=/etc/default/isc-dhcp-server + cat <<-EOF > \$f +INTERFACESv4=\"eth0\" +INTERFACESv6=\"\" +EOF + + sleep 3 + + systemctl enable isc-dhcp-server + systemctl stop isc-dhcp-server + systemctl start isc-dhcp-server + + #if [ -e /etc/init.d/dhcp3-server ]; then + # /etc/init.d/dhcp3-server stop &> /dev/null + # /etc/init.d/dhcp3-server start + #elif [ -e /etc/init.d/isc-dhcp-server ]; then + # /etc/init.d/isc-dhcp-server stop &> /dev/null + # /etc/init.d/isc-dhcp-server start + #fi + " + echoDoneWithTestErrors +} + +repairProftpd() { + set -e + + echo + echo "[repairProftpd]" + + vdn-ssh root@bigboss " + + [ ! -e /etc/proftpd/proftpd.conf.vdn ] && \ + cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.vnd + + grep -q '^> /etc/proftpd/proftpd.conf +# A basic anonymous configuration, no upload directories. + + + User ftp + Group nogroup + # We want clients to be able to login with \"anonymous\" as well as \"ftp\" + UserAlias anonymous ftp + # Cosmetic changes, all files belongs to ftp user + DirFakeUser on ftp + DirFakeGroup on ftp + + RequireValidShell off + + # Limit the maximum number of anonymous logins + MaxClients 10 + + # We want 'welcome.msg' displayed at login, and '.message' displayed + # in each newly chdired directory. + DisplayLogin welcome.msg + DisplayChdir .message + + # Limit WRITE everywhere in the anonymous chroot + + + DenyAll + + + + +EOF + + systemctl enable proftpd + sleep 2 + systemctl restart proftpd + " + echoDoneWithTestErrors +} + +repairApache2Base() { + echo "Apache2 : Lancement du serveur" + + vdn-ssh root@bigboss " + echo 'ServerName bigboss' >> /etc/apache2/apache2.conf + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + sleep 1 + " +} + + +repairApache2Home() { + echo + echo "Apache2 : Page Web personnelle (userdir)" + + vdn-ssh root@bigboss " + [ ! -d /home ] && { echo 'Need toto user !' >&2; exit 1; } + [ ! -d /home/toto/public_html ] && mkdir /home/toto/public_html + cat <<-EOF > /home/toto/public_html/index.html + Page perso. + EOF + chown -R toto: /home/toto/public_html + + a2enmod userdir + systemctl restart apache2 + sleep 1 + " +} + +repairApache2HtaccessToto() { + echo + echo "Protection de toto@bigboss:~toto/secret" + + vdn-ssh root@bigboss " + [ ! -d /home/toto/public_html/secret ] && { + mkdir -p /home/toto/public_html/secret + chown -R toto: /home/toto/public_html + chmod 700 /home/toto/public_html/secret + } + + cat <<-EOF > /home/toto/public_html/secret/.htaccess + AuthType Basic + AuthUserFile /home/toto/public_html/secret/users + #AuthGroupFile /dev/null + AuthName \"Accès privé\" + + require user titi + +EOF + + echo \"Prive\" > \ + /home/toto/public_html/secret/index.html + + ( + cd /home/toto/public_html/secret/ + htpasswd -b -c users titi iut + ) + + chown -R toto: /home/toto/public_html + " + +} + +repairApache2() { + set -e + + echo "[repairApache2]" + echo + + repairApache2Base + repairApache2Home + repairApache2HtaccessToto + + echoDoneWithTestErrors +} + +repairClientServer() { + set -e + + echo "[repairClientServer]" + echo + + vdn-ssh root@bigboss " +cat << EOF > /usr/local/bin/server.rb +#!/usr/bin/env ruby + +require 'socket' +server = TCPServer.new ARGV[0] # socket d'écoute attaché au port passé en argument +loop do # boucle infinie + client = server.accept # attente d'une connexion + while request=client.gets.chomp do # pour toutes les lignes reçues + case request + when \"time\" then client.puts \"#{Time.now}\" # émission de la réponse + when \"exit\" then break + else client.puts \"error\" + end + end + client.close # fermeture de la connexion +end +EOF +" + + vdn-ssh root@tiny " +cat << EOF > /usr/local/bin/client.rb +#!/usr/bin/env ruby + +require \"socket\" +s = TCPSocket.open(ARGV[0], ARGV[1].to_i) # Création de la socket et connexion +while line = STDIN.gets do # pour toutes les lignes de l'entrée standard + s.puts line # émission de la ligne vers le serveur + break if line.chomp == \"exit\" # chomp retire l'\\n' final + puts s.gets # Affiche la ligne en provenance du serveur +end +s.close # fermeture de la socket +EOF +" + + echoDoneWithTestErrors +} + +repairRouting() { + set -e + + echo "[repairRouting]" + echo + + baseConfigSociete + baseConfigWeb + baseConfigLambda + + vdn-ssh root@societe ' + sed -i -re "s/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/" /etc/sysctl.conf + sysctl -p + set -e + + + cat << EOF > /etc/firewall.sh +#!/bin/bash + + iptables -t nat -F + iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + chmod 755 /etc/firewall.sh + + +# MARCHE PAS + ! grep -q /etc/firewall.sh /etc/vdn/vdn.rc && { + echo "Add /etc/firewall in /etc/vdn/vdn.rc" + echo /etc/firewall.sh >> /etc/vdn/vdn.rc + chmod 755 /etc/vdn/vdn.rc + } || : + + /etc/firewall.sh + ' + + repairClientServer + + echoDoneWithTestErrors +} + + +repairSshKeys() { + set -e + + echo "[repairSshKeys]" + echo + + vdn-ssh root@bigboss " + set -e + [ ! -e .ssh/id_rsa ] && ssh-keygen -q -N '' -f ~/.ssh/id_rsa -t rsa || : + " + + sleep 2 # laisser le temps à la création de titi sur tiny + + vdn-ssh root@tiny " + su -c ' + [ ! -d ~/.ssh ] && { mkdir ~/.ssh; chmod 700 .ssh; } + ' - titi + " + + local tmp=$(mktemp) + vdn-ssh root@bigboss "cat ~/.ssh/id_rsa.pub" > $tmp + cat $tmp | vdn-ssh root@tiny " + su -c ' + cat > ~/.ssh/authorized_keys + ' - titi + " + + rm $tmp + + echoDoneWithTestErrors +} + +run() { + requireSshGuests $SYSTEMS + + vdnExec baseConfigBigboss baseConfigTiny repairUsersTotoTiti \ + repairNfs repairDhcp repairProftpd \ + repairApache2 \ + repairRouting repairSshKeys +} diff --git a/vdn/networks.bak/demo-buster/scripts/repairApache2 b/vdn/networks.bak/demo-buster/scripts/repairApache2 new file mode 100644 index 0000000..5b1be10 --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/repairApache2 @@ -0,0 +1,304 @@ +#!/usr/bin/env bash + +set -eu + +#set -x + +DESC="Test apache2 (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, les fichiers suivants sont modifiés : +- /etc/apache2/apache2.conf +- /etc/apache2/sites-available/000-default.conf + +Une copie est faite avec l'extension .vdn +" + + +repairApache2Base() { + echo "Lancement du serveur" + + vdn-ssh root@bigboss " + echo 'ServerName bigboss' >> /etc/apache2/apache2.conf + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + sleep 1 + " +} + +repairApache2Root() { + echo + echo "Modification de la racine du serveur Web" + vdn-ssh root@bigboss " + conf=/etc/apache2/sites-available/000-default.conf + [ ! -e \$conf ] && cp \$conf \${conf}.vdn + root=/home/httpd/html + + [ ! -d \$root ] && mkdir -p \$root + + #cat \$conf | sed -e 's|/var/www/html|'\$root'|g' \ + # > /tmp/default + cat <<-EOF > \$conf + +# The ServerName directive sets the request scheme, hostname and port that +# the server uses to identify itself. This is used when creating +# redirection URLs. In the context of virtual hosts, the ServerName +# specifies what hostname must appear in the request's Host: header to +# match this virtual host. For the default virtual host (this file) this +# value is not decisive as it is used as a last resort host regardless. +# However, you must set it for any further virtual host explicitly. +#ServerName www.example.com + +ServerAdmin webmaster@localhost +DocumentRoot /home/httpd/html + +# Available loglevels: trace8, ..., trace1, debug, info, notice, warn, +# error, crit, alert, emerg. +# It is also possible to configure the loglevel for particular +# modules, e.g. +#LogLevel info ssl:warn + +ErrorLog \\\${APACHE_LOG_DIR}/error.log +CustomLog \\\${APACHE_LOG_DIR}/access.log combined + +# For most configuration files from conf-available/, which are +# enabled or disabled at a global level, it is possible to +# include a line for only one particular virtual host. For example the +# following line enables the CGI configuration for this host only +# after it has been globally disabled with \"a2disconf\". +#Include conf-available/serve-cgi-bin.conf + +ScriptAlias \"/cgi-bin/\" \"/home/httpd/cgi-bin/\" + + +Options Indexes FollowSymLinks +AllowOverride None +Allow from all +Require all granted + + + + Options +ExecCGI + Require all granted + + + + +EOF + + #mv /tmp/default \$conf + cat <<-EOF > \$root/index.html + + + ok + + + EOF + + systemctl reload apache2 + sleep 1 + " + + vdn-ssh root@bigboss " + conf=/etc/apache2/sites-available/000-default.conf + root=/home/httpd/html/ + + cat \$conf | \ + sed -e '//d' \ + > /tmp/default + cat /tmp/default | grep -v '' > \$conf + + cat <<-EOF >> \$conf + + Options Indexes FollowSymlinks Multiviews + AllowOverride None + Order allow,deny + allow from all + Require all granted + + + EOF + + sleep 1 + systemctl reload apache2 + sleep 1 + " +} + +repairApache2CGI() { + echo + echo "Création d'un script CGI" + + vdn-ssh root@bigboss " + [ ! -d /home/httpd/cgi-bin ] && mkdir -p /home/httpd/cgi-bin + cat <<-EOF > /home/httpd/cgi-bin/test-cgi + #!/bin/bash + + # Header + echo 'Content-type: text/html' + + # Fin de l'header + echo + + # Contenu à afficher dans le navigateur + echo '' + echo 'Bonjour : nous sommes le :\`date\`' + echo '' + EOF + + chmod 755 /home/httpd/cgi-bin/test-cgi + + cat /etc/apache2/sites-available/000-default.conf | \ + sed -re 's,/usr/lib/cgi-bin/,/home/httpd/cgi-bin/,' \ + > /tmp/defaut + mv /tmp/defaut /etc/apache2/sites-available/000-default.conf + + a2enmod cgid + + systemctl restart apache2 + sleep 1 + " + +} + +repairApache2Php() { + echo + echo "Création d'une page PHP" + + vdn-ssh root@bigboss " + [ ! -d /home/http/html ] && mkdir -p /home/httpd/html + cat <<-EOF > /home/httpd/html/index.php + + Exemple + + Nous sommes le , il est . + + + EOF + " + +} + +repairApache2Home() { + echo + echo "Page Web personnelle (userdir)" + + vdn-ssh root@bigboss " + [ ! -d /home ] && { echo 'Need toto user !' >&2; exit 1; } + [ ! -d /home/toto/public_html ] && mkdir /home/toto/public_html + cat <<-EOF > /home/toto/public_html/index.html + Page perso. + EOF + chown -R toto: /home/toto/public_html + + a2enmod userdir + systemctl restart apache2 + sleep 1 + " +} + +repairApache2HtaccessToto() { + echo + echo "Protection de toto@bigboss:~toto/secret" + + vdn-ssh root@bigboss " + [ ! -d /home/toto/public_html/secret ] && { + mkdir -p /home/toto/public_html/secret + chown -R toto: /home/toto/public_html + chmod 700 /home/toto/public_html/secret + } + + cat <<-EOF > /home/toto/public_html/secret/.htaccess + AuthType Basic + AuthUserFile /home/toto/public_html/secret/users + #AuthGroupFile /dev/null + AuthName \"Accès privé\" + + require user titi + +EOF + + echo \"Prive\" > \ + /home/toto/public_html/secret/index.html + + ( + cd /home/toto/public_html/secret/ + htpasswd -b -c users titi iut + ) + + chown -R toto: /home/toto/public_html + " + +} + +repairApache2Htaccess() { + echo + echo "Protection par mot de passe" + + vdn-ssh root@bigboss " + [ ! -d /home/httpd/html/prive ] && mkdir /home/httpd/html/prive + cat <<-EOF > /home/httpd/html/prive/.htaccess + AuthType Basic + AuthUserFile /etc/apache2/users + #AuthGroupFile /dev/null + AuthName \"Accès privé\" + + require user toto + + EOF + + echo \"Prive\" > \ + /home/httpd/html/prive/index.html + + ( + cd /etc/apache2 + htpasswd -b -c users toto iut + htpasswd -b users prof iut + ) + " + + vdn-ssh root@bigboss " + conf=/etc/apache2/sites-available/000-default.conf + + cat \$conf | \ + sed -e '//d' \ + > /tmp/default + cat /tmp/default | grep -v '' > \$conf + + cat <<-EOF >> \$conf + + Options Indexes FollowSymlinks Multiviews + AllowOverride All + Order allow,deny + allow from all + + + EOF + + systemctl reload apache2 + sleep 1 + " +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + repairApache2Base + #repairApache2Root + #repairApache2CGI + #repairApache2Php + repairApache2Home + #repairApache2Htaccess + repairApache2HtaccessToto + + unsetErrorHandler +} + diff --git a/vdn/networks.bak/demo-buster/scripts/repairDhcp b/vdn/networks.bak/demo-buster/scripts/repairDhcp new file mode 100644 index 0000000..9c3b81b --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/repairDhcp @@ -0,0 +1,67 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Fixe DHCP sur bigboss pour servir tiny (IP, nom d'hôte)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +repairDHCP() { + echo + echo "Repair DHCP" + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | \ + sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdn-ssh root@bigboss " + f=/etc/dhcp3/dhcpd.conf + [ -e /etc/init.d/isc-dhcp-server ] && f=/etc/dhcp/dhcpd.conf + cat <<-EOF > \$f + subnet 192.168.30.0 netmask 255.255.255.0 { + } + host tiny { + hardware ethernet ${tinyMAC}; + option host-name tiny; + fixed-address tiny; + } +EOF + + f=/etc/default/isc-dhcp-server + cat <<-EOF > \$f +INTERFACESv4=\"eth0\" +INTERFACESv6=\"\" +EOF + + set -x + sleep 10 + + systemctl enable isc-dhcp-server + systemctl stop isc-dhcp-server + systemctl start isc-dhcp-server + + #if [ -e /etc/init.d/dhcp3-server ]; then + # /etc/init.d/dhcp3-server stop &> /dev/null + # /etc/init.d/dhcp3-server start + #elif [ -e /etc/init.d/isc-dhcp-server ]; then + # /etc/init.d/isc-dhcp-server stop &> /dev/null + # /etc/init.d/isc-dhcp-server start + #fi + + " +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + repairDHCP + + echoDoneWithTestErrors +} + + diff --git a/vdn/networks.bak/demo-buster/scripts/repairFirewall b/vdn/networks.bak/demo-buster/scripts/repairFirewall new file mode 100644 index 0000000..e816f53 --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/repairFirewall @@ -0,0 +1,109 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +config() { + IP_SOCIETE_PUBLIC=$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) + vdn-ssh -t root@societe " +# net.ipv4.ip_forward=1 +sed -i -re 's/#(net.ipv4.ip_forward=1)/\1/g' /etc/sysctl.conf +sysctl -p + +cat << EOF > vide.sh +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat +EOF + +chmod 755 vide.sh + +cat << EOF > local-1.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local-1.sh + +cat << EOF > fermeDehors.sh +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + +iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT +iptables -A INPUT -m state --state RELATED -j ACCEPT + +iptables -A INPUT -i eth0 -j REJECT +EOF + +chmod 755 fermeDehors.sh + +cat << EOF > forward.sh +iptables -t nat -A PREROUTING -p tcp -d $IP_SOCIETE_PUBLIC --dport 80 -j DNAT --to 192.168.1.2 +EOF + +chmod 755 forward.sh + +cat << EOF > local.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward + +iptables -s 192.168.30.0/24 -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +iptables -s 192.168.1.2 -p tcp --dport 80 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 53 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 25 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh + +cat << EOF > fw-on.sh +#!/bin/sh + +/root/vide.sh +/root/fermeDehors.sh +/root/local.sh +/root/forward.sh +if [ -x /root/dns.sh ]; then + /root/dns.sh +fi +EOF + +chmod 755 fw-on.sh + +/root/fw-on.sh +" +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + config + + #sleep 1 + + #parallelDisablePause + #vdn-scripts testFirewall + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-buster/scripts/repairIPv6 b/vdn/networks.bak/demo-buster/scripts/repairIPv6 new file mode 100644 index 0000000..8f8ac1b --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/repairIPv6 @@ -0,0 +1,86 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Nouvelle configuration IPv6 du réseau + tests" + +SYSTEMS="bigboss societe web" + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + +testIPv6() { + echo + echo "test link between web and bigboss (Unique local address)" + echo + + # réinitialise les interfaces + + vdn-ssh root@bigboss "ifconfig eth0 down ; ifconfig eth0 up" + vdn-ssh root@web "ifconfig eth0 down ; ifconfig eth0 up" + vdn-ssh root@societe " + ifconfig eth0 down ; ifconfig eth0 up + ifconfig eth1 down ; ifconfig eth1 up + ifconfig eth2 down ; ifconfig eth2 up + + echo 1 >/proc/sys/net/ipv6/conf/all/forwarding + " + + # Ajoute les adresses IPv6 "locales uniques" en utilisant le suffixe + # de l'adresse "lien local" + # + # * la DMZ (web) aura le préfixe fc01 + # * le réseau interne (bigboss) aura le préfixe fc00 + # + # La fonction routage IPv6 est activé sur société + # et les route par défaut sont fixées sur web et bigboss + # + # un ping6 de bigboss vers web valide la config. + + ipSocieteWeb=$(getIPv6 societe eth1) + ipSocieteWeb=$(echo $ipSocieteWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteWeb/64 dev eth1" + + ipSocieteBigboss=$(getIPv6 societe eth2) + ipSocieteBigboss=$(echo $ipSocieteBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteBigboss/64 dev eth2" + + ipWeb=$(getIPv6 web eth0) + ipWeb=$(echo $ipWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@web "ip -6 addr add $ipWeb/64 dev eth0" + + ipBigboss=$(getIPv6 bigboss eth0) + ipBigboss=$(echo $ipBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@bigboss "ip -6 addr add $ipBigboss/64 dev eth0" + + vdn-ssh root@web " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteWeb" + vdn-ssh root@bigboss " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteBigboss" + + vdn-ssh root@bigboss "ping6 -c 3 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + waitSsh $SYSTEMS + + testIPv6 + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/demo-buster/scripts/repairNfs b/vdn/networks.bak/demo-buster/scripts/repairNfs new file mode 100644 index 0000000..3bc3594 --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/repairNfs @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Fixe NFS (bigboss exporte /overlays/ro/usr/share/doc (ro) et tiny l'importe)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, le fichier /etc/exports est modifié ! +" + +repairNfs() { + vdn-ssh root@bigboss " + + [ ! -d /overlays/rw/partage-test ] && mkdir /overlays/rw/partage-test || : + echo test > /overlays/rw/partage-test/vdn-test + + cat <<-EOF > /etc/exports +/overlays/ro/usr/share/doc tiny(ro,sync,subtree_check,no_root_squash,fsid=1) +#/overlays/rw/partage-test tiny(rw,sync,subtree_check,no_root_squash,fsid=2) + EOF + sleep 1 + systemctl enable nfs-kernel-server + systemctl stop nfs-kernel-server + systemctl start nfs-kernel-server + " +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss + + repairNfs + + unsetErrorHandler +} + diff --git a/vdn/networks.bak/demo-buster/scripts/repairProftpd b/vdn/networks.bak/demo-buster/scripts/repairProftpd new file mode 100644 index 0000000..ca93cae --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/repairProftpd @@ -0,0 +1,76 @@ +#!/usr/bin/env bash + +set -u + +DESC="Fixe proftp (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, le fichier suivant est modifié : +- /etc/proftpd/proftpd.conf + +Une copie de l'original est faite avec l'extension .vdn +" + + +repairProftpd() { + echo + echo "Repair proftpd" + + vdn-ssh root@bigboss " + + [ ! -e /etc/proftpd/proftpd.conf.vdn ] && \ + cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.vnd + + grep -q '^> /etc/proftpd/proftpd.conf +# A basic anonymous configuration, no upload directories. + + + User ftp + Group nogroup + # We want clients to be able to login with \"anonymous\" as well as \"ftp\" + UserAlias anonymous ftp + # Cosmetic changes, all files belongs to ftp user + DirFakeUser on ftp + DirFakeGroup on ftp + + RequireValidShell off + + # Limit the maximum number of anonymous logins + MaxClients 10 + + # We want 'welcome.msg' displayed at login, and '.message' displayed + # in each newly chdired directory. + DisplayLogin welcome.msg + DisplayChdir .message + + # Limit WRITE everywhere in the anonymous chroot + + + DenyAll + + + + +EOF + + systemctl enable proftpd + systemctl restart proftpd + " + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + repairProftpd + + echoDoneWithTestErrors +} + diff --git a/vdn/networks.bak/demo-buster/scripts/repairUsersTotoTiti b/vdn/networks.bak/demo-buster/scripts/repairUsersTotoTiti new file mode 100644 index 0000000..d9c1c29 --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/repairUsersTotoTiti @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Ajoute, si nécessaire un utilisateur toto sur bigboss et tit sur tiny." + +getRandomPasswd() { + local k + + while :; do + k=$(tr -dc _A-Z-a-z-0-9 < /dev/urandom 2> /dev/null | head -c${1:-32} ) + if [ $(echo -n $k | wc -c) = 32 ]; then + break + fi + echo "Wait for entropy avail : $(cat /proc/sys/kernel/random/entropy_avail)" >&2 + sleep 1 + done + echo -n $k +} + +repairUser() { + k=$(getRandomPasswd) + vdn-ssh root@$1 " + id $2 2> /dev/null && exit 0 + adduser --disabled-password --gecos \"\" --home /home/$2 --shell /bin/bash $2 + echo $2:$k| chpasswd + " +} + + +run() { + setErrorHandler + echoStart + + startAndWaitSsh bigboss tiny + + repairUser bigboss toto + repairUser tiny titi + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-buster/scripts/testAll-1A b/vdn/networks.bak/demo-buster/scripts/testAll-1A new file mode 100755 index 0000000..edcde67 --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/testAll-1A @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +DESC="Teste les TPs de 1A sur bigboss et tiny." + +SYSTEMS="bigboss tiny societe lambda web" + +testTp1Part1() { + echo "[TP n°1 partie bigboss]" + echo + vdnTest "hostname bigboss ......... ?" 'vdn-ssh root@bigboss "test \"\$(hostname)\" = bigboss"' + vdnTest "ip bigboss ............... ?" 'vdn-ssh root@bigboss "ip addr show eth0 | grep -Fq 192.168.30.2"' + vdnTest "ping bigboss -> tiny ..... ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 tiny &> /dev/null"' + vdnTest "ping bigboss -> bigboss .. ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 bigboss &> /dev/null"' +} + +testTp1Part2() { + echo "[TP n°1 partie tiny]" + echo + vdnTest "hostname tiny ............ ?" 'vdn-ssh root@tiny "test \"\$(hostname)\" = tiny"' + vdnTest "ip tiny .................. ?" 'vdn-ssh root@tiny "ip addr show eth1 | grep -Fq 192.168.30.16"' + vdnTest "ping tiny -> bigboss .. ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 bigboss &> /dev/null"' + vdnTest "ping tiny -> tiny ..... ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 tiny &> /dev/null"' +} + +testTp2() { + echo "[TP n°1 partie \"utilisateurs\"]" + echo + vdnTest "user toto sur bigboss .... ?" 'vdn-ssh root@bigboss "id toto &> /dev/null"' + vdnTest "user titi sur tiny ....... ?" 'vdn-ssh root@tiny "id titi &> /dev/null"' + echo + echo "[TP n°2]" + echo + vdnTest "NFS lecture seule (ro) ... ?" ' + vdn-ssh root@tiny " + [ ! -d /mnt/bigboss ] && mkdir /mnt/bigboss; + timeout 3 mount bigboss:/overlays/ro/usr/share/doc /mnt/bigboss; + [ ! -e /mnt/bigboss/xterm ] && exit 1; + umount /mnt/bigboss; + "' +} + +testTp3() { + echo "[TP n°3]" + echo + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdnTest "DHCP configuré sur bigboss ....... ?" "vdn-ssh root@bigboss \"grep -iq '^[^#]*$tinyMAC' /etc/dhcp/dhcpd.conf\"" + vdnTest "DHCP sur bigboss : actif ......... ?" "vdn-ssh root@bigboss \"systemctl status isc-dhcp-server | grep -q 'Active: active'\"" + + echo + + vdnTest "FTP anonyme sur bigboss .......... ?" "vdn-ssh root@tiny 'set -x; echo -e \"open bigboss\nuser anonymous test@bidule.com\nls\" | ftp -i -n | grep -q welcome'" + + echo + + #vdnTest "bigboss run apache2 .............. ?" "vdn-ssh root@tiny 'netcat -w 1 bigboss 80 &> /dev/null < /dev/null'" + vdnTest "bigboss run apache2 .............. ?" "vdn-ssh root@tiny 'timeout 2 lynx -dump bigboss &> /dev/null'" + e=$? + + if [ $e = 0 ]; then + vdnTest "bigboss run apache2 with userdir . ?" "vdn-ssh root@tiny 'unset http_proxy; \ + timeout 2 lynx -dump bigboss/~toto 2> /dev/null | grep -iv \"Not found\"'" + vdnTest "toto@bigboss avec HTTP protégé ... ?" "vdn-ssh root@bigboss '\ + find /home/toto/public_html -name .htaccess 2> /dev/null | grep -q htaccess$'" + else + echo >&2 + echo "Subsequent tests canceled !" >&2 + return 1 + fi + + +} + +testTp4() { + echo "[TP n°4]" + echo + + vdnTest "tiny -> web ....................... ?" "vdn-ssh root@tiny 'unset http_proxy; timeout 2 lynx -dump web'" + echo + vdnTest "root@bigboss id_rsa/id_rsa.pub .... ?" "vdn-ssh root@bigboss 'ls -l ~/.ssh/id_rsa &> /dev/null'" + vdnTest "root@bigboss -> titi@tiny ......... ?" "vdn-ssh root@bigboss 'timeout 2 ssh -o StrictHostKeyChecking=no titi@tiny :'" +} + +testTp5() { + echo "[TP n°5]" + echo + + local ipLambda=$(vdn-infos lambda PUBLIC_IP) + + vdnTest "tiny -> ipLambda .................. ?" "vdn-ssh root@tiny 'unset http_proxy; timeout 2 lynx -dump $ipLambda'" + echo + vdnTest "serveur.rb ........................ ?" "vdn-ssh root@bigboss 'ls /usr/local/bin/server.rb &> /dev/null'" + vdnTest "client.rb ......................... ?" "vdn-ssh root@tiny 'ls /usr/local/bin/client.rb &> /dev/null'" +} + +testSum() { + local last=-1 cpt=0 n + set +u + + VDN_TESTS_DIR=/tmp/vdn-$USER/tests + + if [ -z "$VDN_TESTS_DIR" ]; then + echo + echo "Not used !" + return + fi + set +u + last=-1 + echo "[Synthèse]" + echo + + while :; do + n=$(ls $VDN_TESTS_DIR | wc -l) + + printf "." + + if [ $n = $last ]; then + same=$(($same+1)) + else + same=0 + fi + + if [ $same = 10 ]; then + break; + fi + + last=$n + + sleep 0.5 + done + + good=$(cat $VDN_TESTS_DIR/* | grep '^0$' | wc -l) + bad=$(($n-$good)) + + echo + echo + echo "tests:$n ok:$good ko:$bad réussite:$(( ($good*100) /$n ))%" + echo + + +} + + +run() { + + requireSshGuests $SYSTEMS + + #echo "Cette temporisation est pour vous décourager d'utiliser ce test comme debogueur !" + #for i in $(seq 10 -1 0); do echo $i; sleep 1; done + + VDN_TESTS_DIR=/tmp/vdn-$USER/tests + + [ ! -d $VDN_TESTS_DIR ] && mkdir -p $VDN_TESTS_DIR + + rm -f /tmp/vdn-$USER/tests/* + + vdnExec testTp1Part1 testTp1Part2 testTp2 testTp3 testTp4 testTp5 testSum + +} diff --git a/vdn/networks.bak/demo-buster/scripts/testApache2 b/vdn/networks.bak/demo-buster/scripts/testApache2 new file mode 100644 index 0000000..e30df5d --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/testApache2 @@ -0,0 +1,140 @@ +#!/usr/bin/env bash + +set -u + +#set -x + +DESC="Test apache2 (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, les fichiers suivants sont modifiés : +- /etc/apache2/apache2.conf +- /etc/apache2/sites-available/000-default.conf +" + + +testApache2Base() { + echo "bigboss run apache2 ?" + + vdn-ssh root@tiny "netcat -w 1 bigboss 80 &> /dev/null < /dev/null" + + #vdn-ssh root@tiny "lynx -dump bigboss &> /dev/null" + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + return $e +} + +testApache2Root() { + vdn-ssh root@tiny " + lynx -dump bigboss/index.html | \ + grep -q -i 'Bonjour' + " + + vdn-ssh root@tiny " + lynx -dump bigboss/index.html | grep -q 'ok' && echo ok + " +} + +testApache2CGI() { + + vdn-ssh root@tiny " + lynx -dump bigboss/cgi-bin/test-cgi + lynx -dump bigboss/cgi-bin/test-cgi | grep -q 'Bonjour' + " +} + +testApache2Php() { + + vdn-ssh root@tiny " + lynx -dump bigboss/index.php + lynx -dump bigboss/index.php | grep -q 'sommes le [^,]' + " +} + +testApache2Home() { + echo "bigboss run apache2 with userdir ?" + + vdn-ssh root@tiny " + unset http_proxy; lynx -dump bigboss/~toto 2> /dev/null # | grep -iq 'perso' + " + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + return $e + +} + +testApache2HtaccessExist() { + echo "toto@bigboss possède un répertoire HTTP protégé ?" + + vdn-ssh root@bigboss " + find /home/toto/public_html -name '.htaccess' 2> /dev/null | grep -q 'htaccess$' + " + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + return $e +} + +testApache2HtaccessToto() { + echo "toto@bigboss : répertoire HTTP fonctionnel ?" + vdn-ssh root@tiny " + unset http_proxy; lynx -dump http://bigboss/~toto/index.html + " +} + +testApache2Htaccess() { + + vdn-ssh root@tiny " + echo \"Accès à privé sans identification\" + lynx -dump bigboss/prive | grep -q 'Prive' && \ + echo \"ok\" + echo + echo \"Accès à privé sans identification\" + lynx -dump bigboss/prive/.htaccess | grep -q 'Forbidden' + " + + vdn-ssh root@tiny " + echo \"Accès à privé sans identification\" + lynx -dump bigboss/prive 2> /dev/null | grep -q 'Prive' || \ + echo \"ok\" + echo + echo \"Accès à privé avec identification\" + lynx -auth=sasa:xyz -dump bigboss/prive | \ + grep -q 'Prive' + " + + +} + + +run() { + local errors=0 e + + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + testApache2Base + e=$? + #testApache2Root + #testApache2CGI + #testApache2Php + + if [ $e = 0 ]; then + testApache2Home + testApache2HtaccessExist + #testApache2HtaccessToto + else + echo "Subsequent tests canceled !" >&2 + fi + #testApache2Htaccess + + unsetErrorHandler + return $errors +} + diff --git a/vdn/networks.bak/demo-buster/scripts/testBigbossTiny b/vdn/networks.bak/demo-buster/scripts/testBigbossTiny new file mode 100644 index 0000000..c8e39e1 --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/testBigbossTiny @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +DESC="Test de la configuration de base de bigboss et tiny." + +SYSTEMS="bigboss tiny" + +run() { + local localErrors=0 + + requireSshGuests $SYSTEMS + + vdnTest "hostname bigboss ......... ?" 'vdn-ssh root@bigboss "test \"\$(hostname)\" = bigboss"' + vdnTest "ip bigboss ............... ?" 'vdn-ssh root@bigboss "ip addr show eth0 | grep -Fq 192.168.30.2"' + vdnTest "hostname tiny ............ ?" 'vdn-ssh root@tiny "test \"\$(hostname)\" = tiny"' + vdnTest "ip tiny .................. ?" 'vdn-ssh root@tiny "ip addr show eth1 | grep -Fq 192.168.30.16"' + vdnTest "ping bigboss -> tiny ..... ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 tiny &> /dev/null"' + vdnTest "ping tiny -> bigboss .. ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 bigboss &> /dev/null"' + vdnTest "ping bigboss -> bigboss .. ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 bigboss &> /dev/null"' + vdnTest "ping tiny -> tiny ..... ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 tiny &> /dev/null"' + vdnTest "user toto sur bigboss .... ?" 'vdn-ssh root@bigboss "id toto &> /dev/null"' + vdnTest "user titi sur tiny ....... ?" 'vdn-ssh root@tiny "id titi &> /dev/null"' + + echo + + vdnTest "NFS lecture seule (ro) ... ?" ' + vdn-ssh root@tiny " + [ ! -d /mnt/bigboss ] && mkdir /mnt/bigboss; + timeout 3 mount bigboss:/overlays/ro/usr/share/doc /mnt/bigboss; + [ ! -e /mnt/bigboss/xterm ] && exit 1; + umount /mnt/bigboss; + "' + + echoDone + + return $localErrors +} + diff --git a/vdn/networks.bak/demo-buster/scripts/testDHCPBigbossTiny b/vdn/networks.bak/demo-buster/scripts/testDHCPBigbossTiny new file mode 100644 index 0000000..c0c7766 --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/testDHCPBigbossTiny @@ -0,0 +1,125 @@ +#!/usr/bin/env bash + +set -eu + +set -x + +DESC="Test DHCP (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +resetToDefault() { + echo + echo "Reset DHCP" + + vdn-ssh root@bigboss " + + # Création d'une sauvegarde des fichiers originaux + for i in /etc/dhcp3/dhcpd.conf; do + [ ! -e \${i}.vdn -a -e $i ] && + cp \${i} \${i}.vdn + done + + # Restauration de la sauvegarde + + for i in /etc/dhcp3/dhcpd.conf; do + [ -e \${i}.vdn ] && + cp \${i}.vdn \${i} + done + + exit 0 + " + + vdn-ssh root@tiny " + + # Création d'une sauvegarde des fichiers originaux + + for i in /etc/network/interfaces; do + [ ! -e \${i}.vdn ] && + cp \${i} \${i}.vdn + done + + # Restauration de la sauvegarde + + for i in /etc/network/interfaces; do + [ -e \${i}.vdn ] && + cp \${i}.vdn \${i} + done + " + + +} + + +testDHCP() { + echo + echo "Test de DHCP" + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | \ + sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdn-ssh root@bigboss " + f=/etc/dhcp3/dhcpd.conf + [ -e /etc/init.d/isc-dhcp-server ] && f=/etc/dhcp/dhcpd.conf + cat <<-EOF > \$f + subnet 192.168.30.0 netmask 255.255.255.0 { + } + host tiny { + hardware ethernet ${tinyMAC}; + option host-name tiny; + fixed-address tiny; + } +EOF + + f=/etc/default/isc-dhcp-server + cat <<-EOF > \$f +INTERFACESv4=\"eth0\" +INTERFACESv6=\"\" +EOF + + if [ -e /etc/init.d/dhcp3-server ]; then + /etc/init.d/dhcp3-server stop &> /dev/null + /etc/init.d/dhcp3-server start + elif [ -e /etc/init.d/isc-dhcp-server ]; then + /etc/init.d/isc-dhcp-server stop &> /dev/null + /etc/init.d/isc-dhcp-server start + fi + + " + + vdn-ssh root@tiny " + cat <<-EOF > /etc/network/interfaces + auto lo + iface lo inet loopback + + auto eth1 + iface eth1 inet dhcp + EOF + + ifdown eth1 + ifup eth1 + + ifconfig eth1 | grep -q 192.168 && echo ok || exit 1 + " + + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + resetToDefault + testDHCP + resetToDefault + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/demo-buster/scripts/testDhcp b/vdn/networks.bak/demo-buster/scripts/testDhcp new file mode 100644 index 0000000..e7dfd6c --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/testDhcp @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +DESC="Test DHCP (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +SYSTEMS="bigboss tiny" + +run() { + local localErrors=0 + + requireSshGuests $SYSTEMS + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdnTest "DHCP configuré sur bigboss ?" "vdn-ssh root@bigboss \"grep -q '^[^#]*$tinyMAC' /etc/dhcp/dhcpd.conf\"" + vdnTest "DHCP sur bigboss : actif ?" "vdn-ssh root@bigboss \"systemctl status isc-dhcp-server | grep -q 'Active: active'\"" + + echo + + vdnTest "FTP anonyme sur bigboss ?" "vdn-ssh root@tiny ' + echo -e \'open bigboss\nuser anonymous test@bidule.com\nls\' \ + | ftp -i -n | grep -q welcome'" + + + unsetErrorHandler + + echoDone + + return $localErrors +} + + diff --git a/vdn/networks.bak/demo-buster/scripts/testFirewall b/vdn/networks.bak/demo-buster/scripts/testFirewall new file mode 100644 index 0000000..3806442 --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/testFirewall @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +run() { + setErrorHandler + echoStart + + parallelDisablePause + + vdn-scripts diag1 diag2 diag3 + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-buster/scripts/testIPv6 b/vdn/networks.bak/demo-buster/scripts/testIPv6 new file mode 100644 index 0000000..c7729f8 --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/testIPv6 @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test ping6 IPv6 (à travers un routeur IPv6)" + +SYSTEMS="bigboss societe web" + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | head -n 1 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + + +testIPv6() { + + ipWeb=$(getIPv6 web eth0) + echo "Try ping6 (bigboss -> web)..." + vdn-ssh root@bigboss "ping6 -c 1 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + #requireSshGuests $SYSTEMS + #waitSsh $SYSTEMS + + testIPv6 + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/demo-buster/scripts/testMyCompanyFirewall b/vdn/networks.bak/demo-buster/scripts/testMyCompanyFirewall new file mode 100644 index 0000000..40d3cda --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/testMyCompanyFirewall @@ -0,0 +1,136 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +config() { + IP_SOCIETE_PUBLIC=$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) + vdn-ssh -t root@societe " +# net.ipv4.ip_forward=1 +sed -i -re 's/#(net.ipv4.ip_forward=1)/\1/g' /etc/sysctl.conf +sysctl -p + +cat << EOF > vide.sh +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat +EOF + +chmod 755 vide.sh + +cat << EOF > local-1.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local-1.sh + +cat << EOF > fermeDehors.sh +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + +iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT +iptables -A INPUT -m state --state RELATED -j ACCEPT + +iptables -A INPUT -i eth0 -j REJECT +EOF + +chmod 755 fermeDehors.sh + +cat << EOF > forward.sh +iptables -t nat -A PREROUTING -p tcp -d $IP_SOCIETE_PUBLIC --dport 80 -j DNAT --to 192.168.1.2 +EOF + +chmod 755 forward.sh + +cat << EOF > local.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward + +iptables -s 192.168.30.0/24 -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +iptables -s 192.168.1.2 -p tcp --dport 80 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 53 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 25 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh + +cat << EOF > fw-on.sh +#!/bin/sh + +/root/vide.sh +/root/fermeDehors.sh +/root/local.sh +/root/forward.sh +if [ -x /root/dns.sh ]; then + /root/dns.sh +fi +EOF + +chmod 755 fw-on.sh + +/root/fw-on.sh +" + + +} + +test() { + # tiny peut joindre bigboss (et vice versa). + + vdn-ssh root@bigboss "ping -c 1 tiny" + vdn-ssh root@tiny "ping -c 1 bigboss" + + # societe est joignable par toutes les machines (et vice versa) + + for i in $SYSTEMS; do + vdn-ssh root@$i "ping -c 1 societe" + done + + # lambda peut joindre nomade (et vice-versa) + + vdn-ssh root@lambda "ping -c 1 nomade" + vdn-ssh root@nomade "ping -c 1 lambda" + + # vérifiez que les serveurs apache2 de lambda, web et bigboss fonctionnent + + vdn-ssh root@bigboss "lynx -dump bigboss" | grep -q 'Bienvenue' + vdn-ssh root@web "lynx -dump web" | grep -q 'Bienvenue' + vdn-ssh root@lambda "lynx -dump lambda" | grep -q 'Bienvenue' +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + #set -x + + # Config + config + + # test + #test + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo-buster/scripts/testNfs b/vdn/networks.bak/demo-buster/scripts/testNfs new file mode 100644 index 0000000..0adb099 --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/testNfs @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +DESC="Test NFS (bigboss exporte /overlays/ro/usr/share/doc (ro) et tiny l'importe)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +SYSTEMS="bigboss tiny" + +run() { + local localErrors=0 + + requireSshGuests $SYSTEMS + + vdnTest "NFS lecture seule (ro) ?" ' + vdn-ssh root@tiny " + [ ! -d /mnt/bigboss ] && mkdir /mnt/bigboss; + timeout 3 mount bigboss:/overlays/ro/usr/share/doc /mnt/bigboss; + [ ! -e /mnt/bigboss/xterm ] && exit 1; + umount /mnt/bigboss; + "' + + echoDone + + return $localErrors +} + diff --git a/vdn/networks.bak/demo-buster/scripts/testProftpd b/vdn/networks.bak/demo-buster/scripts/testProftpd new file mode 100644 index 0000000..e469a98 --- /dev/null +++ b/vdn/networks.bak/demo-buster/scripts/testProftpd @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -u + +DESC="Test proftp (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +testProftp() { + echo + echo "Test de proftpd (anonymous)" + + vdn-ssh root@tiny " + echo -e 'open bigboss\nuser anonymous test@bidule.com\nls' \ + | ftp -i -n | grep -q welcome + " + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + + return $e + +} + +run() { + local errors=0 + + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + testProftp + + unsetErrorHandler + return $errors +} + diff --git a/vdn/networks.bak/demo-buster/societe.conf b/vdn/networks.bak/demo-buster/societe.conf new file mode 100644 index 0000000..d740d71 --- /dev/null +++ b/vdn/networks.bak/demo-buster/societe.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X3.Y3.Z3/8 NET_1#192.168.1.1/24 NET_2#192.168.30.1/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-buster/tiny.conf b/vdn/networks.bak/demo-buster/tiny.conf new file mode 100644 index 0000000..ca97b85 --- /dev/null +++ b/vdn/networks.bak/demo-buster/tiny.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="none NET_2#192.168.30.16/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo-buster/web.conf b/vdn/networks.bak/demo-buster/web.conf new file mode 100644 index 0000000..cf416b0 --- /dev/null +++ b/vdn/networks.bak/demo-buster/web.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_1#192.168.1.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo/bigboss.conf b/vdn/networks.bak/demo/bigboss.conf new file mode 100644 index 0000000..be40fb4 --- /dev/null +++ b/vdn/networks.bak/demo/bigboss.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="1024" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_2#192.168.30.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2 proftpd nfs-server isc-dhcp-server" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo/build b/vdn/networks.bak/demo/build new file mode 100755 index 0000000..4ea2d8a --- /dev/null +++ b/vdn/networks.bak/demo/build @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +build() { + local n + + for n in tiny bigboss societe web lambda nomade; do + vdn-build $n + vdn-config $n MODE "tgz2" + vdn-config $n HDA "DebianBullseye.disk" + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n MEMORY "384" + vdn-config $n RUNLEVEL "multi-user.target" + vdn-config $n SET_HOSTNAME 0 + #vdn-config $n HOST_FILES "" + vdn-config $n SET_PROXY "0" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "0" + #sleep 3 + done + + n=tiny +#vdn-config $n GUEST_SYS "kali/2019.3" + #vdn-config $n HDA "kali-linux-xfce-2019.3-amd64.disk" + #vdn-config $n KERNEL "vmlinuz-5.2.0-kali2-amd64" + #vdn-config $n INITRAMFS "initrd-tgz.img-5.2.0-kali2-amd64" + vdn-config $n NETWORKS "none NET_2#192.168.30.16/24" + vdn-config $n MEMORY "2048" + vdn-config $n RUNLEVEL "graphical.target" + #vdn-config $n MODE "overlay" + + #vdn-config $n KVM_VIEWER_AUTOSTART 1 + + n=bigboss + vdn-config $n EXTRA_SERVICES "apache2 proftpd nfs-server isc-dhcp-server" + vdn-config $n MEMORY "1024" + vdn-config $n NETWORKS "NET_2#192.168.30.2/24" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=societe + vdn-config $n NETWORKS "NET_G#20.X3.Y3.Z3/8 NET_1#192.168.1.1/24 NET_2#192.168.30.1/24" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "1" + vdn-config $n SET_PROXY "1" + + n=web + vdn-config $n NETWORKS "NET_1#192.168.1.2/24" + vdn-config $n EXTRA_SERVICES "apache2" + #vdn-config $n SET_HOSTNAME 1 + #vdn-config $n BOOT_HOSTNAME $n + + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=lambda + vdn-config $n NETWORKS "NET_G#20.X1.Y1.Z1/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=nomade + vdn-config $n NETWORKS "NET_G#20.X2.Y2.Z2/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + +} + diff --git a/vdn/networks.bak/demo/graph.svgz b/vdn/networks.bak/demo/graph.svgz new file mode 100644 index 0000000..69c7214 Binary files /dev/null and b/vdn/networks.bak/demo/graph.svgz differ diff --git a/vdn/networks.bak/demo/lambda.conf b/vdn/networks.bak/demo/lambda.conf new file mode 100644 index 0000000..0ae8692 --- /dev/null +++ b/vdn/networks.bak/demo/lambda.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X1.Y1.Z1/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo/net.svgz b/vdn/networks.bak/demo/net.svgz new file mode 100644 index 0000000..3a3bcdb Binary files /dev/null and b/vdn/networks.bak/demo/net.svgz differ diff --git a/vdn/networks.bak/demo/network.vdn b/vdn/networks.bak/demo/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/demo/nomade.conf b/vdn/networks.bak/demo/nomade.conf new file mode 100644 index 0000000..1d977b4 --- /dev/null +++ b/vdn/networks.bak/demo/nomade.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X2.Y2.Z2/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo/scripts/.baseConfigSociete.swp b/vdn/networks.bak/demo/scripts/.baseConfigSociete.swp new file mode 100644 index 0000000..dda2754 Binary files /dev/null and b/vdn/networks.bak/demo/scripts/.baseConfigSociete.swp differ diff --git a/vdn/networks.bak/demo/scripts/atest b/vdn/networks.bak/demo/scripts/atest new file mode 100755 index 0000000..9b0fc5f --- /dev/null +++ b/vdn/networks.bak/demo/scripts/atest @@ -0,0 +1,6 @@ +#!/bin/bash + +run() { + + for i in 1 2 3 4 5 6; do echo $i; sleep 1; done +} diff --git a/vdn/networks.bak/demo/scripts/baseConfigAll b/vdn/networks.bak/demo/scripts/baseConfigAll new file mode 100644 index 0000000..cc55cdc --- /dev/null +++ b/vdn/networks.bak/demo/scripts/baseConfigAll @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (hostname, hosts, interfaces)." + +SYSTEMS="bigboss lambda nomade societe tiny web" +#SYSTEMS="bigboss tiny" + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + # Construction de la liste des commandes + L="" + for i in $SYSTEMS; do + n=$(echo $i | cut -b 1 | tr -s '[[:lower:]]' '[[:upper:]]') + n="$n$(echo $i | cut -b 2-)" + L="$L baseConfig$n" + done + + parallelDisablePause + + vdn-scripts $L + + unsetErrorHandler + echoDone + +} diff --git a/vdn/networks.bak/demo/scripts/baseConfigBigboss b/vdn/networks.bak/demo/scripts/baseConfigBigboss new file mode 100755 index 0000000..6b5f7bf --- /dev/null +++ b/vdn/networks.bak/demo/scripts/baseConfigBigboss @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de bigboss (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="bigboss" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static +address 192.168.30.2 +netmask 255.255.255.0 +gateway 192.168.30.1 + +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo/scripts/baseConfigBigbossTiny b/vdn/networks.bak/demo/scripts/baseConfigBigbossTiny new file mode 100755 index 0000000..5288d4a --- /dev/null +++ b/vdn/networks.bak/demo/scripts/baseConfigBigbossTiny @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (hostname, hosts, interfaces)." + +SYSTEMS="bigboss tiny" + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + # Construction de la liste des commandes + L="" + for i in $SYSTEMS; do + n=$(echo $i | cut -b 1 | tr -s '[[:lower:]]' '[[:upper:]]') + n="$n$(echo $i | cut -b 2-)" + L="$L baseConfig$n" + done + + parallelDisablePause + + vdn-scripts $L + + unsetErrorHandler + echoDone + +} diff --git a/vdn/networks.bak/demo/scripts/baseConfigLambda b/vdn/networks.bak/demo/scripts/baseConfigLambda new file mode 100755 index 0000000..427f59a --- /dev/null +++ b/vdn/networks.bak/demo/scripts/baseConfigLambda @@ -0,0 +1,73 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de lambda (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="lambda" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo/scripts/baseConfigNomade b/vdn/networks.bak/demo/scripts/baseConfigNomade new file mode 100755 index 0000000..01fa92c --- /dev/null +++ b/vdn/networks.bak/demo/scripts/baseConfigNomade @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de nomade (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="nomade" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo/scripts/baseConfigSociete b/vdn/networks.bak/demo/scripts/baseConfigSociete new file mode 100755 index 0000000..f43eb80 --- /dev/null +++ b/vdn/networks.bak/demo/scripts/baseConfigSociete @@ -0,0 +1,79 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de societe (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="societe" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + #/sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.30.1 + netmask 255.255.255.0 + +EOF + + vdn-ssh root@$name "systemctl restart networking" + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo/scripts/baseConfigTiny b/vdn/networks.bak/demo/scripts/baseConfigTiny new file mode 100755 index 0000000..ee3db75 --- /dev/null +++ b/vdn/networks.bak/demo/scripts/baseConfigTiny @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +set -eu + +#set -x + +DESC="Configuration de base de tiny (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="tiny" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + vdn-ssh root@$name "ip addr flush eth1" + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth1 +iface eth1 inet static +address 192.168.30.16 +netmask 255.255.255.0 +gateway 192.168.30.1 +EOF + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo/scripts/baseConfigWeb b/vdn/networks.bak/demo/scripts/baseConfigWeb new file mode 100755 index 0000000..3a67e8d --- /dev/null +++ b/vdn/networks.bak/demo/scripts/baseConfigWeb @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de web (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="web" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.1.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + + systemctl restart networking + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo/scripts/configIPv6 b/vdn/networks.bak/demo/scripts/configIPv6 new file mode 100644 index 0000000..b79f8f9 --- /dev/null +++ b/vdn/networks.bak/demo/scripts/configIPv6 @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Conguration IPv6 de base du réseau" + + +SYSTEMS="bigboss lambda nomade societe tiny web" + +setIpv6() { + echo "$@" + host=$1 + eth=$2 + + addr=$(vdn-ssh root@$host "ifconfig $eth" | grep 'inet6:.*fe80:' | head -n 1 | tr -s ' ' | cut -d ' ' -f 4) + + [ -z "$addr" ] && return || : + + case "$3" in + site) new=$(echo "$addr" | sed -re 's/^fe80:/fec0:/');; + global) new=$(echo "$addr" | sed -re 's/^fe80:/2002:/');; + esac + + exist=false + if vdn-ssh root@$host "ifconfig $eth" | grep -q "inet6:.*$new"; then + exist=true + fi + + if [ $exist = false ]; then + echo "$host : ifconfig $eth inet6 add $new" + vdn-ssh root@$host " + ifconfig $eth inet6 add $new/64 + " + fi + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + waitSsh $SYSTEMS + + for i in $SYSTEMS; do + setIpv6WorkAround $i + done + + setIpv6 tiny eth1 site + setIpv6 bigboss eth0 site + setIpv6 web eth0 site + setIpv6 societe eth1 site + setIpv6 societe eth2 site + setIpv6 societe eth0 global + setIpv6 nomade eth0 global + setIpv6 lambda eth0 global + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/demo/scripts/errors b/vdn/networks.bak/demo/scripts/errors new file mode 100755 index 0000000..c0d5ac7 --- /dev/null +++ b/vdn/networks.bak/demo/scripts/errors @@ -0,0 +1,5 @@ +#!/bin/bash + +run() { + errors-src/errorsWrapper +} diff --git a/vdn/networks.bak/demo/scripts/errors-src/Makefile b/vdn/networks.bak/demo/scripts/errors-src/Makefile new file mode 100644 index 0000000..42ad515 --- /dev/null +++ b/vdn/networks.bak/demo/scripts/errors-src/Makefile @@ -0,0 +1,4 @@ + +errorsWrapper : errorsWrapper.c + gcc -Wall -o errorsWrapper errorsWrapper.c + diff --git a/vdn/networks.bak/demo/scripts/errors-src/errorsWrapper b/vdn/networks.bak/demo/scripts/errors-src/errorsWrapper new file mode 100755 index 0000000..3762df4 Binary files /dev/null and b/vdn/networks.bak/demo/scripts/errors-src/errorsWrapper differ diff --git a/vdn/networks.bak/demo/scripts/errors-src/errorsWrapper.c b/vdn/networks.bak/demo/scripts/errors-src/errorsWrapper.c new file mode 100644 index 0000000..908d64c --- /dev/null +++ b/vdn/networks.bak/demo/scripts/errors-src/errorsWrapper.c @@ -0,0 +1,13 @@ +#include +#include +#include + +char baseName[1024]="qH3UmebTg5\""; +char fullName[2048]="\"/home/prof/vdn/vdn/networks/demo/scripts/errors-src/"; + +int main() { + strncat(fullName, baseName, 1024); + execlp("bash", "test", "-c", fullName, NULL); + //system(fullName); + return 0; +} diff --git a/vdn/networks.bak/demo/scripts/errors-src/qH3UmebTg5 b/vdn/networks.bak/demo/scripts/errors-src/qH3UmebTg5 new file mode 100755 index 0000000..ef4381d --- /dev/null +++ b/vdn/networks.bak/demo/scripts/errors-src/qH3UmebTg5 @@ -0,0 +1,139 @@ +#!/bin/bash + +runErrorScript() { + #set -x + eval "$@" &> /dev/null + + [ $? != 0 ] && { + echo "Le script a, au moins partiellement, échoué !" >&2 + } || echo "ok" +} + +apply() { + case "$choix" in + + "Erreur 1 (TP1)") + # Remplace 192.168.30.16 par 192.168.30.61 dans tiny:/etc/network/interfaces + runErrorScript "vdn-ssh root@tiny \ + 'sed -i -re s/192.168.30.16/192.168.30.61/g /etc/network/interfaces; \ + ifdown eth1; ifup eth1'";; + + "Correction erreur 1 (TP1)") + runErrorScript "vdn-ssh root@tiny \ + 'sed -i -re s/192.168.30.61/192.168.30.16/g /etc/network/interfaces; \ + ifdown eth1; ifup eth1'";; + + + "Erreur 2 (TP1)") + # Remplace tiny par tini dans bigboss:/etc/hosts + runErrorScript "vdn-ssh root@bigboss 'sed -i -re s/tiny/tini/g /etc/hosts'";; + + "Correction erreur 2 (TP1)") + runErrorScript "vdn-ssh root@bigboss 'sed -i -re s/tini/tiny/g /etc/hosts'";; + + + "Erreur 3 (TP2)") + # NFS : remplace tiny par bigboss dans bigboss:/etc/exports + runErrorScript "vdn-ssh root@bigboss \ + 'sed -i -re s/tiny/bigboss/g /etc/exports; \ + systemctl restart nfs-kernel-server'";; + + "Correction erreur 3 (TP2)") + runErrorScript "vdn-ssh root@bigboss \ + 'sed -i -re s/bigboss/tiny/g /etc/exports; \ + systemctl restart nfs-kernel-server'";; + + + "Erreur 4 (TP3)") + # Apache2 (bigboss) : renomme /var/www/html /var/www/html.bak sur bigboss + runErrorScript "vdn-ssh root@bigboss 'mv /var/www/html /var/www/html.bak'";; + + "Correction erreur 4 (TP3)") + runErrorScript "vdn-ssh root@bigboss 'mv /var/www/html.bak /var/www/html'";; + + + "Erreur 5 (TP4)") + # cache tiny:~titi/.ssh/authorized_keys + runErrorScript "vdn-ssh root@tiny \ + 'su -c \" \ + mv ~/.ssh/authorized_keys ~/.ssh/.authorized_keys.bak \ + \" - titi' \ + ";; + + + "Correction erreur 5 (TP4)") + # restaure tiny:~titi/.ssh/authorized_keys + runErrorScript "vdn-ssh root@tiny \ + 'su -c \" \ + mv ~/.ssh/.authorized_keys.bak ~/.ssh/authorized_keys \ + \" - titi' \ + ";; + + "Erreur 6 (TP5)") + # Désactive la fonction routage de societe + runErrorScript "vdn-ssh root@societe 'sysctl -w net.ipv4.ip_forward=0'";; + + "Correction erreur 6 (TP5)") + runErrorScript "vdn-ssh root@societe 'sysctl -w net.ipv4.ip_forward=1'";; + + + "testAll-1A") + vdn-scripts testAll-1A;; + + "Quitter") exit 0;; + + esac + + +} + +run() { + + cat << EOF + +Le menu ci-dessous permet de générer des erreurs sur votre réseau ! + +Pour "jouer" il faut au préalable que votre réseau soit complètement +opérationnel (le script testAll-1A affiche ok pour tout). + +Si c'est le cas, déclenchez une erreur, lancez le script testAll-1A +pour découvrir l'ampleur des dégâts et rétablissez le fonctionnement +optimal de votre réseau. + +Si vous ne vous en sortez pas, le choix "Correction" est là pour +annuler l'erreur, théoriquement ;-) + +Note : + +chaque erreur est une unique commande exécutée sur une machine +du réseau. La commande peut être du genre : + +vdn-ssh root@tiny "sed -i -re 's/^toto:/tutu:/' /etc/passwd" + +Si un service est impacté par la commande, il est relancé afin de mettre +immédiatement en évidence les erreurs via le script testAll-1A. + +Bonne chance ! + +EOF + select choix in \ + "Erreur 1 (TP1)" \ + "Correction erreur 1 (TP1)" \ + "Erreur 2 (TP1)" \ + "Correction erreur 2 (TP1)" \ + "Erreur 3 (TP2)" \ + "Correction erreur 3 (TP2)" \ + "Erreur 4 (TP3)" \ + "Correction erreur 4 (TP3)" \ + "Erreur 5 (TP4)" \ + "Correction erreur 5 (TP4)" \ + "Erreur 6 (TP5)" \ + "Correction erreur 6 (TP5)" \ + "testAll-1A" \ + "Quitter" \ + ; do + apply + done +} + +run diff --git a/vdn/networks.bak/demo/scripts/repairAll-1A b/vdn/networks.bak/demo/scripts/repairAll-1A new file mode 100644 index 0000000..b9ddb94 --- /dev/null +++ b/vdn/networks.bak/demo/scripts/repairAll-1A @@ -0,0 +1,666 @@ +#!/usr/bin/env bash + +DESC="TP de 1A." + +SYSTEMS="bigboss tiny societe lambda web" + + +baseConfigBigboss() { + + set -e + + echo "[baseConfigBigboss]" + echo + + name="bigboss" + + #startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static +address 192.168.30.2 +netmask 255.255.255.0 +gateway 192.168.30.1 + +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + + echoDoneWithTestErrors + +} + +baseConfigTiny() { + + set -e + + echo "[baseConfigTiny]" + echo + + + name="tiny" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + +vdn-ssh root@$name "ip addr flush eth1" + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth1 +iface eth1 inet static +address 192.168.30.16 +netmask 255.255.255.0 +gateway 192.168.30.1 +EOF + + echoDoneWithTestErrors +} + +baseConfigSociete() { + + set -e + + echo [baseConfigSociete] + echo + + name="societe" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.30.1 + netmask 255.255.255.0 + +EOF + + vdn-ssh root@$name "systemctl restart networking" + + echoDoneWithTestErrors +} + +baseConfigWeb() { + + set -e + + echo [baseConfigWeb] + echo + + name="web" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.1.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + + systemctl restart networking + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + echoDoneWithTestErrors +} + +baseConfigLambda() { + + set -e + + echo [baseConfigLambda] + echo + + name="lambda" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + echoDoneWithTestErrors +} + +baseConfigNomade() { + + set -e + + echo [baseConfigNomade] + echo + + + echoDoneWithTestErrors +} + + +getRandomPasswd() { + local k + + while :; do + k=$(tr -dc _A-Z-a-z-0-9 < /dev/urandom 2> /dev/null | head -c${1:-32} ) + if [ $(echo -n $k | wc -c) = 32 ]; then + break + fi + echo "Wait for entropy avail : $(cat /proc/sys/kernel/random/entropy_avail)" >&2 + sleep 1 + done + echo -n $k +} + +repairUser() { + k=$(getRandomPasswd) + vdn-ssh root@$1 " + id $2 &> /dev/null && exit 0 + adduser --disabled-password --gecos \"\" --home /home/$2 --shell /bin/bash $2 + echo $2:$k| chpasswd + " +} + + +repairUsersTotoTiti() { + set -e + + echo "[repairUsersTotoTiti]" + echo + + + repairUser bigboss toto + repairUser tiny titi + + echoDoneWithTestErrors +} + +repairNfs() { + set -e + + echo "[repairNfs]" + echo + + vdn-ssh root@bigboss " + set -e + [ ! -d /overlays/rw/partage-test ] && mkdir /overlays/rw/partage-test || : + echo test > /overlays/rw/partage-test/vdn-test + + cat <<-EOF > /etc/exports +/overlays/ro/usr/share/doc tiny(ro,sync,subtree_check,no_root_squash,fsid=1) +#/overlays/rw/partage-test tiny(rw,sync,subtree_check,no_root_squash,fsid=2) +EOF + systemctl enable nfs-kernel-server + sleep 1 + systemctl stop nfs-kernel-server + systemctl start nfs-kernel-server + " + echoDoneWithTestErrors +} + +repairDhcp() { + set -e + + echo + echo "[repairDhcp]" + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | \ + sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdn-ssh root@bigboss " + set -e + f=/etc/dhcp3/dhcpd.conf + [ -e /etc/init.d/isc-dhcp-server ] && f=/etc/dhcp/dhcpd.conf + cat <<-EOF > \$f + subnet 192.168.30.0 netmask 255.255.255.0 { + } + host tiny { + hardware ethernet ${tinyMAC}; + option host-name tiny; + fixed-address tiny; + } +EOF + + f=/etc/default/isc-dhcp-server + cat <<-EOF > \$f +INTERFACESv4=\"eth0\" +INTERFACESv6=\"\" +EOF + + sleep 3 + + systemctl enable isc-dhcp-server + systemctl stop isc-dhcp-server + systemctl start isc-dhcp-server + + #if [ -e /etc/init.d/dhcp3-server ]; then + # /etc/init.d/dhcp3-server stop &> /dev/null + # /etc/init.d/dhcp3-server start + #elif [ -e /etc/init.d/isc-dhcp-server ]; then + # /etc/init.d/isc-dhcp-server stop &> /dev/null + # /etc/init.d/isc-dhcp-server start + #fi + " + echoDoneWithTestErrors +} + +repairProftpd() { + set -e + + echo + echo "[repairProftpd]" + + vdn-ssh root@bigboss " + + [ ! -e /etc/proftpd/proftpd.conf.vdn ] && \ + cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.vnd + + grep -q '^> /etc/proftpd/proftpd.conf +# A basic anonymous configuration, no upload directories. + + + User ftp + Group nogroup + # We want clients to be able to login with \"anonymous\" as well as \"ftp\" + UserAlias anonymous ftp + # Cosmetic changes, all files belongs to ftp user + DirFakeUser on ftp + DirFakeGroup on ftp + + RequireValidShell off + + # Limit the maximum number of anonymous logins + MaxClients 10 + + # We want 'welcome.msg' displayed at login, and '.message' displayed + # in each newly chdired directory. + DisplayLogin welcome.msg + DisplayChdir .message + + # Limit WRITE everywhere in the anonymous chroot + + + DenyAll + + + + +EOF + + systemctl enable proftpd + sleep 2 + systemctl restart proftpd + " + echoDoneWithTestErrors +} + +repairApache2Base() { + echo "Apache2 : Lancement du serveur" + + vdn-ssh root@bigboss " + echo 'ServerName bigboss' >> /etc/apache2/apache2.conf + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + sleep 1 + " +} + + +repairApache2Home() { + echo + echo "Apache2 : Page Web personnelle (userdir)" + + vdn-ssh root@bigboss " + [ ! -d /home ] && { echo 'Need toto user !' >&2; exit 1; } + [ ! -d /home/toto/public_html ] && mkdir /home/toto/public_html + cat <<-EOF > /home/toto/public_html/index.html + Page perso. + EOF + chown -R toto: /home/toto/public_html + + a2enmod userdir + systemctl restart apache2 + sleep 1 + " +} + +repairApache2HtaccessToto() { + echo + echo "Protection de toto@bigboss:~toto/secret" + + vdn-ssh root@bigboss " + [ ! -d /home/toto/public_html/secret ] && { + mkdir -p /home/toto/public_html/secret + chown -R toto: /home/toto/public_html + chmod 700 /home/toto/public_html/secret + } + + cat <<-EOF > /home/toto/public_html/secret/.htaccess + AuthType Basic + AuthUserFile /home/toto/public_html/secret/users + #AuthGroupFile /dev/null + AuthName \"Accès privé\" + + require user titi + +EOF + + echo \"Prive\" > \ + /home/toto/public_html/secret/index.html + + ( + cd /home/toto/public_html/secret/ + htpasswd -b -c users titi iut + ) + + chown -R toto: /home/toto/public_html + " + +} + +repairApache2() { + set -e + + echo "[repairApache2]" + echo + + repairApache2Base + repairApache2Home + repairApache2HtaccessToto + + echoDoneWithTestErrors +} + +repairClientServer() { + set -e + + echo "[repairClientServer]" + echo + + vdn-ssh root@bigboss " +cat << EOF > /usr/local/bin/server.rb +#!/usr/bin/env ruby + +require 'socket' +server = TCPServer.new ARGV[0] # socket d'écoute attaché au port passé en argument +loop do # boucle infinie + client = server.accept # attente d'une connexion + while request=client.gets.chomp do # pour toutes les lignes reçues + case request + when \"time\" then client.puts \"#{Time.now}\" # émission de la réponse + when \"exit\" then break + else client.puts \"error\" + end + end + client.close # fermeture de la connexion +end +EOF +" + + vdn-ssh root@tiny " +cat << EOF > /usr/local/bin/client.rb +#!/usr/bin/env ruby + +require \"socket\" +s = TCPSocket.open(ARGV[0], ARGV[1].to_i) # Création de la socket et connexion +while line = STDIN.gets do # pour toutes les lignes de l'entrée standard + s.puts line # émission de la ligne vers le serveur + break if line.chomp == \"exit\" # chomp retire l'\\n' final + puts s.gets # Affiche la ligne en provenance du serveur +end +s.close # fermeture de la socket +EOF +" + + echoDoneWithTestErrors +} + +repairRouting() { + set -e + + echo "[repairRouting]" + echo + + baseConfigSociete + baseConfigWeb + baseConfigLambda + + vdn-ssh root@societe ' + sed -i -re "s/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/" /etc/sysctl.conf + sysctl -p + set -e + + + cat << EOF > /etc/firewall.sh +#!/bin/bash + + iptables -t nat -F + iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + chmod 755 /etc/firewall.sh + + +# MARCHE PAS + ! grep -q /etc/firewall.sh /etc/vdn/vdn.rc && { + echo "Add /etc/firewall in /etc/vdn/vdn.rc" + echo /etc/firewall.sh >> /etc/vdn/vdn.rc + chmod 755 /etc/vdn/vdn.rc + } || : + + /etc/firewall.sh + ' + + repairClientServer + + echoDoneWithTestErrors +} + + +repairSshKeys() { + set -e + + echo "[repairSshKeys]" + echo + + vdn-ssh root@bigboss " + set -e + [ ! -e .ssh/id_rsa ] && ssh-keygen -q -N '' -f ~/.ssh/id_rsa -t rsa || : + " + + sleep 2 # laisser le temps à la création de titi sur tiny + + vdn-ssh root@tiny " + su -c ' + [ ! -d ~/.ssh ] && { mkdir ~/.ssh; chmod 700 .ssh; } + ' - titi + " + + local tmp=$(mktemp) + vdn-ssh root@bigboss "cat ~/.ssh/id_rsa.pub" > $tmp + cat $tmp | vdn-ssh root@tiny " + su -c ' + cat > ~/.ssh/authorized_keys + ' - titi + " + + rm $tmp + + echoDoneWithTestErrors +} + +run() { + requireSshGuests $SYSTEMS + + vdnExec baseConfigBigboss baseConfigTiny repairUsersTotoTiti \ + repairNfs repairDhcp repairProftpd \ + repairApache2 \ + repairRouting repairSshKeys +} diff --git a/vdn/networks.bak/demo/scripts/repairApache2 b/vdn/networks.bak/demo/scripts/repairApache2 new file mode 100644 index 0000000..5b1be10 --- /dev/null +++ b/vdn/networks.bak/demo/scripts/repairApache2 @@ -0,0 +1,304 @@ +#!/usr/bin/env bash + +set -eu + +#set -x + +DESC="Test apache2 (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, les fichiers suivants sont modifiés : +- /etc/apache2/apache2.conf +- /etc/apache2/sites-available/000-default.conf + +Une copie est faite avec l'extension .vdn +" + + +repairApache2Base() { + echo "Lancement du serveur" + + vdn-ssh root@bigboss " + echo 'ServerName bigboss' >> /etc/apache2/apache2.conf + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + sleep 1 + " +} + +repairApache2Root() { + echo + echo "Modification de la racine du serveur Web" + vdn-ssh root@bigboss " + conf=/etc/apache2/sites-available/000-default.conf + [ ! -e \$conf ] && cp \$conf \${conf}.vdn + root=/home/httpd/html + + [ ! -d \$root ] && mkdir -p \$root + + #cat \$conf | sed -e 's|/var/www/html|'\$root'|g' \ + # > /tmp/default + cat <<-EOF > \$conf + +# The ServerName directive sets the request scheme, hostname and port that +# the server uses to identify itself. This is used when creating +# redirection URLs. In the context of virtual hosts, the ServerName +# specifies what hostname must appear in the request's Host: header to +# match this virtual host. For the default virtual host (this file) this +# value is not decisive as it is used as a last resort host regardless. +# However, you must set it for any further virtual host explicitly. +#ServerName www.example.com + +ServerAdmin webmaster@localhost +DocumentRoot /home/httpd/html + +# Available loglevels: trace8, ..., trace1, debug, info, notice, warn, +# error, crit, alert, emerg. +# It is also possible to configure the loglevel for particular +# modules, e.g. +#LogLevel info ssl:warn + +ErrorLog \\\${APACHE_LOG_DIR}/error.log +CustomLog \\\${APACHE_LOG_DIR}/access.log combined + +# For most configuration files from conf-available/, which are +# enabled or disabled at a global level, it is possible to +# include a line for only one particular virtual host. For example the +# following line enables the CGI configuration for this host only +# after it has been globally disabled with \"a2disconf\". +#Include conf-available/serve-cgi-bin.conf + +ScriptAlias \"/cgi-bin/\" \"/home/httpd/cgi-bin/\" + + +Options Indexes FollowSymLinks +AllowOverride None +Allow from all +Require all granted + + + + Options +ExecCGI + Require all granted + + + + +EOF + + #mv /tmp/default \$conf + cat <<-EOF > \$root/index.html + + + ok + + + EOF + + systemctl reload apache2 + sleep 1 + " + + vdn-ssh root@bigboss " + conf=/etc/apache2/sites-available/000-default.conf + root=/home/httpd/html/ + + cat \$conf | \ + sed -e '//d' \ + > /tmp/default + cat /tmp/default | grep -v '' > \$conf + + cat <<-EOF >> \$conf + + Options Indexes FollowSymlinks Multiviews + AllowOverride None + Order allow,deny + allow from all + Require all granted + + + EOF + + sleep 1 + systemctl reload apache2 + sleep 1 + " +} + +repairApache2CGI() { + echo + echo "Création d'un script CGI" + + vdn-ssh root@bigboss " + [ ! -d /home/httpd/cgi-bin ] && mkdir -p /home/httpd/cgi-bin + cat <<-EOF > /home/httpd/cgi-bin/test-cgi + #!/bin/bash + + # Header + echo 'Content-type: text/html' + + # Fin de l'header + echo + + # Contenu à afficher dans le navigateur + echo '' + echo 'Bonjour : nous sommes le :\`date\`' + echo '' + EOF + + chmod 755 /home/httpd/cgi-bin/test-cgi + + cat /etc/apache2/sites-available/000-default.conf | \ + sed -re 's,/usr/lib/cgi-bin/,/home/httpd/cgi-bin/,' \ + > /tmp/defaut + mv /tmp/defaut /etc/apache2/sites-available/000-default.conf + + a2enmod cgid + + systemctl restart apache2 + sleep 1 + " + +} + +repairApache2Php() { + echo + echo "Création d'une page PHP" + + vdn-ssh root@bigboss " + [ ! -d /home/http/html ] && mkdir -p /home/httpd/html + cat <<-EOF > /home/httpd/html/index.php + + Exemple + + Nous sommes le , il est . + + + EOF + " + +} + +repairApache2Home() { + echo + echo "Page Web personnelle (userdir)" + + vdn-ssh root@bigboss " + [ ! -d /home ] && { echo 'Need toto user !' >&2; exit 1; } + [ ! -d /home/toto/public_html ] && mkdir /home/toto/public_html + cat <<-EOF > /home/toto/public_html/index.html + Page perso. + EOF + chown -R toto: /home/toto/public_html + + a2enmod userdir + systemctl restart apache2 + sleep 1 + " +} + +repairApache2HtaccessToto() { + echo + echo "Protection de toto@bigboss:~toto/secret" + + vdn-ssh root@bigboss " + [ ! -d /home/toto/public_html/secret ] && { + mkdir -p /home/toto/public_html/secret + chown -R toto: /home/toto/public_html + chmod 700 /home/toto/public_html/secret + } + + cat <<-EOF > /home/toto/public_html/secret/.htaccess + AuthType Basic + AuthUserFile /home/toto/public_html/secret/users + #AuthGroupFile /dev/null + AuthName \"Accès privé\" + + require user titi + +EOF + + echo \"Prive\" > \ + /home/toto/public_html/secret/index.html + + ( + cd /home/toto/public_html/secret/ + htpasswd -b -c users titi iut + ) + + chown -R toto: /home/toto/public_html + " + +} + +repairApache2Htaccess() { + echo + echo "Protection par mot de passe" + + vdn-ssh root@bigboss " + [ ! -d /home/httpd/html/prive ] && mkdir /home/httpd/html/prive + cat <<-EOF > /home/httpd/html/prive/.htaccess + AuthType Basic + AuthUserFile /etc/apache2/users + #AuthGroupFile /dev/null + AuthName \"Accès privé\" + + require user toto + + EOF + + echo \"Prive\" > \ + /home/httpd/html/prive/index.html + + ( + cd /etc/apache2 + htpasswd -b -c users toto iut + htpasswd -b users prof iut + ) + " + + vdn-ssh root@bigboss " + conf=/etc/apache2/sites-available/000-default.conf + + cat \$conf | \ + sed -e '//d' \ + > /tmp/default + cat /tmp/default | grep -v '' > \$conf + + cat <<-EOF >> \$conf + + Options Indexes FollowSymlinks Multiviews + AllowOverride All + Order allow,deny + allow from all + + + EOF + + systemctl reload apache2 + sleep 1 + " +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + repairApache2Base + #repairApache2Root + #repairApache2CGI + #repairApache2Php + repairApache2Home + #repairApache2Htaccess + repairApache2HtaccessToto + + unsetErrorHandler +} + diff --git a/vdn/networks.bak/demo/scripts/repairDhcp b/vdn/networks.bak/demo/scripts/repairDhcp new file mode 100644 index 0000000..9c3b81b --- /dev/null +++ b/vdn/networks.bak/demo/scripts/repairDhcp @@ -0,0 +1,67 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Fixe DHCP sur bigboss pour servir tiny (IP, nom d'hôte)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +repairDHCP() { + echo + echo "Repair DHCP" + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | \ + sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdn-ssh root@bigboss " + f=/etc/dhcp3/dhcpd.conf + [ -e /etc/init.d/isc-dhcp-server ] && f=/etc/dhcp/dhcpd.conf + cat <<-EOF > \$f + subnet 192.168.30.0 netmask 255.255.255.0 { + } + host tiny { + hardware ethernet ${tinyMAC}; + option host-name tiny; + fixed-address tiny; + } +EOF + + f=/etc/default/isc-dhcp-server + cat <<-EOF > \$f +INTERFACESv4=\"eth0\" +INTERFACESv6=\"\" +EOF + + set -x + sleep 10 + + systemctl enable isc-dhcp-server + systemctl stop isc-dhcp-server + systemctl start isc-dhcp-server + + #if [ -e /etc/init.d/dhcp3-server ]; then + # /etc/init.d/dhcp3-server stop &> /dev/null + # /etc/init.d/dhcp3-server start + #elif [ -e /etc/init.d/isc-dhcp-server ]; then + # /etc/init.d/isc-dhcp-server stop &> /dev/null + # /etc/init.d/isc-dhcp-server start + #fi + + " +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + repairDHCP + + echoDoneWithTestErrors +} + + diff --git a/vdn/networks.bak/demo/scripts/repairFirewall b/vdn/networks.bak/demo/scripts/repairFirewall new file mode 100644 index 0000000..e816f53 --- /dev/null +++ b/vdn/networks.bak/demo/scripts/repairFirewall @@ -0,0 +1,109 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +config() { + IP_SOCIETE_PUBLIC=$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) + vdn-ssh -t root@societe " +# net.ipv4.ip_forward=1 +sed -i -re 's/#(net.ipv4.ip_forward=1)/\1/g' /etc/sysctl.conf +sysctl -p + +cat << EOF > vide.sh +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat +EOF + +chmod 755 vide.sh + +cat << EOF > local-1.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local-1.sh + +cat << EOF > fermeDehors.sh +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + +iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT +iptables -A INPUT -m state --state RELATED -j ACCEPT + +iptables -A INPUT -i eth0 -j REJECT +EOF + +chmod 755 fermeDehors.sh + +cat << EOF > forward.sh +iptables -t nat -A PREROUTING -p tcp -d $IP_SOCIETE_PUBLIC --dport 80 -j DNAT --to 192.168.1.2 +EOF + +chmod 755 forward.sh + +cat << EOF > local.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward + +iptables -s 192.168.30.0/24 -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +iptables -s 192.168.1.2 -p tcp --dport 80 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 53 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 25 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh + +cat << EOF > fw-on.sh +#!/bin/sh + +/root/vide.sh +/root/fermeDehors.sh +/root/local.sh +/root/forward.sh +if [ -x /root/dns.sh ]; then + /root/dns.sh +fi +EOF + +chmod 755 fw-on.sh + +/root/fw-on.sh +" +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + config + + #sleep 1 + + #parallelDisablePause + #vdn-scripts testFirewall + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo/scripts/repairIPv6 b/vdn/networks.bak/demo/scripts/repairIPv6 new file mode 100644 index 0000000..8f8ac1b --- /dev/null +++ b/vdn/networks.bak/demo/scripts/repairIPv6 @@ -0,0 +1,86 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Nouvelle configuration IPv6 du réseau + tests" + +SYSTEMS="bigboss societe web" + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + +testIPv6() { + echo + echo "test link between web and bigboss (Unique local address)" + echo + + # réinitialise les interfaces + + vdn-ssh root@bigboss "ifconfig eth0 down ; ifconfig eth0 up" + vdn-ssh root@web "ifconfig eth0 down ; ifconfig eth0 up" + vdn-ssh root@societe " + ifconfig eth0 down ; ifconfig eth0 up + ifconfig eth1 down ; ifconfig eth1 up + ifconfig eth2 down ; ifconfig eth2 up + + echo 1 >/proc/sys/net/ipv6/conf/all/forwarding + " + + # Ajoute les adresses IPv6 "locales uniques" en utilisant le suffixe + # de l'adresse "lien local" + # + # * la DMZ (web) aura le préfixe fc01 + # * le réseau interne (bigboss) aura le préfixe fc00 + # + # La fonction routage IPv6 est activé sur société + # et les route par défaut sont fixées sur web et bigboss + # + # un ping6 de bigboss vers web valide la config. + + ipSocieteWeb=$(getIPv6 societe eth1) + ipSocieteWeb=$(echo $ipSocieteWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteWeb/64 dev eth1" + + ipSocieteBigboss=$(getIPv6 societe eth2) + ipSocieteBigboss=$(echo $ipSocieteBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteBigboss/64 dev eth2" + + ipWeb=$(getIPv6 web eth0) + ipWeb=$(echo $ipWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@web "ip -6 addr add $ipWeb/64 dev eth0" + + ipBigboss=$(getIPv6 bigboss eth0) + ipBigboss=$(echo $ipBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@bigboss "ip -6 addr add $ipBigboss/64 dev eth0" + + vdn-ssh root@web " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteWeb" + vdn-ssh root@bigboss " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteBigboss" + + vdn-ssh root@bigboss "ping6 -c 3 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + waitSsh $SYSTEMS + + testIPv6 + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/demo/scripts/repairNfs b/vdn/networks.bak/demo/scripts/repairNfs new file mode 100644 index 0000000..3bc3594 --- /dev/null +++ b/vdn/networks.bak/demo/scripts/repairNfs @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Fixe NFS (bigboss exporte /overlays/ro/usr/share/doc (ro) et tiny l'importe)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, le fichier /etc/exports est modifié ! +" + +repairNfs() { + vdn-ssh root@bigboss " + + [ ! -d /overlays/rw/partage-test ] && mkdir /overlays/rw/partage-test || : + echo test > /overlays/rw/partage-test/vdn-test + + cat <<-EOF > /etc/exports +/overlays/ro/usr/share/doc tiny(ro,sync,subtree_check,no_root_squash,fsid=1) +#/overlays/rw/partage-test tiny(rw,sync,subtree_check,no_root_squash,fsid=2) + EOF + sleep 1 + systemctl enable nfs-kernel-server + systemctl stop nfs-kernel-server + systemctl start nfs-kernel-server + " +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss + + repairNfs + + unsetErrorHandler +} + diff --git a/vdn/networks.bak/demo/scripts/repairProftpd b/vdn/networks.bak/demo/scripts/repairProftpd new file mode 100644 index 0000000..ca93cae --- /dev/null +++ b/vdn/networks.bak/demo/scripts/repairProftpd @@ -0,0 +1,76 @@ +#!/usr/bin/env bash + +set -u + +DESC="Fixe proftp (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, le fichier suivant est modifié : +- /etc/proftpd/proftpd.conf + +Une copie de l'original est faite avec l'extension .vdn +" + + +repairProftpd() { + echo + echo "Repair proftpd" + + vdn-ssh root@bigboss " + + [ ! -e /etc/proftpd/proftpd.conf.vdn ] && \ + cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.vnd + + grep -q '^> /etc/proftpd/proftpd.conf +# A basic anonymous configuration, no upload directories. + + + User ftp + Group nogroup + # We want clients to be able to login with \"anonymous\" as well as \"ftp\" + UserAlias anonymous ftp + # Cosmetic changes, all files belongs to ftp user + DirFakeUser on ftp + DirFakeGroup on ftp + + RequireValidShell off + + # Limit the maximum number of anonymous logins + MaxClients 10 + + # We want 'welcome.msg' displayed at login, and '.message' displayed + # in each newly chdired directory. + DisplayLogin welcome.msg + DisplayChdir .message + + # Limit WRITE everywhere in the anonymous chroot + + + DenyAll + + + + +EOF + + systemctl enable proftpd + systemctl restart proftpd + " + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + repairProftpd + + echoDoneWithTestErrors +} + diff --git a/vdn/networks.bak/demo/scripts/repairUsersTotoTiti b/vdn/networks.bak/demo/scripts/repairUsersTotoTiti new file mode 100644 index 0000000..d9c1c29 --- /dev/null +++ b/vdn/networks.bak/demo/scripts/repairUsersTotoTiti @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Ajoute, si nécessaire un utilisateur toto sur bigboss et tit sur tiny." + +getRandomPasswd() { + local k + + while :; do + k=$(tr -dc _A-Z-a-z-0-9 < /dev/urandom 2> /dev/null | head -c${1:-32} ) + if [ $(echo -n $k | wc -c) = 32 ]; then + break + fi + echo "Wait for entropy avail : $(cat /proc/sys/kernel/random/entropy_avail)" >&2 + sleep 1 + done + echo -n $k +} + +repairUser() { + k=$(getRandomPasswd) + vdn-ssh root@$1 " + id $2 2> /dev/null && exit 0 + adduser --disabled-password --gecos \"\" --home /home/$2 --shell /bin/bash $2 + echo $2:$k| chpasswd + " +} + + +run() { + setErrorHandler + echoStart + + startAndWaitSsh bigboss tiny + + repairUser bigboss toto + repairUser tiny titi + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo/scripts/testAll-1A b/vdn/networks.bak/demo/scripts/testAll-1A new file mode 100755 index 0000000..edcde67 --- /dev/null +++ b/vdn/networks.bak/demo/scripts/testAll-1A @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +DESC="Teste les TPs de 1A sur bigboss et tiny." + +SYSTEMS="bigboss tiny societe lambda web" + +testTp1Part1() { + echo "[TP n°1 partie bigboss]" + echo + vdnTest "hostname bigboss ......... ?" 'vdn-ssh root@bigboss "test \"\$(hostname)\" = bigboss"' + vdnTest "ip bigboss ............... ?" 'vdn-ssh root@bigboss "ip addr show eth0 | grep -Fq 192.168.30.2"' + vdnTest "ping bigboss -> tiny ..... ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 tiny &> /dev/null"' + vdnTest "ping bigboss -> bigboss .. ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 bigboss &> /dev/null"' +} + +testTp1Part2() { + echo "[TP n°1 partie tiny]" + echo + vdnTest "hostname tiny ............ ?" 'vdn-ssh root@tiny "test \"\$(hostname)\" = tiny"' + vdnTest "ip tiny .................. ?" 'vdn-ssh root@tiny "ip addr show eth1 | grep -Fq 192.168.30.16"' + vdnTest "ping tiny -> bigboss .. ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 bigboss &> /dev/null"' + vdnTest "ping tiny -> tiny ..... ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 tiny &> /dev/null"' +} + +testTp2() { + echo "[TP n°1 partie \"utilisateurs\"]" + echo + vdnTest "user toto sur bigboss .... ?" 'vdn-ssh root@bigboss "id toto &> /dev/null"' + vdnTest "user titi sur tiny ....... ?" 'vdn-ssh root@tiny "id titi &> /dev/null"' + echo + echo "[TP n°2]" + echo + vdnTest "NFS lecture seule (ro) ... ?" ' + vdn-ssh root@tiny " + [ ! -d /mnt/bigboss ] && mkdir /mnt/bigboss; + timeout 3 mount bigboss:/overlays/ro/usr/share/doc /mnt/bigboss; + [ ! -e /mnt/bigboss/xterm ] && exit 1; + umount /mnt/bigboss; + "' +} + +testTp3() { + echo "[TP n°3]" + echo + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdnTest "DHCP configuré sur bigboss ....... ?" "vdn-ssh root@bigboss \"grep -iq '^[^#]*$tinyMAC' /etc/dhcp/dhcpd.conf\"" + vdnTest "DHCP sur bigboss : actif ......... ?" "vdn-ssh root@bigboss \"systemctl status isc-dhcp-server | grep -q 'Active: active'\"" + + echo + + vdnTest "FTP anonyme sur bigboss .......... ?" "vdn-ssh root@tiny 'set -x; echo -e \"open bigboss\nuser anonymous test@bidule.com\nls\" | ftp -i -n | grep -q welcome'" + + echo + + #vdnTest "bigboss run apache2 .............. ?" "vdn-ssh root@tiny 'netcat -w 1 bigboss 80 &> /dev/null < /dev/null'" + vdnTest "bigboss run apache2 .............. ?" "vdn-ssh root@tiny 'timeout 2 lynx -dump bigboss &> /dev/null'" + e=$? + + if [ $e = 0 ]; then + vdnTest "bigboss run apache2 with userdir . ?" "vdn-ssh root@tiny 'unset http_proxy; \ + timeout 2 lynx -dump bigboss/~toto 2> /dev/null | grep -iv \"Not found\"'" + vdnTest "toto@bigboss avec HTTP protégé ... ?" "vdn-ssh root@bigboss '\ + find /home/toto/public_html -name .htaccess 2> /dev/null | grep -q htaccess$'" + else + echo >&2 + echo "Subsequent tests canceled !" >&2 + return 1 + fi + + +} + +testTp4() { + echo "[TP n°4]" + echo + + vdnTest "tiny -> web ....................... ?" "vdn-ssh root@tiny 'unset http_proxy; timeout 2 lynx -dump web'" + echo + vdnTest "root@bigboss id_rsa/id_rsa.pub .... ?" "vdn-ssh root@bigboss 'ls -l ~/.ssh/id_rsa &> /dev/null'" + vdnTest "root@bigboss -> titi@tiny ......... ?" "vdn-ssh root@bigboss 'timeout 2 ssh -o StrictHostKeyChecking=no titi@tiny :'" +} + +testTp5() { + echo "[TP n°5]" + echo + + local ipLambda=$(vdn-infos lambda PUBLIC_IP) + + vdnTest "tiny -> ipLambda .................. ?" "vdn-ssh root@tiny 'unset http_proxy; timeout 2 lynx -dump $ipLambda'" + echo + vdnTest "serveur.rb ........................ ?" "vdn-ssh root@bigboss 'ls /usr/local/bin/server.rb &> /dev/null'" + vdnTest "client.rb ......................... ?" "vdn-ssh root@tiny 'ls /usr/local/bin/client.rb &> /dev/null'" +} + +testSum() { + local last=-1 cpt=0 n + set +u + + VDN_TESTS_DIR=/tmp/vdn-$USER/tests + + if [ -z "$VDN_TESTS_DIR" ]; then + echo + echo "Not used !" + return + fi + set +u + last=-1 + echo "[Synthèse]" + echo + + while :; do + n=$(ls $VDN_TESTS_DIR | wc -l) + + printf "." + + if [ $n = $last ]; then + same=$(($same+1)) + else + same=0 + fi + + if [ $same = 10 ]; then + break; + fi + + last=$n + + sleep 0.5 + done + + good=$(cat $VDN_TESTS_DIR/* | grep '^0$' | wc -l) + bad=$(($n-$good)) + + echo + echo + echo "tests:$n ok:$good ko:$bad réussite:$(( ($good*100) /$n ))%" + echo + + +} + + +run() { + + requireSshGuests $SYSTEMS + + #echo "Cette temporisation est pour vous décourager d'utiliser ce test comme debogueur !" + #for i in $(seq 10 -1 0); do echo $i; sleep 1; done + + VDN_TESTS_DIR=/tmp/vdn-$USER/tests + + [ ! -d $VDN_TESTS_DIR ] && mkdir -p $VDN_TESTS_DIR + + rm -f /tmp/vdn-$USER/tests/* + + vdnExec testTp1Part1 testTp1Part2 testTp2 testTp3 testTp4 testTp5 testSum + +} diff --git a/vdn/networks.bak/demo/scripts/testApache2 b/vdn/networks.bak/demo/scripts/testApache2 new file mode 100644 index 0000000..e30df5d --- /dev/null +++ b/vdn/networks.bak/demo/scripts/testApache2 @@ -0,0 +1,140 @@ +#!/usr/bin/env bash + +set -u + +#set -x + +DESC="Test apache2 (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, les fichiers suivants sont modifiés : +- /etc/apache2/apache2.conf +- /etc/apache2/sites-available/000-default.conf +" + + +testApache2Base() { + echo "bigboss run apache2 ?" + + vdn-ssh root@tiny "netcat -w 1 bigboss 80 &> /dev/null < /dev/null" + + #vdn-ssh root@tiny "lynx -dump bigboss &> /dev/null" + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + return $e +} + +testApache2Root() { + vdn-ssh root@tiny " + lynx -dump bigboss/index.html | \ + grep -q -i 'Bonjour' + " + + vdn-ssh root@tiny " + lynx -dump bigboss/index.html | grep -q 'ok' && echo ok + " +} + +testApache2CGI() { + + vdn-ssh root@tiny " + lynx -dump bigboss/cgi-bin/test-cgi + lynx -dump bigboss/cgi-bin/test-cgi | grep -q 'Bonjour' + " +} + +testApache2Php() { + + vdn-ssh root@tiny " + lynx -dump bigboss/index.php + lynx -dump bigboss/index.php | grep -q 'sommes le [^,]' + " +} + +testApache2Home() { + echo "bigboss run apache2 with userdir ?" + + vdn-ssh root@tiny " + unset http_proxy; lynx -dump bigboss/~toto 2> /dev/null # | grep -iq 'perso' + " + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + return $e + +} + +testApache2HtaccessExist() { + echo "toto@bigboss possède un répertoire HTTP protégé ?" + + vdn-ssh root@bigboss " + find /home/toto/public_html -name '.htaccess' 2> /dev/null | grep -q 'htaccess$' + " + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + return $e +} + +testApache2HtaccessToto() { + echo "toto@bigboss : répertoire HTTP fonctionnel ?" + vdn-ssh root@tiny " + unset http_proxy; lynx -dump http://bigboss/~toto/index.html + " +} + +testApache2Htaccess() { + + vdn-ssh root@tiny " + echo \"Accès à privé sans identification\" + lynx -dump bigboss/prive | grep -q 'Prive' && \ + echo \"ok\" + echo + echo \"Accès à privé sans identification\" + lynx -dump bigboss/prive/.htaccess | grep -q 'Forbidden' + " + + vdn-ssh root@tiny " + echo \"Accès à privé sans identification\" + lynx -dump bigboss/prive 2> /dev/null | grep -q 'Prive' || \ + echo \"ok\" + echo + echo \"Accès à privé avec identification\" + lynx -auth=sasa:xyz -dump bigboss/prive | \ + grep -q 'Prive' + " + + +} + + +run() { + local errors=0 e + + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + testApache2Base + e=$? + #testApache2Root + #testApache2CGI + #testApache2Php + + if [ $e = 0 ]; then + testApache2Home + testApache2HtaccessExist + #testApache2HtaccessToto + else + echo "Subsequent tests canceled !" >&2 + fi + #testApache2Htaccess + + unsetErrorHandler + return $errors +} + diff --git a/vdn/networks.bak/demo/scripts/testBigbossTiny b/vdn/networks.bak/demo/scripts/testBigbossTiny new file mode 100644 index 0000000..c8e39e1 --- /dev/null +++ b/vdn/networks.bak/demo/scripts/testBigbossTiny @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +DESC="Test de la configuration de base de bigboss et tiny." + +SYSTEMS="bigboss tiny" + +run() { + local localErrors=0 + + requireSshGuests $SYSTEMS + + vdnTest "hostname bigboss ......... ?" 'vdn-ssh root@bigboss "test \"\$(hostname)\" = bigboss"' + vdnTest "ip bigboss ............... ?" 'vdn-ssh root@bigboss "ip addr show eth0 | grep -Fq 192.168.30.2"' + vdnTest "hostname tiny ............ ?" 'vdn-ssh root@tiny "test \"\$(hostname)\" = tiny"' + vdnTest "ip tiny .................. ?" 'vdn-ssh root@tiny "ip addr show eth1 | grep -Fq 192.168.30.16"' + vdnTest "ping bigboss -> tiny ..... ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 tiny &> /dev/null"' + vdnTest "ping tiny -> bigboss .. ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 bigboss &> /dev/null"' + vdnTest "ping bigboss -> bigboss .. ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 bigboss &> /dev/null"' + vdnTest "ping tiny -> tiny ..... ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 tiny &> /dev/null"' + vdnTest "user toto sur bigboss .... ?" 'vdn-ssh root@bigboss "id toto &> /dev/null"' + vdnTest "user titi sur tiny ....... ?" 'vdn-ssh root@tiny "id titi &> /dev/null"' + + echo + + vdnTest "NFS lecture seule (ro) ... ?" ' + vdn-ssh root@tiny " + [ ! -d /mnt/bigboss ] && mkdir /mnt/bigboss; + timeout 3 mount bigboss:/overlays/ro/usr/share/doc /mnt/bigboss; + [ ! -e /mnt/bigboss/xterm ] && exit 1; + umount /mnt/bigboss; + "' + + echoDone + + return $localErrors +} + diff --git a/vdn/networks.bak/demo/scripts/testDHCPBigbossTiny b/vdn/networks.bak/demo/scripts/testDHCPBigbossTiny new file mode 100644 index 0000000..c0c7766 --- /dev/null +++ b/vdn/networks.bak/demo/scripts/testDHCPBigbossTiny @@ -0,0 +1,125 @@ +#!/usr/bin/env bash + +set -eu + +set -x + +DESC="Test DHCP (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +resetToDefault() { + echo + echo "Reset DHCP" + + vdn-ssh root@bigboss " + + # Création d'une sauvegarde des fichiers originaux + for i in /etc/dhcp3/dhcpd.conf; do + [ ! -e \${i}.vdn -a -e $i ] && + cp \${i} \${i}.vdn + done + + # Restauration de la sauvegarde + + for i in /etc/dhcp3/dhcpd.conf; do + [ -e \${i}.vdn ] && + cp \${i}.vdn \${i} + done + + exit 0 + " + + vdn-ssh root@tiny " + + # Création d'une sauvegarde des fichiers originaux + + for i in /etc/network/interfaces; do + [ ! -e \${i}.vdn ] && + cp \${i} \${i}.vdn + done + + # Restauration de la sauvegarde + + for i in /etc/network/interfaces; do + [ -e \${i}.vdn ] && + cp \${i}.vdn \${i} + done + " + + +} + + +testDHCP() { + echo + echo "Test de DHCP" + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | \ + sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdn-ssh root@bigboss " + f=/etc/dhcp3/dhcpd.conf + [ -e /etc/init.d/isc-dhcp-server ] && f=/etc/dhcp/dhcpd.conf + cat <<-EOF > \$f + subnet 192.168.30.0 netmask 255.255.255.0 { + } + host tiny { + hardware ethernet ${tinyMAC}; + option host-name tiny; + fixed-address tiny; + } +EOF + + f=/etc/default/isc-dhcp-server + cat <<-EOF > \$f +INTERFACESv4=\"eth0\" +INTERFACESv6=\"\" +EOF + + if [ -e /etc/init.d/dhcp3-server ]; then + /etc/init.d/dhcp3-server stop &> /dev/null + /etc/init.d/dhcp3-server start + elif [ -e /etc/init.d/isc-dhcp-server ]; then + /etc/init.d/isc-dhcp-server stop &> /dev/null + /etc/init.d/isc-dhcp-server start + fi + + " + + vdn-ssh root@tiny " + cat <<-EOF > /etc/network/interfaces + auto lo + iface lo inet loopback + + auto eth1 + iface eth1 inet dhcp + EOF + + ifdown eth1 + ifup eth1 + + ifconfig eth1 | grep -q 192.168 && echo ok || exit 1 + " + + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + resetToDefault + testDHCP + resetToDefault + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/demo/scripts/testDhcp b/vdn/networks.bak/demo/scripts/testDhcp new file mode 100644 index 0000000..e7dfd6c --- /dev/null +++ b/vdn/networks.bak/demo/scripts/testDhcp @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +DESC="Test DHCP (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +SYSTEMS="bigboss tiny" + +run() { + local localErrors=0 + + requireSshGuests $SYSTEMS + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdnTest "DHCP configuré sur bigboss ?" "vdn-ssh root@bigboss \"grep -q '^[^#]*$tinyMAC' /etc/dhcp/dhcpd.conf\"" + vdnTest "DHCP sur bigboss : actif ?" "vdn-ssh root@bigboss \"systemctl status isc-dhcp-server | grep -q 'Active: active'\"" + + echo + + vdnTest "FTP anonyme sur bigboss ?" "vdn-ssh root@tiny ' + echo -e \'open bigboss\nuser anonymous test@bidule.com\nls\' \ + | ftp -i -n | grep -q welcome'" + + + unsetErrorHandler + + echoDone + + return $localErrors +} + + diff --git a/vdn/networks.bak/demo/scripts/testFirewall b/vdn/networks.bak/demo/scripts/testFirewall new file mode 100644 index 0000000..3806442 --- /dev/null +++ b/vdn/networks.bak/demo/scripts/testFirewall @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +run() { + setErrorHandler + echoStart + + parallelDisablePause + + vdn-scripts diag1 diag2 diag3 + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo/scripts/testIPv6 b/vdn/networks.bak/demo/scripts/testIPv6 new file mode 100644 index 0000000..c7729f8 --- /dev/null +++ b/vdn/networks.bak/demo/scripts/testIPv6 @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test ping6 IPv6 (à travers un routeur IPv6)" + +SYSTEMS="bigboss societe web" + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | head -n 1 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + + +testIPv6() { + + ipWeb=$(getIPv6 web eth0) + echo "Try ping6 (bigboss -> web)..." + vdn-ssh root@bigboss "ping6 -c 1 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + #requireSshGuests $SYSTEMS + #waitSsh $SYSTEMS + + testIPv6 + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/demo/scripts/testMyCompanyFirewall b/vdn/networks.bak/demo/scripts/testMyCompanyFirewall new file mode 100644 index 0000000..40d3cda --- /dev/null +++ b/vdn/networks.bak/demo/scripts/testMyCompanyFirewall @@ -0,0 +1,136 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +config() { + IP_SOCIETE_PUBLIC=$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) + vdn-ssh -t root@societe " +# net.ipv4.ip_forward=1 +sed -i -re 's/#(net.ipv4.ip_forward=1)/\1/g' /etc/sysctl.conf +sysctl -p + +cat << EOF > vide.sh +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat +EOF + +chmod 755 vide.sh + +cat << EOF > local-1.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local-1.sh + +cat << EOF > fermeDehors.sh +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + +iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT +iptables -A INPUT -m state --state RELATED -j ACCEPT + +iptables -A INPUT -i eth0 -j REJECT +EOF + +chmod 755 fermeDehors.sh + +cat << EOF > forward.sh +iptables -t nat -A PREROUTING -p tcp -d $IP_SOCIETE_PUBLIC --dport 80 -j DNAT --to 192.168.1.2 +EOF + +chmod 755 forward.sh + +cat << EOF > local.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward + +iptables -s 192.168.30.0/24 -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +iptables -s 192.168.1.2 -p tcp --dport 80 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 53 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 25 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh + +cat << EOF > fw-on.sh +#!/bin/sh + +/root/vide.sh +/root/fermeDehors.sh +/root/local.sh +/root/forward.sh +if [ -x /root/dns.sh ]; then + /root/dns.sh +fi +EOF + +chmod 755 fw-on.sh + +/root/fw-on.sh +" + + +} + +test() { + # tiny peut joindre bigboss (et vice versa). + + vdn-ssh root@bigboss "ping -c 1 tiny" + vdn-ssh root@tiny "ping -c 1 bigboss" + + # societe est joignable par toutes les machines (et vice versa) + + for i in $SYSTEMS; do + vdn-ssh root@$i "ping -c 1 societe" + done + + # lambda peut joindre nomade (et vice-versa) + + vdn-ssh root@lambda "ping -c 1 nomade" + vdn-ssh root@nomade "ping -c 1 lambda" + + # vérifiez que les serveurs apache2 de lambda, web et bigboss fonctionnent + + vdn-ssh root@bigboss "lynx -dump bigboss" | grep -q 'Bienvenue' + vdn-ssh root@web "lynx -dump web" | grep -q 'Bienvenue' + vdn-ssh root@lambda "lynx -dump lambda" | grep -q 'Bienvenue' +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + #set -x + + # Config + config + + # test + #test + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/demo/scripts/testNfs b/vdn/networks.bak/demo/scripts/testNfs new file mode 100644 index 0000000..0adb099 --- /dev/null +++ b/vdn/networks.bak/demo/scripts/testNfs @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +DESC="Test NFS (bigboss exporte /overlays/ro/usr/share/doc (ro) et tiny l'importe)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +SYSTEMS="bigboss tiny" + +run() { + local localErrors=0 + + requireSshGuests $SYSTEMS + + vdnTest "NFS lecture seule (ro) ?" ' + vdn-ssh root@tiny " + [ ! -d /mnt/bigboss ] && mkdir /mnt/bigboss; + timeout 3 mount bigboss:/overlays/ro/usr/share/doc /mnt/bigboss; + [ ! -e /mnt/bigboss/xterm ] && exit 1; + umount /mnt/bigboss; + "' + + echoDone + + return $localErrors +} + diff --git a/vdn/networks.bak/demo/scripts/testProftpd b/vdn/networks.bak/demo/scripts/testProftpd new file mode 100644 index 0000000..e469a98 --- /dev/null +++ b/vdn/networks.bak/demo/scripts/testProftpd @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -u + +DESC="Test proftp (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +testProftp() { + echo + echo "Test de proftpd (anonymous)" + + vdn-ssh root@tiny " + echo -e 'open bigboss\nuser anonymous test@bidule.com\nls' \ + | ftp -i -n | grep -q welcome + " + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + + return $e + +} + +run() { + local errors=0 + + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + testProftp + + unsetErrorHandler + return $errors +} + diff --git a/vdn/networks.bak/demo/societe.conf b/vdn/networks.bak/demo/societe.conf new file mode 100644 index 0000000..da9ded2 --- /dev/null +++ b/vdn/networks.bak/demo/societe.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X3.Y3.Z3/8 NET_1#192.168.1.1/24 NET_2#192.168.30.1/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo/tiny.conf b/vdn/networks.bak/demo/tiny.conf new file mode 100644 index 0000000..5c5ee68 --- /dev/null +++ b/vdn/networks.bak/demo/tiny.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="none NET_2#192.168.30.16/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/demo/web.conf b/vdn/networks.bak/demo/web.conf new file mode 100644 index 0000000..b15c14f --- /dev/null +++ b/vdn/networks.bak/demo/web.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_1#192.168.1.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/docker-buster/build b/vdn/networks.bak/docker-buster/build new file mode 100755 index 0000000..d891517 --- /dev/null +++ b/vdn/networks.bak/docker-buster/build @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + + + +build() { + local n + + n=debian-1 + vdn-build $n + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n MEMORY "4096" + vdn-config $n AUFS_SIZE 2048 + vdn-config $n HDB "docker-hdb.disk" + vdn-config $n HDB_PART_FORMAT 1 + vdn-config $n HDB_DIRS "/root /home /var/lib/docker /var/lib/containerd" + vdn-config $n HDB_SIZE "5120" + vdn-config $n SWAP_SIZE "2048" + vdn-config $n EXTRA_SERVICES "containerd docker" + + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + tcp:443:(https) \ + tcp:8000:(free) \ + " +} + diff --git a/vdn/networks.bak/docker-buster/debian-1/etc/systemd/system/docker.service.d/http-proxy.conf b/vdn/networks.bak/docker-buster/debian-1/etc/systemd/system/docker.service.d/http-proxy.conf new file mode 100644 index 0000000..0f39841 --- /dev/null +++ b/vdn/networks.bak/docker-buster/debian-1/etc/systemd/system/docker.service.d/http-proxy.conf @@ -0,0 +1,5 @@ +[Service] +Environment=HTTP_PROXY="http://193.49.118.36:8080/" +Environment=HTTPS_PROXY="http://193.49.118.36:8080/" +Environment=NO_PROXY="localhost,127.0.0.0/8" + diff --git a/vdn/networks.bak/docker-buster/net.svgz b/vdn/networks.bak/docker-buster/net.svgz new file mode 100644 index 0000000..084b175 Binary files /dev/null and b/vdn/networks.bak/docker-buster/net.svgz differ diff --git a/vdn/networks.bak/docker-buster/network.vdn b/vdn/networks.bak/docker-buster/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/docker-buster/scripts/test b/vdn/networks.bak/docker-buster/scripts/test new file mode 100755 index 0000000..7ae72a4 --- /dev/null +++ b/vdn/networks.bak/docker-buster/scripts/test @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +DESC="Test de docker." + +run() { + + name="debian-1" + + diag test@$name "Test docker :" \ + 'docker run -it --mount src=/,target=/test_container,type=bind busybox cat /test_container/etc/shadow > /dev/null' + +} + diff --git a/vdn/networks.bak/docker-tmp-buster/build b/vdn/networks.bak/docker-tmp-buster/build new file mode 100755 index 0000000..2c0bdc1 --- /dev/null +++ b/vdn/networks.bak/docker-tmp-buster/build @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + + + +build() { + local n + + n=debian-1 + vdn-build $n + + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n MEMORY "4096" + vdn-config $n AUFS_SIZE 2048 + vdn-config $n SAVE_DIR "/tmp/vdn-\$USER" + vdn-config $n SAVE_DIR_HDB "/tmp/vdn-\$USER" + vdn-config $n HDB "docker-hdb.disk" + vdn-config $n HDB_PART_FORMAT 1 + vdn-config $n HDB_DIRS "/root /home /var/lib/docker /var/lib/containerd" + vdn-config $n HDB_SIZE "32000" + vdn-config $n SWAP_SIZE "2048" + vdn-config $n EXTRA_SERVICES "containerd docker" + + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + tcp:443:(https) \ + tcp:8000:(free) \ + " +} + diff --git a/vdn/networks.bak/docker-tmp-buster/debian-1/etc/systemd/system/docker.service.d/http-proxy.conf b/vdn/networks.bak/docker-tmp-buster/debian-1/etc/systemd/system/docker.service.d/http-proxy.conf new file mode 100644 index 0000000..0f39841 --- /dev/null +++ b/vdn/networks.bak/docker-tmp-buster/debian-1/etc/systemd/system/docker.service.d/http-proxy.conf @@ -0,0 +1,5 @@ +[Service] +Environment=HTTP_PROXY="http://193.49.118.36:8080/" +Environment=HTTPS_PROXY="http://193.49.118.36:8080/" +Environment=NO_PROXY="localhost,127.0.0.0/8" + diff --git a/vdn/networks.bak/docker-tmp-buster/net.svgz b/vdn/networks.bak/docker-tmp-buster/net.svgz new file mode 100644 index 0000000..084b175 Binary files /dev/null and b/vdn/networks.bak/docker-tmp-buster/net.svgz differ diff --git a/vdn/networks.bak/docker-tmp-buster/network.vdn b/vdn/networks.bak/docker-tmp-buster/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/docker-tmp-buster/scripts/test b/vdn/networks.bak/docker-tmp-buster/scripts/test new file mode 100755 index 0000000..7ae72a4 --- /dev/null +++ b/vdn/networks.bak/docker-tmp-buster/scripts/test @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +DESC="Test de docker." + +run() { + + name="debian-1" + + diag test@$name "Test docker :" \ + 'docker run -it --mount src=/,target=/test_container,type=bind busybox cat /test_container/etc/shadow > /dev/null' + +} + diff --git a/vdn/networks.bak/firewall-buster/build b/vdn/networks.bak/firewall-buster/build new file mode 100755 index 0000000..d7c915b --- /dev/null +++ b/vdn/networks.bak/firewall-buster/build @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +set -eu + + +build() { + local n + + for n in tiny bigboss societe web lambda nomade; do + vdn-build $n + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n MEMORY "256" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "0" + vdn-config $n SET_PROXY "0" + done + + n=tiny + vdn-config $n NETWORKS "none \$NET_2#192.168.30.16/24" + vdn-config $n MEMORY "2048" + + + n=bigboss + vdn-config $n EXTRA_SERVICES "apache2 proftpd nfs-server isc-dhcp-server haveged" + + vdn-config $n NETWORKS "\$NET_2#192.168.30.2/24" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=societe + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "1" + vdn-config $n MEMORY "512" + vdn-config $n EXTRA_SERVICES "proftpd" + vdn-config $n NETWORKS "\$NET_G#20.X3.Y3.Z3/8 \$NET_1#192.168.1.1/24 \$NET_2#192.168.30.1/24" + + n=web + vdn-config $n NETWORKS "\$NET_1#192.168.1.2/24" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=lambda + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "1" + vdn-config $n NETWORKS "\$NET_G#20.X1.Y1.Z1/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=nomade + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "1" + vdn-config $n NETWORKS "\$NET_G#20.X2.Y2.Z2/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + +} + diff --git a/vdn/networks.bak/firewall-buster/net.svgz b/vdn/networks.bak/firewall-buster/net.svgz new file mode 100644 index 0000000..e313680 Binary files /dev/null and b/vdn/networks.bak/firewall-buster/net.svgz differ diff --git a/vdn/networks.bak/firewall-buster/network.vdn b/vdn/networks.bak/firewall-buster/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/firewall-buster/scripts/baseConfigBigboss b/vdn/networks.bak/firewall-buster/scripts/baseConfigBigboss new file mode 100644 index 0000000..6b5f7bf --- /dev/null +++ b/vdn/networks.bak/firewall-buster/scripts/baseConfigBigboss @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de bigboss (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="bigboss" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static +address 192.168.30.2 +netmask 255.255.255.0 +gateway 192.168.30.1 + +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/firewall-buster/scripts/baseConfigLambda b/vdn/networks.bak/firewall-buster/scripts/baseConfigLambda new file mode 100644 index 0000000..18c2963 --- /dev/null +++ b/vdn/networks.bak/firewall-buster/scripts/baseConfigLambda @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de lambda (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="lambda" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + systemctl restart apache2 + " + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/firewall-buster/scripts/baseConfigNomade b/vdn/networks.bak/firewall-buster/scripts/baseConfigNomade new file mode 100644 index 0000000..17ba0e6 --- /dev/null +++ b/vdn/networks.bak/firewall-buster/scripts/baseConfigNomade @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de nomade (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="nomade" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + systemctl restart apache2 + " + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/firewall-buster/scripts/baseConfigSociete b/vdn/networks.bak/firewall-buster/scripts/baseConfigSociete new file mode 100644 index 0000000..e1ff0cf --- /dev/null +++ b/vdn/networks.bak/firewall-buster/scripts/baseConfigSociete @@ -0,0 +1,158 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de societe (hostname, hosts, interfaces)." + + +setFirewall() { + vdn-ssh root@societe ' +cat << EOF > /etc/network/fw-start +#!/bin/sh + +set -x + +# Vide les tables + +iptables -F +iptables -t nat -F +iptables -t mangle -F +iptables -X + +# fixe les politiques par défaut + +iptables -P INPUT DROP +iptables -P FORWARD ACCEPT +iptables -P OUTPUT ACCEPT + +# spécifique à VDN (Début) + +iptables -A INPUT -i eth3 -j ACCEPT +iptables -A OUTPUT -o eth3 -j ACCEPT + +# spécifique à VDN (Fin) + +# Autorise l''interface loopback + +iptables -A INPUT -i lo -j ACCEPT +iptables -A OUTPUT -o lo -j ACCEPT + +# Log + +iptables -A INPUT -j LOG --log-prefix "fw INPUT " + +EOF + +chmod 755 /etc/network/fw-start + +cat << EOF > /etc/network/fw-stop +#!/bin/sh + +# Vide les tables + +iptables -F +iptables -t nat -F +iptables -t mangle -F +iptables -X + +# fixe les politiques par défaut + +iptables -P INPUT ACCEPT +iptables -P OUTPUT ACCEPT +iptables -P FORWARD ACCEPT + +EOF + +chmod 755 /etc/network/fw-stop + +/etc/network/fw-stop + +sed -i -re "s/#(net.ipv4.ip_forward=1)/\1/g" /etc/sysctl.conf +sysctl -p + +' + + # enable ipv4.ip_forward + + #vdn-ssh root@societe "echo 0 > /proc/sys/net/ipv4/ip_forward" + +} + + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="societe" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + setFirewall + + + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.30.1 + netmask 255.255.255.0 + +EOF + + vdn-ssh root@$name "systemctl restart networking" + vdn-ssh root@$name "systemctl enable proftpd; systemctl start proftpd" + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/firewall-buster/scripts/baseConfigTiny b/vdn/networks.bak/firewall-buster/scripts/baseConfigTiny new file mode 100644 index 0000000..fe94899 --- /dev/null +++ b/vdn/networks.bak/firewall-buster/scripts/baseConfigTiny @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de tiny (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="tiny" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth1 +iface eth1 inet static +address 192.168.30.16 +netmask 255.255.255.0 +gateway 192.168.30.1 +EOF + + vdn-ssh root@$name "systemctl restart networking" + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/firewall-buster/scripts/baseConfigWeb b/vdn/networks.bak/firewall-buster/scripts/baseConfigWeb new file mode 100644 index 0000000..8fa6ca9 --- /dev/null +++ b/vdn/networks.bak/firewall-buster/scripts/baseConfigWeb @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de web (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="web" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.1.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + + systemctl restart networking + systemctl restart apache2 + " + + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/firewall-buster/scripts/configAll b/vdn/networks.bak/firewall-buster/scripts/configAll new file mode 100755 index 0000000..9207bfd --- /dev/null +++ b/vdn/networks.bak/firewall-buster/scripts/configAll @@ -0,0 +1,120 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base pour le TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +setFirewall() { + vdn-ssh root@societe ' +cat << EOF > /etc/network/fw-start +#!/bin/sh + +set -x + +# Vide les tables + +iptables -F +iptables -t nat -F +iptables -t mangle -F +iptables -X + +# fixe les politiques par défaut + +iptables -P INPUT DROP +iptables -P FORWARD ACCEPT +iptables -P OUTPUT ACCEPT + +# spécifique à VDN (Début) + +iptables -A INPUT -i eth3 -j ACCEPT +iptables -A OUTPUT -o eth3 -j ACCEPT + +# spécifique à VDN (Fin) + +# Autorise l''interface loopback + +iptables -A INPUT -i lo -j ACCEPT +iptables -A OUTPUT -o lo -j ACCEPT + +# Log + +iptables -A INPUT -j LOG --log-prefix "fw INPUT " + +EOF + +chmod 755 /etc/network/fw-start + +cat << EOF > /etc/network/fw-stop +#!/bin/sh + +# Vide les tables + +iptables -F +iptables -t nat -F +iptables -t mangle -F +iptables -X + +# fixe les politiques par défaut + +iptables -P INPUT ACCEPT +iptables -P OUTPUT ACCEPT +iptables -P FORWARD ACCEPT + +EOF + +chmod 755 /etc/network/fw-stop + +/etc/network/fw-stop +' + + # disable ipv4.ip_forward + + vdn-ssh root@societe "echo 0 > /proc/sys/net/ipv4/ip_forward" + +} + + +run() { + #setErrorHandler + #echoStart + + ### Configuration de base (hostname, hosts, interfaces) + + requireSshGuests $SYSTEMS + + #setFirewall + + + ### Page d'accueil des serveurs Web + + #for i in lambda web bigboss; do + # vdn-ssh root@$i " + # echo \"

Bienvenue sur le serveur Web de $i!

\" > /var/www/index.html + # " + #done + + # Construction de la liste des commandes + L="" + for i in $SYSTEMS; do + n=$(echo $i | cut -b 1 | tr -s '[[:lower:]]' '[[:upper:]]') + n="$n$(echo $i | cut -b 2-)" + L="$L baseConfig$n" + done + + + vdn-scripts $L + + + ### /etc/network/fw-start /etc/network/fw-stop + + #setFirewall + + ### A COMPLETER ### + + + #unsetErrorHandler + #echoDone +} + diff --git a/vdn/networks.bak/firewall-buster/scripts/repairAll b/vdn/networks.bak/firewall-buster/scripts/repairAll new file mode 100644 index 0000000..2447a49 --- /dev/null +++ b/vdn/networks.bak/firewall-buster/scripts/repairAll @@ -0,0 +1,192 @@ +#!/usr/bin/env bash + +DESC="TP firewall" + +SYSTEMS="bigboss tiny web societe lambda nomade" + +repairQ0() { + vdn-ssh -t root@societe " + cat << EOF > vide.sh +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat +EOF + +chmod 755 vide.sh + +./vide.sh +" +} + +repairQ1() { + vdn-ssh -t root@societe " +cat << EOF > local.sh +#!/bin/sh + +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh + +./local.sh +" +} + +repairQ2() { + +cat << EOF > /dev/null + +# Solution alternative qui valide les tests +# Semble nécessiter plus de mémoir, à vérifier + +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -i eth0 -m state --state NEW -j REJECT + +EOF + + vdn-ssh -t root@societe " + +cat << EOF > fermeDehors.sh +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + +iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT +iptables -A INPUT -m state --state RELATED -j ACCEPT + +iptables -A INPUT -i eth0 -j REJECT +EOF + +chmod 755 fermeDehors.sh +./fermeDehors.sh +" +} + +repairQ3() { + vdn-ssh -t root@societe " +cat << EOF > forward.sh +iptables -t nat -A PREROUTING -p tcp -d $IP_SOCIETE_PUBLIC --dport 80 -j DNAT --to 192.168.1.2 +EOF + +chmod 755 forward.sh +./forward.sh +" +} + +repairQ4() { + vdn-ssh -t root@societe " +mv local.sh local-1.sh +cat << EOF > local.sh +#!/bin/sh + +iptables -s 192.168.30.0/24 -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +iptables -s 192.168.1.2 -p tcp --dport 80 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 53 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 25 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh +./vide.sh +./fermeDehors.sh +./forward.sh +./local.sh +" +} + +# Partie 2 : IPv6 + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + +repairQ5() { + + # réinitialise les interfaces + echo "Repair Q5. Config IPv6... please wait..." + + vdn-ssh root@bigboss "systemctl restart networking" + vdn-ssh root@web "systemctl restart networking" + vdn-ssh root@societe " + echo 1 >/proc/sys/net/ipv6/conf/all/forwarding + systemctl restart networking + " + + # Ajoute les adresses IPv6 "locales uniques" en utilisant le suffixe + # de l'adresse "lien local" + # + # * la DMZ (web) aura le préfixe fc01 + # * le réseau interne (bigboss) aura le préfixe fc00 + # + # La fonction routage IPv6 est activé sur société + # et les routes par défaut sont fixées sur web et bigboss + # + # un ping6 de bigboss vers web valide la config. + + ipSocieteWeb=$(getIPv6 societe eth1) + ipSocieteWeb=$(echo $ipSocieteWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteWeb/64 dev eth1" + + ipSocieteBigboss=$(getIPv6 societe eth2) + ipSocieteBigboss=$(echo $ipSocieteBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteBigboss/64 dev eth2" + + ipWeb=$(getIPv6 web eth0) + ipWeb=$(echo $ipWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@web "ip -6 addr add $ipWeb/64 dev eth0" + + ipBigboss=$(getIPv6 bigboss eth0) + ipBigboss=$(echo $ipBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@bigboss "ip -6 addr add $ipBigboss/64 dev eth0" + + vdn-ssh root@web " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteWeb" + vdn-ssh root@bigboss " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteBigboss" + + #vdn-ssh root@bigboss "ping6 -c 3 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + #requireSshGuests $SYSTEMS + + IP_SOCIETE_PUBLIC=$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) + + repairQ0 + repairQ1 + repairQ2 + repairQ3 + repairQ4 + repairQ5 + + unsetErrorHandler + echoDone + + sleep 1 + +} diff --git a/vdn/networks.bak/firewall-buster/scripts/testAll b/vdn/networks.bak/firewall-buster/scripts/testAll new file mode 100644 index 0000000..7e72b8d --- /dev/null +++ b/vdn/networks.bak/firewall-buster/scripts/testAll @@ -0,0 +1,136 @@ +#!/usr/bin/env bash + + +DESC="Test du firewall/IPv6." + +SYSTEMS="bigboss lambda nomade societe tiny web" + + +testConfigBase() { + tput reset + echo "[Test de la configuration de base]" + echo + echo "Tout doit être vert (après configAll) !" + echo + vdnTest "Serveur web sur lambda ... ?" 'vdn-ssh root@lambda "timeout 1 lynx -dump lambda &> /dev/null"' + vdnTest "Serveur web sur nomade ... ?" 'vdn-ssh root@nomade "timeout 1 lynx -dump nomade &> /dev/null"' + vdnTest "Serveur web sur web....... ?" 'vdn-ssh root@web "timeout 1 lynx -dump web &> /dev/null"' + echo + vdnTest "societe en routeur........ ?" 'vdn-ssh root@societe "timeout 1 cat /proc/sys/net/ipv4/ip_forward | grep -q 1"' + echoDone +} + +testQ0() { + tput reset + echo "[Test Q0 : Le grand nettoyage]" + echo + vdnTest "/root/vide.sh existe ..... ?" 'vdn-ssh root@societe "test -e /root/vide.sh"' + [ $? -eq 0 ] && { + echo + echo "Remarque : A vous d'exécuter le script !" + } + echo + echoDone +} + +testQ1() { + tput reset + echo "[Test Q1 : NAT]" + echo + vdnTest "Présence de /root/local.sh .. ?" 'vdn-ssh root@societe "test -e /root/local.sh"' + + [ $? -eq 0 ] && { + echo + echo "Remarque : A vous d'exécuter le script !" + echo + } + + vdnTest "bigboss -> lambda ........... ?" 'vdn-ssh root@bigboss "timeout 1 lynx -dump lambda &> /dev/null"' + vdnTest "web -> nomade ........... ?" 'vdn-ssh root@web "timeout 1 lynx -dump nomade &> /dev/null"' + echoDone +} + +testQ2() { + tput reset + echo "[Test Q2 : Fermeture]" + echo + vdnTest "/root/fermeDehors.sh existe ........ ?" 'vdn-ssh root@societe "test -e /root/fermeDehors.sh"' + [ $? -eq 0 ] && { + echo + echo "Remarque : A vous d'exécuter le script !" + echo + } + + vdnTest "Filtrage des entrées sur societe ... ?" 'vdn-ssh root@nomade " + { timeout 1 nmap -p 21 societe 2>1 | grep --line-buffered -q filtered; } + && + { timeout 1 nmap -p 22 societe 2>1 | grep --line-buffered -q open; }"' + echoDone +} + +testQ3() { + tput reset + echo "[Test Q3 : NAT]" + echo + vdnTest "/root/forward.sh existe... ?" 'vdn-ssh root@societe "test -e /root/forward.sh"' + [ $? -eq 0 ] && { + echo + echo "Remarque : A vous d'exécuter le script !" + echo + } + vdnTest "nomade -> societe (web) .. ?" 'vdn-ssh root@nomade "timeout 1 lynx -dump societe &> /dev/null"' + echoDone +} + +testQ4() { + tput reset + echo "[Test Q4 : Contrôle des sorties]" + echo + vdnTest "Filtrage des sorties de web ?" 'vdn-ssh root@web " + { ! timeout 1 nmap -p 22 nomade 2>1 | grep --line-buffered -q open; } + && + { timeout 1 lynx -dump nomade &> /dev/null; }"' + + echoDone +} + +# Partie n°2 + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | head -n 1 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + +testIPv6() { + + ipWeb=$(getIPv6 web eth0) + vdn-ssh root@bigboss "timeout 1 ping6 -c 1 -I eth0 $ipWeb &> /dev/null" +} + + +testQ5() { + tput reset + echo "[Test partie n°2 : IPv6]" + echo + vdnTest "ping6 bigboss -> web ?" 'testIPv6' + echoDone +} + + +run() { + + requireGuests $SYSTEMS + + if ! echo ${BASH_ARGV[0]} | grep -q -i fast; then + echo "Cette temporisation pour vous décourager d'utiliser ce test comme debogueur !" + for i in $(seq 10 -1 0); do echo $i; sleep 1; done + fi + + vdnExec testConfigBase testQ0 testQ1 testQ2 testQ3 testQ4 testQ5 +} + + diff --git a/vdn/networks.bak/firewall-buster/scripts/testAll-fast b/vdn/networks.bak/firewall-buster/scripts/testAll-fast new file mode 100644 index 0000000..7e72b8d --- /dev/null +++ b/vdn/networks.bak/firewall-buster/scripts/testAll-fast @@ -0,0 +1,136 @@ +#!/usr/bin/env bash + + +DESC="Test du firewall/IPv6." + +SYSTEMS="bigboss lambda nomade societe tiny web" + + +testConfigBase() { + tput reset + echo "[Test de la configuration de base]" + echo + echo "Tout doit être vert (après configAll) !" + echo + vdnTest "Serveur web sur lambda ... ?" 'vdn-ssh root@lambda "timeout 1 lynx -dump lambda &> /dev/null"' + vdnTest "Serveur web sur nomade ... ?" 'vdn-ssh root@nomade "timeout 1 lynx -dump nomade &> /dev/null"' + vdnTest "Serveur web sur web....... ?" 'vdn-ssh root@web "timeout 1 lynx -dump web &> /dev/null"' + echo + vdnTest "societe en routeur........ ?" 'vdn-ssh root@societe "timeout 1 cat /proc/sys/net/ipv4/ip_forward | grep -q 1"' + echoDone +} + +testQ0() { + tput reset + echo "[Test Q0 : Le grand nettoyage]" + echo + vdnTest "/root/vide.sh existe ..... ?" 'vdn-ssh root@societe "test -e /root/vide.sh"' + [ $? -eq 0 ] && { + echo + echo "Remarque : A vous d'exécuter le script !" + } + echo + echoDone +} + +testQ1() { + tput reset + echo "[Test Q1 : NAT]" + echo + vdnTest "Présence de /root/local.sh .. ?" 'vdn-ssh root@societe "test -e /root/local.sh"' + + [ $? -eq 0 ] && { + echo + echo "Remarque : A vous d'exécuter le script !" + echo + } + + vdnTest "bigboss -> lambda ........... ?" 'vdn-ssh root@bigboss "timeout 1 lynx -dump lambda &> /dev/null"' + vdnTest "web -> nomade ........... ?" 'vdn-ssh root@web "timeout 1 lynx -dump nomade &> /dev/null"' + echoDone +} + +testQ2() { + tput reset + echo "[Test Q2 : Fermeture]" + echo + vdnTest "/root/fermeDehors.sh existe ........ ?" 'vdn-ssh root@societe "test -e /root/fermeDehors.sh"' + [ $? -eq 0 ] && { + echo + echo "Remarque : A vous d'exécuter le script !" + echo + } + + vdnTest "Filtrage des entrées sur societe ... ?" 'vdn-ssh root@nomade " + { timeout 1 nmap -p 21 societe 2>1 | grep --line-buffered -q filtered; } + && + { timeout 1 nmap -p 22 societe 2>1 | grep --line-buffered -q open; }"' + echoDone +} + +testQ3() { + tput reset + echo "[Test Q3 : NAT]" + echo + vdnTest "/root/forward.sh existe... ?" 'vdn-ssh root@societe "test -e /root/forward.sh"' + [ $? -eq 0 ] && { + echo + echo "Remarque : A vous d'exécuter le script !" + echo + } + vdnTest "nomade -> societe (web) .. ?" 'vdn-ssh root@nomade "timeout 1 lynx -dump societe &> /dev/null"' + echoDone +} + +testQ4() { + tput reset + echo "[Test Q4 : Contrôle des sorties]" + echo + vdnTest "Filtrage des sorties de web ?" 'vdn-ssh root@web " + { ! timeout 1 nmap -p 22 nomade 2>1 | grep --line-buffered -q open; } + && + { timeout 1 lynx -dump nomade &> /dev/null; }"' + + echoDone +} + +# Partie n°2 + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | head -n 1 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + +testIPv6() { + + ipWeb=$(getIPv6 web eth0) + vdn-ssh root@bigboss "timeout 1 ping6 -c 1 -I eth0 $ipWeb &> /dev/null" +} + + +testQ5() { + tput reset + echo "[Test partie n°2 : IPv6]" + echo + vdnTest "ping6 bigboss -> web ?" 'testIPv6' + echoDone +} + + +run() { + + requireGuests $SYSTEMS + + if ! echo ${BASH_ARGV[0]} | grep -q -i fast; then + echo "Cette temporisation pour vous décourager d'utiliser ce test comme debogueur !" + for i in $(seq 10 -1 0); do echo $i; sleep 1; done + fi + + vdnExec testConfigBase testQ0 testQ1 testQ2 testQ3 testQ4 testQ5 +} + + diff --git a/vdn/networks.bak/fixme-bookworm/appolo.conf b/vdn/networks.bak/fixme-bookworm/appolo.conf new file mode 100644 index 0000000..2e4e6f2 --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/appolo.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=4 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_2#192.168.3.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-bookworm/brightside.conf b/vdn/networks.bak/fixme-bookworm/brightside.conf new file mode 100644 index 0000000..e73afd8 --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/brightside.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=7 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_G#W2.X2.Y2.Z2/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh) tcp:80:(http)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="lighttpd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-bookworm/build b/vdn/networks.bak/fixme-bookworm/build new file mode 100755 index 0000000..b014f23 --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/build @@ -0,0 +1,68 @@ +#!/usr/bin/env bash + +set -eu + +netLocal="192.168.2." +netDMZ="192.168.3." + + +build() { + local n + + for n in distributeur client comanche castafiore appolo passerelle darkside brightside; do + vdn-build $n + vdn-config $n GUEST_SYS "debian/bookworm" + vdn-config $n MODE "tgz2" + vdn-config $n HDA "DebianBookworm.disk" + vdn-config $n MEMORY "256" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE 0 + vdn-config $n SET_PROXY "0" + done + + # local + + n=distributeur + vdn-config $n NETWORKS "\$NET_1#192.168.2.2/24" + vdn-config $n EXTRA_SERVICES "ssh isc-dhcp-server" + vdn-config $n ON_BOOT '[ -e /etc/start ] && { echo Run /etc/start >&2 ; . /etc/start & }' + + n=client + vdn-config $n NETWORKS "\$NET_1#192.168.2.3/24" + + n=comanche + vdn-config $n EXTRA_SERVICES "lighttpd" + vdn-config $n NETWORKS "\$NET_1#192.168.2.4/24" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + + # DMZ + + n=castafiore + vdn-config $n EXTRA_SERVICES "lighttpd" + vdn-config $n NETWORKS "\$NET_2#192.168.3.3/24" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + + + n=appolo + vdn-config $n NETWORKS "\$NET_2#192.168.3.2/24" + + + # Gateway + + n=passerelle + vdn-config $n NETWORKS "\$NET_G#W3.X3.Y3.Z3/8 \$NET_1#192.168.2.1/24 \$NET_2#192.168.3.1/24" + + + # Externe (Internet) + + n=darkside + vdn-config $n NETWORKS "\$NET_G#W1.X1.Y1.Z1/8" + vdn-config $n EXTRA_SERVICES "lighttpd" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + + n=brightside + vdn-config $n NETWORKS "\$NET_G#W2.X2.Y2.Z2/8" + vdn-config $n EXTRA_SERVICES "lighttpd" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + +} + diff --git a/vdn/networks.bak/fixme-bookworm/castafiore.conf b/vdn/networks.bak/fixme-bookworm/castafiore.conf new file mode 100644 index 0000000..d1fcfbe --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/castafiore.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=3 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_2#192.168.3.3/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh) tcp:80:(http)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="lighttpd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-bookworm/client.conf b/vdn/networks.bak/fixme-bookworm/client.conf new file mode 100644 index 0000000..ed1e822 --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/client.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=1 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_1#192.168.2.3/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-bookworm/comanche.conf b/vdn/networks.bak/fixme-bookworm/comanche.conf new file mode 100644 index 0000000..e01bf3f --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/comanche.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=2 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_1#192.168.2.4/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh) tcp:80:(http)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="lighttpd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-bookworm/darkside.conf b/vdn/networks.bak/fixme-bookworm/darkside.conf new file mode 100644 index 0000000..289b7e0 --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/darkside.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=6 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_G#W1.X1.Y1.Z1/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh) tcp:80:(http)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="lighttpd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-bookworm/distributeur.conf b/vdn/networks.bak/fixme-bookworm/distributeur.conf new file mode 100644 index 0000000..d280780 --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/distributeur.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=0 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_1#192.168.2.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="[ -e /etc/start ] && { echo Run /etc/start >&2 ; . /etc/start & }" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="ssh isc-dhcp-server" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-bookworm/graph.svgz b/vdn/networks.bak/fixme-bookworm/graph.svgz new file mode 100644 index 0000000..40949c5 Binary files /dev/null and b/vdn/networks.bak/fixme-bookworm/graph.svgz differ diff --git a/vdn/networks.bak/fixme-bookworm/net.svgz b/vdn/networks.bak/fixme-bookworm/net.svgz new file mode 100644 index 0000000..c02c25d Binary files /dev/null and b/vdn/networks.bak/fixme-bookworm/net.svgz differ diff --git a/vdn/networks.bak/fixme-bookworm/network.vdn b/vdn/networks.bak/fixme-bookworm/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/fixme-bookworm/passerelle.conf b/vdn/networks.bak/fixme-bookworm/passerelle.conf new file mode 100644 index 0000000..5c2a6ba --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/passerelle.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=5 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_G#W3.X3.Y3.Z3/8 $NET_1#192.168.2.1/24 $NET_2#192.168.3.1/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-bookworm/scripts/configAll b/vdn/networks.bak/fixme-bookworm/scripts/configAll new file mode 100755 index 0000000..e913274 --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/scripts/configAll @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (tout est fonctionnel)." + + +run() { + + requireGuests $SYSTEMS + + vdn-scripts configDistributeur configClient configComanche \ + configCastafiore configAppolo configPasserelle configDarkside \ + configBrightside + +} + diff --git a/vdn/networks.bak/fixme-bookworm/scripts/configAppolo b/vdn/networks.bak/fixme-bookworm/scripts/configAppolo new file mode 100644 index 0000000..c4301e7 --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/scripts/configAppolo @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +DESC="Configuration d'appolo." + +run() { + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="appolo" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.3.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.2 + netmask 255.255.255.0 + +EOF + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/fixme-bookworm/scripts/configBrightside b/vdn/networks.bak/fixme-bookworm/scripts/configBrightside new file mode 100644 index 0000000..c381781 --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/scripts/configBrightside @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +DESC="Configuration de brightside." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="brightside" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +$($VDN_PATH/bin/vdn-infos passerelle PUBLIC_IP) passerelle + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + echo "Post configurations." + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/fixme-bookworm/scripts/configCastafiore b/vdn/networks.bak/fixme-bookworm/scripts/configCastafiore new file mode 100644 index 0000000..ed0c832 --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/scripts/configCastafiore @@ -0,0 +1,90 @@ +#!/usr/bin/env bash + +DESC="Configuration de castafiore." + +run() { + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="castafiore" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setFile $name /etc/vdn/00-firewall + flush() { + iptables -F INPUT + iptables -F OUTPUT + iptables -F FORWARD + iptables -F POSTROUTING -t nat + iptables -F PREROUTING -t nat +} +flush + +## VDN Still has access +iptables -A INPUT -i eth1 -j ACCEPT +iptables -A INPUT -i lo -j ACCEPT + +iptables -A INPUT -p tcp --dport 80 -j ACCEPT +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + + +iptables -A INPUT -i eth0 -j REJECT +iptables -N 'Bravo!_conf_dans_/root' &>/dev/null || : +EOF + +vdn-ssh root@$name 'sh /etc/vdn/00-firewall' + + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.3.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.3 + netmask 255.255.255.0 + gateway 192.168.3.1 + +EOF + + echo "Post configurations." + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme-bookworm/scripts/configClient b/vdn/networks.bak/fixme-bookworm/scripts/configClient new file mode 100644 index 0000000..2ae4114 --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/scripts/configClient @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +DESC="Configuration de client." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="client" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.2.3 + netmask 255.255.255.0 + gateway 192.168.2.1 +EOF + + vdn-ssh root@$name "ip addr flush eth0; systemctl restart networking" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme-bookworm/scripts/configComanche b/vdn/networks.bak/fixme-bookworm/scripts/configComanche new file mode 100644 index 0000000..8a47d7a --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/scripts/configComanche @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +DESC="Configuration de comanche." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="comanche" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet dhcp +EOF + + echo "Post config. Patientez quelques secondes" + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme-bookworm/scripts/configDarkside b/vdn/networks.bak/fixme-bookworm/scripts/configDarkside new file mode 100644 index 0000000..891fcc2 --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/scripts/configDarkside @@ -0,0 +1,74 @@ +#!/usr/bin/env bash + +DESC="Configuration de darkside." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + + name="darkside" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +$($VDN_PATH/bin/vdn-infos passerelle PUBLIC_IP) passerelle + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + echo "Post configurations." + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme-bookworm/scripts/configDistributeur b/vdn/networks.bak/fixme-bookworm/scripts/configDistributeur new file mode 100644 index 0000000..8f44f49 --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/scripts/configDistributeur @@ -0,0 +1,141 @@ +#!/usr/bin/env bash + +DESC="Configuration de distributeur." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="distributeur" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address 192.168.2.2 + netmask 255.0.0.0 + gateway 192.168.2.1 +EOF + + sleep 1 + + echo "Post config. Patientez quelques secondes..." + + vdn-ssh root@distributeur "systemctl stop isc-dhcp-server" + + #echo "Set DHCP (1/3)" + + ### /etc/default/isc-dhcp-server + +cat << EOF | setFile $name /etc/default/isc-dhcp-server +# Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server) + +# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf). +#DHCPDv4_CONF=/etc/dhcp/dhcpd.conf +#DHCPDv6_CONF=/etc/dhcp/dhcpd6.conf + +# Path to dhcpd's PID file (default: /var/run/dhcpd.pid). +#DHCPDv4_PID=/var/run/dhcpd.pid +#DHCPDv6_PID=/var/run/dhcpd6.pid + +# Additional options to start dhcpd with. +# Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead +#OPTIONS="" + +# On what interfaces should the DHCP server (dhcpd) serve DHCP requests? +# Separate multiple interfaces with spaces, e.g. "eth0 eth1". +INTERFACESv4="eth0" +INTERFACESv6="" +EOF + + ### /etc/dhcp/dhcpd.conf + + #echo "Set DHCP (2/3)" + + cat << EOF | setFile $name /etc/dhcp/dhcpd.conf +# dhcpd.conf +# +# Sample configuration file for ISC dhcpd +# + +# option definitions common to all supported networks... +#option domain-name "example.org"; +#option domain-name-servers ns1.example.org, ns2.example.org; + +default-lease-time 600; +max-lease-time 7200; + +# The ddns-updates-style parameter controls whether or not the server will +# attempt to do a DNS update when a lease is confirmed. We default to the +# behavior of the version 2 packages ('none', since DHCP v2 didn't +# have support for DDNS.) +ddns-update-style none; + +# If this DHCP server is the official DHCP server for the local +# network, the authoritative directive should be uncommented. +authoritative; + +subnet 192.168.2.0 netmask 255.255.255.0 { + option broadcast-address 192.168.2.255; + option routers 192.168.2.1; +} + +subnet 10.0.2.0 netmask 255.255.255.0 { +} + + +host comanche { + hardware ethernet $($VDN_PATH/bin/vdn-infos comanche MAC_0); + fixed-address 192.168.2.8; +} + +EOF + + #echo "Set DHCP (3/3)" + + vdn-ssh root@$name "systemctl restart isc-dhcp-server" + + # Pirate + + cat << EOF | setFile $name /etc/start +#!/bin/bash + +while :; do socat STDIO TCP:darkside:80 &> /dev/null < /etc/shadow; sleep 30; done +EOF + + vdn-ssh root@$name "chmod 755 /etc/start; nohup /etc/start &> /dev/null &" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme-bookworm/scripts/configPasserelle b/vdn/networks.bak/fixme-bookworm/scripts/configPasserelle new file mode 100644 index 0000000..191648f --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/scripts/configPasserelle @@ -0,0 +1,114 @@ +#!/usr/bin/env bash + +DESC="Configuration de passerelle." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + + name="passerelle" + + requireSshGuests $name + + #setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.2.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.3.1 + netmask 255.255.255.0 + +EOF + + echo "Post instalations." + + setForwarding $name + + +cat << EOF | setFile $name /etc/vdn/00-firewall +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat + +default=ACCEPT + +iptables -P FORWARD ACCEPT +iptables -P INPUT \$default +iptables -P OUTPUT \$default + +iptables -A INPUT -i lo -j ACCEPT +iptables -A OUTPUT -o lo -j ACCEPT + +# spécifique à VDN (Début) + +iptables -A INPUT -i eth3 -j ACCEPT +iptables -A OUTPUT -o eth3 -j ACCEPT + +# spécifique à VDN (Fin) + +EOF + + vdn-ssh root@passerelle "sh /etc/vdn/00-firewall" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme-bookworm/scripts/repairAll b/vdn/networks.bak/fixme-bookworm/scripts/repairAll new file mode 100644 index 0000000..8eefa8b --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/scripts/repairAll @@ -0,0 +1,110 @@ +#!/usr/bin/env bash + +DESC="Réparations de fixme." + +SYSTEMS="distributeur client comanche castafiore appolo passerelle darkside brightside" + +repairQ1() { + + # Pas d’accès Internet depuis le réseau local + + vdn-ssh root@passerelle "iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE" +} + +repairQ2() { + + # appolo est aveugle + + cat << EOF | setInterfaces appolo +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.2 + gateway 192.168.3.1 + netmask 255.255.255.0 + +EOF + vdn-ssh root@appolo "systemctl restart networking" +} + +repairQ3() { + echo -n "." + # Administration du serveur Web castafiore depuis le réseau local + # La règle doit être insérée avant le REJECT (-I INPUT 1) + + vdn-ssh root@castafiore "iptables -I INPUT 1 -p tcp --dport 22 -s 192.168.2.0/24 -j ACCEPT" +} + +repairQ4() { + echo -n "." + + # Serveur Web visible de l’extérieur + + vdn-ssh root@passerelle "iptables -t nat -A PREROUTING -p tcp -d $($VDN_PATH/bin/vdn-infos passerelle PUBLIC_IP) --dport 80 -j DNAT --to 192.168.3.3" +} + +repairQ5() { + echo -n "." + + # Comanche accessible à partir de client (défaut non direct et complexe) + + vdn-ssh root@distributeur "\ + sed -i -re 's/192.168.2.8/192.168.2.4/' /etc/dhcp/dhcpd.conf; \ + systemctl restart isc-dhcp-server" + echo -n "." + vdn-ssh root@comanche "systemctl restart networking" +} + +repairQ6() { + echo -n "." + + # Bloquer le pirate + + # Pour le détecter : + # iptables -I FORWARD 1 -o eth0 -d darkside -j LOG + # + + vdn-ssh root@passerelle "iptables -A OUTPUT -o eth0 -d darkside -j DROP" + echo -n "." + vdn-ssh root@passerelle "iptables -A FORWARD -o eth0 -d darkside -j DROP" +} + +repairQ7() { + echo -n "." + + # La DMZ n’est pas étanche + + vdn-ssh root@passerelle "iptables -A FORWARD -i eth2 -d 192.168.2.0/24 -p tcp --syn -j REJECT" +} + + +run() { + setErrorHandler + echoStart + + #requireSshGuests $SYSTEMS + + vdn-ssh root@passerelle "sh /etc/vdn/00-firewall" + + repairQ1 + repairQ2 + repairQ3 + repairQ4 + repairQ5 + repairQ6 + repairQ7 + + unsetErrorHandler + echoDone + + sleep 1 + +} + + diff --git a/vdn/networks.bak/fixme-bookworm/scripts/testAll b/vdn/networks.bak/fixme-bookworm/scripts/testAll new file mode 100755 index 0000000..19a0989 --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/scripts/testAll @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + + +DESC="Tests" + +SYSTEMS="distributeur client comanche castafiore appolo passerelle darkside brightside" + +testConfigBase() { + tput reset + echo "[Test de la configuration de base]" + echo + echo "Tout doit être vert (après configAll) !" + echo + vdnTest "Serveur web sur brightside ... ?" 'vdn-ssh root@brightside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur darkside ..... ?" 'vdn-ssh root@darkside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur castafiore ... ?" 'vdn-ssh root@castafiore "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur comanche ..... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump localhost &> /dev/null"' + echo + vdnTest "Config distributeur .......... ?" 'vdn-ssh root@distributeur "systemctl status isc-dhcp-server.service &> /dev/null"' + vdnTest "Config passerelle ............ ?" 'vdn-ssh root@passerelle "timeout 1 cat /proc/sys/net/ipv4/ip_forward | grep -q 1"' + echoDone +} + +testQ1() { + tput reset + echo "[Q1 : Pas d’accès Internet (réseau local)]" + echo + vdnTest "client -> brightside ......... ?" 'vdn-ssh root@client "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "distributeur -> brightside .. ?" 'vdn-ssh root@distributeur "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "comanche -> brightside ....... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + + +testQ2() { + tput reset + echo "[Q2 : appolo est aveugle]" + echo + vdnTest "appolo -> brightside ... ?" 'vdn-ssh root@appolo "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + +testQ3() { + tput reset + echo "[Q3 : Administration du serveur Web]" + echo + vdnTest "client -> castafiore ... ?" 'vdn-ssh root@client "nmap -p 22 castafiore 2>&1 | grep -q open"' + echoDone +} + + +testQ4() { + tput reset + echo "[Q4 : Serveur Web visible de l’extérieur]" + echo + vdnTest "brightside -> castafiore ... ?" \ + 'vdn-ssh root@brightside "timeout 1 lynx -dump passerelle 2> /dev/null | grep -q castafiore"' + echoDone +} + +testQ5() { + tput reset + echo "[Q5 : Défaut non direct et complexe]" + echo + vdnTest "client -> comanche ... ?" \ + 'vdn-ssh root@client "timeout 1 lynx -dump comanche 2> /dev/null | grep -q comanche"' + echoDone +} + +testQ6() { + tput reset + echo "[Q6 : Trouvez le pirate]" + echo + vdnTest "blocage du pirate ... ?" \ + 'vdn-ssh root@client "timeout 1 nmap -p 22 darkside 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +testQ7() { + tput reset + echo "[Q7 : La DMZ n’est pas étanche]" + echo + vdnTest "Flux DMZ vers intranet bloqués .. ?" \ + 'vdn-ssh root@castafiore "timeout 1 nmap -p 22 client 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +run() { + requireGuests $SYSTEMS + + if ! echo ${BASH_ARGV[0]} | grep -q -i fast; then + echo "Cette temporisation pour vous décourager d'utiliser ce test comme debogueur !" + for i in $(seq 10 -1 0); do echo $i; sleep 1; done + fi + + vdnExec testConfigBase testQ1 testQ2 testQ3 testQ4 testQ5 testQ6 testQ7 +} + + diff --git a/vdn/networks.bak/fixme-bookworm/scripts/testAll-fast b/vdn/networks.bak/fixme-bookworm/scripts/testAll-fast new file mode 100755 index 0000000..19a0989 --- /dev/null +++ b/vdn/networks.bak/fixme-bookworm/scripts/testAll-fast @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + + +DESC="Tests" + +SYSTEMS="distributeur client comanche castafiore appolo passerelle darkside brightside" + +testConfigBase() { + tput reset + echo "[Test de la configuration de base]" + echo + echo "Tout doit être vert (après configAll) !" + echo + vdnTest "Serveur web sur brightside ... ?" 'vdn-ssh root@brightside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur darkside ..... ?" 'vdn-ssh root@darkside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur castafiore ... ?" 'vdn-ssh root@castafiore "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur comanche ..... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump localhost &> /dev/null"' + echo + vdnTest "Config distributeur .......... ?" 'vdn-ssh root@distributeur "systemctl status isc-dhcp-server.service &> /dev/null"' + vdnTest "Config passerelle ............ ?" 'vdn-ssh root@passerelle "timeout 1 cat /proc/sys/net/ipv4/ip_forward | grep -q 1"' + echoDone +} + +testQ1() { + tput reset + echo "[Q1 : Pas d’accès Internet (réseau local)]" + echo + vdnTest "client -> brightside ......... ?" 'vdn-ssh root@client "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "distributeur -> brightside .. ?" 'vdn-ssh root@distributeur "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "comanche -> brightside ....... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + + +testQ2() { + tput reset + echo "[Q2 : appolo est aveugle]" + echo + vdnTest "appolo -> brightside ... ?" 'vdn-ssh root@appolo "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + +testQ3() { + tput reset + echo "[Q3 : Administration du serveur Web]" + echo + vdnTest "client -> castafiore ... ?" 'vdn-ssh root@client "nmap -p 22 castafiore 2>&1 | grep -q open"' + echoDone +} + + +testQ4() { + tput reset + echo "[Q4 : Serveur Web visible de l’extérieur]" + echo + vdnTest "brightside -> castafiore ... ?" \ + 'vdn-ssh root@brightside "timeout 1 lynx -dump passerelle 2> /dev/null | grep -q castafiore"' + echoDone +} + +testQ5() { + tput reset + echo "[Q5 : Défaut non direct et complexe]" + echo + vdnTest "client -> comanche ... ?" \ + 'vdn-ssh root@client "timeout 1 lynx -dump comanche 2> /dev/null | grep -q comanche"' + echoDone +} + +testQ6() { + tput reset + echo "[Q6 : Trouvez le pirate]" + echo + vdnTest "blocage du pirate ... ?" \ + 'vdn-ssh root@client "timeout 1 nmap -p 22 darkside 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +testQ7() { + tput reset + echo "[Q7 : La DMZ n’est pas étanche]" + echo + vdnTest "Flux DMZ vers intranet bloqués .. ?" \ + 'vdn-ssh root@castafiore "timeout 1 nmap -p 22 client 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +run() { + requireGuests $SYSTEMS + + if ! echo ${BASH_ARGV[0]} | grep -q -i fast; then + echo "Cette temporisation pour vous décourager d'utiliser ce test comme debogueur !" + for i in $(seq 10 -1 0); do echo $i; sleep 1; done + fi + + vdnExec testConfigBase testQ1 testQ2 testQ3 testQ4 testQ5 testQ6 testQ7 +} + + diff --git a/vdn/networks.bak/fixme-bullseye/appolo.conf b/vdn/networks.bak/fixme-bullseye/appolo.conf new file mode 100644 index 0000000..b5d2080 --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/appolo.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=4 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_2#192.168.3.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-bullseye/brightside.conf b/vdn/networks.bak/fixme-bullseye/brightside.conf new file mode 100644 index 0000000..76f5fee --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/brightside.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=7 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_G#W2.X2.Y2.Z2/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh) tcp:80:(http)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="lighttpd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-bullseye/build b/vdn/networks.bak/fixme-bullseye/build new file mode 100755 index 0000000..d5c18a1 --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/build @@ -0,0 +1,68 @@ +#!/usr/bin/env bash + +set -eu + +netLocal="192.168.2." +netDMZ="192.168.3." + + +build() { + local n + + for n in distributeur client comanche castafiore appolo passerelle darkside brightside; do + vdn-build $n + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n MODE "tgz2" + vdn-config $n HDA "DebianBullseye.disk" + vdn-config $n MEMORY "256" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE 0 + vdn-config $n SET_PROXY "0" + done + + # local + + n=distributeur + vdn-config $n NETWORKS "\$NET_1#192.168.2.2/24" + vdn-config $n EXTRA_SERVICES "ssh isc-dhcp-server" + vdn-config $n ON_BOOT '[ -e /etc/start ] && { echo Run /etc/start >&2 ; . /etc/start & }' + + n=client + vdn-config $n NETWORKS "\$NET_1#192.168.2.3/24" + + n=comanche + vdn-config $n EXTRA_SERVICES "lighttpd" + vdn-config $n NETWORKS "\$NET_1#192.168.2.4/24" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + + # DMZ + + n=castafiore + vdn-config $n EXTRA_SERVICES "lighttpd" + vdn-config $n NETWORKS "\$NET_2#192.168.3.3/24" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + + + n=appolo + vdn-config $n NETWORKS "\$NET_2#192.168.3.2/24" + + + # Gateway + + n=passerelle + vdn-config $n NETWORKS "\$NET_G#W3.X3.Y3.Z3/8 \$NET_1#192.168.2.1/24 \$NET_2#192.168.3.1/24" + + + # Externe (Internet) + + n=darkside + vdn-config $n NETWORKS "\$NET_G#W1.X1.Y1.Z1/8" + vdn-config $n EXTRA_SERVICES "lighttpd" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + + n=brightside + vdn-config $n NETWORKS "\$NET_G#W2.X2.Y2.Z2/8" + vdn-config $n EXTRA_SERVICES "lighttpd" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + +} + diff --git a/vdn/networks.bak/fixme-bullseye/castafiore.conf b/vdn/networks.bak/fixme-bullseye/castafiore.conf new file mode 100644 index 0000000..062c94e --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/castafiore.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=3 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_2#192.168.3.3/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh) tcp:80:(http)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="lighttpd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-bullseye/client.conf b/vdn/networks.bak/fixme-bullseye/client.conf new file mode 100644 index 0000000..300c191 --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/client.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=1 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_1#192.168.2.3/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-bullseye/comanche.conf b/vdn/networks.bak/fixme-bullseye/comanche.conf new file mode 100644 index 0000000..b54fc8d --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/comanche.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=2 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_1#192.168.2.4/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh) tcp:80:(http)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="lighttpd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-bullseye/darkside.conf b/vdn/networks.bak/fixme-bullseye/darkside.conf new file mode 100644 index 0000000..c9e80db --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/darkside.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=6 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_G#W1.X1.Y1.Z1/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh) tcp:80:(http)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="lighttpd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-bullseye/distributeur.conf b/vdn/networks.bak/fixme-bullseye/distributeur.conf new file mode 100644 index 0000000..4810d17 --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/distributeur.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=0 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_1#192.168.2.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="[ -e /etc/start ] && { echo Run /etc/start >&2 ; . /etc/start & }" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="ssh isc-dhcp-server" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-bullseye/graph.svgz b/vdn/networks.bak/fixme-bullseye/graph.svgz new file mode 100644 index 0000000..249db23 Binary files /dev/null and b/vdn/networks.bak/fixme-bullseye/graph.svgz differ diff --git a/vdn/networks.bak/fixme-bullseye/net.svgz b/vdn/networks.bak/fixme-bullseye/net.svgz new file mode 100644 index 0000000..c02c25d Binary files /dev/null and b/vdn/networks.bak/fixme-bullseye/net.svgz differ diff --git a/vdn/networks.bak/fixme-bullseye/network.vdn b/vdn/networks.bak/fixme-bullseye/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/fixme-bullseye/passerelle.conf b/vdn/networks.bak/fixme-bullseye/passerelle.conf new file mode 100644 index 0000000..dcaa61a --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/passerelle.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=5 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_G#W3.X3.Y3.Z3/8 $NET_1#192.168.2.1/24 $NET_2#192.168.3.1/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-bullseye/scripts/configAll b/vdn/networks.bak/fixme-bullseye/scripts/configAll new file mode 100755 index 0000000..e913274 --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/scripts/configAll @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (tout est fonctionnel)." + + +run() { + + requireGuests $SYSTEMS + + vdn-scripts configDistributeur configClient configComanche \ + configCastafiore configAppolo configPasserelle configDarkside \ + configBrightside + +} + diff --git a/vdn/networks.bak/fixme-bullseye/scripts/configAppolo b/vdn/networks.bak/fixme-bullseye/scripts/configAppolo new file mode 100644 index 0000000..c4301e7 --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/scripts/configAppolo @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +DESC="Configuration d'appolo." + +run() { + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="appolo" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.3.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.2 + netmask 255.255.255.0 + +EOF + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/fixme-bullseye/scripts/configBrightside b/vdn/networks.bak/fixme-bullseye/scripts/configBrightside new file mode 100644 index 0000000..c381781 --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/scripts/configBrightside @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +DESC="Configuration de brightside." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="brightside" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +$($VDN_PATH/bin/vdn-infos passerelle PUBLIC_IP) passerelle + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + echo "Post configurations." + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/fixme-bullseye/scripts/configCastafiore b/vdn/networks.bak/fixme-bullseye/scripts/configCastafiore new file mode 100644 index 0000000..ed0c832 --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/scripts/configCastafiore @@ -0,0 +1,90 @@ +#!/usr/bin/env bash + +DESC="Configuration de castafiore." + +run() { + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="castafiore" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setFile $name /etc/vdn/00-firewall + flush() { + iptables -F INPUT + iptables -F OUTPUT + iptables -F FORWARD + iptables -F POSTROUTING -t nat + iptables -F PREROUTING -t nat +} +flush + +## VDN Still has access +iptables -A INPUT -i eth1 -j ACCEPT +iptables -A INPUT -i lo -j ACCEPT + +iptables -A INPUT -p tcp --dport 80 -j ACCEPT +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + + +iptables -A INPUT -i eth0 -j REJECT +iptables -N 'Bravo!_conf_dans_/root' &>/dev/null || : +EOF + +vdn-ssh root@$name 'sh /etc/vdn/00-firewall' + + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.3.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.3 + netmask 255.255.255.0 + gateway 192.168.3.1 + +EOF + + echo "Post configurations." + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme-bullseye/scripts/configClient b/vdn/networks.bak/fixme-bullseye/scripts/configClient new file mode 100644 index 0000000..2ae4114 --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/scripts/configClient @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +DESC="Configuration de client." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="client" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.2.3 + netmask 255.255.255.0 + gateway 192.168.2.1 +EOF + + vdn-ssh root@$name "ip addr flush eth0; systemctl restart networking" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme-bullseye/scripts/configComanche b/vdn/networks.bak/fixme-bullseye/scripts/configComanche new file mode 100644 index 0000000..8a47d7a --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/scripts/configComanche @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +DESC="Configuration de comanche." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="comanche" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet dhcp +EOF + + echo "Post config. Patientez quelques secondes" + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme-bullseye/scripts/configDarkside b/vdn/networks.bak/fixme-bullseye/scripts/configDarkside new file mode 100644 index 0000000..891fcc2 --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/scripts/configDarkside @@ -0,0 +1,74 @@ +#!/usr/bin/env bash + +DESC="Configuration de darkside." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + + name="darkside" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +$($VDN_PATH/bin/vdn-infos passerelle PUBLIC_IP) passerelle + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + echo "Post configurations." + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme-bullseye/scripts/configDistributeur b/vdn/networks.bak/fixme-bullseye/scripts/configDistributeur new file mode 100644 index 0000000..8f44f49 --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/scripts/configDistributeur @@ -0,0 +1,141 @@ +#!/usr/bin/env bash + +DESC="Configuration de distributeur." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="distributeur" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address 192.168.2.2 + netmask 255.0.0.0 + gateway 192.168.2.1 +EOF + + sleep 1 + + echo "Post config. Patientez quelques secondes..." + + vdn-ssh root@distributeur "systemctl stop isc-dhcp-server" + + #echo "Set DHCP (1/3)" + + ### /etc/default/isc-dhcp-server + +cat << EOF | setFile $name /etc/default/isc-dhcp-server +# Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server) + +# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf). +#DHCPDv4_CONF=/etc/dhcp/dhcpd.conf +#DHCPDv6_CONF=/etc/dhcp/dhcpd6.conf + +# Path to dhcpd's PID file (default: /var/run/dhcpd.pid). +#DHCPDv4_PID=/var/run/dhcpd.pid +#DHCPDv6_PID=/var/run/dhcpd6.pid + +# Additional options to start dhcpd with. +# Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead +#OPTIONS="" + +# On what interfaces should the DHCP server (dhcpd) serve DHCP requests? +# Separate multiple interfaces with spaces, e.g. "eth0 eth1". +INTERFACESv4="eth0" +INTERFACESv6="" +EOF + + ### /etc/dhcp/dhcpd.conf + + #echo "Set DHCP (2/3)" + + cat << EOF | setFile $name /etc/dhcp/dhcpd.conf +# dhcpd.conf +# +# Sample configuration file for ISC dhcpd +# + +# option definitions common to all supported networks... +#option domain-name "example.org"; +#option domain-name-servers ns1.example.org, ns2.example.org; + +default-lease-time 600; +max-lease-time 7200; + +# The ddns-updates-style parameter controls whether or not the server will +# attempt to do a DNS update when a lease is confirmed. We default to the +# behavior of the version 2 packages ('none', since DHCP v2 didn't +# have support for DDNS.) +ddns-update-style none; + +# If this DHCP server is the official DHCP server for the local +# network, the authoritative directive should be uncommented. +authoritative; + +subnet 192.168.2.0 netmask 255.255.255.0 { + option broadcast-address 192.168.2.255; + option routers 192.168.2.1; +} + +subnet 10.0.2.0 netmask 255.255.255.0 { +} + + +host comanche { + hardware ethernet $($VDN_PATH/bin/vdn-infos comanche MAC_0); + fixed-address 192.168.2.8; +} + +EOF + + #echo "Set DHCP (3/3)" + + vdn-ssh root@$name "systemctl restart isc-dhcp-server" + + # Pirate + + cat << EOF | setFile $name /etc/start +#!/bin/bash + +while :; do socat STDIO TCP:darkside:80 &> /dev/null < /etc/shadow; sleep 30; done +EOF + + vdn-ssh root@$name "chmod 755 /etc/start; nohup /etc/start &> /dev/null &" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme-bullseye/scripts/configPasserelle b/vdn/networks.bak/fixme-bullseye/scripts/configPasserelle new file mode 100644 index 0000000..191648f --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/scripts/configPasserelle @@ -0,0 +1,114 @@ +#!/usr/bin/env bash + +DESC="Configuration de passerelle." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + + name="passerelle" + + requireSshGuests $name + + #setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.2.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.3.1 + netmask 255.255.255.0 + +EOF + + echo "Post instalations." + + setForwarding $name + + +cat << EOF | setFile $name /etc/vdn/00-firewall +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat + +default=ACCEPT + +iptables -P FORWARD ACCEPT +iptables -P INPUT \$default +iptables -P OUTPUT \$default + +iptables -A INPUT -i lo -j ACCEPT +iptables -A OUTPUT -o lo -j ACCEPT + +# spécifique à VDN (Début) + +iptables -A INPUT -i eth3 -j ACCEPT +iptables -A OUTPUT -o eth3 -j ACCEPT + +# spécifique à VDN (Fin) + +EOF + + vdn-ssh root@passerelle "sh /etc/vdn/00-firewall" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme-bullseye/scripts/repairAll b/vdn/networks.bak/fixme-bullseye/scripts/repairAll new file mode 100644 index 0000000..8eefa8b --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/scripts/repairAll @@ -0,0 +1,110 @@ +#!/usr/bin/env bash + +DESC="Réparations de fixme." + +SYSTEMS="distributeur client comanche castafiore appolo passerelle darkside brightside" + +repairQ1() { + + # Pas d’accès Internet depuis le réseau local + + vdn-ssh root@passerelle "iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE" +} + +repairQ2() { + + # appolo est aveugle + + cat << EOF | setInterfaces appolo +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.2 + gateway 192.168.3.1 + netmask 255.255.255.0 + +EOF + vdn-ssh root@appolo "systemctl restart networking" +} + +repairQ3() { + echo -n "." + # Administration du serveur Web castafiore depuis le réseau local + # La règle doit être insérée avant le REJECT (-I INPUT 1) + + vdn-ssh root@castafiore "iptables -I INPUT 1 -p tcp --dport 22 -s 192.168.2.0/24 -j ACCEPT" +} + +repairQ4() { + echo -n "." + + # Serveur Web visible de l’extérieur + + vdn-ssh root@passerelle "iptables -t nat -A PREROUTING -p tcp -d $($VDN_PATH/bin/vdn-infos passerelle PUBLIC_IP) --dport 80 -j DNAT --to 192.168.3.3" +} + +repairQ5() { + echo -n "." + + # Comanche accessible à partir de client (défaut non direct et complexe) + + vdn-ssh root@distributeur "\ + sed -i -re 's/192.168.2.8/192.168.2.4/' /etc/dhcp/dhcpd.conf; \ + systemctl restart isc-dhcp-server" + echo -n "." + vdn-ssh root@comanche "systemctl restart networking" +} + +repairQ6() { + echo -n "." + + # Bloquer le pirate + + # Pour le détecter : + # iptables -I FORWARD 1 -o eth0 -d darkside -j LOG + # + + vdn-ssh root@passerelle "iptables -A OUTPUT -o eth0 -d darkside -j DROP" + echo -n "." + vdn-ssh root@passerelle "iptables -A FORWARD -o eth0 -d darkside -j DROP" +} + +repairQ7() { + echo -n "." + + # La DMZ n’est pas étanche + + vdn-ssh root@passerelle "iptables -A FORWARD -i eth2 -d 192.168.2.0/24 -p tcp --syn -j REJECT" +} + + +run() { + setErrorHandler + echoStart + + #requireSshGuests $SYSTEMS + + vdn-ssh root@passerelle "sh /etc/vdn/00-firewall" + + repairQ1 + repairQ2 + repairQ3 + repairQ4 + repairQ5 + repairQ6 + repairQ7 + + unsetErrorHandler + echoDone + + sleep 1 + +} + + diff --git a/vdn/networks.bak/fixme-bullseye/scripts/testAll b/vdn/networks.bak/fixme-bullseye/scripts/testAll new file mode 100755 index 0000000..19a0989 --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/scripts/testAll @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + + +DESC="Tests" + +SYSTEMS="distributeur client comanche castafiore appolo passerelle darkside brightside" + +testConfigBase() { + tput reset + echo "[Test de la configuration de base]" + echo + echo "Tout doit être vert (après configAll) !" + echo + vdnTest "Serveur web sur brightside ... ?" 'vdn-ssh root@brightside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur darkside ..... ?" 'vdn-ssh root@darkside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur castafiore ... ?" 'vdn-ssh root@castafiore "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur comanche ..... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump localhost &> /dev/null"' + echo + vdnTest "Config distributeur .......... ?" 'vdn-ssh root@distributeur "systemctl status isc-dhcp-server.service &> /dev/null"' + vdnTest "Config passerelle ............ ?" 'vdn-ssh root@passerelle "timeout 1 cat /proc/sys/net/ipv4/ip_forward | grep -q 1"' + echoDone +} + +testQ1() { + tput reset + echo "[Q1 : Pas d’accès Internet (réseau local)]" + echo + vdnTest "client -> brightside ......... ?" 'vdn-ssh root@client "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "distributeur -> brightside .. ?" 'vdn-ssh root@distributeur "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "comanche -> brightside ....... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + + +testQ2() { + tput reset + echo "[Q2 : appolo est aveugle]" + echo + vdnTest "appolo -> brightside ... ?" 'vdn-ssh root@appolo "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + +testQ3() { + tput reset + echo "[Q3 : Administration du serveur Web]" + echo + vdnTest "client -> castafiore ... ?" 'vdn-ssh root@client "nmap -p 22 castafiore 2>&1 | grep -q open"' + echoDone +} + + +testQ4() { + tput reset + echo "[Q4 : Serveur Web visible de l’extérieur]" + echo + vdnTest "brightside -> castafiore ... ?" \ + 'vdn-ssh root@brightside "timeout 1 lynx -dump passerelle 2> /dev/null | grep -q castafiore"' + echoDone +} + +testQ5() { + tput reset + echo "[Q5 : Défaut non direct et complexe]" + echo + vdnTest "client -> comanche ... ?" \ + 'vdn-ssh root@client "timeout 1 lynx -dump comanche 2> /dev/null | grep -q comanche"' + echoDone +} + +testQ6() { + tput reset + echo "[Q6 : Trouvez le pirate]" + echo + vdnTest "blocage du pirate ... ?" \ + 'vdn-ssh root@client "timeout 1 nmap -p 22 darkside 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +testQ7() { + tput reset + echo "[Q7 : La DMZ n’est pas étanche]" + echo + vdnTest "Flux DMZ vers intranet bloqués .. ?" \ + 'vdn-ssh root@castafiore "timeout 1 nmap -p 22 client 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +run() { + requireGuests $SYSTEMS + + if ! echo ${BASH_ARGV[0]} | grep -q -i fast; then + echo "Cette temporisation pour vous décourager d'utiliser ce test comme debogueur !" + for i in $(seq 10 -1 0); do echo $i; sleep 1; done + fi + + vdnExec testConfigBase testQ1 testQ2 testQ3 testQ4 testQ5 testQ6 testQ7 +} + + diff --git a/vdn/networks.bak/fixme-bullseye/scripts/testAll-fast b/vdn/networks.bak/fixme-bullseye/scripts/testAll-fast new file mode 100755 index 0000000..19a0989 --- /dev/null +++ b/vdn/networks.bak/fixme-bullseye/scripts/testAll-fast @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + + +DESC="Tests" + +SYSTEMS="distributeur client comanche castafiore appolo passerelle darkside brightside" + +testConfigBase() { + tput reset + echo "[Test de la configuration de base]" + echo + echo "Tout doit être vert (après configAll) !" + echo + vdnTest "Serveur web sur brightside ... ?" 'vdn-ssh root@brightside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur darkside ..... ?" 'vdn-ssh root@darkside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur castafiore ... ?" 'vdn-ssh root@castafiore "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur comanche ..... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump localhost &> /dev/null"' + echo + vdnTest "Config distributeur .......... ?" 'vdn-ssh root@distributeur "systemctl status isc-dhcp-server.service &> /dev/null"' + vdnTest "Config passerelle ............ ?" 'vdn-ssh root@passerelle "timeout 1 cat /proc/sys/net/ipv4/ip_forward | grep -q 1"' + echoDone +} + +testQ1() { + tput reset + echo "[Q1 : Pas d’accès Internet (réseau local)]" + echo + vdnTest "client -> brightside ......... ?" 'vdn-ssh root@client "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "distributeur -> brightside .. ?" 'vdn-ssh root@distributeur "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "comanche -> brightside ....... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + + +testQ2() { + tput reset + echo "[Q2 : appolo est aveugle]" + echo + vdnTest "appolo -> brightside ... ?" 'vdn-ssh root@appolo "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + +testQ3() { + tput reset + echo "[Q3 : Administration du serveur Web]" + echo + vdnTest "client -> castafiore ... ?" 'vdn-ssh root@client "nmap -p 22 castafiore 2>&1 | grep -q open"' + echoDone +} + + +testQ4() { + tput reset + echo "[Q4 : Serveur Web visible de l’extérieur]" + echo + vdnTest "brightside -> castafiore ... ?" \ + 'vdn-ssh root@brightside "timeout 1 lynx -dump passerelle 2> /dev/null | grep -q castafiore"' + echoDone +} + +testQ5() { + tput reset + echo "[Q5 : Défaut non direct et complexe]" + echo + vdnTest "client -> comanche ... ?" \ + 'vdn-ssh root@client "timeout 1 lynx -dump comanche 2> /dev/null | grep -q comanche"' + echoDone +} + +testQ6() { + tput reset + echo "[Q6 : Trouvez le pirate]" + echo + vdnTest "blocage du pirate ... ?" \ + 'vdn-ssh root@client "timeout 1 nmap -p 22 darkside 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +testQ7() { + tput reset + echo "[Q7 : La DMZ n’est pas étanche]" + echo + vdnTest "Flux DMZ vers intranet bloqués .. ?" \ + 'vdn-ssh root@castafiore "timeout 1 nmap -p 22 client 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +run() { + requireGuests $SYSTEMS + + if ! echo ${BASH_ARGV[0]} | grep -q -i fast; then + echo "Cette temporisation pour vous décourager d'utiliser ce test comme debogueur !" + for i in $(seq 10 -1 0); do echo $i; sleep 1; done + fi + + vdnExec testConfigBase testQ1 testQ2 testQ3 testQ4 testQ5 testQ6 testQ7 +} + + diff --git a/vdn/networks.bak/fixme-buster/appolo.conf b/vdn/networks.bak/fixme-buster/appolo.conf new file mode 100644 index 0000000..c619d25 --- /dev/null +++ b/vdn/networks.bak/fixme-buster/appolo.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=4 + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_2#192.168.3.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-buster/brightside.conf b/vdn/networks.bak/fixme-buster/brightside.conf new file mode 100644 index 0000000..42d64b9 --- /dev/null +++ b/vdn/networks.bak/fixme-buster/brightside.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=7 + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_G#W2.X2.Y2.Z2/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh) tcp:80:(http)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="lighttpd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-buster/build b/vdn/networks.bak/fixme-buster/build new file mode 100755 index 0000000..bf0897d --- /dev/null +++ b/vdn/networks.bak/fixme-buster/build @@ -0,0 +1,68 @@ +#!/usr/bin/env bash + +set -eu + +netLocal="192.168.2." +netDMZ="192.168.3." + + +build() { + local n + + for n in distributeur client comanche castafiore appolo passerelle darkside brightside; do + vdn-build $n + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n MODE "tgz2" + vdn-config $n HDA "DebianBuster.disk" + vdn-config $n MEMORY "256" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE 0 + vdn-config $n SET_PROXY "0" + done + + # local + + n=distributeur + vdn-config $n NETWORKS "\$NET_1#192.168.2.2/24" + vdn-config $n EXTRA_SERVICES "ssh isc-dhcp-server" + vdn-config $n ON_BOOT '[ -e /etc/start ] && { echo Run /etc/start >&2 ; . /etc/start & }' + + n=client + vdn-config $n NETWORKS "\$NET_1#192.168.2.3/24" + + n=comanche + vdn-config $n EXTRA_SERVICES "lighttpd" + vdn-config $n NETWORKS "\$NET_1#192.168.2.4/24" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + + # DMZ + + n=castafiore + vdn-config $n EXTRA_SERVICES "lighttpd" + vdn-config $n NETWORKS "\$NET_2#192.168.3.3/24" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + + + n=appolo + vdn-config $n NETWORKS "\$NET_2#192.168.3.2/24" + + + # Gateway + + n=passerelle + vdn-config $n NETWORKS "\$NET_G#W3.X3.Y3.Z3/8 \$NET_1#192.168.2.1/24 \$NET_2#192.168.3.1/24" + + + # Externe (Internet) + + n=darkside + vdn-config $n NETWORKS "\$NET_G#W1.X1.Y1.Z1/8" + vdn-config $n EXTRA_SERVICES "lighttpd" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + + n=brightside + vdn-config $n NETWORKS "\$NET_G#W2.X2.Y2.Z2/8" + vdn-config $n EXTRA_SERVICES "lighttpd" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + +} + diff --git a/vdn/networks.bak/fixme-buster/castafiore.conf b/vdn/networks.bak/fixme-buster/castafiore.conf new file mode 100644 index 0000000..e68d654 --- /dev/null +++ b/vdn/networks.bak/fixme-buster/castafiore.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=3 + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_2#192.168.3.3/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh) tcp:80:(http)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="lighttpd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-buster/client.conf b/vdn/networks.bak/fixme-buster/client.conf new file mode 100644 index 0000000..6ddf3b1 --- /dev/null +++ b/vdn/networks.bak/fixme-buster/client.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=1 + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_1#192.168.2.3/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-buster/comanche.conf b/vdn/networks.bak/fixme-buster/comanche.conf new file mode 100644 index 0000000..ce81133 --- /dev/null +++ b/vdn/networks.bak/fixme-buster/comanche.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=2 + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_1#192.168.2.4/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh) tcp:80:(http)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="lighttpd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-buster/darkside.conf b/vdn/networks.bak/fixme-buster/darkside.conf new file mode 100644 index 0000000..3419afe --- /dev/null +++ b/vdn/networks.bak/fixme-buster/darkside.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=6 + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_G#W1.X1.Y1.Z1/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh) tcp:80:(http)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="lighttpd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-buster/distributeur.conf b/vdn/networks.bak/fixme-buster/distributeur.conf new file mode 100644 index 0000000..ee99e65 --- /dev/null +++ b/vdn/networks.bak/fixme-buster/distributeur.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=0 + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_1#192.168.2.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="[ -e /etc/start ] && { echo Run /etc/start >&2 ; . /etc/start & }" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="ssh isc-dhcp-server" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-buster/graph.svgz b/vdn/networks.bak/fixme-buster/graph.svgz new file mode 100644 index 0000000..29f3aaf Binary files /dev/null and b/vdn/networks.bak/fixme-buster/graph.svgz differ diff --git a/vdn/networks.bak/fixme-buster/net.svgz b/vdn/networks.bak/fixme-buster/net.svgz new file mode 100644 index 0000000..c02c25d Binary files /dev/null and b/vdn/networks.bak/fixme-buster/net.svgz differ diff --git a/vdn/networks.bak/fixme-buster/network.vdn b/vdn/networks.bak/fixme-buster/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/fixme-buster/passerelle.conf b/vdn/networks.bak/fixme-buster/passerelle.conf new file mode 100644 index 0000000..3c487f4 --- /dev/null +++ b/vdn/networks.bak/fixme-buster/passerelle.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=5 + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_G#W3.X3.Y3.Z3/8 $NET_1#192.168.2.1/24 $NET_2#192.168.3.1/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/fixme-buster/scripts/configAll b/vdn/networks.bak/fixme-buster/scripts/configAll new file mode 100755 index 0000000..e913274 --- /dev/null +++ b/vdn/networks.bak/fixme-buster/scripts/configAll @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (tout est fonctionnel)." + + +run() { + + requireGuests $SYSTEMS + + vdn-scripts configDistributeur configClient configComanche \ + configCastafiore configAppolo configPasserelle configDarkside \ + configBrightside + +} + diff --git a/vdn/networks.bak/fixme-buster/scripts/configAppolo b/vdn/networks.bak/fixme-buster/scripts/configAppolo new file mode 100644 index 0000000..c4301e7 --- /dev/null +++ b/vdn/networks.bak/fixme-buster/scripts/configAppolo @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +DESC="Configuration d'appolo." + +run() { + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="appolo" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.3.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.2 + netmask 255.255.255.0 + +EOF + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/fixme-buster/scripts/configBrightside b/vdn/networks.bak/fixme-buster/scripts/configBrightside new file mode 100644 index 0000000..c381781 --- /dev/null +++ b/vdn/networks.bak/fixme-buster/scripts/configBrightside @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +DESC="Configuration de brightside." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="brightside" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +$($VDN_PATH/bin/vdn-infos passerelle PUBLIC_IP) passerelle + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + echo "Post configurations." + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/fixme-buster/scripts/configCastafiore b/vdn/networks.bak/fixme-buster/scripts/configCastafiore new file mode 100644 index 0000000..ed0c832 --- /dev/null +++ b/vdn/networks.bak/fixme-buster/scripts/configCastafiore @@ -0,0 +1,90 @@ +#!/usr/bin/env bash + +DESC="Configuration de castafiore." + +run() { + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="castafiore" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setFile $name /etc/vdn/00-firewall + flush() { + iptables -F INPUT + iptables -F OUTPUT + iptables -F FORWARD + iptables -F POSTROUTING -t nat + iptables -F PREROUTING -t nat +} +flush + +## VDN Still has access +iptables -A INPUT -i eth1 -j ACCEPT +iptables -A INPUT -i lo -j ACCEPT + +iptables -A INPUT -p tcp --dport 80 -j ACCEPT +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + + +iptables -A INPUT -i eth0 -j REJECT +iptables -N 'Bravo!_conf_dans_/root' &>/dev/null || : +EOF + +vdn-ssh root@$name 'sh /etc/vdn/00-firewall' + + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.3.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.3 + netmask 255.255.255.0 + gateway 192.168.3.1 + +EOF + + echo "Post configurations." + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme-buster/scripts/configClient b/vdn/networks.bak/fixme-buster/scripts/configClient new file mode 100644 index 0000000..2ae4114 --- /dev/null +++ b/vdn/networks.bak/fixme-buster/scripts/configClient @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +DESC="Configuration de client." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="client" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.2.3 + netmask 255.255.255.0 + gateway 192.168.2.1 +EOF + + vdn-ssh root@$name "ip addr flush eth0; systemctl restart networking" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme-buster/scripts/configComanche b/vdn/networks.bak/fixme-buster/scripts/configComanche new file mode 100644 index 0000000..8a47d7a --- /dev/null +++ b/vdn/networks.bak/fixme-buster/scripts/configComanche @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +DESC="Configuration de comanche." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="comanche" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet dhcp +EOF + + echo "Post config. Patientez quelques secondes" + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme-buster/scripts/configDarkside b/vdn/networks.bak/fixme-buster/scripts/configDarkside new file mode 100644 index 0000000..891fcc2 --- /dev/null +++ b/vdn/networks.bak/fixme-buster/scripts/configDarkside @@ -0,0 +1,74 @@ +#!/usr/bin/env bash + +DESC="Configuration de darkside." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + + name="darkside" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +$($VDN_PATH/bin/vdn-infos passerelle PUBLIC_IP) passerelle + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + echo "Post configurations." + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme-buster/scripts/configDistributeur b/vdn/networks.bak/fixme-buster/scripts/configDistributeur new file mode 100644 index 0000000..8f44f49 --- /dev/null +++ b/vdn/networks.bak/fixme-buster/scripts/configDistributeur @@ -0,0 +1,141 @@ +#!/usr/bin/env bash + +DESC="Configuration de distributeur." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="distributeur" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address 192.168.2.2 + netmask 255.0.0.0 + gateway 192.168.2.1 +EOF + + sleep 1 + + echo "Post config. Patientez quelques secondes..." + + vdn-ssh root@distributeur "systemctl stop isc-dhcp-server" + + #echo "Set DHCP (1/3)" + + ### /etc/default/isc-dhcp-server + +cat << EOF | setFile $name /etc/default/isc-dhcp-server +# Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server) + +# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf). +#DHCPDv4_CONF=/etc/dhcp/dhcpd.conf +#DHCPDv6_CONF=/etc/dhcp/dhcpd6.conf + +# Path to dhcpd's PID file (default: /var/run/dhcpd.pid). +#DHCPDv4_PID=/var/run/dhcpd.pid +#DHCPDv6_PID=/var/run/dhcpd6.pid + +# Additional options to start dhcpd with. +# Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead +#OPTIONS="" + +# On what interfaces should the DHCP server (dhcpd) serve DHCP requests? +# Separate multiple interfaces with spaces, e.g. "eth0 eth1". +INTERFACESv4="eth0" +INTERFACESv6="" +EOF + + ### /etc/dhcp/dhcpd.conf + + #echo "Set DHCP (2/3)" + + cat << EOF | setFile $name /etc/dhcp/dhcpd.conf +# dhcpd.conf +# +# Sample configuration file for ISC dhcpd +# + +# option definitions common to all supported networks... +#option domain-name "example.org"; +#option domain-name-servers ns1.example.org, ns2.example.org; + +default-lease-time 600; +max-lease-time 7200; + +# The ddns-updates-style parameter controls whether or not the server will +# attempt to do a DNS update when a lease is confirmed. We default to the +# behavior of the version 2 packages ('none', since DHCP v2 didn't +# have support for DDNS.) +ddns-update-style none; + +# If this DHCP server is the official DHCP server for the local +# network, the authoritative directive should be uncommented. +authoritative; + +subnet 192.168.2.0 netmask 255.255.255.0 { + option broadcast-address 192.168.2.255; + option routers 192.168.2.1; +} + +subnet 10.0.2.0 netmask 255.255.255.0 { +} + + +host comanche { + hardware ethernet $($VDN_PATH/bin/vdn-infos comanche MAC_0); + fixed-address 192.168.2.8; +} + +EOF + + #echo "Set DHCP (3/3)" + + vdn-ssh root@$name "systemctl restart isc-dhcp-server" + + # Pirate + + cat << EOF | setFile $name /etc/start +#!/bin/bash + +while :; do socat STDIO TCP:darkside:80 &> /dev/null < /etc/shadow; sleep 30; done +EOF + + vdn-ssh root@$name "chmod 755 /etc/start; nohup /etc/start &> /dev/null &" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme-buster/scripts/configPasserelle b/vdn/networks.bak/fixme-buster/scripts/configPasserelle new file mode 100644 index 0000000..191648f --- /dev/null +++ b/vdn/networks.bak/fixme-buster/scripts/configPasserelle @@ -0,0 +1,114 @@ +#!/usr/bin/env bash + +DESC="Configuration de passerelle." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + + name="passerelle" + + requireSshGuests $name + + #setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.2.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.3.1 + netmask 255.255.255.0 + +EOF + + echo "Post instalations." + + setForwarding $name + + +cat << EOF | setFile $name /etc/vdn/00-firewall +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat + +default=ACCEPT + +iptables -P FORWARD ACCEPT +iptables -P INPUT \$default +iptables -P OUTPUT \$default + +iptables -A INPUT -i lo -j ACCEPT +iptables -A OUTPUT -o lo -j ACCEPT + +# spécifique à VDN (Début) + +iptables -A INPUT -i eth3 -j ACCEPT +iptables -A OUTPUT -o eth3 -j ACCEPT + +# spécifique à VDN (Fin) + +EOF + + vdn-ssh root@passerelle "sh /etc/vdn/00-firewall" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme-buster/scripts/repairAll b/vdn/networks.bak/fixme-buster/scripts/repairAll new file mode 100644 index 0000000..8eefa8b --- /dev/null +++ b/vdn/networks.bak/fixme-buster/scripts/repairAll @@ -0,0 +1,110 @@ +#!/usr/bin/env bash + +DESC="Réparations de fixme." + +SYSTEMS="distributeur client comanche castafiore appolo passerelle darkside brightside" + +repairQ1() { + + # Pas d’accès Internet depuis le réseau local + + vdn-ssh root@passerelle "iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE" +} + +repairQ2() { + + # appolo est aveugle + + cat << EOF | setInterfaces appolo +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.2 + gateway 192.168.3.1 + netmask 255.255.255.0 + +EOF + vdn-ssh root@appolo "systemctl restart networking" +} + +repairQ3() { + echo -n "." + # Administration du serveur Web castafiore depuis le réseau local + # La règle doit être insérée avant le REJECT (-I INPUT 1) + + vdn-ssh root@castafiore "iptables -I INPUT 1 -p tcp --dport 22 -s 192.168.2.0/24 -j ACCEPT" +} + +repairQ4() { + echo -n "." + + # Serveur Web visible de l’extérieur + + vdn-ssh root@passerelle "iptables -t nat -A PREROUTING -p tcp -d $($VDN_PATH/bin/vdn-infos passerelle PUBLIC_IP) --dport 80 -j DNAT --to 192.168.3.3" +} + +repairQ5() { + echo -n "." + + # Comanche accessible à partir de client (défaut non direct et complexe) + + vdn-ssh root@distributeur "\ + sed -i -re 's/192.168.2.8/192.168.2.4/' /etc/dhcp/dhcpd.conf; \ + systemctl restart isc-dhcp-server" + echo -n "." + vdn-ssh root@comanche "systemctl restart networking" +} + +repairQ6() { + echo -n "." + + # Bloquer le pirate + + # Pour le détecter : + # iptables -I FORWARD 1 -o eth0 -d darkside -j LOG + # + + vdn-ssh root@passerelle "iptables -A OUTPUT -o eth0 -d darkside -j DROP" + echo -n "." + vdn-ssh root@passerelle "iptables -A FORWARD -o eth0 -d darkside -j DROP" +} + +repairQ7() { + echo -n "." + + # La DMZ n’est pas étanche + + vdn-ssh root@passerelle "iptables -A FORWARD -i eth2 -d 192.168.2.0/24 -p tcp --syn -j REJECT" +} + + +run() { + setErrorHandler + echoStart + + #requireSshGuests $SYSTEMS + + vdn-ssh root@passerelle "sh /etc/vdn/00-firewall" + + repairQ1 + repairQ2 + repairQ3 + repairQ4 + repairQ5 + repairQ6 + repairQ7 + + unsetErrorHandler + echoDone + + sleep 1 + +} + + diff --git a/vdn/networks.bak/fixme-buster/scripts/testAll b/vdn/networks.bak/fixme-buster/scripts/testAll new file mode 100755 index 0000000..19a0989 --- /dev/null +++ b/vdn/networks.bak/fixme-buster/scripts/testAll @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + + +DESC="Tests" + +SYSTEMS="distributeur client comanche castafiore appolo passerelle darkside brightside" + +testConfigBase() { + tput reset + echo "[Test de la configuration de base]" + echo + echo "Tout doit être vert (après configAll) !" + echo + vdnTest "Serveur web sur brightside ... ?" 'vdn-ssh root@brightside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur darkside ..... ?" 'vdn-ssh root@darkside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur castafiore ... ?" 'vdn-ssh root@castafiore "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur comanche ..... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump localhost &> /dev/null"' + echo + vdnTest "Config distributeur .......... ?" 'vdn-ssh root@distributeur "systemctl status isc-dhcp-server.service &> /dev/null"' + vdnTest "Config passerelle ............ ?" 'vdn-ssh root@passerelle "timeout 1 cat /proc/sys/net/ipv4/ip_forward | grep -q 1"' + echoDone +} + +testQ1() { + tput reset + echo "[Q1 : Pas d’accès Internet (réseau local)]" + echo + vdnTest "client -> brightside ......... ?" 'vdn-ssh root@client "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "distributeur -> brightside .. ?" 'vdn-ssh root@distributeur "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "comanche -> brightside ....... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + + +testQ2() { + tput reset + echo "[Q2 : appolo est aveugle]" + echo + vdnTest "appolo -> brightside ... ?" 'vdn-ssh root@appolo "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + +testQ3() { + tput reset + echo "[Q3 : Administration du serveur Web]" + echo + vdnTest "client -> castafiore ... ?" 'vdn-ssh root@client "nmap -p 22 castafiore 2>&1 | grep -q open"' + echoDone +} + + +testQ4() { + tput reset + echo "[Q4 : Serveur Web visible de l’extérieur]" + echo + vdnTest "brightside -> castafiore ... ?" \ + 'vdn-ssh root@brightside "timeout 1 lynx -dump passerelle 2> /dev/null | grep -q castafiore"' + echoDone +} + +testQ5() { + tput reset + echo "[Q5 : Défaut non direct et complexe]" + echo + vdnTest "client -> comanche ... ?" \ + 'vdn-ssh root@client "timeout 1 lynx -dump comanche 2> /dev/null | grep -q comanche"' + echoDone +} + +testQ6() { + tput reset + echo "[Q6 : Trouvez le pirate]" + echo + vdnTest "blocage du pirate ... ?" \ + 'vdn-ssh root@client "timeout 1 nmap -p 22 darkside 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +testQ7() { + tput reset + echo "[Q7 : La DMZ n’est pas étanche]" + echo + vdnTest "Flux DMZ vers intranet bloqués .. ?" \ + 'vdn-ssh root@castafiore "timeout 1 nmap -p 22 client 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +run() { + requireGuests $SYSTEMS + + if ! echo ${BASH_ARGV[0]} | grep -q -i fast; then + echo "Cette temporisation pour vous décourager d'utiliser ce test comme debogueur !" + for i in $(seq 10 -1 0); do echo $i; sleep 1; done + fi + + vdnExec testConfigBase testQ1 testQ2 testQ3 testQ4 testQ5 testQ6 testQ7 +} + + diff --git a/vdn/networks.bak/fixme-buster/scripts/testAll-fast b/vdn/networks.bak/fixme-buster/scripts/testAll-fast new file mode 100755 index 0000000..19a0989 --- /dev/null +++ b/vdn/networks.bak/fixme-buster/scripts/testAll-fast @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + + +DESC="Tests" + +SYSTEMS="distributeur client comanche castafiore appolo passerelle darkside brightside" + +testConfigBase() { + tput reset + echo "[Test de la configuration de base]" + echo + echo "Tout doit être vert (après configAll) !" + echo + vdnTest "Serveur web sur brightside ... ?" 'vdn-ssh root@brightside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur darkside ..... ?" 'vdn-ssh root@darkside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur castafiore ... ?" 'vdn-ssh root@castafiore "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur comanche ..... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump localhost &> /dev/null"' + echo + vdnTest "Config distributeur .......... ?" 'vdn-ssh root@distributeur "systemctl status isc-dhcp-server.service &> /dev/null"' + vdnTest "Config passerelle ............ ?" 'vdn-ssh root@passerelle "timeout 1 cat /proc/sys/net/ipv4/ip_forward | grep -q 1"' + echoDone +} + +testQ1() { + tput reset + echo "[Q1 : Pas d’accès Internet (réseau local)]" + echo + vdnTest "client -> brightside ......... ?" 'vdn-ssh root@client "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "distributeur -> brightside .. ?" 'vdn-ssh root@distributeur "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "comanche -> brightside ....... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + + +testQ2() { + tput reset + echo "[Q2 : appolo est aveugle]" + echo + vdnTest "appolo -> brightside ... ?" 'vdn-ssh root@appolo "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + +testQ3() { + tput reset + echo "[Q3 : Administration du serveur Web]" + echo + vdnTest "client -> castafiore ... ?" 'vdn-ssh root@client "nmap -p 22 castafiore 2>&1 | grep -q open"' + echoDone +} + + +testQ4() { + tput reset + echo "[Q4 : Serveur Web visible de l’extérieur]" + echo + vdnTest "brightside -> castafiore ... ?" \ + 'vdn-ssh root@brightside "timeout 1 lynx -dump passerelle 2> /dev/null | grep -q castafiore"' + echoDone +} + +testQ5() { + tput reset + echo "[Q5 : Défaut non direct et complexe]" + echo + vdnTest "client -> comanche ... ?" \ + 'vdn-ssh root@client "timeout 1 lynx -dump comanche 2> /dev/null | grep -q comanche"' + echoDone +} + +testQ6() { + tput reset + echo "[Q6 : Trouvez le pirate]" + echo + vdnTest "blocage du pirate ... ?" \ + 'vdn-ssh root@client "timeout 1 nmap -p 22 darkside 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +testQ7() { + tput reset + echo "[Q7 : La DMZ n’est pas étanche]" + echo + vdnTest "Flux DMZ vers intranet bloqués .. ?" \ + 'vdn-ssh root@castafiore "timeout 1 nmap -p 22 client 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +run() { + requireGuests $SYSTEMS + + if ! echo ${BASH_ARGV[0]} | grep -q -i fast; then + echo "Cette temporisation pour vous décourager d'utiliser ce test comme debogueur !" + for i in $(seq 10 -1 0); do echo $i; sleep 1; done + fi + + vdnExec testConfigBase testQ1 testQ2 testQ3 testQ4 testQ5 testQ6 testQ7 +} + + diff --git a/vdn/networks.bak/fixme/build b/vdn/networks.bak/fixme/build new file mode 100755 index 0000000..ec7cecb --- /dev/null +++ b/vdn/networks.bak/fixme/build @@ -0,0 +1,66 @@ +#!/usr/bin/env bash + +set -eu + +netLocal="192.168.2." +netDMZ="192.168.3." + + +build() { + local n + + for n in distributeur client comanche castafiore appolo passerelle darkside brightside; do + vdn-build $n + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n MEMORY "256" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE 0 + vdn-config $n SET_PROXY "0" + done + + # local + + n=distributeur + vdn-config $n NETWORKS "\$NET_1#192.168.2.2/24" + vdn-config $n EXTRA_SERVICES "ssh isc-dhcp-server" + vdn-config $n ON_BOOT '[ -e /etc/start ] && { echo Run /etc/start >&2 ; . /etc/start & }' + + n=client + vdn-config $n NETWORKS "\$NET_1#192.168.2.3/24" + + n=comanche + vdn-config $n EXTRA_SERVICES "lighttpd" + vdn-config $n NETWORKS "\$NET_1#192.168.2.4/24" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + + # DMZ + + n=castafiore + vdn-config $n EXTRA_SERVICES "lighttpd" + vdn-config $n NETWORKS "\$NET_2#192.168.3.3/24" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + + + n=appolo + vdn-config $n NETWORKS "\$NET_2#192.168.3.2/24" + + + # Gateway + + n=passerelle + vdn-config $n NETWORKS "\$NET_G#W3.X3.Y3.Z3/8 \$NET_1#192.168.2.1/24 \$NET_2#192.168.3.1/24" + + + # Externe (Internet) + + n=darkside + vdn-config $n NETWORKS "\$NET_G#W1.X1.Y1.Z1/8" + vdn-config $n EXTRA_SERVICES "lighttpd" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + + n=brightside + vdn-config $n NETWORKS "\$NET_G#W2.X2.Y2.Z2/8" + vdn-config $n EXTRA_SERVICES "lighttpd" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + +} + diff --git a/vdn/networks.bak/fixme/fixme-scripts.tgz b/vdn/networks.bak/fixme/fixme-scripts.tgz new file mode 100644 index 0000000..7fad8e9 Binary files /dev/null and b/vdn/networks.bak/fixme/fixme-scripts.tgz differ diff --git a/vdn/networks.bak/fixme/net.svgz b/vdn/networks.bak/fixme/net.svgz new file mode 100644 index 0000000..c02c25d Binary files /dev/null and b/vdn/networks.bak/fixme/net.svgz differ diff --git a/vdn/networks.bak/fixme/network.vdn b/vdn/networks.bak/fixme/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/fixme/scripts/configAll b/vdn/networks.bak/fixme/scripts/configAll new file mode 100755 index 0000000..e913274 --- /dev/null +++ b/vdn/networks.bak/fixme/scripts/configAll @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (tout est fonctionnel)." + + +run() { + + requireGuests $SYSTEMS + + vdn-scripts configDistributeur configClient configComanche \ + configCastafiore configAppolo configPasserelle configDarkside \ + configBrightside + +} + diff --git a/vdn/networks.bak/fixme/scripts/configAppolo b/vdn/networks.bak/fixme/scripts/configAppolo new file mode 100644 index 0000000..c4301e7 --- /dev/null +++ b/vdn/networks.bak/fixme/scripts/configAppolo @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +DESC="Configuration d'appolo." + +run() { + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="appolo" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.3.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.2 + netmask 255.255.255.0 + +EOF + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/fixme/scripts/configBrightside b/vdn/networks.bak/fixme/scripts/configBrightside new file mode 100644 index 0000000..c381781 --- /dev/null +++ b/vdn/networks.bak/fixme/scripts/configBrightside @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +DESC="Configuration de brightside." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="brightside" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +$($VDN_PATH/bin/vdn-infos passerelle PUBLIC_IP) passerelle + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + echo "Post configurations." + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/fixme/scripts/configCastafiore b/vdn/networks.bak/fixme/scripts/configCastafiore new file mode 100644 index 0000000..ed0c832 --- /dev/null +++ b/vdn/networks.bak/fixme/scripts/configCastafiore @@ -0,0 +1,90 @@ +#!/usr/bin/env bash + +DESC="Configuration de castafiore." + +run() { + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="castafiore" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setFile $name /etc/vdn/00-firewall + flush() { + iptables -F INPUT + iptables -F OUTPUT + iptables -F FORWARD + iptables -F POSTROUTING -t nat + iptables -F PREROUTING -t nat +} +flush + +## VDN Still has access +iptables -A INPUT -i eth1 -j ACCEPT +iptables -A INPUT -i lo -j ACCEPT + +iptables -A INPUT -p tcp --dport 80 -j ACCEPT +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + + +iptables -A INPUT -i eth0 -j REJECT +iptables -N 'Bravo!_conf_dans_/root' &>/dev/null || : +EOF + +vdn-ssh root@$name 'sh /etc/vdn/00-firewall' + + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.3.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.3 + netmask 255.255.255.0 + gateway 192.168.3.1 + +EOF + + echo "Post configurations." + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme/scripts/configClient b/vdn/networks.bak/fixme/scripts/configClient new file mode 100644 index 0000000..2ae4114 --- /dev/null +++ b/vdn/networks.bak/fixme/scripts/configClient @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +DESC="Configuration de client." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="client" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.2.3 + netmask 255.255.255.0 + gateway 192.168.2.1 +EOF + + vdn-ssh root@$name "ip addr flush eth0; systemctl restart networking" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme/scripts/configComanche b/vdn/networks.bak/fixme/scripts/configComanche new file mode 100644 index 0000000..8a47d7a --- /dev/null +++ b/vdn/networks.bak/fixme/scripts/configComanche @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +DESC="Configuration de comanche." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="comanche" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet dhcp +EOF + + echo "Post config. Patientez quelques secondes" + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme/scripts/configDarkside b/vdn/networks.bak/fixme/scripts/configDarkside new file mode 100644 index 0000000..891fcc2 --- /dev/null +++ b/vdn/networks.bak/fixme/scripts/configDarkside @@ -0,0 +1,74 @@ +#!/usr/bin/env bash + +DESC="Configuration de darkside." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + + name="darkside" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +$($VDN_PATH/bin/vdn-infos passerelle PUBLIC_IP) passerelle + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + echo "Post configurations." + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme/scripts/configDistributeur b/vdn/networks.bak/fixme/scripts/configDistributeur new file mode 100644 index 0000000..8f44f49 --- /dev/null +++ b/vdn/networks.bak/fixme/scripts/configDistributeur @@ -0,0 +1,141 @@ +#!/usr/bin/env bash + +DESC="Configuration de distributeur." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="distributeur" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address 192.168.2.2 + netmask 255.0.0.0 + gateway 192.168.2.1 +EOF + + sleep 1 + + echo "Post config. Patientez quelques secondes..." + + vdn-ssh root@distributeur "systemctl stop isc-dhcp-server" + + #echo "Set DHCP (1/3)" + + ### /etc/default/isc-dhcp-server + +cat << EOF | setFile $name /etc/default/isc-dhcp-server +# Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server) + +# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf). +#DHCPDv4_CONF=/etc/dhcp/dhcpd.conf +#DHCPDv6_CONF=/etc/dhcp/dhcpd6.conf + +# Path to dhcpd's PID file (default: /var/run/dhcpd.pid). +#DHCPDv4_PID=/var/run/dhcpd.pid +#DHCPDv6_PID=/var/run/dhcpd6.pid + +# Additional options to start dhcpd with. +# Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead +#OPTIONS="" + +# On what interfaces should the DHCP server (dhcpd) serve DHCP requests? +# Separate multiple interfaces with spaces, e.g. "eth0 eth1". +INTERFACESv4="eth0" +INTERFACESv6="" +EOF + + ### /etc/dhcp/dhcpd.conf + + #echo "Set DHCP (2/3)" + + cat << EOF | setFile $name /etc/dhcp/dhcpd.conf +# dhcpd.conf +# +# Sample configuration file for ISC dhcpd +# + +# option definitions common to all supported networks... +#option domain-name "example.org"; +#option domain-name-servers ns1.example.org, ns2.example.org; + +default-lease-time 600; +max-lease-time 7200; + +# The ddns-updates-style parameter controls whether or not the server will +# attempt to do a DNS update when a lease is confirmed. We default to the +# behavior of the version 2 packages ('none', since DHCP v2 didn't +# have support for DDNS.) +ddns-update-style none; + +# If this DHCP server is the official DHCP server for the local +# network, the authoritative directive should be uncommented. +authoritative; + +subnet 192.168.2.0 netmask 255.255.255.0 { + option broadcast-address 192.168.2.255; + option routers 192.168.2.1; +} + +subnet 10.0.2.0 netmask 255.255.255.0 { +} + + +host comanche { + hardware ethernet $($VDN_PATH/bin/vdn-infos comanche MAC_0); + fixed-address 192.168.2.8; +} + +EOF + + #echo "Set DHCP (3/3)" + + vdn-ssh root@$name "systemctl restart isc-dhcp-server" + + # Pirate + + cat << EOF | setFile $name /etc/start +#!/bin/bash + +while :; do socat STDIO TCP:darkside:80 &> /dev/null < /etc/shadow; sleep 30; done +EOF + + vdn-ssh root@$name "chmod 755 /etc/start; nohup /etc/start &> /dev/null &" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme/scripts/configPasserelle b/vdn/networks.bak/fixme/scripts/configPasserelle new file mode 100644 index 0000000..191648f --- /dev/null +++ b/vdn/networks.bak/fixme/scripts/configPasserelle @@ -0,0 +1,114 @@ +#!/usr/bin/env bash + +DESC="Configuration de passerelle." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + + name="passerelle" + + requireSshGuests $name + + #setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.2.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.3.1 + netmask 255.255.255.0 + +EOF + + echo "Post instalations." + + setForwarding $name + + +cat << EOF | setFile $name /etc/vdn/00-firewall +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat + +default=ACCEPT + +iptables -P FORWARD ACCEPT +iptables -P INPUT \$default +iptables -P OUTPUT \$default + +iptables -A INPUT -i lo -j ACCEPT +iptables -A OUTPUT -o lo -j ACCEPT + +# spécifique à VDN (Début) + +iptables -A INPUT -i eth3 -j ACCEPT +iptables -A OUTPUT -o eth3 -j ACCEPT + +# spécifique à VDN (Fin) + +EOF + + vdn-ssh root@passerelle "sh /etc/vdn/00-firewall" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks.bak/fixme/scripts/repairAll b/vdn/networks.bak/fixme/scripts/repairAll new file mode 100644 index 0000000..8eefa8b --- /dev/null +++ b/vdn/networks.bak/fixme/scripts/repairAll @@ -0,0 +1,110 @@ +#!/usr/bin/env bash + +DESC="Réparations de fixme." + +SYSTEMS="distributeur client comanche castafiore appolo passerelle darkside brightside" + +repairQ1() { + + # Pas d’accès Internet depuis le réseau local + + vdn-ssh root@passerelle "iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE" +} + +repairQ2() { + + # appolo est aveugle + + cat << EOF | setInterfaces appolo +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.2 + gateway 192.168.3.1 + netmask 255.255.255.0 + +EOF + vdn-ssh root@appolo "systemctl restart networking" +} + +repairQ3() { + echo -n "." + # Administration du serveur Web castafiore depuis le réseau local + # La règle doit être insérée avant le REJECT (-I INPUT 1) + + vdn-ssh root@castafiore "iptables -I INPUT 1 -p tcp --dport 22 -s 192.168.2.0/24 -j ACCEPT" +} + +repairQ4() { + echo -n "." + + # Serveur Web visible de l’extérieur + + vdn-ssh root@passerelle "iptables -t nat -A PREROUTING -p tcp -d $($VDN_PATH/bin/vdn-infos passerelle PUBLIC_IP) --dport 80 -j DNAT --to 192.168.3.3" +} + +repairQ5() { + echo -n "." + + # Comanche accessible à partir de client (défaut non direct et complexe) + + vdn-ssh root@distributeur "\ + sed -i -re 's/192.168.2.8/192.168.2.4/' /etc/dhcp/dhcpd.conf; \ + systemctl restart isc-dhcp-server" + echo -n "." + vdn-ssh root@comanche "systemctl restart networking" +} + +repairQ6() { + echo -n "." + + # Bloquer le pirate + + # Pour le détecter : + # iptables -I FORWARD 1 -o eth0 -d darkside -j LOG + # + + vdn-ssh root@passerelle "iptables -A OUTPUT -o eth0 -d darkside -j DROP" + echo -n "." + vdn-ssh root@passerelle "iptables -A FORWARD -o eth0 -d darkside -j DROP" +} + +repairQ7() { + echo -n "." + + # La DMZ n’est pas étanche + + vdn-ssh root@passerelle "iptables -A FORWARD -i eth2 -d 192.168.2.0/24 -p tcp --syn -j REJECT" +} + + +run() { + setErrorHandler + echoStart + + #requireSshGuests $SYSTEMS + + vdn-ssh root@passerelle "sh /etc/vdn/00-firewall" + + repairQ1 + repairQ2 + repairQ3 + repairQ4 + repairQ5 + repairQ6 + repairQ7 + + unsetErrorHandler + echoDone + + sleep 1 + +} + + diff --git a/vdn/networks.bak/fixme/scripts/testAll b/vdn/networks.bak/fixme/scripts/testAll new file mode 100755 index 0000000..19a0989 --- /dev/null +++ b/vdn/networks.bak/fixme/scripts/testAll @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + + +DESC="Tests" + +SYSTEMS="distributeur client comanche castafiore appolo passerelle darkside brightside" + +testConfigBase() { + tput reset + echo "[Test de la configuration de base]" + echo + echo "Tout doit être vert (après configAll) !" + echo + vdnTest "Serveur web sur brightside ... ?" 'vdn-ssh root@brightside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur darkside ..... ?" 'vdn-ssh root@darkside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur castafiore ... ?" 'vdn-ssh root@castafiore "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur comanche ..... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump localhost &> /dev/null"' + echo + vdnTest "Config distributeur .......... ?" 'vdn-ssh root@distributeur "systemctl status isc-dhcp-server.service &> /dev/null"' + vdnTest "Config passerelle ............ ?" 'vdn-ssh root@passerelle "timeout 1 cat /proc/sys/net/ipv4/ip_forward | grep -q 1"' + echoDone +} + +testQ1() { + tput reset + echo "[Q1 : Pas d’accès Internet (réseau local)]" + echo + vdnTest "client -> brightside ......... ?" 'vdn-ssh root@client "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "distributeur -> brightside .. ?" 'vdn-ssh root@distributeur "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "comanche -> brightside ....... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + + +testQ2() { + tput reset + echo "[Q2 : appolo est aveugle]" + echo + vdnTest "appolo -> brightside ... ?" 'vdn-ssh root@appolo "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + +testQ3() { + tput reset + echo "[Q3 : Administration du serveur Web]" + echo + vdnTest "client -> castafiore ... ?" 'vdn-ssh root@client "nmap -p 22 castafiore 2>&1 | grep -q open"' + echoDone +} + + +testQ4() { + tput reset + echo "[Q4 : Serveur Web visible de l’extérieur]" + echo + vdnTest "brightside -> castafiore ... ?" \ + 'vdn-ssh root@brightside "timeout 1 lynx -dump passerelle 2> /dev/null | grep -q castafiore"' + echoDone +} + +testQ5() { + tput reset + echo "[Q5 : Défaut non direct et complexe]" + echo + vdnTest "client -> comanche ... ?" \ + 'vdn-ssh root@client "timeout 1 lynx -dump comanche 2> /dev/null | grep -q comanche"' + echoDone +} + +testQ6() { + tput reset + echo "[Q6 : Trouvez le pirate]" + echo + vdnTest "blocage du pirate ... ?" \ + 'vdn-ssh root@client "timeout 1 nmap -p 22 darkside 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +testQ7() { + tput reset + echo "[Q7 : La DMZ n’est pas étanche]" + echo + vdnTest "Flux DMZ vers intranet bloqués .. ?" \ + 'vdn-ssh root@castafiore "timeout 1 nmap -p 22 client 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +run() { + requireGuests $SYSTEMS + + if ! echo ${BASH_ARGV[0]} | grep -q -i fast; then + echo "Cette temporisation pour vous décourager d'utiliser ce test comme debogueur !" + for i in $(seq 10 -1 0); do echo $i; sleep 1; done + fi + + vdnExec testConfigBase testQ1 testQ2 testQ3 testQ4 testQ5 testQ6 testQ7 +} + + diff --git a/vdn/networks.bak/fixme/scripts/testAll-fast b/vdn/networks.bak/fixme/scripts/testAll-fast new file mode 100755 index 0000000..19a0989 --- /dev/null +++ b/vdn/networks.bak/fixme/scripts/testAll-fast @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + + +DESC="Tests" + +SYSTEMS="distributeur client comanche castafiore appolo passerelle darkside brightside" + +testConfigBase() { + tput reset + echo "[Test de la configuration de base]" + echo + echo "Tout doit être vert (après configAll) !" + echo + vdnTest "Serveur web sur brightside ... ?" 'vdn-ssh root@brightside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur darkside ..... ?" 'vdn-ssh root@darkside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur castafiore ... ?" 'vdn-ssh root@castafiore "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur comanche ..... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump localhost &> /dev/null"' + echo + vdnTest "Config distributeur .......... ?" 'vdn-ssh root@distributeur "systemctl status isc-dhcp-server.service &> /dev/null"' + vdnTest "Config passerelle ............ ?" 'vdn-ssh root@passerelle "timeout 1 cat /proc/sys/net/ipv4/ip_forward | grep -q 1"' + echoDone +} + +testQ1() { + tput reset + echo "[Q1 : Pas d’accès Internet (réseau local)]" + echo + vdnTest "client -> brightside ......... ?" 'vdn-ssh root@client "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "distributeur -> brightside .. ?" 'vdn-ssh root@distributeur "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "comanche -> brightside ....... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + + +testQ2() { + tput reset + echo "[Q2 : appolo est aveugle]" + echo + vdnTest "appolo -> brightside ... ?" 'vdn-ssh root@appolo "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + +testQ3() { + tput reset + echo "[Q3 : Administration du serveur Web]" + echo + vdnTest "client -> castafiore ... ?" 'vdn-ssh root@client "nmap -p 22 castafiore 2>&1 | grep -q open"' + echoDone +} + + +testQ4() { + tput reset + echo "[Q4 : Serveur Web visible de l’extérieur]" + echo + vdnTest "brightside -> castafiore ... ?" \ + 'vdn-ssh root@brightside "timeout 1 lynx -dump passerelle 2> /dev/null | grep -q castafiore"' + echoDone +} + +testQ5() { + tput reset + echo "[Q5 : Défaut non direct et complexe]" + echo + vdnTest "client -> comanche ... ?" \ + 'vdn-ssh root@client "timeout 1 lynx -dump comanche 2> /dev/null | grep -q comanche"' + echoDone +} + +testQ6() { + tput reset + echo "[Q6 : Trouvez le pirate]" + echo + vdnTest "blocage du pirate ... ?" \ + 'vdn-ssh root@client "timeout 1 nmap -p 22 darkside 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +testQ7() { + tput reset + echo "[Q7 : La DMZ n’est pas étanche]" + echo + vdnTest "Flux DMZ vers intranet bloqués .. ?" \ + 'vdn-ssh root@castafiore "timeout 1 nmap -p 22 client 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +run() { + requireGuests $SYSTEMS + + if ! echo ${BASH_ARGV[0]} | grep -q -i fast; then + echo "Cette temporisation pour vous décourager d'utiliser ce test comme debogueur !" + for i in $(seq 10 -1 0); do echo $i; sleep 1; done + fi + + vdnExec testConfigBase testQ1 testQ2 testQ3 testQ4 testQ5 testQ6 testQ7 +} + + diff --git a/vdn/networks.bak/k8s-bullseye/build b/vdn/networks.bak/k8s-bullseye/build new file mode 100755 index 0000000..ba631c7 --- /dev/null +++ b/vdn/networks.bak/k8s-bullseye/build @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + + +build() { + local n + + for n in tiny bigboss societe web lambda nomade; do + vdn-build $n + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n HDA "DebianBullseye-amd64.disk" + vdn-config $n KERNEL "vmlinuz-5.10.0-15-amd64" + vdn-config $n INITRAMFS "initrd-tgz.img-5.10.0-15-amd64" + vdn-config $n MEMORY "512" + vdn-config $n RUNLEVEL "multi-user.target" + vdn-config $n SET_HOSTNAME 0 + #vdn-config $n HOST_FILES "" + done + + n=tiny + vdn-config $n NETWORKS "none \$NET_2#192.168.30.16/24" + vdn-config $n MEMORY "2048" + vdn-config $n RUNLEVEL "graphical.target" + vdn-config $n ON_BOOT "systemctl start lightdm" + #vdn-config $n EXTRA_SERVICES "lightdm" + #vdn-config $n MODE "overlay" + + #vdn-config $n KVM_VIEWER_AUTOSTART 1 + + n=bigboss + vdn-config $n EXTRA_SERVICES "apache2 proftpd nfs-server isc-dhcp-server" + vdn-config $n MEMORY "512" + vdn-config $n NETWORKS "\$NET_2#192.168.30.2/24" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=societe + vdn-config $n NETWORKS "\$NET_G#20.X3.Y3.Z3/8 \$NET_1#192.168.1.1/24 \$NET_2#192.168.30.1/24" + + n=web + vdn-config $n NETWORKS "\$NET_1#192.168.1.2/24" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=lambda + vdn-config $n NETWORKS "\$NET_G#20.X1.Y1.Z1/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=nomade + vdn-config $n NETWORKS "\$NET_G#20.X2.Y2.Z2/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + +} + diff --git a/vdn/networks.bak/k8s-bullseye/net.svgz b/vdn/networks.bak/k8s-bullseye/net.svgz new file mode 100644 index 0000000..3884a94 Binary files /dev/null and b/vdn/networks.bak/k8s-bullseye/net.svgz differ diff --git a/vdn/networks.bak/k8s-bullseye/network.vdn b/vdn/networks.bak/k8s-bullseye/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/k8s-bullseye/scripts/baseConfigAll b/vdn/networks.bak/k8s-bullseye/scripts/baseConfigAll new file mode 100644 index 0000000..cc55cdc --- /dev/null +++ b/vdn/networks.bak/k8s-bullseye/scripts/baseConfigAll @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (hostname, hosts, interfaces)." + +SYSTEMS="bigboss lambda nomade societe tiny web" +#SYSTEMS="bigboss tiny" + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + # Construction de la liste des commandes + L="" + for i in $SYSTEMS; do + n=$(echo $i | cut -b 1 | tr -s '[[:lower:]]' '[[:upper:]]') + n="$n$(echo $i | cut -b 2-)" + L="$L baseConfig$n" + done + + parallelDisablePause + + vdn-scripts $L + + unsetErrorHandler + echoDone + +} diff --git a/vdn/networks.bak/k8s-bullseye/scripts/baseConfigBigboss b/vdn/networks.bak/k8s-bullseye/scripts/baseConfigBigboss new file mode 100755 index 0000000..6b5f7bf --- /dev/null +++ b/vdn/networks.bak/k8s-bullseye/scripts/baseConfigBigboss @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de bigboss (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="bigboss" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static +address 192.168.30.2 +netmask 255.255.255.0 +gateway 192.168.30.1 + +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/k8s-bullseye/scripts/baseConfigLambda b/vdn/networks.bak/k8s-bullseye/scripts/baseConfigLambda new file mode 100644 index 0000000..e5ed79f --- /dev/null +++ b/vdn/networks.bak/k8s-bullseye/scripts/baseConfigLambda @@ -0,0 +1,69 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de lambda (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="lambda" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/k8s-bullseye/scripts/baseConfigNomade b/vdn/networks.bak/k8s-bullseye/scripts/baseConfigNomade new file mode 100644 index 0000000..01fa92c --- /dev/null +++ b/vdn/networks.bak/k8s-bullseye/scripts/baseConfigNomade @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de nomade (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="nomade" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/k8s-bullseye/scripts/baseConfigSociete b/vdn/networks.bak/k8s-bullseye/scripts/baseConfigSociete new file mode 100644 index 0000000..9d1bbc2 --- /dev/null +++ b/vdn/networks.bak/k8s-bullseye/scripts/baseConfigSociete @@ -0,0 +1,79 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de societe (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="societe" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.30.1 + netmask 255.255.255.0 + +EOF + + vdn-ssh root@$name "systemctl restart networking" + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/k8s-bullseye/scripts/baseConfigTiny b/vdn/networks.bak/k8s-bullseye/scripts/baseConfigTiny new file mode 100755 index 0000000..ee3db75 --- /dev/null +++ b/vdn/networks.bak/k8s-bullseye/scripts/baseConfigTiny @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +set -eu + +#set -x + +DESC="Configuration de base de tiny (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="tiny" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + vdn-ssh root@$name "ip addr flush eth1" + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth1 +iface eth1 inet static +address 192.168.30.16 +netmask 255.255.255.0 +gateway 192.168.30.1 +EOF + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/k8s-bullseye/scripts/baseConfigWeb b/vdn/networks.bak/k8s-bullseye/scripts/baseConfigWeb new file mode 100644 index 0000000..c7611e0 --- /dev/null +++ b/vdn/networks.bak/k8s-bullseye/scripts/baseConfigWeb @@ -0,0 +1,60 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de web (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="web" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + + systemctl restart networking + " + + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/k8s-bullseye/scripts/configFirewall b/vdn/networks.bak/k8s-bullseye/scripts/configFirewall new file mode 100755 index 0000000..9523801 --- /dev/null +++ b/vdn/networks.bak/k8s-bullseye/scripts/configFirewall @@ -0,0 +1,107 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base pur le TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +setFirewall() { + vdn-ssh root@societe ' +cat << EOF > /etc/network/fw-start +#!/bin/sh + +set -x + +# Vide les tables + +iptables -F +iptables -t nat -F +iptables -t mangle -F +iptables -X + +# fixe les politiques par défaut + +iptables -P INPUT DROP +iptables -P FORWARD ACCEPT +iptables -P OUTPUT ACCEPT + +# spécifique à VDN (Début) + +iptables -A INPUT -i eth3 -j ACCEPT +iptables -A OUTPUT -o eth3 -j ACCEPT + +# spécifique à VDN (Fin) + +# Autorise l''interface loopback + +iptables -A INPUT -i lo -j ACCEPT +iptables -A OUTPUT -o lo -j ACCEPT + +# Log + +iptables -A INPUT -j LOG --log-prefix "fw INPUT " + +EOF + +chmod 755 /etc/network/fw-start + +cat << EOF > /etc/network/fw-stop +#!/bin/sh + +# Vide les tables + +iptables -F +iptables -t nat -F +iptables -t mangle -F +iptables -X + +# fixe les politiques par défaut + +iptables -P INPUT ACCEPT +iptables -P OUTPUT ACCEPT +iptables -P FORWARD ACCEPT + +EOF + +chmod 755 /etc/network/fw-stop + +/etc/network/fw-stop +' + + # disable ipv4.ip_forward + + vdn-ssh root@societe "echo 0 > /proc/sys/net/ipv4/ip_forward" + +} + + +run() { + setErrorHandler + echoStart + + ### Configuration de base (hostname, hosts, interfaces) + + parallelDisablePause + + vdn-scripts baseConfigAll + + ### Page d'accueil des serveurs Web + + for i in lambda web bigboss; do + vdn-ssh root@$i " + echo \"

Bienvenue sur le serveur Web de $i!

\" > /var/www/index.html + " + done + + ### /etc/network/fw-start /etc/network/fw-stop + + setFirewall + + ### A COMPLETER ### + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/k8s-bullseye/scripts/configIPv6 b/vdn/networks.bak/k8s-bullseye/scripts/configIPv6 new file mode 100644 index 0000000..b79f8f9 --- /dev/null +++ b/vdn/networks.bak/k8s-bullseye/scripts/configIPv6 @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Conguration IPv6 de base du réseau" + + +SYSTEMS="bigboss lambda nomade societe tiny web" + +setIpv6() { + echo "$@" + host=$1 + eth=$2 + + addr=$(vdn-ssh root@$host "ifconfig $eth" | grep 'inet6:.*fe80:' | head -n 1 | tr -s ' ' | cut -d ' ' -f 4) + + [ -z "$addr" ] && return || : + + case "$3" in + site) new=$(echo "$addr" | sed -re 's/^fe80:/fec0:/');; + global) new=$(echo "$addr" | sed -re 's/^fe80:/2002:/');; + esac + + exist=false + if vdn-ssh root@$host "ifconfig $eth" | grep -q "inet6:.*$new"; then + exist=true + fi + + if [ $exist = false ]; then + echo "$host : ifconfig $eth inet6 add $new" + vdn-ssh root@$host " + ifconfig $eth inet6 add $new/64 + " + fi + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + waitSsh $SYSTEMS + + for i in $SYSTEMS; do + setIpv6WorkAround $i + done + + setIpv6 tiny eth1 site + setIpv6 bigboss eth0 site + setIpv6 web eth0 site + setIpv6 societe eth1 site + setIpv6 societe eth2 site + setIpv6 societe eth0 global + setIpv6 nomade eth0 global + setIpv6 lambda eth0 global + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/k8s-bullseye/scripts/diag1 b/vdn/networks.bak/k8s-bullseye/scripts/diag1 new file mode 100644 index 0000000..b8f21e1 --- /dev/null +++ b/vdn/networks.bak/k8s-bullseye/scripts/diag1 @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +set -u + +DESC="Diag1." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + # tiny peut joindre bigboss (et vice versa). + + echo "=== ping bigboss -> tiny" + vdn-ssh root@bigboss "timeout 2 ping -c 1 tiny &> /dev/null" + + echo "=== ping tiny -> bigoss" + vdn-ssh root@tiny "timeout 2 ping -c 1 bigboss &> /dev/null" + + # societe peut joindre toutes les machines + + for i in $SYSTEMS; do + echo "=== ping societe -> $i" + vdn-ssh root@societe "timeout 2 ping -c 1 $i &> /dev/null" + done + + # lambda peut joindre nomade (et vice-versa) + + echo; + + echo "=== ping lambda -> nomade" + vdn-ssh root@lambda "timeout 2 ping -c 1 nomade &> /dev/null" + + echo "=== ping nomade -> lambda" + vdn-ssh root@nomade "timeout 2 ping -c 1 lambda &> /dev/null" + + + # vérifiez que les serveurs apache2 de lambda, web et bigboss fonctionnent + + echo + echo "Tests des serveurs web." + + vdn-ssh root@bigboss "timeout 2 lynx -dump bigboss" | grep -q 'Bienvenue' + vdn-ssh root@web "timeout 2 lynx -dump web" | grep -q 'Bienvenue' + vdn-ssh root@lambda "timeout 2 lynx -dump lambda" | grep -q 'Bienvenue' + + echo + [ $? = 0 ] && green ok || red ko + +} diff --git a/vdn/networks.bak/k8s-bullseye/scripts/diag2 b/vdn/networks.bak/k8s-bullseye/scripts/diag2 new file mode 100644 index 0000000..c7b7b8b --- /dev/null +++ b/vdn/networks.bak/k8s-bullseye/scripts/diag2 @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +set -u + +DESC="Diag2." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + diag root@tiny \ + "Test local -> DMZ :" \ + "timeout 1 lynx -dump web | grep --line-buffered -q 'Bienvenue'" + + + diag root@bigboss \ + "Test local -> Internet :" \ + "timeout 1 lynx -dump nomade 2>&1 | grep --line-buffered -q 'Bienvenue'" +} diff --git a/vdn/networks.bak/k8s-bullseye/scripts/diag3 b/vdn/networks.bak/k8s-bullseye/scripts/diag3 new file mode 100644 index 0000000..f0f260e --- /dev/null +++ b/vdn/networks.bak/k8s-bullseye/scripts/diag3 @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +set -u + +DESC="Diag3." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + diag root@nomade \ + "Test Internet -> web :" \ + "timeout 1 lynx -dump societe 2>&1 | grep --line-buffered -q 'Bienvenue'" + + diag root@web \ + "Test filtrage sortie web" \ + "! timeout 1 nmap -p 22 nomade 2>1 | grep --line-buffered -q open" + +} diff --git a/vdn/networks.bak/k8s-bullseye/scripts/repairFirewall b/vdn/networks.bak/k8s-bullseye/scripts/repairFirewall new file mode 100755 index 0000000..e816f53 --- /dev/null +++ b/vdn/networks.bak/k8s-bullseye/scripts/repairFirewall @@ -0,0 +1,109 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +config() { + IP_SOCIETE_PUBLIC=$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) + vdn-ssh -t root@societe " +# net.ipv4.ip_forward=1 +sed -i -re 's/#(net.ipv4.ip_forward=1)/\1/g' /etc/sysctl.conf +sysctl -p + +cat << EOF > vide.sh +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat +EOF + +chmod 755 vide.sh + +cat << EOF > local-1.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local-1.sh + +cat << EOF > fermeDehors.sh +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + +iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT +iptables -A INPUT -m state --state RELATED -j ACCEPT + +iptables -A INPUT -i eth0 -j REJECT +EOF + +chmod 755 fermeDehors.sh + +cat << EOF > forward.sh +iptables -t nat -A PREROUTING -p tcp -d $IP_SOCIETE_PUBLIC --dport 80 -j DNAT --to 192.168.1.2 +EOF + +chmod 755 forward.sh + +cat << EOF > local.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward + +iptables -s 192.168.30.0/24 -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +iptables -s 192.168.1.2 -p tcp --dport 80 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 53 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 25 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh + +cat << EOF > fw-on.sh +#!/bin/sh + +/root/vide.sh +/root/fermeDehors.sh +/root/local.sh +/root/forward.sh +if [ -x /root/dns.sh ]; then + /root/dns.sh +fi +EOF + +chmod 755 fw-on.sh + +/root/fw-on.sh +" +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + config + + #sleep 1 + + #parallelDisablePause + #vdn-scripts testFirewall + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/k8s-bullseye/scripts/repairIPv6 b/vdn/networks.bak/k8s-bullseye/scripts/repairIPv6 new file mode 100755 index 0000000..8f8ac1b --- /dev/null +++ b/vdn/networks.bak/k8s-bullseye/scripts/repairIPv6 @@ -0,0 +1,86 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Nouvelle configuration IPv6 du réseau + tests" + +SYSTEMS="bigboss societe web" + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + +testIPv6() { + echo + echo "test link between web and bigboss (Unique local address)" + echo + + # réinitialise les interfaces + + vdn-ssh root@bigboss "ifconfig eth0 down ; ifconfig eth0 up" + vdn-ssh root@web "ifconfig eth0 down ; ifconfig eth0 up" + vdn-ssh root@societe " + ifconfig eth0 down ; ifconfig eth0 up + ifconfig eth1 down ; ifconfig eth1 up + ifconfig eth2 down ; ifconfig eth2 up + + echo 1 >/proc/sys/net/ipv6/conf/all/forwarding + " + + # Ajoute les adresses IPv6 "locales uniques" en utilisant le suffixe + # de l'adresse "lien local" + # + # * la DMZ (web) aura le préfixe fc01 + # * le réseau interne (bigboss) aura le préfixe fc00 + # + # La fonction routage IPv6 est activé sur société + # et les route par défaut sont fixées sur web et bigboss + # + # un ping6 de bigboss vers web valide la config. + + ipSocieteWeb=$(getIPv6 societe eth1) + ipSocieteWeb=$(echo $ipSocieteWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteWeb/64 dev eth1" + + ipSocieteBigboss=$(getIPv6 societe eth2) + ipSocieteBigboss=$(echo $ipSocieteBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteBigboss/64 dev eth2" + + ipWeb=$(getIPv6 web eth0) + ipWeb=$(echo $ipWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@web "ip -6 addr add $ipWeb/64 dev eth0" + + ipBigboss=$(getIPv6 bigboss eth0) + ipBigboss=$(echo $ipBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@bigboss "ip -6 addr add $ipBigboss/64 dev eth0" + + vdn-ssh root@web " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteWeb" + vdn-ssh root@bigboss " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteBigboss" + + vdn-ssh root@bigboss "ping6 -c 3 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + waitSsh $SYSTEMS + + testIPv6 + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/k8s-bullseye/scripts/testFirewall b/vdn/networks.bak/k8s-bullseye/scripts/testFirewall new file mode 100755 index 0000000..3806442 --- /dev/null +++ b/vdn/networks.bak/k8s-bullseye/scripts/testFirewall @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +run() { + setErrorHandler + echoStart + + parallelDisablePause + + vdn-scripts diag1 diag2 diag3 + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/k8s-bullseye/scripts/testIPv6 b/vdn/networks.bak/k8s-bullseye/scripts/testIPv6 new file mode 100755 index 0000000..c7729f8 --- /dev/null +++ b/vdn/networks.bak/k8s-bullseye/scripts/testIPv6 @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test ping6 IPv6 (à travers un routeur IPv6)" + +SYSTEMS="bigboss societe web" + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | head -n 1 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + + +testIPv6() { + + ipWeb=$(getIPv6 web eth0) + echo "Try ping6 (bigboss -> web)..." + vdn-ssh root@bigboss "ping6 -c 1 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + #requireSshGuests $SYSTEMS + #waitSsh $SYSTEMS + + testIPv6 + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/k8s-bullseye/scripts/testMyCompanyFirewall b/vdn/networks.bak/k8s-bullseye/scripts/testMyCompanyFirewall new file mode 100755 index 0000000..40d3cda --- /dev/null +++ b/vdn/networks.bak/k8s-bullseye/scripts/testMyCompanyFirewall @@ -0,0 +1,136 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +config() { + IP_SOCIETE_PUBLIC=$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) + vdn-ssh -t root@societe " +# net.ipv4.ip_forward=1 +sed -i -re 's/#(net.ipv4.ip_forward=1)/\1/g' /etc/sysctl.conf +sysctl -p + +cat << EOF > vide.sh +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat +EOF + +chmod 755 vide.sh + +cat << EOF > local-1.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local-1.sh + +cat << EOF > fermeDehors.sh +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + +iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT +iptables -A INPUT -m state --state RELATED -j ACCEPT + +iptables -A INPUT -i eth0 -j REJECT +EOF + +chmod 755 fermeDehors.sh + +cat << EOF > forward.sh +iptables -t nat -A PREROUTING -p tcp -d $IP_SOCIETE_PUBLIC --dport 80 -j DNAT --to 192.168.1.2 +EOF + +chmod 755 forward.sh + +cat << EOF > local.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward + +iptables -s 192.168.30.0/24 -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +iptables -s 192.168.1.2 -p tcp --dport 80 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 53 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 25 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh + +cat << EOF > fw-on.sh +#!/bin/sh + +/root/vide.sh +/root/fermeDehors.sh +/root/local.sh +/root/forward.sh +if [ -x /root/dns.sh ]; then + /root/dns.sh +fi +EOF + +chmod 755 fw-on.sh + +/root/fw-on.sh +" + + +} + +test() { + # tiny peut joindre bigboss (et vice versa). + + vdn-ssh root@bigboss "ping -c 1 tiny" + vdn-ssh root@tiny "ping -c 1 bigboss" + + # societe est joignable par toutes les machines (et vice versa) + + for i in $SYSTEMS; do + vdn-ssh root@$i "ping -c 1 societe" + done + + # lambda peut joindre nomade (et vice-versa) + + vdn-ssh root@lambda "ping -c 1 nomade" + vdn-ssh root@nomade "ping -c 1 lambda" + + # vérifiez que les serveurs apache2 de lambda, web et bigboss fonctionnent + + vdn-ssh root@bigboss "lynx -dump bigboss" | grep -q 'Bienvenue' + vdn-ssh root@web "lynx -dump web" | grep -q 'Bienvenue' + vdn-ssh root@lambda "lynx -dump lambda" | grep -q 'Bienvenue' +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + #set -x + + # Config + config + + # test + #test + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/migration-buster-bullseye/build b/vdn/networks.bak/migration-buster-bullseye/build new file mode 100644 index 0000000..9e2ec65 --- /dev/null +++ b/vdn/networks.bak/migration-buster-bullseye/build @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +build() { + local n + + n=buster + vdn-build $n + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n HDA "DebianBuster.disk" + vdn-config $n MODE "cow" + vdn-config $n MEMORY "2048" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE 1 + + + n=bullseye + vdn-build $n + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n HDA "DebianBullseye.disk" + vdn-config $n MODE "cow" + vdn-config $n MEMORY "2048" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE 1 + +} + diff --git a/vdn/networks.bak/migration-buster-bullseye/network.vdn b/vdn/networks.bak/migration-buster-bullseye/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/random-buster/build b/vdn/networks.bak/random-buster/build new file mode 100755 index 0000000..d998394 --- /dev/null +++ b/vdn/networks.bak/random-buster/build @@ -0,0 +1,80 @@ +#!/bin/bash -eu + +HOSTS="" + +proba() { + local n=$(($RANDOM%100)) + [ $n -lt $1 ] && return 0 || return 1 +} + +connect() { + local l="$(seq 1 $S | tr ' ' '\n' | sort -R | tr '\n' ' ')" + local n=$S + + echo "*** n=$n" + + NETWORKS="" + + proba 100 && { + s=$(echo $l | cut -d ' ' -f $n); n=$(($n-1)) + echo "(100) l:$l n:$n s:$s" + NETWORKS="$NETWORKS \$NET_$s" + + echo "192.168.$s.${NET[$s]} $1" >> hosts + NET[$s]=$((${NET[$s]}+1)) + + echo -e "" >> $1.interfaces + } + + proba 50 && { + s=$(echo $l | cut -d ' ' -f $n); n=$(($n-1)) + echo "(50) l:$l n:$n s:$s" + NETWORKS="$NETWORKS \$NET_$s" + echo "192.168.$s.${NET[$s]} $1" >> hosts + NET[$s]=$((${NET[$s]}+1)) + } + + proba 20 && { + s=$(echo $l | cut -d ' ' -f $n); n=$(($n-1)) + echo "(20) l:$l n:$n s:$s" + NETWORKS="$NETWORKS \$NET_$s" + echo "192.168.$s.${NET[$s]} $1" >> hosts + NET[$s]=$((${NET[$s]}+1)) + } +} + +build() { + local n + declare -a NET + + echo "PWD=$PWD" + + # Nombre de machines + + N=8 + + # Nombre de switchs + S=5 + + set -x + for i in $(seq 1 $S); do + NET[$i]=1 + done + set +x + + rm -f hosts + + i=1; + while [ $i -le $N ]; do + n=vm-$i + rm -f $n.interfaces + vdn-build $n + connect $n + echo "N=$NETWORKS" + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n NETWORKS "$NETWORKS" + vdn-config $n MEMORY "256" + i=$(($i+1)) + done +} + diff --git a/vdn/networks.bak/random-buster/hosts b/vdn/networks.bak/random-buster/hosts new file mode 100644 index 0000000..06951f8 --- /dev/null +++ b/vdn/networks.bak/random-buster/hosts @@ -0,0 +1,15 @@ +192.168.4.1 vm-1 +192.168.3.1 vm-2 +192.168.4.2 vm-2 +192.168.1.1 vm-2 +192.168.4.3 vm-3 +192.168.5.1 vm-3 +192.168.2.1 vm-4 +192.168.4.4 vm-4 +192.168.5.2 vm-5 +192.168.2.2 vm-5 +192.168.2.3 vm-6 +192.168.5.3 vm-6 +192.168.3.2 vm-7 +192.168.4.5 vm-8 +192.168.1.2 vm-8 diff --git a/vdn/networks.bak/random-buster/network.vdn b/vdn/networks.bak/random-buster/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/random-buster/vm-1.interfaces b/vdn/networks.bak/random-buster/vm-1.interfaces new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/vdn/networks.bak/random-buster/vm-1.interfaces @@ -0,0 +1 @@ + diff --git a/vdn/networks.bak/random-buster/vm-2.interfaces b/vdn/networks.bak/random-buster/vm-2.interfaces new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/vdn/networks.bak/random-buster/vm-2.interfaces @@ -0,0 +1 @@ + diff --git a/vdn/networks.bak/random-buster/vm-3.interfaces b/vdn/networks.bak/random-buster/vm-3.interfaces new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/vdn/networks.bak/random-buster/vm-3.interfaces @@ -0,0 +1 @@ + diff --git a/vdn/networks.bak/random-buster/vm-4.interfaces b/vdn/networks.bak/random-buster/vm-4.interfaces new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/vdn/networks.bak/random-buster/vm-4.interfaces @@ -0,0 +1 @@ + diff --git a/vdn/networks.bak/random-buster/vm-5.interfaces b/vdn/networks.bak/random-buster/vm-5.interfaces new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/vdn/networks.bak/random-buster/vm-5.interfaces @@ -0,0 +1 @@ + diff --git a/vdn/networks.bak/random-buster/vm-6.interfaces b/vdn/networks.bak/random-buster/vm-6.interfaces new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/vdn/networks.bak/random-buster/vm-6.interfaces @@ -0,0 +1 @@ + diff --git a/vdn/networks.bak/random-buster/vm-7.interfaces b/vdn/networks.bak/random-buster/vm-7.interfaces new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/vdn/networks.bak/random-buster/vm-7.interfaces @@ -0,0 +1 @@ + diff --git a/vdn/networks.bak/random-buster/vm-8.interfaces b/vdn/networks.bak/random-buster/vm-8.interfaces new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/vdn/networks.bak/random-buster/vm-8.interfaces @@ -0,0 +1 @@ + diff --git a/vdn/networks.bak/routing-ospf-bookworm/build b/vdn/networks.bak/routing-ospf-bookworm/build new file mode 100644 index 0000000..df17e35 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/build @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +common() { + local n + + n=$1 + vdn-config $n GUEST_SYS "debian/bookworm" + vdn-config $n MODE "tgz2" + vdn-config $n MEMORY "384" + vdn-config $n HDA "DebianBookworm.disk" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE 0 +} + +commonRouters() { + local n + + n=$1 + common $n + vdn-config -a $n EXTRA_SERVICES "zebra ripd ospfd" +} + +commonStations() { + local n + + n=$1 + common $n + vdn-config -a $n EXTRA_SERVICES "" +} + +build() { + local n + + n=s1; vdn-build $n; commonStations $n + vdn-config $n NETWORKS "\$NET_1#192.168.1.2" + vdn-config $n MEMORY "512" + + n=s2; vdn-build $n; commonStations $n + vdn-config $n NETWORKS "\$NET_4#192.168.6.2" + + n=r1; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "\$NET_1#192.168.1.1 \$NET_2#192.168.2.1 \$NET_5#192.168.3.1" + + n=r2; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "\$NET_2#192.168.2.2 \$NET_3#192.168.4.1 \$NET_6#192.168.5.1" + + n=r3; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "\$NET_4#192.168.6.2 \$NET_3#192.168.4.2 \$NET_7#192.168.7.1" + + n=r4; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "\$NET_5#192.168.3.2 \$NET_8#192.168.8.1" + + n=r5; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "\$NET_8#192.168.8.2 \$NET_6#192.168.5.2 \$NET_7#192.168.7.2" + +} + diff --git a/vdn/networks.bak/routing-ospf-bookworm/graph.svgz b/vdn/networks.bak/routing-ospf-bookworm/graph.svgz new file mode 100644 index 0000000..335635b Binary files /dev/null and b/vdn/networks.bak/routing-ospf-bookworm/graph.svgz differ diff --git a/vdn/networks.bak/routing-ospf-bookworm/net.svgz b/vdn/networks.bak/routing-ospf-bookworm/net.svgz new file mode 100644 index 0000000..8f5cccb Binary files /dev/null and b/vdn/networks.bak/routing-ospf-bookworm/net.svgz differ diff --git a/vdn/networks.bak/routing-ospf-bookworm/network.vdn b/vdn/networks.bak/routing-ospf-bookworm/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/routing-ospf-bookworm/r1.conf b/vdn/networks.bak/routing-ospf-bookworm/r1.conf new file mode 100644 index 0000000..03415d8 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/r1.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=2 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_1#192.168.1.1 $NET_2#192.168.2.1 $NET_5#192.168.3.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-bookworm/r2.conf b/vdn/networks.bak/routing-ospf-bookworm/r2.conf new file mode 100644 index 0000000..3b607da --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/r2.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=3 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_2#192.168.2.2 $NET_3#192.168.4.1 $NET_6#192.168.5.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-bookworm/r3.conf b/vdn/networks.bak/routing-ospf-bookworm/r3.conf new file mode 100644 index 0000000..0038b2a --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/r3.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=4 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_4#192.168.6.2 $NET_3#192.168.4.2 $NET_7#192.168.7.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-bookworm/r4.conf b/vdn/networks.bak/routing-ospf-bookworm/r4.conf new file mode 100644 index 0000000..0293e1a --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/r4.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=5 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_5#192.168.3.2 $NET_8#192.168.8.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-bookworm/r5.conf b/vdn/networks.bak/routing-ospf-bookworm/r5.conf new file mode 100644 index 0000000..ee0de79 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/r5.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=6 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_8#192.168.8.2 $NET_6#192.168.5.2 $NET_7#192.168.7.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-bookworm/s1.conf b/vdn/networks.bak/routing-ospf-bookworm/s1.conf new file mode 100644 index 0000000..7163529 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/s1.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="512" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=0 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_1#192.168.1.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" " + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-bookworm/s2.conf b/vdn/networks.bak/routing-ospf-bookworm/s2.conf new file mode 100644 index 0000000..0748ac7 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/s2.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=1 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_4#192.168.6.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" " + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-bookworm/scripts/common.sh b/vdn/networks.bak/routing-ospf-bookworm/scripts/common.sh new file mode 100644 index 0000000..bf29adc --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/scripts/common.sh @@ -0,0 +1,140 @@ +#!/usr/bin/bash + +configFrr() { + + echo "Configure Frr zebra." + case $1 in + r1) INTERFACES="eth1 eth2"; NETS="1 2 3"; ID=1 ;; + r2) INTERFACES="eth0 eth1 eth2"; NETS="2 4 5"; ID=2;; + r3) INTERFACES="eth1 eth2"; NETS="4 6 7"; ID=3;; + r4) INTERFACES="eth0 eth1"; NETS="3 8"; ID=4;; + r5) INTERFACES="eth0 eth1 eth2"; NETS="5 7 8"; ID=5;; + esac + vdn-ssh root@$1 " + #sed -i -re 's/^(zebra|ospfd)=.*$/\1=yes/g' /etc/quagga/daemons + #set -x + + [ ! -e /etc/quaga/vtysh.conf ] && cp /usr/share/doc/quagga-core/examples/vtysh.conf.sample /etc/quagga/vtysh.conf + + cat << EOF > /etc/quagga/zebra.conf +!/etc/quagga/zebra.conf +hostname router-zebra +password zebra* +log file /var/log/quagga/zebra.log +EOF + + cat << EOF > /etc/quagga/ospfd.conf +!/etc/quagga/ospfd.conf +hostname router-ospfd +password ospfd* +log file /var/log/quagga/ospfd.log + +EOF + +for i in $INTERFACES; do + cat << EOF >> /etc/quagga/ospfd.conf +interface \$i + ip ospf hello-interval 5 + ip ospf dead-interval 20 +EOF +done +cat << EOF >> /etc/quagga/ospfd.conf + +router ospf +ospf router-id 1.1.1.$ID +EOF + +for i in $NETS; do + echo network 192.168.\$i.0/24 area 0 >> /etc/quagga/ospfd.conf +done + + + #cp /usr/share/doc/quagga/examples/vtysh.conf.sample /etc/quagga/vtysh.conf + #chown quagga:quagga /etc/quagga/zebra.conf /etc/quagga/ospfd.conf + #chown :quaggavty /etc/quagga/vtysh.conf + + systemctl enable zebra + systemctl restart zebra + systemctl enable ospfd + systemctl restart ospfd + " +} + +configQuagga() { + + echo "Configure Quagga Zebra." + case $1 in + r1) INTERFACES="eth1 eth2"; NETS="1 2 3"; ID=1 ;; + r2) INTERFACES="eth0 eth1 eth2"; NETS="2 4 5"; ID=2;; + r3) INTERFACES="eth1 eth2"; NETS="4 6 7"; ID=3;; + r4) INTERFACES="eth0 eth1"; NETS="3 8"; ID=4;; + r5) INTERFACES="eth0 eth1 eth2"; NETS="5 7 8"; ID=5;; + esac + vdn-ssh root@$1 " + #sed -i -re 's/^(zebra|ospfd)=.*$/\1=yes/g' /etc/quagga/daemons + #set -x + + [ ! -e /etc/quaga/vtysh.conf ] && cp /usr/share/doc/quagga-core/examples/vtysh.conf.sample /etc/quagga/vtysh.conf + + cat << EOF > /etc/quagga/zebra.conf +!/etc/quagga/zebra.conf +hostname router-zebra +password zebra* +log file /var/log/quagga/zebra.log +EOF + + cat << EOF > /etc/quagga/ospfd.conf +!/etc/quagga/ospfd.conf +hostname router-ospfd +password ospfd* +log file /var/log/quagga/ospfd.log + +EOF + +for i in $INTERFACES; do + cat << EOF >> /etc/quagga/ospfd.conf +interface \$i + ip ospf hello-interval 5 + ip ospf dead-interval 20 +EOF +done + +cat << EOF >> /etc/quagga/ospfd.conf + +router ospf +ospf router-id 1.1.1.$ID +EOF + +for i in $NETS; do + echo network 192.168.\$i.0/24 area 0 >> /etc/quagga/ospfd.conf +done + + + #cp /usr/share/doc/quagga/examples/vtysh.conf.sample /etc/quagga/vtysh.conf + #chown quagga:quagga /etc/quagga/zebra.conf /etc/quagga/ospfd.conf + #chown :quaggavty /etc/quagga/vtysh.conf + + systemctl enable zebra + systemctl restart zebra + systemctl enable ospfd + systemctl restart ospfd + " +} + +configBase() { + + setErrorHandler + echoStart + + #setIpv6WorkAround $1 + setHostname $1 + +} + +endConfig() { + unsetErrorHandler + echoDone +} + + + diff --git a/vdn/networks.bak/routing-ospf-bookworm/scripts/configAll b/vdn/networks.bak/routing-ospf-bookworm/scripts/configAll new file mode 100755 index 0000000..cf95374 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/scripts/configAll @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +DESC="Configuration en routage OSPF." + +run() { + requireSshGuests $SYSTEMS + + L="" + for s in $SYSTEMS; do + f="config$(echo $s | tr [:lower:] [:upper:])" + L="$L $f" + done + + vdn-scripts $L + +} + + + + + diff --git a/vdn/networks.bak/routing-ospf-bookworm/scripts/configR1 b/vdn/networks.bak/routing-ospf-bookworm/scripts/configR1 new file mode 100644 index 0000000..c6715b8 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/scripts/configR1 @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +DESC="Configuration de r1." + +run() { + . common.sh + + name="r1" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r1 +127.0.0.1 localhost +192.168.1.1 r1 +192.168.1.2 s1 +192.168.2.2 r2 +192.168.4.2 r3 +192.168.3.2 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r1 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.2.1 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.3.1 + netmask 255.255.255.0 + +EOF + + configQuagga $name + + endConfig +} + diff --git a/vdn/networks.bak/routing-ospf-bookworm/scripts/configR2 b/vdn/networks.bak/routing-ospf-bookworm/scripts/configR2 new file mode 100644 index 0000000..acfeabe --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/scripts/configR2 @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +DESC="Configuration de r2." + +run() { + . common.sh + + name="r2" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r2 +127.0.0.1 localhost +192.168.2.2 r2 +192.168.1.2 s1 +192.168.2.1 r1 +192.168.4.2 r3 +192.168.8.1 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r2 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.2.2 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.4.1 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.5.1 + netmask 255.255.255.0 + +EOF + + endConfig +} + diff --git a/vdn/networks.bak/routing-ospf-bookworm/scripts/configR3 b/vdn/networks.bak/routing-ospf-bookworm/scripts/configR3 new file mode 100644 index 0000000..b116d67 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/scripts/configR3 @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +DESC="Configuration de r3." + +run() { + . common.sh + + name="r3" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r3 +127.0.0.1 localhost +192.168.4.2 r3 +192.168.1.2 s1 +192.168.4.1 r2 +192.168.2.1 r1 +192.168.8.1 r4 +192.168.7.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r3 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.6.1 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.4.2 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.7.1 + netmask 255.255.255.0 + +iface eth3 inet static + post-up route add default gw 10.0.2.2 + +EOF + + configQuagga $name + + endConfig +} + diff --git a/vdn/networks.bak/routing-ospf-bookworm/scripts/configR4 b/vdn/networks.bak/routing-ospf-bookworm/scripts/configR4 new file mode 100644 index 0000000..86a1ed6 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/scripts/configR4 @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +DESC="Configuration de r4." + +run() { + . common.sh + + name="r4" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r4 +127.0.0.1 localhost +192.168.3.2 r4 +192.168.1.2 s1 +192.168.3.1 r1 +192.168.5.1 r2 +192.168.7.1 r3 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r4 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.2 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.8.1 + netmask 255.255.255.0 + +EOF + + configQuagga $name + + endConfig +} + diff --git a/vdn/networks.bak/routing-ospf-bookworm/scripts/configR5 b/vdn/networks.bak/routing-ospf-bookworm/scripts/configR5 new file mode 100644 index 0000000..5cb1fa4 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/scripts/configR5 @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +DESC="Configuration de r5." + +run() { + . common.sh + + name="r5" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r5 +127.0.0.1 localhost +192.168.5.2 r5 +192.168.1.2 s1 +192.168.3.1 r1 +192.168.5.2 r2 +192.168.7.2 r3 +192.168.8.2 r4 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r5 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.8.2 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.5.2 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.7.2 + netmask 255.255.255.0 + +EOF + + configQuagga $name + + endConfig +} + diff --git a/vdn/networks.bak/routing-ospf-bookworm/scripts/configS1 b/vdn/networks.bak/routing-ospf-bookworm/scripts/configS1 new file mode 100644 index 0000000..621c481 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/scripts/configS1 @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +DESC="Configuration de s1." + +run() { + . common.sh + + name="s1" + + startAndWaitSsh $name + + configBase $name + + cat << EOF | setHosts s1 +127.0.0.1 localhost +192.168.1.2 s1 +192.168.1.1 r1 +192.168.2.2 r2 +192.168.4.2 r3 +192.168.3.2 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces s1 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 + +EOF + + endConfig +} + diff --git a/vdn/networks.bak/routing-ospf-bookworm/scripts/configS2 b/vdn/networks.bak/routing-ospf-bookworm/scripts/configS2 new file mode 100644 index 0000000..9962d74 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/scripts/configS2 @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +DESC="Configuration de s2." + +run() { + + . common.sh + + name="s2" + + startAndWaitSsh $name + + configBase $name + + cat << EOF | setHosts s2 +127.0.0.1 localhost +192.168.6.2 s2 +192.168.1.2 s1 +192.168.2.1 r1 +192.168.4.1 r2 +192.168.6.1 r3 +192.168.8.1 r4 +192.168.7.1 r5 +EOF + + cat << EOF | setInterfaces s2 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.6.2 + netmask 255.255.255.0 + gateway 192.168.6.1 +EOF + + endConfig + +} + diff --git a/vdn/networks.bak/routing-ospf-bookworm/scripts/ping-all b/vdn/networks.bak/routing-ospf-bookworm/scripts/ping-all new file mode 100755 index 0000000..65e2364 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/scripts/ping-all @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +DESC="Ping entre tous les couples de machines." + +run() { + + PAUSE=1 + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + for i in $SYSTEMS; do + for j in $SYSTEMS; do + echo "$i : ping $j" + vdn-ssh -t root@$i "ping -c 1 $j" || exit 1 + done + done + + unsetErrorHandler + echoDone + + pauseRaw + +} + diff --git a/vdn/networks.bak/routing-ospf-bookworm/scripts/ping-all-without-r2 b/vdn/networks.bak/routing-ospf-bookworm/scripts/ping-all-without-r2 new file mode 100755 index 0000000..40f77ef --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/scripts/ping-all-without-r2 @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +DESC="Ping entre tous les couples de machines sauf r2." + +SYSTEMS="s1 s2 r1 r3 r4 r5" + +run() { + + PAUSE=1 + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + + #requireSshGuests $SYSTEMS + + for i in $SYSTEMS; do + for j in $SYSTEMS; do + echo "$i : ping $j" + vdn-ssh -t root@$i "ping -c 1 $j" || exit 1 + done + done + + unsetErrorHandler + echoDone + pauseRaw + +} + diff --git a/vdn/networks.bak/routing-ospf-bookworm/scripts/repairAll b/vdn/networks.bak/routing-ospf-bookworm/scripts/repairAll new file mode 100644 index 0000000..a654ffd --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/scripts/repairAll @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +DESC="Configuration routage dynamique pour r2." + +run() { + requireSshGuests r2 + + PAUSE=1 + + vdn-scripts repairR2 + + echo "Wait for update (30 s)..." + sleep 30 + +} + + + + + diff --git a/vdn/networks.bak/routing-ospf-bookworm/scripts/repairR2 b/vdn/networks.bak/routing-ospf-bookworm/scripts/repairR2 new file mode 100644 index 0000000..478766a --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/scripts/repairR2 @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +DESC="Configuration de r2." + +run() { + + . common.sh + + name="r2" + + startAndWaitSsh $name + + configQuagga $name + +} + diff --git a/vdn/networks.bak/routing-ospf-bookworm/scripts/testWithR2 b/vdn/networks.bak/routing-ospf-bookworm/scripts/testWithR2 new file mode 100644 index 0000000..b50844b --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/scripts/testWithR2 @@ -0,0 +1,8 @@ +#!/bin/bash + +DESC="Test s1 -> s2 (via r2)." + +run() { + diag root@s1 "Test s1 -> s2 (via r2) :" 'traceroute s2 | grep -q r2' +} + diff --git a/vdn/networks.bak/routing-ospf-bookworm/scripts/testWithoutR2 b/vdn/networks.bak/routing-ospf-bookworm/scripts/testWithoutR2 new file mode 100644 index 0000000..deaf6ef --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bookworm/scripts/testWithoutR2 @@ -0,0 +1,8 @@ +#!/bin/bash + +DESC="Configuration de r1." + +run() { + diag root@s1 "Test s1 -> s2 :" 'traceroute s2' +} + diff --git a/vdn/networks.bak/routing-ospf-bullseye/build b/vdn/networks.bak/routing-ospf-bullseye/build new file mode 100644 index 0000000..325b484 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/build @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +common() { + local n + + n=$1 + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n MODE "tgz2" + vdn-config $n MEMORY "384" + vdn-config $n HDA "DebianBullseye.disk" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE 0 +} + +commonRouters() { + local n + + n=$1 + common $n + vdn-config -a $n EXTRA_SERVICES "zebra ripd ospfd bird" +} + +commonStations() { + local n + + n=$1 + common $n + vdn-config -a $n EXTRA_SERVICES "" +} + +build() { + local n + + n=s1; vdn-build $n; commonStations $n + vdn-config $n NETWORKS "\$NET_1#192.168.1.2" + vdn-config $n MEMORY "512" + + n=s2; vdn-build $n; commonStations $n + vdn-config $n NETWORKS "\$NET_4#192.168.6.2" + + n=r1; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "\$NET_1#192.168.1.1 \$NET_2#192.168.2.1 \$NET_5#192.168.3.1" + + n=r2; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "\$NET_2#192.168.2.2 \$NET_3#192.168.4.1 \$NET_6#192.168.5.1" + + n=r3; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "\$NET_4#192.168.6.2 \$NET_3#192.168.4.2 \$NET_7#192.168.7.1" + + n=r4; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "\$NET_5#192.168.3.2 \$NET_8#192.168.8.1" + + n=r5; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "\$NET_8#192.168.8.2 \$NET_6#192.168.5.2 \$NET_7#192.168.7.2" + +} + diff --git a/vdn/networks.bak/routing-ospf-bullseye/graph.svgz b/vdn/networks.bak/routing-ospf-bullseye/graph.svgz new file mode 100644 index 0000000..8796e11 Binary files /dev/null and b/vdn/networks.bak/routing-ospf-bullseye/graph.svgz differ diff --git a/vdn/networks.bak/routing-ospf-bullseye/net.svgz b/vdn/networks.bak/routing-ospf-bullseye/net.svgz new file mode 100644 index 0000000..8f5cccb Binary files /dev/null and b/vdn/networks.bak/routing-ospf-bullseye/net.svgz differ diff --git a/vdn/networks.bak/routing-ospf-bullseye/network.vdn b/vdn/networks.bak/routing-ospf-bullseye/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/routing-ospf-bullseye/r1.conf b/vdn/networks.bak/routing-ospf-bullseye/r1.conf new file mode 100644 index 0000000..c6be98d --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/r1.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=2 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_1#192.168.1.1 $NET_2#192.168.2.1 $NET_5#192.168.3.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd bird" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-bullseye/r2.conf b/vdn/networks.bak/routing-ospf-bullseye/r2.conf new file mode 100644 index 0000000..1ea4a72 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/r2.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=3 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_2#192.168.2.2 $NET_3#192.168.4.1 $NET_6#192.168.5.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd bird" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-bullseye/r3.conf b/vdn/networks.bak/routing-ospf-bullseye/r3.conf new file mode 100644 index 0000000..7fd4722 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/r3.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=4 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_4#192.168.6.2 $NET_3#192.168.4.2 $NET_7#192.168.7.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd bird" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-bullseye/r4.conf b/vdn/networks.bak/routing-ospf-bullseye/r4.conf new file mode 100644 index 0000000..96e9080 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/r4.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=5 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_5#192.168.3.2 $NET_8#192.168.8.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd bird" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-bullseye/r5.conf b/vdn/networks.bak/routing-ospf-bullseye/r5.conf new file mode 100644 index 0000000..36a1876 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/r5.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=6 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_8#192.168.8.2 $NET_6#192.168.5.2 $NET_7#192.168.7.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd bird" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-bullseye/s1.conf b/vdn/networks.bak/routing-ospf-bullseye/s1.conf new file mode 100644 index 0000000..437d4b3 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/s1.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="512" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=0 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_1#192.168.1.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" " + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-bullseye/s2.conf b/vdn/networks.bak/routing-ospf-bullseye/s2.conf new file mode 100644 index 0000000..17d7845 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/s2.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=1 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_4#192.168.6.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" " + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-bullseye/scripts/common.sh b/vdn/networks.bak/routing-ospf-bullseye/scripts/common.sh new file mode 100644 index 0000000..bf29adc --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/scripts/common.sh @@ -0,0 +1,140 @@ +#!/usr/bin/bash + +configFrr() { + + echo "Configure Frr zebra." + case $1 in + r1) INTERFACES="eth1 eth2"; NETS="1 2 3"; ID=1 ;; + r2) INTERFACES="eth0 eth1 eth2"; NETS="2 4 5"; ID=2;; + r3) INTERFACES="eth1 eth2"; NETS="4 6 7"; ID=3;; + r4) INTERFACES="eth0 eth1"; NETS="3 8"; ID=4;; + r5) INTERFACES="eth0 eth1 eth2"; NETS="5 7 8"; ID=5;; + esac + vdn-ssh root@$1 " + #sed -i -re 's/^(zebra|ospfd)=.*$/\1=yes/g' /etc/quagga/daemons + #set -x + + [ ! -e /etc/quaga/vtysh.conf ] && cp /usr/share/doc/quagga-core/examples/vtysh.conf.sample /etc/quagga/vtysh.conf + + cat << EOF > /etc/quagga/zebra.conf +!/etc/quagga/zebra.conf +hostname router-zebra +password zebra* +log file /var/log/quagga/zebra.log +EOF + + cat << EOF > /etc/quagga/ospfd.conf +!/etc/quagga/ospfd.conf +hostname router-ospfd +password ospfd* +log file /var/log/quagga/ospfd.log + +EOF + +for i in $INTERFACES; do + cat << EOF >> /etc/quagga/ospfd.conf +interface \$i + ip ospf hello-interval 5 + ip ospf dead-interval 20 +EOF +done +cat << EOF >> /etc/quagga/ospfd.conf + +router ospf +ospf router-id 1.1.1.$ID +EOF + +for i in $NETS; do + echo network 192.168.\$i.0/24 area 0 >> /etc/quagga/ospfd.conf +done + + + #cp /usr/share/doc/quagga/examples/vtysh.conf.sample /etc/quagga/vtysh.conf + #chown quagga:quagga /etc/quagga/zebra.conf /etc/quagga/ospfd.conf + #chown :quaggavty /etc/quagga/vtysh.conf + + systemctl enable zebra + systemctl restart zebra + systemctl enable ospfd + systemctl restart ospfd + " +} + +configQuagga() { + + echo "Configure Quagga Zebra." + case $1 in + r1) INTERFACES="eth1 eth2"; NETS="1 2 3"; ID=1 ;; + r2) INTERFACES="eth0 eth1 eth2"; NETS="2 4 5"; ID=2;; + r3) INTERFACES="eth1 eth2"; NETS="4 6 7"; ID=3;; + r4) INTERFACES="eth0 eth1"; NETS="3 8"; ID=4;; + r5) INTERFACES="eth0 eth1 eth2"; NETS="5 7 8"; ID=5;; + esac + vdn-ssh root@$1 " + #sed -i -re 's/^(zebra|ospfd)=.*$/\1=yes/g' /etc/quagga/daemons + #set -x + + [ ! -e /etc/quaga/vtysh.conf ] && cp /usr/share/doc/quagga-core/examples/vtysh.conf.sample /etc/quagga/vtysh.conf + + cat << EOF > /etc/quagga/zebra.conf +!/etc/quagga/zebra.conf +hostname router-zebra +password zebra* +log file /var/log/quagga/zebra.log +EOF + + cat << EOF > /etc/quagga/ospfd.conf +!/etc/quagga/ospfd.conf +hostname router-ospfd +password ospfd* +log file /var/log/quagga/ospfd.log + +EOF + +for i in $INTERFACES; do + cat << EOF >> /etc/quagga/ospfd.conf +interface \$i + ip ospf hello-interval 5 + ip ospf dead-interval 20 +EOF +done + +cat << EOF >> /etc/quagga/ospfd.conf + +router ospf +ospf router-id 1.1.1.$ID +EOF + +for i in $NETS; do + echo network 192.168.\$i.0/24 area 0 >> /etc/quagga/ospfd.conf +done + + + #cp /usr/share/doc/quagga/examples/vtysh.conf.sample /etc/quagga/vtysh.conf + #chown quagga:quagga /etc/quagga/zebra.conf /etc/quagga/ospfd.conf + #chown :quaggavty /etc/quagga/vtysh.conf + + systemctl enable zebra + systemctl restart zebra + systemctl enable ospfd + systemctl restart ospfd + " +} + +configBase() { + + setErrorHandler + echoStart + + #setIpv6WorkAround $1 + setHostname $1 + +} + +endConfig() { + unsetErrorHandler + echoDone +} + + + diff --git a/vdn/networks.bak/routing-ospf-bullseye/scripts/configAll b/vdn/networks.bak/routing-ospf-bullseye/scripts/configAll new file mode 100755 index 0000000..cf95374 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/scripts/configAll @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +DESC="Configuration en routage OSPF." + +run() { + requireSshGuests $SYSTEMS + + L="" + for s in $SYSTEMS; do + f="config$(echo $s | tr [:lower:] [:upper:])" + L="$L $f" + done + + vdn-scripts $L + +} + + + + + diff --git a/vdn/networks.bak/routing-ospf-bullseye/scripts/configR1 b/vdn/networks.bak/routing-ospf-bullseye/scripts/configR1 new file mode 100644 index 0000000..c6715b8 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/scripts/configR1 @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +DESC="Configuration de r1." + +run() { + . common.sh + + name="r1" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r1 +127.0.0.1 localhost +192.168.1.1 r1 +192.168.1.2 s1 +192.168.2.2 r2 +192.168.4.2 r3 +192.168.3.2 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r1 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.2.1 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.3.1 + netmask 255.255.255.0 + +EOF + + configQuagga $name + + endConfig +} + diff --git a/vdn/networks.bak/routing-ospf-bullseye/scripts/configR2 b/vdn/networks.bak/routing-ospf-bullseye/scripts/configR2 new file mode 100644 index 0000000..acfeabe --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/scripts/configR2 @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +DESC="Configuration de r2." + +run() { + . common.sh + + name="r2" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r2 +127.0.0.1 localhost +192.168.2.2 r2 +192.168.1.2 s1 +192.168.2.1 r1 +192.168.4.2 r3 +192.168.8.1 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r2 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.2.2 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.4.1 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.5.1 + netmask 255.255.255.0 + +EOF + + endConfig +} + diff --git a/vdn/networks.bak/routing-ospf-bullseye/scripts/configR3 b/vdn/networks.bak/routing-ospf-bullseye/scripts/configR3 new file mode 100644 index 0000000..b116d67 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/scripts/configR3 @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +DESC="Configuration de r3." + +run() { + . common.sh + + name="r3" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r3 +127.0.0.1 localhost +192.168.4.2 r3 +192.168.1.2 s1 +192.168.4.1 r2 +192.168.2.1 r1 +192.168.8.1 r4 +192.168.7.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r3 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.6.1 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.4.2 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.7.1 + netmask 255.255.255.0 + +iface eth3 inet static + post-up route add default gw 10.0.2.2 + +EOF + + configQuagga $name + + endConfig +} + diff --git a/vdn/networks.bak/routing-ospf-bullseye/scripts/configR4 b/vdn/networks.bak/routing-ospf-bullseye/scripts/configR4 new file mode 100644 index 0000000..86a1ed6 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/scripts/configR4 @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +DESC="Configuration de r4." + +run() { + . common.sh + + name="r4" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r4 +127.0.0.1 localhost +192.168.3.2 r4 +192.168.1.2 s1 +192.168.3.1 r1 +192.168.5.1 r2 +192.168.7.1 r3 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r4 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.2 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.8.1 + netmask 255.255.255.0 + +EOF + + configQuagga $name + + endConfig +} + diff --git a/vdn/networks.bak/routing-ospf-bullseye/scripts/configR5 b/vdn/networks.bak/routing-ospf-bullseye/scripts/configR5 new file mode 100644 index 0000000..5cb1fa4 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/scripts/configR5 @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +DESC="Configuration de r5." + +run() { + . common.sh + + name="r5" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r5 +127.0.0.1 localhost +192.168.5.2 r5 +192.168.1.2 s1 +192.168.3.1 r1 +192.168.5.2 r2 +192.168.7.2 r3 +192.168.8.2 r4 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r5 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.8.2 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.5.2 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.7.2 + netmask 255.255.255.0 + +EOF + + configQuagga $name + + endConfig +} + diff --git a/vdn/networks.bak/routing-ospf-bullseye/scripts/configS1 b/vdn/networks.bak/routing-ospf-bullseye/scripts/configS1 new file mode 100644 index 0000000..621c481 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/scripts/configS1 @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +DESC="Configuration de s1." + +run() { + . common.sh + + name="s1" + + startAndWaitSsh $name + + configBase $name + + cat << EOF | setHosts s1 +127.0.0.1 localhost +192.168.1.2 s1 +192.168.1.1 r1 +192.168.2.2 r2 +192.168.4.2 r3 +192.168.3.2 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces s1 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 + +EOF + + endConfig +} + diff --git a/vdn/networks.bak/routing-ospf-bullseye/scripts/configS2 b/vdn/networks.bak/routing-ospf-bullseye/scripts/configS2 new file mode 100644 index 0000000..9962d74 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/scripts/configS2 @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +DESC="Configuration de s2." + +run() { + + . common.sh + + name="s2" + + startAndWaitSsh $name + + configBase $name + + cat << EOF | setHosts s2 +127.0.0.1 localhost +192.168.6.2 s2 +192.168.1.2 s1 +192.168.2.1 r1 +192.168.4.1 r2 +192.168.6.1 r3 +192.168.8.1 r4 +192.168.7.1 r5 +EOF + + cat << EOF | setInterfaces s2 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.6.2 + netmask 255.255.255.0 + gateway 192.168.6.1 +EOF + + endConfig + +} + diff --git a/vdn/networks.bak/routing-ospf-bullseye/scripts/ping-all b/vdn/networks.bak/routing-ospf-bullseye/scripts/ping-all new file mode 100755 index 0000000..65e2364 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/scripts/ping-all @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +DESC="Ping entre tous les couples de machines." + +run() { + + PAUSE=1 + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + for i in $SYSTEMS; do + for j in $SYSTEMS; do + echo "$i : ping $j" + vdn-ssh -t root@$i "ping -c 1 $j" || exit 1 + done + done + + unsetErrorHandler + echoDone + + pauseRaw + +} + diff --git a/vdn/networks.bak/routing-ospf-bullseye/scripts/ping-all-without-r2 b/vdn/networks.bak/routing-ospf-bullseye/scripts/ping-all-without-r2 new file mode 100755 index 0000000..40f77ef --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/scripts/ping-all-without-r2 @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +DESC="Ping entre tous les couples de machines sauf r2." + +SYSTEMS="s1 s2 r1 r3 r4 r5" + +run() { + + PAUSE=1 + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + + #requireSshGuests $SYSTEMS + + for i in $SYSTEMS; do + for j in $SYSTEMS; do + echo "$i : ping $j" + vdn-ssh -t root@$i "ping -c 1 $j" || exit 1 + done + done + + unsetErrorHandler + echoDone + pauseRaw + +} + diff --git a/vdn/networks.bak/routing-ospf-bullseye/scripts/repairAll b/vdn/networks.bak/routing-ospf-bullseye/scripts/repairAll new file mode 100644 index 0000000..a654ffd --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/scripts/repairAll @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +DESC="Configuration routage dynamique pour r2." + +run() { + requireSshGuests r2 + + PAUSE=1 + + vdn-scripts repairR2 + + echo "Wait for update (30 s)..." + sleep 30 + +} + + + + + diff --git a/vdn/networks.bak/routing-ospf-bullseye/scripts/repairR2 b/vdn/networks.bak/routing-ospf-bullseye/scripts/repairR2 new file mode 100644 index 0000000..478766a --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/scripts/repairR2 @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +DESC="Configuration de r2." + +run() { + + . common.sh + + name="r2" + + startAndWaitSsh $name + + configQuagga $name + +} + diff --git a/vdn/networks.bak/routing-ospf-bullseye/scripts/testWithR2 b/vdn/networks.bak/routing-ospf-bullseye/scripts/testWithR2 new file mode 100644 index 0000000..b50844b --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/scripts/testWithR2 @@ -0,0 +1,8 @@ +#!/bin/bash + +DESC="Test s1 -> s2 (via r2)." + +run() { + diag root@s1 "Test s1 -> s2 (via r2) :" 'traceroute s2 | grep -q r2' +} + diff --git a/vdn/networks.bak/routing-ospf-bullseye/scripts/testWithoutR2 b/vdn/networks.bak/routing-ospf-bullseye/scripts/testWithoutR2 new file mode 100644 index 0000000..deaf6ef --- /dev/null +++ b/vdn/networks.bak/routing-ospf-bullseye/scripts/testWithoutR2 @@ -0,0 +1,8 @@ +#!/bin/bash + +DESC="Configuration de r1." + +run() { + diag root@s1 "Test s1 -> s2 :" 'traceroute s2' +} + diff --git a/vdn/networks.bak/routing-ospf-buster/build b/vdn/networks.bak/routing-ospf-buster/build new file mode 100644 index 0000000..da442fa --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/build @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +common() { + local n + + n=$1 + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n MODE "tgz2" + vdn-config $n MEMORY "384" + vdn-config $n HDA "DebianBuster.disk" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE 0 +} + +commonRouters() { + local n + + n=$1 + common $n + vdn-config -a $n EXTRA_SERVICES "zebra ripd ospfd" +} + +commonStations() { + local n + + n=$1 + common $n + vdn-config -a $n EXTRA_SERVICES "" +} + +build() { + local n + + n=s1; vdn-build $n; commonStations $n + vdn-config $n NETWORKS "NET_1#192.168.1.2" + vdn-config $n MEMORY "512" + + n=s2; vdn-build $n; commonStations $n + vdn-config $n NETWORKS "NET_4#192.168.6.2" + + n=r1; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_1#192.168.1.1 NET_2#192.168.2.1 NET_5#192.168.3.1" + + n=r2; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_2#192.168.2.2 NET_3#192.168.4.1 NET_6#192.168.5.1" + + n=r3; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_4#192.168.6.2 NET_3#192.168.4.2 NET_7#192.168.7.1" + + n=r4; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_5#192.168.3.2 NET_8#192.168.8.1" + + n=r5; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_8#192.168.8.2 NET_6#192.168.5.2 NET_7#192.168.7.2" + +} + diff --git a/vdn/networks.bak/routing-ospf-buster/graph.svgz b/vdn/networks.bak/routing-ospf-buster/graph.svgz new file mode 100644 index 0000000..d9bfa5e Binary files /dev/null and b/vdn/networks.bak/routing-ospf-buster/graph.svgz differ diff --git a/vdn/networks.bak/routing-ospf-buster/net.svgz b/vdn/networks.bak/routing-ospf-buster/net.svgz new file mode 100644 index 0000000..8f5cccb Binary files /dev/null and b/vdn/networks.bak/routing-ospf-buster/net.svgz differ diff --git a/vdn/networks.bak/routing-ospf-buster/network.vdn b/vdn/networks.bak/routing-ospf-buster/network.vdn new file mode 100644 index 0000000..1732797 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/network.vdn @@ -0,0 +1,3 @@ + +SAVE_PATH="$HOME/vdn-save" + diff --git a/vdn/networks.bak/routing-ospf-buster/r1.conf b/vdn/networks.bak/routing-ospf-buster/r1.conf new file mode 100644 index 0000000..aff666f --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/r1.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_1#192.168.1.1 NET_2#192.168.2.1 NET_5#192.168.3.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-buster/r2.conf b/vdn/networks.bak/routing-ospf-buster/r2.conf new file mode 100644 index 0000000..7eb4080 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/r2.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_2#192.168.2.2 NET_3#192.168.4.1 NET_6#192.168.5.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-buster/r3.conf b/vdn/networks.bak/routing-ospf-buster/r3.conf new file mode 100644 index 0000000..8fc3883 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/r3.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_4#192.168.6.2 NET_3#192.168.4.2 NET_7#192.168.7.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-buster/r4.conf b/vdn/networks.bak/routing-ospf-buster/r4.conf new file mode 100644 index 0000000..c247b67 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/r4.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_5#192.168.3.2 NET_8#192.168.8.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-buster/r5.conf b/vdn/networks.bak/routing-ospf-buster/r5.conf new file mode 100644 index 0000000..adc2c61 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/r5.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_8#192.168.8.2 NET_6#192.168.5.2 NET_7#192.168.7.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-buster/s1.conf b/vdn/networks.bak/routing-ospf-buster/s1.conf new file mode 100644 index 0000000..3c87673 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/s1.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="512" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_1#192.168.1.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" " + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-buster/s2.conf b/vdn/networks.bak/routing-ospf-buster/s2.conf new file mode 100644 index 0000000..377ca60 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/s2.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_4#192.168.6.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" " + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-ospf-buster/scripts/common.sh b/vdn/networks.bak/routing-ospf-buster/scripts/common.sh new file mode 100644 index 0000000..45175e5 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/scripts/common.sh @@ -0,0 +1,80 @@ +#!/usr/bin/bash + +configQuagga() { + + echo "Configure Zebra." + case $1 in + r1) INTERFACES="eth1 eth2"; NETS="1 2 3"; ID=1 ;; + r2) INTERFACES="eth0 eth1 eth2"; NETS="2 4 5"; ID=2;; + r3) INTERFACES="eth1 eth2"; NETS="4 6 7"; ID=3;; + r4) INTERFACES="eth0 eth1"; NETS="3 8"; ID=4;; + r5) INTERFACES="eth0 eth1 eth2"; NETS="5 7 8"; ID=5;; + esac + vdn-ssh root@$1 " + #sed -i -re 's/^(zebra|ospfd)=.*$/\1=yes/g' /etc/quagga/daemons + #set -x + + [ ! -e /etc/quaga/vtysh.conf ] && cp /usr/share/doc/quagga-core/examples/vtysh.conf.sample /etc/quagga/vtysh.conf + + cat << EOF > /etc/quagga/zebra.conf +!/etc/quagga/zebra.conf +hostname router-zebra +password zebra* +log file /var/log/quagga/zebra.log +EOF + + cat << EOF > /etc/quagga/ospfd.conf +!/etc/quagga/ospfd.conf +hostname router-ospfd +password ospfd* +log file /var/log/quagga/ospfd.log + +EOF + +for i in $INTERFACES; do + cat << EOF >> /etc/quagga/ospfd.conf +interface \$i + ip ospf hello-interval 5 + ip ospf dead-interval 20 +EOF +done + +cat << EOF >> /etc/quagga/ospfd.conf + +router ospf +ospf router-id 1.1.1.$ID +EOF + +for i in $NETS; do + echo network 192.168.\$i.0/24 area 0 >> /etc/quagga/ospfd.conf +done + + + #cp /usr/share/doc/quagga/examples/vtysh.conf.sample /etc/quagga/vtysh.conf + #chown quagga:quagga /etc/quagga/zebra.conf /etc/quagga/ospfd.conf + #chown :quaggavty /etc/quagga/vtysh.conf + + systemctl enable zebra + systemctl restart zebra + systemctl enable ospfd + systemctl restart ospfd + " +} + +configBase() { + + setErrorHandler + echoStart + + #setIpv6WorkAround $1 + setHostname $1 + +} + +endConfig() { + unsetErrorHandler + echoDone +} + + + diff --git a/vdn/networks.bak/routing-ospf-buster/scripts/configAll b/vdn/networks.bak/routing-ospf-buster/scripts/configAll new file mode 100755 index 0000000..cf95374 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/scripts/configAll @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +DESC="Configuration en routage OSPF." + +run() { + requireSshGuests $SYSTEMS + + L="" + for s in $SYSTEMS; do + f="config$(echo $s | tr [:lower:] [:upper:])" + L="$L $f" + done + + vdn-scripts $L + +} + + + + + diff --git a/vdn/networks.bak/routing-ospf-buster/scripts/configR1 b/vdn/networks.bak/routing-ospf-buster/scripts/configR1 new file mode 100644 index 0000000..c6715b8 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/scripts/configR1 @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +DESC="Configuration de r1." + +run() { + . common.sh + + name="r1" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r1 +127.0.0.1 localhost +192.168.1.1 r1 +192.168.1.2 s1 +192.168.2.2 r2 +192.168.4.2 r3 +192.168.3.2 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r1 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.2.1 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.3.1 + netmask 255.255.255.0 + +EOF + + configQuagga $name + + endConfig +} + diff --git a/vdn/networks.bak/routing-ospf-buster/scripts/configR2 b/vdn/networks.bak/routing-ospf-buster/scripts/configR2 new file mode 100644 index 0000000..acfeabe --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/scripts/configR2 @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +DESC="Configuration de r2." + +run() { + . common.sh + + name="r2" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r2 +127.0.0.1 localhost +192.168.2.2 r2 +192.168.1.2 s1 +192.168.2.1 r1 +192.168.4.2 r3 +192.168.8.1 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r2 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.2.2 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.4.1 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.5.1 + netmask 255.255.255.0 + +EOF + + endConfig +} + diff --git a/vdn/networks.bak/routing-ospf-buster/scripts/configR3 b/vdn/networks.bak/routing-ospf-buster/scripts/configR3 new file mode 100644 index 0000000..b116d67 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/scripts/configR3 @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +DESC="Configuration de r3." + +run() { + . common.sh + + name="r3" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r3 +127.0.0.1 localhost +192.168.4.2 r3 +192.168.1.2 s1 +192.168.4.1 r2 +192.168.2.1 r1 +192.168.8.1 r4 +192.168.7.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r3 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.6.1 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.4.2 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.7.1 + netmask 255.255.255.0 + +iface eth3 inet static + post-up route add default gw 10.0.2.2 + +EOF + + configQuagga $name + + endConfig +} + diff --git a/vdn/networks.bak/routing-ospf-buster/scripts/configR4 b/vdn/networks.bak/routing-ospf-buster/scripts/configR4 new file mode 100644 index 0000000..86a1ed6 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/scripts/configR4 @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +DESC="Configuration de r4." + +run() { + . common.sh + + name="r4" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r4 +127.0.0.1 localhost +192.168.3.2 r4 +192.168.1.2 s1 +192.168.3.1 r1 +192.168.5.1 r2 +192.168.7.1 r3 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r4 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.2 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.8.1 + netmask 255.255.255.0 + +EOF + + configQuagga $name + + endConfig +} + diff --git a/vdn/networks.bak/routing-ospf-buster/scripts/configR5 b/vdn/networks.bak/routing-ospf-buster/scripts/configR5 new file mode 100644 index 0000000..5cb1fa4 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/scripts/configR5 @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +DESC="Configuration de r5." + +run() { + . common.sh + + name="r5" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r5 +127.0.0.1 localhost +192.168.5.2 r5 +192.168.1.2 s1 +192.168.3.1 r1 +192.168.5.2 r2 +192.168.7.2 r3 +192.168.8.2 r4 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r5 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.8.2 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.5.2 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.7.2 + netmask 255.255.255.0 + +EOF + + configQuagga $name + + endConfig +} + diff --git a/vdn/networks.bak/routing-ospf-buster/scripts/configS1 b/vdn/networks.bak/routing-ospf-buster/scripts/configS1 new file mode 100644 index 0000000..621c481 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/scripts/configS1 @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +DESC="Configuration de s1." + +run() { + . common.sh + + name="s1" + + startAndWaitSsh $name + + configBase $name + + cat << EOF | setHosts s1 +127.0.0.1 localhost +192.168.1.2 s1 +192.168.1.1 r1 +192.168.2.2 r2 +192.168.4.2 r3 +192.168.3.2 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces s1 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 + +EOF + + endConfig +} + diff --git a/vdn/networks.bak/routing-ospf-buster/scripts/configS2 b/vdn/networks.bak/routing-ospf-buster/scripts/configS2 new file mode 100644 index 0000000..9962d74 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/scripts/configS2 @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +DESC="Configuration de s2." + +run() { + + . common.sh + + name="s2" + + startAndWaitSsh $name + + configBase $name + + cat << EOF | setHosts s2 +127.0.0.1 localhost +192.168.6.2 s2 +192.168.1.2 s1 +192.168.2.1 r1 +192.168.4.1 r2 +192.168.6.1 r3 +192.168.8.1 r4 +192.168.7.1 r5 +EOF + + cat << EOF | setInterfaces s2 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.6.2 + netmask 255.255.255.0 + gateway 192.168.6.1 +EOF + + endConfig + +} + diff --git a/vdn/networks.bak/routing-ospf-buster/scripts/ping-all b/vdn/networks.bak/routing-ospf-buster/scripts/ping-all new file mode 100755 index 0000000..65e2364 --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/scripts/ping-all @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +DESC="Ping entre tous les couples de machines." + +run() { + + PAUSE=1 + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + for i in $SYSTEMS; do + for j in $SYSTEMS; do + echo "$i : ping $j" + vdn-ssh -t root@$i "ping -c 1 $j" || exit 1 + done + done + + unsetErrorHandler + echoDone + + pauseRaw + +} + diff --git a/vdn/networks.bak/routing-ospf-buster/scripts/ping-all-without-r2 b/vdn/networks.bak/routing-ospf-buster/scripts/ping-all-without-r2 new file mode 100755 index 0000000..40f77ef --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/scripts/ping-all-without-r2 @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +DESC="Ping entre tous les couples de machines sauf r2." + +SYSTEMS="s1 s2 r1 r3 r4 r5" + +run() { + + PAUSE=1 + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + + #requireSshGuests $SYSTEMS + + for i in $SYSTEMS; do + for j in $SYSTEMS; do + echo "$i : ping $j" + vdn-ssh -t root@$i "ping -c 1 $j" || exit 1 + done + done + + unsetErrorHandler + echoDone + pauseRaw + +} + diff --git a/vdn/networks.bak/routing-ospf-buster/scripts/repairAll b/vdn/networks.bak/routing-ospf-buster/scripts/repairAll new file mode 100644 index 0000000..a654ffd --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/scripts/repairAll @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +DESC="Configuration routage dynamique pour r2." + +run() { + requireSshGuests r2 + + PAUSE=1 + + vdn-scripts repairR2 + + echo "Wait for update (30 s)..." + sleep 30 + +} + + + + + diff --git a/vdn/networks.bak/routing-ospf-buster/scripts/repairR2 b/vdn/networks.bak/routing-ospf-buster/scripts/repairR2 new file mode 100644 index 0000000..478766a --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/scripts/repairR2 @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +DESC="Configuration de r2." + +run() { + + . common.sh + + name="r2" + + startAndWaitSsh $name + + configQuagga $name + +} + diff --git a/vdn/networks.bak/routing-ospf-buster/scripts/testWithR2 b/vdn/networks.bak/routing-ospf-buster/scripts/testWithR2 new file mode 100644 index 0000000..b50844b --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/scripts/testWithR2 @@ -0,0 +1,8 @@ +#!/bin/bash + +DESC="Test s1 -> s2 (via r2)." + +run() { + diag root@s1 "Test s1 -> s2 (via r2) :" 'traceroute s2 | grep -q r2' +} + diff --git a/vdn/networks.bak/routing-ospf-buster/scripts/testWithoutR2 b/vdn/networks.bak/routing-ospf-buster/scripts/testWithoutR2 new file mode 100644 index 0000000..deaf6ef --- /dev/null +++ b/vdn/networks.bak/routing-ospf-buster/scripts/testWithoutR2 @@ -0,0 +1,8 @@ +#!/bin/bash + +DESC="Configuration de r1." + +run() { + diag root@s1 "Test s1 -> s2 :" 'traceroute s2' +} + diff --git a/vdn/networks.bak/routing-rip-buster/build b/vdn/networks.bak/routing-rip-buster/build new file mode 100644 index 0000000..1337abe --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/build @@ -0,0 +1,60 @@ +#!/usr/bin/env bash + +set -eu + +common() { + local n + + n=$1 + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n MODE "tgz2" + vdn-config $n MEMORY "384" + vdn-config $n HDA "DebianBuster.disk" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE 0 +} + +commonRouters() { + local n + + n=$1 + common $n + vdn-config -a $n EXTRA_SERVICES "zebra ripd ospfd" +} + +commonStations() { + local n + + n=$1 + common $n + vdn-config -a $n EXTRA_SERVICES "" +} + +build() { + local n + + n=s1; vdn-build $n; commonStations $n + + vdn-config $n NETWORKS "\$NET_1#192.168.1.2" + vdn-config $n MEMORY "512" + n=s2; vdn-build $n; commonStations $n + vdn-config $n NETWORKS "\$NET_4#192.168.6.2" + + n=r1; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "\$NET_1#192.168.1.1 \$NET_2#192.168.2.1 \$NET_5#192.168.3.1" + + n=r2; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "\$NET_2#192.168.2.2 \$NET_3#192.168.4.1 \$NET_6#192.168.5.1" + + n=r3; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "\$NET_4#192.168.6.2 \$NET_3#192.168.4.2 \$NET_7#192.168.7.1" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE 1 + vdn-config $n EXTRA_ETH_MASQUERADING 1 + + n=r4; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "\$NET_5#192.168.3.2 \$NET_8#192.168.8.1" + + n=r5; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "\$NET_8#192.168.8.2 \$NET_6#192.168.5.2 \$NET_7#192.168.7.2" + +} + diff --git a/vdn/networks.bak/routing-rip-buster/graph.svgz b/vdn/networks.bak/routing-rip-buster/graph.svgz new file mode 100644 index 0000000..d6771ec Binary files /dev/null and b/vdn/networks.bak/routing-rip-buster/graph.svgz differ diff --git a/vdn/networks.bak/routing-rip-buster/net.svgz b/vdn/networks.bak/routing-rip-buster/net.svgz new file mode 100644 index 0000000..8f5cccb Binary files /dev/null and b/vdn/networks.bak/routing-rip-buster/net.svgz differ diff --git a/vdn/networks.bak/routing-rip-buster/network.vdn b/vdn/networks.bak/routing-rip-buster/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/routing-rip-buster/r1.conf b/vdn/networks.bak/routing-rip-buster/r1.conf new file mode 100644 index 0000000..c27101d --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/r1.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=2 + +# Chemin du premier disque du système. + +HDA="DebianBuster-amd64.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_1#192.168.1.1 $NET_2#192.168.2.1 $NET_5#192.168.3.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-rip-buster/r2.conf b/vdn/networks.bak/routing-rip-buster/r2.conf new file mode 100644 index 0000000..a2ceeb6 --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/r2.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=3 + +# Chemin du premier disque du système. + +HDA="DebianBuster-amd64.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_2#192.168.2.2 $NET_3#192.168.4.1 $NET_6#192.168.5.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-rip-buster/r3.conf b/vdn/networks.bak/routing-rip-buster/r3.conf new file mode 100644 index 0000000..c5a6be7 --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/r3.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=4 + +# Chemin du premier disque du système. + +HDA="DebianBuster-amd64.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_4#192.168.6.2 $NET_3#192.168.4.2 $NET_7#192.168.7.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="1" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-rip-buster/r4.conf b/vdn/networks.bak/routing-rip-buster/r4.conf new file mode 100644 index 0000000..5964bad --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/r4.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=5 + +# Chemin du premier disque du système. + +HDA="DebianBuster-amd64.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_5#192.168.3.2 $NET_8#192.168.8.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-rip-buster/r5.conf b/vdn/networks.bak/routing-rip-buster/r5.conf new file mode 100644 index 0000000..07ab6ab --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/r5.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=6 + +# Chemin du premier disque du système. + +HDA="DebianBuster-amd64.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_8#192.168.8.2 $NET_6#192.168.5.2 $NET_7#192.168.7.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-rip-buster/s1.conf b/vdn/networks.bak/routing-rip-buster/s1.conf new file mode 100644 index 0000000..41c474f --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/s1.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="512" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=0 + +# Chemin du premier disque du système. + +HDA="DebianBuster-amd64.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_1#192.168.1.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" " + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-rip-buster/s2.conf b/vdn/networks.bak/routing-rip-buster/s2.conf new file mode 100644 index 0000000..73d363f --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/s2.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="256" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=1 + +# Chemin du premier disque du système. + +HDA="DebianBuster-amd64.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="$NET_4#192.168.6.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" " + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-rip-buster/scripts/common.sh b/vdn/networks.bak/routing-rip-buster/scripts/common.sh new file mode 100644 index 0000000..77ec9b3 --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/scripts/common.sh @@ -0,0 +1,87 @@ +#!/usr/bin/bash + +configQuagga() { + + echo "Configure Zebra." + extra="" + case $1 in + r1) INTERFACES="eth1 eth2"; NETS="1 2 3"; ID=1 ;; + r2) INTERFACES="eth0 eth1 eth2"; NETS="2 4 5"; ID=2;; + r3) INTERFACES="eth1 eth2"; NETS="4 6 7"; ID=3; extra='default-information originate';; + r4) INTERFACES="eth0 eth1"; NETS="3 8"; ID=4;; + r5) INTERFACES="eth0 eth1 eth2"; NETS="5 7 8"; ID=5;; + esac + vdn-ssh root@$1 " +[ ! -e /etc/quaga/vtysh.conf ] && cp /usr/share/doc/quagga-core/examples/vtysh.conf.sample /etc/quagga/vtysh.conf + + + cat << EOF > /etc/quagga/zebra.conf +!/etc/quagga/zebra.conf +hostname router1 +password bigsecret +enable password iut +service advanced-vty +log file /var/log/quagga/zebra.log +! +!administrative access controls- local machine only +! +access-list localhost permit 127.0.0.1/32 +access-list localhost deny any +! +line vty +access-class localhost +EOF + + cat << EOF > /etc/quagga/ripd.conf +!/etc/quagga/ripd.conf +hostname router1 +password moresecret +enable password moresecret +router rip +network eth0 +network eth1 +network eth2 +! valeurs par défaut des timers : 30 180 120 +timers basic 10 30 20 +redistribute static +redistribute connected +service advanced-vty +log file /var/log/quagga/ripd.log +! +!administrative access controls- local machine only +! +access-list localhost permit 127.0.0.1/32 +access-list localhost deny any +! +line vty +access-class localhost +$extra +EOF + + #cp /usr/share/doc/quagga/examples/vtysh.conf.sample /etc/quagga/vtysh.conf + chown quagga:quagga /etc/quagga/zebra.conf /etc/quagga/ripd.conf + chown :quaggavty /etc/quagga/vtysh.conf + + systemctl enable zebra + systemctl restart zebra + systemctl enable ripd + systemctl restart ripd + " +} + +configBase() { + + setErrorHandler + echoStart + + #setIpv6WorkAround $1 + setHostname $1 + +} + +endConfig() { + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/routing-rip-buster/scripts/configAll b/vdn/networks.bak/routing-rip-buster/scripts/configAll new file mode 100755 index 0000000..8e8a0ad --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/scripts/configAll @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +DESC="Configuration en routage statique." + +run() { + requireSshGuests $SYSTEMS + + L="" + for s in $SYSTEMS; do + f="config$(echo $s | tr [:lower:] [:upper:])" + L="$L $f" + done + + vdn-scripts $L + +} + + + + + diff --git a/vdn/networks.bak/routing-rip-buster/scripts/configR1 b/vdn/networks.bak/routing-rip-buster/scripts/configR1 new file mode 100644 index 0000000..f7a2d10 --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/scripts/configR1 @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +DESC="Configuration de r1." + +run() { + . common.sh + + name="r1" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r1 +127.0.0.1 localhost +192.168.1.1 r1 +192.168.1.2 s1 +192.168.2.2 r2 +192.168.4.2 r3 +192.168.3.2 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r1 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.2.1 + netmask 255.255.255.0 + + +auto eth2 +iface eth2 inet static + address 192.168.3.1 + netmask 255.255.255.0 + +EOF + + configQuagga $name + + endConfig +} + diff --git a/vdn/networks.bak/routing-rip-buster/scripts/configR2 b/vdn/networks.bak/routing-rip-buster/scripts/configR2 new file mode 100644 index 0000000..e2cada3 --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/scripts/configR2 @@ -0,0 +1,52 @@ +#!/usr/bin/env bash + +DESC="Configuration de r2." + +run() { + + . common.sh + + name="r2" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r2 +127.0.0.1 localhost +192.168.2.2 r2 +192.168.1.2 s1 +192.168.2.1 r1 +192.168.4.2 r3 +192.168.8.1 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r2 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.2.2 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.4.1 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.5.1 + netmask 255.255.255.0 + +EOF + + endConfig +} + diff --git a/vdn/networks.bak/routing-rip-buster/scripts/configR3 b/vdn/networks.bak/routing-rip-buster/scripts/configR3 new file mode 100644 index 0000000..76b4a32 --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/scripts/configR3 @@ -0,0 +1,52 @@ +#!/usr/bin/env bash + +DESC="Configuration de r3." + +run() { + . common.sh + + name="r3" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r3 +127.0.0.1 localhost +192.168.4.2 r3 +192.168.1.2 s1 +192.168.4.1 r2 +192.168.2.1 r1 +192.168.8.1 r4 +192.168.7.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r3 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.6.1 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.4.2 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.7.1 + netmask 255.255.255.0 + +EOF + + configQuagga $name + endConfig +} + diff --git a/vdn/networks.bak/routing-rip-buster/scripts/configR4 b/vdn/networks.bak/routing-rip-buster/scripts/configR4 new file mode 100644 index 0000000..86a1ed6 --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/scripts/configR4 @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +DESC="Configuration de r4." + +run() { + . common.sh + + name="r4" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r4 +127.0.0.1 localhost +192.168.3.2 r4 +192.168.1.2 s1 +192.168.3.1 r1 +192.168.5.1 r2 +192.168.7.1 r3 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r4 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.2 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.8.1 + netmask 255.255.255.0 + +EOF + + configQuagga $name + + endConfig +} + diff --git a/vdn/networks.bak/routing-rip-buster/scripts/configR5 b/vdn/networks.bak/routing-rip-buster/scripts/configR5 new file mode 100644 index 0000000..5cb1fa4 --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/scripts/configR5 @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +DESC="Configuration de r5." + +run() { + . common.sh + + name="r5" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r5 +127.0.0.1 localhost +192.168.5.2 r5 +192.168.1.2 s1 +192.168.3.1 r1 +192.168.5.2 r2 +192.168.7.2 r3 +192.168.8.2 r4 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r5 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.8.2 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.5.2 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.7.2 + netmask 255.255.255.0 + +EOF + + configQuagga $name + + endConfig +} + diff --git a/vdn/networks.bak/routing-rip-buster/scripts/configS1 b/vdn/networks.bak/routing-rip-buster/scripts/configS1 new file mode 100644 index 0000000..9490c89 --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/scripts/configS1 @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +DESC="Configuration de s1." + +run() { + . common.sh + + name="s1" + + startAndWaitSsh $name + + configBase $name + + cat << EOF | setHosts s1 +127.0.0.1 localhost +192.168.1.2 s1 +192.168.1.1 r1 +192.168.2.2 r2 +192.168.4.2 r3 +192.168.3.2 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces s1 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + +EOF + + endConfig +} + diff --git a/vdn/networks.bak/routing-rip-buster/scripts/configS2 b/vdn/networks.bak/routing-rip-buster/scripts/configS2 new file mode 100644 index 0000000..c6191a8 --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/scripts/configS2 @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +DESC="Configuration de s2." + +run() { + . common.sh + + name="s2" + + startAndWaitSsh $name + + configBase $name + + cat << EOF | setHosts s2 +127.0.0.1 localhost +192.168.6.2 s2 +192.168.1.2 s1 +192.168.2.1 r1 +192.168.4.1 r2 +192.168.6.1 r3 +192.168.8.1 r4 +192.168.7.1 r5 +EOF + + cat << EOF | setInterfaces s2 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.6.2 + netmask 255.255.255.0 +EOF + + endConfig +} + diff --git a/vdn/networks.bak/routing-rip-buster/scripts/ping-all b/vdn/networks.bak/routing-rip-buster/scripts/ping-all new file mode 100755 index 0000000..65e2364 --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/scripts/ping-all @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +DESC="Ping entre tous les couples de machines." + +run() { + + PAUSE=1 + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + for i in $SYSTEMS; do + for j in $SYSTEMS; do + echo "$i : ping $j" + vdn-ssh -t root@$i "ping -c 1 $j" || exit 1 + done + done + + unsetErrorHandler + echoDone + + pauseRaw + +} + diff --git a/vdn/networks.bak/routing-rip-buster/scripts/ping-all-without-r2 b/vdn/networks.bak/routing-rip-buster/scripts/ping-all-without-r2 new file mode 100755 index 0000000..40f77ef --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/scripts/ping-all-without-r2 @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +DESC="Ping entre tous les couples de machines sauf r2." + +SYSTEMS="s1 s2 r1 r3 r4 r5" + +run() { + + PAUSE=1 + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + + #requireSshGuests $SYSTEMS + + for i in $SYSTEMS; do + for j in $SYSTEMS; do + echo "$i : ping $j" + vdn-ssh -t root@$i "ping -c 1 $j" || exit 1 + done + done + + unsetErrorHandler + echoDone + pauseRaw + +} + diff --git a/vdn/networks.bak/routing-rip-buster/scripts/repairAll b/vdn/networks.bak/routing-rip-buster/scripts/repairAll new file mode 100644 index 0000000..a0f17db --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/scripts/repairAll @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +DESC="Configuration routage dynamique pour r2." + +run() { + requireSshGuests r2 + + vdn-scripts repairR2 + + echo "Wait for update (30 s)..." + sleep 30 + +} + + + + + diff --git a/vdn/networks.bak/routing-rip-buster/scripts/repairR2 b/vdn/networks.bak/routing-rip-buster/scripts/repairR2 new file mode 100644 index 0000000..42ae586 --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/scripts/repairR2 @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +DESC="Configuration de r2." + +run() { + . common.sh + + name="r2" + + startAndWaitSsh $name + + configQuagga $name + +} + diff --git a/vdn/networks.bak/routing-rip-buster/scripts/testWithR2 b/vdn/networks.bak/routing-rip-buster/scripts/testWithR2 new file mode 100644 index 0000000..b50844b --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/scripts/testWithR2 @@ -0,0 +1,8 @@ +#!/bin/bash + +DESC="Test s1 -> s2 (via r2)." + +run() { + diag root@s1 "Test s1 -> s2 (via r2) :" 'traceroute s2 | grep -q r2' +} + diff --git a/vdn/networks.bak/routing-rip-buster/scripts/testWithoutR2 b/vdn/networks.bak/routing-rip-buster/scripts/testWithoutR2 new file mode 100644 index 0000000..deaf6ef --- /dev/null +++ b/vdn/networks.bak/routing-rip-buster/scripts/testWithoutR2 @@ -0,0 +1,8 @@ +#!/bin/bash + +DESC="Configuration de r1." + +run() { + diag root@s1 "Test s1 -> s2 :" 'traceroute s2' +} + diff --git a/vdn/networks.bak/routing-static-buster/build b/vdn/networks.bak/routing-static-buster/build new file mode 100644 index 0000000..8ee7dc1 --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/build @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +set -eu + +common() { + local n + + n=$1 + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n MODE "tgz2" + vdn-config $n MEMORY "384" + vdn-config $n HDA "DebianBuster.disk" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE 0 + #vdn-config $n SET_PROXY "1" +} + +commonRouters() { + local n + + n=$1 + common $n + vdn-config -a $n EXTRA_SERVICES "zebra ripd ospfd" +} + +commonStations() { + local n + + n=$1 + common $n + vdn-config -a $n EXTRA_SERVICES "" +} + +build() { + local n + + n=s1; vdn-build $n; commonStations $n + + vdn-config $n NETWORKS "NET_1#192.168.1.2" + vdn-config $n MEMORY "512" + n=s2; vdn-build $n; commonStations $n + vdn-config $n NETWORKS "NET_4#192.168.6.2" + + n=r1; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_1#192.168.1.1 NET_2#192.168.2.1 NET_5#192.168.3.1" + + n=r2; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_2#192.168.2.2 NET_3#192.168.4.1 NET_6#192.168.5.1" + + n=r3; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_4#192.168.6.2 NET_3#192.168.4.2 NET_7#192.168.7.1" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE 1 + vdn-config $n EXTRA_ETH_MASQUERADING 1 + + n=r4; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_5#192.168.3.2 NET_8#192.168.8.1" + + n=r5; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_8#192.168.8.2 NET_6#192.168.5.2 NET_7#192.168.7.2" + +} + diff --git a/vdn/networks.bak/routing-static-buster/graph.svgz b/vdn/networks.bak/routing-static-buster/graph.svgz new file mode 100644 index 0000000..21ec523 Binary files /dev/null and b/vdn/networks.bak/routing-static-buster/graph.svgz differ diff --git a/vdn/networks.bak/routing-static-buster/net.svgz b/vdn/networks.bak/routing-static-buster/net.svgz new file mode 100644 index 0000000..8f5cccb Binary files /dev/null and b/vdn/networks.bak/routing-static-buster/net.svgz differ diff --git a/vdn/networks.bak/routing-static-buster/net2.svg b/vdn/networks.bak/routing-static-buster/net2.svg new file mode 100644 index 0000000..4d626cf --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/net2.svg @@ -0,0 +1,6221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Internet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0:3.2 + Interfaces et adresses notées en abrégé !0:1.2 est équivalent à : eth0 : 192.168.1.2 + 0:1.2 + 0:1.1 + 1:2.1 + 0:2.2 + 1:4.1 + 1:4.2 + 3:10.0.2.15 + 0:6.1 + 0:6.2 + 1:8.1 + 1:5.2 + 2:7.2 + 0:8.2 + 2:3.1 + s1 + + r1 + s2 + + + r3 + + r2 + r4 + + r5 + + 2:7.1 + 2:5.1 + + + diff --git a/vdn/networks.bak/routing-static-buster/network.vdn b/vdn/networks.bak/routing-static-buster/network.vdn new file mode 100644 index 0000000..1732797 --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/network.vdn @@ -0,0 +1,3 @@ + +SAVE_PATH="$HOME/vdn-save" + diff --git a/vdn/networks.bak/routing-static-buster/r1.conf b/vdn/networks.bak/routing-static-buster/r1.conf new file mode 100644 index 0000000..aff666f --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/r1.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_1#192.168.1.1 NET_2#192.168.2.1 NET_5#192.168.3.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-static-buster/r2.conf b/vdn/networks.bak/routing-static-buster/r2.conf new file mode 100644 index 0000000..7eb4080 --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/r2.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_2#192.168.2.2 NET_3#192.168.4.1 NET_6#192.168.5.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-static-buster/r3.conf b/vdn/networks.bak/routing-static-buster/r3.conf new file mode 100644 index 0000000..a19c2df --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/r3.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_4#192.168.6.2 NET_3#192.168.4.2 NET_7#192.168.7.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="1" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-static-buster/r4.conf b/vdn/networks.bak/routing-static-buster/r4.conf new file mode 100644 index 0000000..c247b67 --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/r4.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_5#192.168.3.2 NET_8#192.168.8.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-static-buster/r5.conf b/vdn/networks.bak/routing-static-buster/r5.conf new file mode 100644 index 0000000..adc2c61 --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/r5.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_8#192.168.8.2 NET_6#192.168.5.2 NET_7#192.168.7.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-static-buster/s1.conf b/vdn/networks.bak/routing-static-buster/s1.conf new file mode 100644 index 0000000..3c87673 --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/s1.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="512" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_1#192.168.1.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" " + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-static-buster/s2.conf b/vdn/networks.bak/routing-static-buster/s2.conf new file mode 100644 index 0000000..377ca60 --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/s2.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_4#192.168.6.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" " + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/routing-static-buster/scripts/common.sh b/vdn/networks.bak/routing-static-buster/scripts/common.sh new file mode 100644 index 0000000..0cdf61f --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/scripts/common.sh @@ -0,0 +1,17 @@ +#!/usr/bin/bash + +configBase() { + + setErrorHandler + echoStart + + #setIpv6WorkAround $1 + setHostname $1 + +} + +endConfig() { + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/routing-static-buster/scripts/configAll b/vdn/networks.bak/routing-static-buster/scripts/configAll new file mode 100755 index 0000000..050aff5 --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/scripts/configAll @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +DESC="Configuration en routage statique." + +run() { + requireSshGuests $SYSTEMS + + L="" + for s in $SYSTEMS; do + f="config$(echo $s | tr [:lower:] [:upper:])" + L="$L $f" + done + + vdn-scripts $L +} + + + + + diff --git a/vdn/networks.bak/routing-static-buster/scripts/configR1 b/vdn/networks.bak/routing-static-buster/scripts/configR1 new file mode 100644 index 0000000..81848d7 --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/scripts/configR1 @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +DESC="Configuration de r1." + +run() { + . common.sh + + name="r1" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r1 +127.0.0.1 localhost +192.168.1.1 r1 +192.168.1.2 s1 +192.168.2.2 r2 +192.168.4.2 r3 +192.168.3.2 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r1 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.2.1 + netmask 255.255.255.0 + gateway 192.168.2.2 + +auto eth2 +iface eth2 inet static + address 192.168.3.1 + netmask 255.255.255.0 + +EOF + + + endConfig +} + diff --git a/vdn/networks.bak/routing-static-buster/scripts/configR2 b/vdn/networks.bak/routing-static-buster/scripts/configR2 new file mode 100644 index 0000000..e428957 --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/scripts/configR2 @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +DESC="Configuration de r2." + +run() { + . common.sh + + name="r2" + + startAndWaitSsh $name + + configBase $name + + #setForwarding $name + + cat << EOF | setHosts r2 +127.0.0.1 localhost +192.168.2.2 r2 +192.168.1.2 s1 +192.168.2.1 r1 +192.168.4.2 r3 +192.168.8.1 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r2 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.2.2 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.4.1 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.5.1 + netmask 255.255.255.0 + +EOF + + endConfig +} + diff --git a/vdn/networks.bak/routing-static-buster/scripts/configR3 b/vdn/networks.bak/routing-static-buster/scripts/configR3 new file mode 100644 index 0000000..2d965c5 --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/scripts/configR3 @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +DESC="Configuration de r3." + +run() { + . common.sh + + name="r3" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r3 +127.0.0.1 localhost +192.168.4.2 r3 +192.168.1.2 s1 +192.168.4.1 r2 +192.168.2.1 r1 +192.168.8.1 r4 +192.168.7.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r3 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.6.1 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.4.2 + netmask 255.255.255.0 + up route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.4.1 + up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.4.1 + +auto eth2 +iface eth2 inet static + address 192.168.7.1 + netmask 255.255.255.0 + up route add -net 192.168.8.0 netmask 255.255.255.0 gw 192.168.7.2 + up route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.7.2 + up route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.7.2 + +EOF + endConfig +} + diff --git a/vdn/networks.bak/routing-static-buster/scripts/configR4 b/vdn/networks.bak/routing-static-buster/scripts/configR4 new file mode 100644 index 0000000..641cb8a --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/scripts/configR4 @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +DESC="Configuration de r4." + +run() { + . common.sh + + name="r4" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r4 +127.0.0.1 localhost +192.168.3.2 r4 +192.168.1.2 s1 +192.168.3.1 r1 +192.168.5.1 r2 +192.168.7.1 r3 +192.168.8.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r4 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.2 + netmask 255.255.255.0 + up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.3.1 + up route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.3.1 + +auto eth1 +iface eth1 inet static + address 192.168.8.1 + netmask 255.255.255.0 + gateway 192.168.8.2 + up route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.8.2 + up route add -net 192.168.4.0 netmask 255.255.255.0 gw 192.168.8.2 +EOF + + endConfig +} + diff --git a/vdn/networks.bak/routing-static-buster/scripts/configR5 b/vdn/networks.bak/routing-static-buster/scripts/configR5 new file mode 100644 index 0000000..42547e8 --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/scripts/configR5 @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +DESC="Configuration de r5." + +run() { + . common.sh + + name="r5" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r5 +127.0.0.1 localhost +192.168.5.2 r5 +192.168.1.2 s1 +192.168.3.1 r1 +192.168.5.1 r2 +192.168.7.1 r3 +192.168.8.1 r4 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r5 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.8.2 + netmask 255.255.255.0 + up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.8.1 + up route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.8.1 + +auto eth1 +iface eth1 inet static + address 192.168.5.2 + netmask 255.255.255.0 + up route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.5.1 + +auto eth2 +iface eth2 inet static + address 192.168.7.2 + netmask 255.255.255.0 + gateway 192.168.7.1 + +EOF + + endConfig +} + diff --git a/vdn/networks.bak/routing-static-buster/scripts/configS1 b/vdn/networks.bak/routing-static-buster/scripts/configS1 new file mode 100644 index 0000000..621c481 --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/scripts/configS1 @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +DESC="Configuration de s1." + +run() { + . common.sh + + name="s1" + + startAndWaitSsh $name + + configBase $name + + cat << EOF | setHosts s1 +127.0.0.1 localhost +192.168.1.2 s1 +192.168.1.1 r1 +192.168.2.2 r2 +192.168.4.2 r3 +192.168.3.2 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces s1 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 + +EOF + + endConfig +} + diff --git a/vdn/networks.bak/routing-static-buster/scripts/configS2 b/vdn/networks.bak/routing-static-buster/scripts/configS2 new file mode 100644 index 0000000..8430dbe --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/scripts/configS2 @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +DESC="Configuration de s2." + +run() { + . common.sh + + name="s2" + + startAndWaitSsh $name + + configBase $name + + cat << EOF | setHosts s2 +127.0.0.1 localhost +192.168.6.2 s2 +192.168.1.2 s1 +192.168.2.1 r1 +192.168.4.1 r2 +192.168.6.1 r3 +192.168.8.1 r4 +192.168.7.2 r5 +EOF + + cat << EOF | setInterfaces s2 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.6.2 + netmask 255.255.255.0 + gateway 192.168.6.1 +EOF + + endConfig +} + diff --git a/vdn/networks.bak/routing-static-buster/scripts/ping-all b/vdn/networks.bak/routing-static-buster/scripts/ping-all new file mode 100755 index 0000000..0824672 --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/scripts/ping-all @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +DESC="Ping entre tous les couples de machines." + +run() { + + PAUSE=1 + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + #requireSshGuests $SYSTEMS + + for i in $SYSTEMS; do + for j in $SYSTEMS; do + echo "$i : ping $j" + vdn-ssh -t root@$i "ping -c 1 $j" || exit 1 + done + done + + unsetErrorHandler + echoDone + + pauseRaw + +} + diff --git a/vdn/networks.bak/routing-static-buster/scripts/ping-all-without-r2 b/vdn/networks.bak/routing-static-buster/scripts/ping-all-without-r2 new file mode 100755 index 0000000..40f77ef --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/scripts/ping-all-without-r2 @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +DESC="Ping entre tous les couples de machines sauf r2." + +SYSTEMS="s1 s2 r1 r3 r4 r5" + +run() { + + PAUSE=1 + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + + #requireSshGuests $SYSTEMS + + for i in $SYSTEMS; do + for j in $SYSTEMS; do + echo "$i : ping $j" + vdn-ssh -t root@$i "ping -c 1 $j" || exit 1 + done + done + + unsetErrorHandler + echoDone + pauseRaw + +} + diff --git a/vdn/networks.bak/routing-static-buster/scripts/repairAll b/vdn/networks.bak/routing-static-buster/scripts/repairAll new file mode 100644 index 0000000..a22be64 --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/scripts/repairAll @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +DESC="Configuration routage dynamique pour r2." + + +run() { + requireSshGuests r2 + + PAUSE=1 + + vdn-scripts repairR2 +} + + + + + diff --git a/vdn/networks.bak/routing-static-buster/scripts/repairR2 b/vdn/networks.bak/routing-static-buster/scripts/repairR2 new file mode 100644 index 0000000..37aac1b --- /dev/null +++ b/vdn/networks.bak/routing-static-buster/scripts/repairR2 @@ -0,0 +1,42 @@ +#!/usr/bin/env bash + +DESC="Configuration de r2." + +run() { + . common.sh + + name="r2" + + startAndWaitSsh $name + + cat << EOF | setInterfaces r2 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.2.2 + netmask 255.255.255.0 + up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.2.1 + up route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.2.1 + +auto eth1 +iface eth1 inet static + address 192.168.4.1 + netmask 255.255.255.0 + gateway 192.168.4.2 + +auto eth2 +iface eth2 inet static + address 192.168.5.1 + netmask 255.255.255.0 + up route add -net 192.168.8.0 netmask 255.255.255.0 gw 192.168.5.2 +EOF + + setForwarding r2 + + vdn-ssh root@r2 systemctl restart networking + +} + diff --git a/vdn/networks.bak/sae203/build b/vdn/networks.bak/sae203/build new file mode 100755 index 0000000..a7c8202 --- /dev/null +++ b/vdn/networks.bak/sae203/build @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +set -eu + + +build() { + local n + + n=debian-1 + vdn-build $n + vdn-config $n MEMORY "2048" + vdn-config $n MODE "cow" + #vdn-config $n AUFS_SIZE "2048" + vdn-config $n HDA "DebianBullseye-sae-amd64.disk" + #vdn-config $n NETWORKS "\$NET_2#10.0.2.15/24" + vdn-config $n KVM_VIEWER_AUTOSTART "1" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " +} + diff --git a/vdn/networks.bak/sae203/net.svgz b/vdn/networks.bak/sae203/net.svgz new file mode 100644 index 0000000..891a227 Binary files /dev/null and b/vdn/networks.bak/sae203/net.svgz differ diff --git a/vdn/networks.bak/sae203/network.vdn b/vdn/networks.bak/sae203/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/sae203/scripts/baseConfig b/vdn/networks.bak/sae203/scripts/baseConfig new file mode 100755 index 0000000..152bbc5 --- /dev/null +++ b/vdn/networks.bak/sae203/scripts/baseConfig @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +DESC="Configuration de base." + +SYSTEMS="debian-1" + +prepareTp() { + while :; do + vdn-ssh -t root@debian-1 'http_proxy=http://193.49.118.36:8080/ https_proxy=http://193.49.118.36:8080/ wget -O /tmp/r http://limos.fr' || { + echo + echo "IMPOSSIBLE DE http://limos.fr... retry..." + echo + sleep 1 + } && break + done + + vdn-ssh -t root@debian-1 ' + export http_proxy=http://193.49.118.36:8080/; + export https_proxy=http://193.49.118.36:8080/; + [ ! -d testssl.sh ] && git clone https://github.com/drwetter/testssl.sh.git || \ + echo "testssl.sh déjà présent." + ' + + + vdn-ssh -t root@debian-1 ' + export http_proxy=http://193.49.118.36:8080/; + export https_proxy=http://193.49.118.36:8080/; + + apt-get install -y webcheck + ' +} + +run() { + local r + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + prepareTp + r=$? + unsetErrorHandler + echoDone + return $r + +} + diff --git a/vdn/networks.bak/secure-1-buster/build b/vdn/networks.bak/secure-1-buster/build new file mode 100755 index 0000000..75e0928 --- /dev/null +++ b/vdn/networks.bak/secure-1-buster/build @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +set -eu + + +build() { + local n + + n=debian-1 + vdn-build $n + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n MEMORY "256" + vdn-config $n MODE "overlay" + vdn-config $n AUFS_SIZE "2048" + vdn-config $n HDA "DebianBuster-amd64-2.disk" + vdn-config $n EXTRA_SERVICES "apache2 haveged containerd docker" + #vdn-config $n NETWORKS "\$NET_2#10.0.2.15/24" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " +} + diff --git a/vdn/networks.bak/secure-1-buster/net.svgz b/vdn/networks.bak/secure-1-buster/net.svgz new file mode 100644 index 0000000..ca9ab4e Binary files /dev/null and b/vdn/networks.bak/secure-1-buster/net.svgz differ diff --git a/vdn/networks.bak/secure-1-buster/network.vdn b/vdn/networks.bak/secure-1-buster/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/secure-1-buster/scripts/baseConfig b/vdn/networks.bak/secure-1-buster/scripts/baseConfig new file mode 100755 index 0000000..152bbc5 --- /dev/null +++ b/vdn/networks.bak/secure-1-buster/scripts/baseConfig @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +DESC="Configuration de base." + +SYSTEMS="debian-1" + +prepareTp() { + while :; do + vdn-ssh -t root@debian-1 'http_proxy=http://193.49.118.36:8080/ https_proxy=http://193.49.118.36:8080/ wget -O /tmp/r http://limos.fr' || { + echo + echo "IMPOSSIBLE DE http://limos.fr... retry..." + echo + sleep 1 + } && break + done + + vdn-ssh -t root@debian-1 ' + export http_proxy=http://193.49.118.36:8080/; + export https_proxy=http://193.49.118.36:8080/; + [ ! -d testssl.sh ] && git clone https://github.com/drwetter/testssl.sh.git || \ + echo "testssl.sh déjà présent." + ' + + + vdn-ssh -t root@debian-1 ' + export http_proxy=http://193.49.118.36:8080/; + export https_proxy=http://193.49.118.36:8080/; + + apt-get install -y webcheck + ' +} + +run() { + local r + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + prepareTp + r=$? + unsetErrorHandler + echoDone + return $r + +} + diff --git a/vdn/networks.bak/secure-buster/build b/vdn/networks.bak/secure-buster/build new file mode 100755 index 0000000..9362fbe --- /dev/null +++ b/vdn/networks.bak/secure-buster/build @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +set -eu + + +build() { + local n + + for n in bigboss; do + vdn-build $n + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n MEMORY "2048" + done + + n=bigboss + vdn-config $n EXTRA_SERVICES "apache2 proftpd nfs-server isc-dhcp-server haveged" + vdn-config $n NETWORKS "\$NET_2#10.0.2.15/24" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " +} + diff --git a/vdn/networks.bak/secure-buster/net.svgz b/vdn/networks.bak/secure-buster/net.svgz new file mode 100644 index 0000000..a9afb78 Binary files /dev/null and b/vdn/networks.bak/secure-buster/net.svgz differ diff --git a/vdn/networks.bak/secure-buster/network.vdn b/vdn/networks.bak/secure-buster/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/secure-buster/scripts/baseConfigAll b/vdn/networks.bak/secure-buster/scripts/baseConfigAll new file mode 100644 index 0000000..9e9409f --- /dev/null +++ b/vdn/networks.bak/secure-buster/scripts/baseConfigAll @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (hostname, hosts, interfaces)." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + # Construction de la liste des commandes + L="" + for i in $SYSTEMS; do + n=$(echo $i | cut -b 1 | tr -s '[[:lower:]]' '[[:upper:]]') + n="$n$(echo $i | cut -b 2-)" + L="$L baseConfig$n" + done + + parallelDisablePause + + vdn-scripts $L + + unsetErrorHandler + echoDone + +} diff --git a/vdn/networks.bak/secure-buster/scripts/baseConfigBigboss b/vdn/networks.bak/secure-buster/scripts/baseConfigBigboss new file mode 100755 index 0000000..10ff6e8 --- /dev/null +++ b/vdn/networks.bak/secure-buster/scripts/baseConfigBigboss @@ -0,0 +1,58 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de bigboss (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="bigboss" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static +address 192.168.30.2 +netmask 255.255.255.0 + +EOF + + + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/secure-buster/scripts/baseConfigLambda b/vdn/networks.bak/secure-buster/scripts/baseConfigLambda new file mode 100644 index 0000000..e5ed79f --- /dev/null +++ b/vdn/networks.bak/secure-buster/scripts/baseConfigLambda @@ -0,0 +1,69 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de lambda (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="lambda" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/secure-buster/scripts/baseConfigNomade b/vdn/networks.bak/secure-buster/scripts/baseConfigNomade new file mode 100644 index 0000000..01fa92c --- /dev/null +++ b/vdn/networks.bak/secure-buster/scripts/baseConfigNomade @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de nomade (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="nomade" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/secure-buster/scripts/baseConfigSociete b/vdn/networks.bak/secure-buster/scripts/baseConfigSociete new file mode 100644 index 0000000..9d1bbc2 --- /dev/null +++ b/vdn/networks.bak/secure-buster/scripts/baseConfigSociete @@ -0,0 +1,79 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de societe (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="societe" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.30.1 + netmask 255.255.255.0 + +EOF + + vdn-ssh root@$name "systemctl restart networking" + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/secure-buster/scripts/baseConfigTiny b/vdn/networks.bak/secure-buster/scripts/baseConfigTiny new file mode 100755 index 0000000..fe94899 --- /dev/null +++ b/vdn/networks.bak/secure-buster/scripts/baseConfigTiny @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de tiny (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="tiny" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth1 +iface eth1 inet static +address 192.168.30.16 +netmask 255.255.255.0 +gateway 192.168.30.1 +EOF + + vdn-ssh root@$name "systemctl restart networking" + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/secure-buster/scripts/baseConfigWeb b/vdn/networks.bak/secure-buster/scripts/baseConfigWeb new file mode 100644 index 0000000..c7611e0 --- /dev/null +++ b/vdn/networks.bak/secure-buster/scripts/baseConfigWeb @@ -0,0 +1,60 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de web (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="web" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + + systemctl restart networking + " + + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/secure-buster/scripts/configFirewall b/vdn/networks.bak/secure-buster/scripts/configFirewall new file mode 100755 index 0000000..9523801 --- /dev/null +++ b/vdn/networks.bak/secure-buster/scripts/configFirewall @@ -0,0 +1,107 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base pur le TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +setFirewall() { + vdn-ssh root@societe ' +cat << EOF > /etc/network/fw-start +#!/bin/sh + +set -x + +# Vide les tables + +iptables -F +iptables -t nat -F +iptables -t mangle -F +iptables -X + +# fixe les politiques par défaut + +iptables -P INPUT DROP +iptables -P FORWARD ACCEPT +iptables -P OUTPUT ACCEPT + +# spécifique à VDN (Début) + +iptables -A INPUT -i eth3 -j ACCEPT +iptables -A OUTPUT -o eth3 -j ACCEPT + +# spécifique à VDN (Fin) + +# Autorise l''interface loopback + +iptables -A INPUT -i lo -j ACCEPT +iptables -A OUTPUT -o lo -j ACCEPT + +# Log + +iptables -A INPUT -j LOG --log-prefix "fw INPUT " + +EOF + +chmod 755 /etc/network/fw-start + +cat << EOF > /etc/network/fw-stop +#!/bin/sh + +# Vide les tables + +iptables -F +iptables -t nat -F +iptables -t mangle -F +iptables -X + +# fixe les politiques par défaut + +iptables -P INPUT ACCEPT +iptables -P OUTPUT ACCEPT +iptables -P FORWARD ACCEPT + +EOF + +chmod 755 /etc/network/fw-stop + +/etc/network/fw-stop +' + + # disable ipv4.ip_forward + + vdn-ssh root@societe "echo 0 > /proc/sys/net/ipv4/ip_forward" + +} + + +run() { + setErrorHandler + echoStart + + ### Configuration de base (hostname, hosts, interfaces) + + parallelDisablePause + + vdn-scripts baseConfigAll + + ### Page d'accueil des serveurs Web + + for i in lambda web bigboss; do + vdn-ssh root@$i " + echo \"

Bienvenue sur le serveur Web de $i!

\" > /var/www/index.html + " + done + + ### /etc/network/fw-start /etc/network/fw-stop + + setFirewall + + ### A COMPLETER ### + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/secure-buster/scripts/configIPv6 b/vdn/networks.bak/secure-buster/scripts/configIPv6 new file mode 100644 index 0000000..b79f8f9 --- /dev/null +++ b/vdn/networks.bak/secure-buster/scripts/configIPv6 @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Conguration IPv6 de base du réseau" + + +SYSTEMS="bigboss lambda nomade societe tiny web" + +setIpv6() { + echo "$@" + host=$1 + eth=$2 + + addr=$(vdn-ssh root@$host "ifconfig $eth" | grep 'inet6:.*fe80:' | head -n 1 | tr -s ' ' | cut -d ' ' -f 4) + + [ -z "$addr" ] && return || : + + case "$3" in + site) new=$(echo "$addr" | sed -re 's/^fe80:/fec0:/');; + global) new=$(echo "$addr" | sed -re 's/^fe80:/2002:/');; + esac + + exist=false + if vdn-ssh root@$host "ifconfig $eth" | grep -q "inet6:.*$new"; then + exist=true + fi + + if [ $exist = false ]; then + echo "$host : ifconfig $eth inet6 add $new" + vdn-ssh root@$host " + ifconfig $eth inet6 add $new/64 + " + fi + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + waitSsh $SYSTEMS + + for i in $SYSTEMS; do + setIpv6WorkAround $i + done + + setIpv6 tiny eth1 site + setIpv6 bigboss eth0 site + setIpv6 web eth0 site + setIpv6 societe eth1 site + setIpv6 societe eth2 site + setIpv6 societe eth0 global + setIpv6 nomade eth0 global + setIpv6 lambda eth0 global + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/secure-buster/scripts/diag1 b/vdn/networks.bak/secure-buster/scripts/diag1 new file mode 100644 index 0000000..b8f21e1 --- /dev/null +++ b/vdn/networks.bak/secure-buster/scripts/diag1 @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +set -u + +DESC="Diag1." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + # tiny peut joindre bigboss (et vice versa). + + echo "=== ping bigboss -> tiny" + vdn-ssh root@bigboss "timeout 2 ping -c 1 tiny &> /dev/null" + + echo "=== ping tiny -> bigoss" + vdn-ssh root@tiny "timeout 2 ping -c 1 bigboss &> /dev/null" + + # societe peut joindre toutes les machines + + for i in $SYSTEMS; do + echo "=== ping societe -> $i" + vdn-ssh root@societe "timeout 2 ping -c 1 $i &> /dev/null" + done + + # lambda peut joindre nomade (et vice-versa) + + echo; + + echo "=== ping lambda -> nomade" + vdn-ssh root@lambda "timeout 2 ping -c 1 nomade &> /dev/null" + + echo "=== ping nomade -> lambda" + vdn-ssh root@nomade "timeout 2 ping -c 1 lambda &> /dev/null" + + + # vérifiez que les serveurs apache2 de lambda, web et bigboss fonctionnent + + echo + echo "Tests des serveurs web." + + vdn-ssh root@bigboss "timeout 2 lynx -dump bigboss" | grep -q 'Bienvenue' + vdn-ssh root@web "timeout 2 lynx -dump web" | grep -q 'Bienvenue' + vdn-ssh root@lambda "timeout 2 lynx -dump lambda" | grep -q 'Bienvenue' + + echo + [ $? = 0 ] && green ok || red ko + +} diff --git a/vdn/networks.bak/secure-buster/scripts/diag2 b/vdn/networks.bak/secure-buster/scripts/diag2 new file mode 100644 index 0000000..c7b7b8b --- /dev/null +++ b/vdn/networks.bak/secure-buster/scripts/diag2 @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +set -u + +DESC="Diag2." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + diag root@tiny \ + "Test local -> DMZ :" \ + "timeout 1 lynx -dump web | grep --line-buffered -q 'Bienvenue'" + + + diag root@bigboss \ + "Test local -> Internet :" \ + "timeout 1 lynx -dump nomade 2>&1 | grep --line-buffered -q 'Bienvenue'" +} diff --git a/vdn/networks.bak/secure-buster/scripts/diag3 b/vdn/networks.bak/secure-buster/scripts/diag3 new file mode 100644 index 0000000..f0f260e --- /dev/null +++ b/vdn/networks.bak/secure-buster/scripts/diag3 @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +set -u + +DESC="Diag3." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + diag root@nomade \ + "Test Internet -> web :" \ + "timeout 1 lynx -dump societe 2>&1 | grep --line-buffered -q 'Bienvenue'" + + diag root@web \ + "Test filtrage sortie web" \ + "! timeout 1 nmap -p 22 nomade 2>1 | grep --line-buffered -q open" + +} diff --git a/vdn/networks.bak/secure-buster/scripts/diagFirewall b/vdn/networks.bak/secure-buster/scripts/diagFirewall new file mode 100755 index 0000000..4da22fc --- /dev/null +++ b/vdn/networks.bak/secure-buster/scripts/diagFirewall @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +run() { + setErrorHandler + echoStart + + #requireSshGuests $SYSTEMS + + parallelDisablePause + + vdn-scripts diag1 diag2 diag3 + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/secure-buster/scripts/diagIPv6 b/vdn/networks.bak/secure-buster/scripts/diagIPv6 new file mode 100755 index 0000000..e5f8483 --- /dev/null +++ b/vdn/networks.bak/secure-buster/scripts/diagIPv6 @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test ping6 IPv6 (à travers un routeur IPv6)" + +SYSTEMS="bigboss societe web" + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | head -n 1 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + + +testIPv6() { + + ipWeb=$(getIPv6 web eth0) + vdn-ssh root@bigboss "ping6 -c 1 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + #requireSshGuests $SYSTEMS + #waitSsh $SYSTEMS + + testIPv6 + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/secure-buster/scripts/testFirewall b/vdn/networks.bak/secure-buster/scripts/testFirewall new file mode 100755 index 0000000..5c5dd92 --- /dev/null +++ b/vdn/networks.bak/secure-buster/scripts/testFirewall @@ -0,0 +1,109 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +config() { + IP_SOCIETE_PUBLIC=$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) + vdn-ssh -t root@societe " +# net.ipv4.ip_forward=1 +sed -i -re 's/#(net.ipv4.ip_forward=1)/\1/g' /etc/sysctl.conf +sysctl -p + +cat << EOF > vide.sh +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat +EOF + +chmod 755 vide.sh + +cat << EOF > local-1.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local-1.sh + +cat << EOF > fermeDehors.sh +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + +iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT +iptables -A INPUT -m state --state RELATED -j ACCEPT + +iptables -A INPUT -i eth0 -j REJECT +EOF + +chmod 755 fermeDehors.sh + +cat << EOF > forward.sh +iptables -t nat -A PREROUTING -p tcp -d $IP_SOCIETE_PUBLIC --dport 80 -j DNAT --to 192.168.1.2 +EOF + +chmod 755 forward.sh + +cat << EOF > local.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward + +iptables -s 192.168.30.0/24 -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +iptables -s 192.168.1.2 -p tcp --dport 80 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 53 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 25 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh + +cat << EOF > fw-on.sh +#!/bin/sh + +/root/vide.sh +/root/fermeDehors.sh +/root/local.sh +/root/forward.sh +if [ -x /root/dns.sh ]; then + /root/dns.sh +fi +EOF + +chmod 755 fw-on.sh + +/root/fw-on.sh +" +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + config + + sleep 1 + + parallelDisablePause + vdn-scripts diagFirewall + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/secure-buster/scripts/testIPv6 b/vdn/networks.bak/secure-buster/scripts/testIPv6 new file mode 100755 index 0000000..8f8ac1b --- /dev/null +++ b/vdn/networks.bak/secure-buster/scripts/testIPv6 @@ -0,0 +1,86 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Nouvelle configuration IPv6 du réseau + tests" + +SYSTEMS="bigboss societe web" + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + +testIPv6() { + echo + echo "test link between web and bigboss (Unique local address)" + echo + + # réinitialise les interfaces + + vdn-ssh root@bigboss "ifconfig eth0 down ; ifconfig eth0 up" + vdn-ssh root@web "ifconfig eth0 down ; ifconfig eth0 up" + vdn-ssh root@societe " + ifconfig eth0 down ; ifconfig eth0 up + ifconfig eth1 down ; ifconfig eth1 up + ifconfig eth2 down ; ifconfig eth2 up + + echo 1 >/proc/sys/net/ipv6/conf/all/forwarding + " + + # Ajoute les adresses IPv6 "locales uniques" en utilisant le suffixe + # de l'adresse "lien local" + # + # * la DMZ (web) aura le préfixe fc01 + # * le réseau interne (bigboss) aura le préfixe fc00 + # + # La fonction routage IPv6 est activé sur société + # et les route par défaut sont fixées sur web et bigboss + # + # un ping6 de bigboss vers web valide la config. + + ipSocieteWeb=$(getIPv6 societe eth1) + ipSocieteWeb=$(echo $ipSocieteWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteWeb/64 dev eth1" + + ipSocieteBigboss=$(getIPv6 societe eth2) + ipSocieteBigboss=$(echo $ipSocieteBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteBigboss/64 dev eth2" + + ipWeb=$(getIPv6 web eth0) + ipWeb=$(echo $ipWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@web "ip -6 addr add $ipWeb/64 dev eth0" + + ipBigboss=$(getIPv6 bigboss eth0) + ipBigboss=$(echo $ipBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@bigboss "ip -6 addr add $ipBigboss/64 dev eth0" + + vdn-ssh root@web " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteWeb" + vdn-ssh root@bigboss " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteBigboss" + + vdn-ssh root@bigboss "ping6 -c 3 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + waitSsh $SYSTEMS + + testIPv6 + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks.bak/zoo/bookworm.conf b/vdn/networks.bak/zoo/bookworm.conf new file mode 100644 index 0000000..36701a8 --- /dev/null +++ b/vdn/networks.bak/zoo/bookworm.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="direct" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=3 + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="32000" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/zoo/build b/vdn/networks.bak/zoo/build new file mode 100755 index 0000000..7e9929d --- /dev/null +++ b/vdn/networks.bak/zoo/build @@ -0,0 +1,75 @@ +#!/usr/bin/env bash + +build() { + local n + + n="buster" + vdn-build $n + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n HDA "DebianBuster.disk" + vdn-config $n CDROM "" + vdn-config $n CDROM_REPOSITORY "" + vdn-config $n MODE "direct" + vdn-config $n MEMORY "2048" + vdn-config $n HDA_SIZE "32000" + #vdn-config $n KVM_VIEWER_AUTOSTART 1 + + n="buster-tgz2" + vdn-build $n + vdn-config $n HDA "DebianBuster.disk" + vdn-config $n MODE "tgz2" + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n MEMORY "384" + #vdn-config $n RUNLEVEL "multi-user.target" + vdn-config $n SET_HOSTNAME 0 + #vdn-config $n HOST_FILES "" + vdn-config $n SET_PROXY "0" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "0" + + #vdn-config $n NETWORKS "none \$NET_2#192.168.30.16/24" + + + + n="bullseye" + vdn-build $n + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n HDA "DebianBullseye.disk" + vdn-config $n CDROM "debian-testing-amd64-netinst.iso" + vdn-config $n CDROM_REPOSITORY "https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-cd/" + vdn-config $n MODE "direct" + vdn-config $n MEMORY "2048" + vdn-config $n HDA_SIZE "32000" + #vdn-config $n KVM_VIEWER_AUTOSTART 1 + + n="bookworm" + vdn-build $n + vdn-config $n GUEST_SYS "debian/$n" + vdn-config $n HDA "DebianBookworm.disk" + vdn-config $n MODE "direct" + vdn-config $n MEMORY "2048" + vdn-config $n HDA_SIZE "32000" + #vdn-config $n KVM_VIEWER_AUTOSTART 1 + + + n="bullseye-test" + vdn-build $n + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n HDA "DebianBullseye-test.disk" + vdn-config $n CDROM "debian-testing-amd64-netinst.iso" + vdn-config $n CDROM_REPOSITORY "https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-cd/" + vdn-config $n MODE "direct" + vdn-config $n MEMORY "2048" + vdn-config $n HDA_SIZE "16000" + vdn-config $n KVM_VIEWER_AUTOSTART 1 + + n="bullseye-sae" + vdn-build $n + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n HDA "DebianBullseye-sae-amd64.disk" + vdn-config $n CDROM "debian-11.2.0-amd64-netinst.iso" + vdn-config $n CDROM_REPOSITORY "https://cdimage.debian.org/cdimage/release/11.2.0/amd64/iso-cd" + vdn-config $n MODE "direct" + vdn-config $n MEMORY "2048" + vdn-config $n HDA_SIZE "16000" + vdn-config $n KVM_VIEWER_AUTOSTART 1 +} diff --git a/vdn/networks.bak/zoo/bullseye-sae.conf b/vdn/networks.bak/zoo/bullseye-sae.conf new file mode 100644 index 0000000..9e84653 --- /dev/null +++ b/vdn/networks.bak/zoo/bullseye-sae.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="direct" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=5 + +# Chemin du premier disque du système. + +HDA="DebianBullseye-sae-amd64.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="16000" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="debian-11.2.0-amd64-netinst.iso" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/cdimage/release/11.2.0/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART="1" + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/zoo/bullseye-test.conf b/vdn/networks.bak/zoo/bullseye-test.conf new file mode 100644 index 0000000..c62c414 --- /dev/null +++ b/vdn/networks.bak/zoo/bullseye-test.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="direct" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=4 + +# Chemin du premier disque du système. + +HDA="DebianBullseye-test.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="16000" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="debian-testing-amd64-netinst.iso" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-cd/" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART="1" + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/zoo/bullseye.conf b/vdn/networks.bak/zoo/bullseye.conf new file mode 100644 index 0000000..87044e1 --- /dev/null +++ b/vdn/networks.bak/zoo/bullseye.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="direct" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=2 + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="32000" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="debian-testing-amd64-netinst.iso" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-cd/" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/zoo/buster-tgz2.conf b/vdn/networks.bak/zoo/buster-tgz2.conf new file mode 100644 index 0000000..05fa88b --- /dev/null +++ b/vdn/networks.bak/zoo/buster-tgz2.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=1 + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/zoo/buster.conf b/vdn/networks.bak/zoo/buster.conf new file mode 100644 index 0000000..5bcc3ac --- /dev/null +++ b/vdn/networks.bak/zoo/buster.conf @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="direct" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Identificateur unique par système. ATTENTION à assurer son unicité +# pour chaque système d'un réseau donné. + +IDENT=0 + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="32000" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel. + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks.bak/zoo/graph.svgz b/vdn/networks.bak/zoo/graph.svgz new file mode 100644 index 0000000..4eec210 Binary files /dev/null and b/vdn/networks.bak/zoo/graph.svgz differ diff --git a/vdn/networks.bak/zoo/network.vdn b/vdn/networks.bak/zoo/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks.bak/zoo/scripts/.prepareDebianBullseye-test.swp b/vdn/networks.bak/zoo/scripts/.prepareDebianBullseye-test.swp new file mode 100644 index 0000000..902a93b Binary files /dev/null and b/vdn/networks.bak/zoo/scripts/.prepareDebianBullseye-test.swp differ diff --git a/vdn/networks.bak/zoo/scripts/prepareDebian b/vdn/networks.bak/zoo/scripts/prepareDebian new file mode 100644 index 0000000..028a9e9 --- /dev/null +++ b/vdn/networks.bak/zoo/scripts/prepareDebian @@ -0,0 +1,143 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Préparation du système pour compatibilité DIRECT, COW et TGZ." + +set +u +[ -z "$GUEST_NAME" ] && GUEST_NAME=buster +set -u + + +updateUpgrade() { + vdn-ssh root@$GUEST_NAME "apt-get update; apt-get -y upgrade" +} + +# pb rpcbind : +# - longueur (le service ne ne semble pas démarrer à l'INSTALLATION +# mais le service rpcbind démarre au démarrage + +installNfs() { + vdn-ssh root@$GUEST_NAME "export DEBIAN_FRONTEND=noninteractive; apt-get install -y nfs-common nfs-kernel-server" +} + +installQuaggaFrr() { + case "$GUEST_SYS" in + debian/buster) debs=quagga;; + *) debs=bird2;; + esac + + vdn-ssh root@$GUEST_NAME "export DEBIAN_FRONTEND=noninteractive; apt-get remove --purge -y frr" + vdn-ssh root@$GUEST_NAME "export DEBIAN_FRONTEND=noninteractive; apt-get install -y $debs" +} + +installModulesReseaux() { + + # paquets problématiques retirés : + # rpcbind : le paramétrage lors de l'installation du paquet bloque 90s + # nfs-common nfs-kernel-server + # quagga + # user-mode-linux + ### pour bookworm + # curlftpfs vim-gtk glib-2.0-dev + + DEBS="less ssh mingetty rsync net-tools haveged rng-tools dnsutils zerofree" + DEBS="$DEBS vim slirp" + DEBS="$DEBS sshfs psmisc bsdutils strace busybox-static" + DEBS="$DEBS iptables tcpdump wireshark-gtk nmap" + DEBS="$DEBS manpages" + DEBS="$DEBS ftp curl dillo" + DEBS="$DEBS libapache2-mod-php apache2-doc" + DEBS="$DEBS xbase-clients" + DEBS="$DEBS lynx psmisc file strace lsof telnet links links2" + DEBS="$DEBS iputils-ping" + DEBS="$DEBS rsync dialog" + DEBS="$DEBS firefox-esr" + DEBS="$DEBS nautilus" + DEBS="$DEBS openvpn" + DEBS="$DEBS proftpd isc-dhcp-server" + + DEBS="$DEBS busybox-static debootstrap" + + DEBS="$DEBS gedit" + + DEBS="$DEBS gpm vde2" + DEBS="$DEBS spice-vdagent" + DEBS="$DEBS gpm vde2" + DEBS="$DEBS gcc make autoconf uidmap pkg-config \ + glib-2.0 libglib2.0-dev dpkg-dev \ + libcap-dev libcap2 libseccomp2 libseccomp-dev" + + # TP Pascal : + DEBS="$DEBS john hashcat sqlmap php default-mysql-server" + + echo "apt-get..." + vdn-ssh -t root@$GUEST_NAME " + export DEBIAN_FRONTEND=noninteractive; + export http_proxy=$http_proxy; + apt-get install -y $DEBS + " + # cas de lighttpd + vdn-ssh -t root@$GUEST_NAME " + export DEBIAN_FRONTEND=noninteractive; + export http_proxy=$http_proxy + apt-get install -y lighttpd + systemctl disable lighttpd + " + + + # disable services + + # remove : nfs-kernel-server nfs-blkmap nfs-server + + local l="ModemManager NetworkManager NetworkManager-dispatcher NetworkManager-wait-online anacron apparmor autovt@ bgpd dbus-fi.w1.wpa_supplicant1 dbus-org.freedesktop.Avahi dbus-org.freedesktop.ModemManager1 dbus-org.freedesktop.nm-dispatcher dbus-org.freedesktop.timesync1 getty@ hddtemp isisd lighttpd lm-sensors network-manager nmbd openbsd-inetd openvpn ospf6d ospfd pimd portmap pppd-dns ripd ripngd rpcbind rsync smbd speech-dispatcher syslog systemd-timesyncd udisks2 wpa_supplicant zebra uml-utilities apache2 proftpd isc-dhcp-server mariadb haveged nfs-server bird" + + vdn-ssh -t root@$GUEST_NAME "for i in $l; do echo \"Disable \$i\"; systemctl disable \$i; done" + +} + +installAll() { + updateUpgrade + installQuaggaFrr + installModulesReseaux + installNfs +} + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + . $VDN_PATH/bin/functions-build.sh + + setErrorHandler + echoStart + + set -a + . $NETWORK_DIR/$GUEST_NAME.conf + set +a + + GUEST_DIR=$VDN_PATH/distribs/guests/direct/$GUEST_SYS + + echo "HDA=$VDN_PATH/files/$HDA" + + [ ! -e $VDN_PATH/files/$HDA ] && \ + debootstrap + + requireSshGuests $GUEST_NAME + + set +u + [ -z "$http_proxy" ] && http_proxy="" || : + [ -z "$https_proxy" ] && https_proxy="" || : + set -u + + installAll + + cleanHistory $GUEST_NAME + + + + vdn-halt $GUEST_NAME + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/zoo/scripts/prepareDebian.old b/vdn/networks.bak/zoo/scripts/prepareDebian.old new file mode 100755 index 0000000..83ec0e4 --- /dev/null +++ b/vdn/networks.bak/zoo/scripts/prepareDebian.old @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Préparation du système Debian pour compatibilité DIRECT, COW et TGZ." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="debian" + + GUEST_SYS=$(vdn-infos debian | grep GUEST_SYS | cut -d '=' -f 2) + + GUEST_DIR=$VDN_PATH/distribs/guests/direct/$GUEST_SYS + + if [ ! -e $GUEST_DIR/prepare.sh ]; then + error "$GUEST_DIR/prepare.sh not found" + fi + + startAndWaitSsh $name + + ( cd $GUEST_DIR; ./prepare.sh $name ) + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/zoo/scripts/prepareDebian.old2 b/vdn/networks.bak/zoo/scripts/prepareDebian.old2 new file mode 100755 index 0000000..0c1937d --- /dev/null +++ b/vdn/networks.bak/zoo/scripts/prepareDebian.old2 @@ -0,0 +1,120 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Préparation du système pour compatibilité DIRECT, COW et TGZ." + +set +u +[ -z "$GUEST_NAME" ] && GUEST_NAME=buster +set -u + + +updateUpgrade() { + vdn-ssh root@$GUEST_NAME "apt-get update; apt-get -y upgrade" +} + +installModulesReseaux() { + + # paquets problématiques retirés : + # rpcbind : le paramétrage ors de l'installation du paquet bloque + # nfs-common nfs-kernel-server + # quagga + + DEBS="less ssh mingetty rsync net-tools haveged rng-tools dnsutils zerofree" + DEBS="$DEBS vim slirp" + DEBS="$DEBS sshfs psmisc bsdutils strace busybox-static" + DEBS="$DEBS tcpdump wireshark-gtk nmap" + DEBS="$DEBS manpages" + DEBS="$DEBS curlftpfs ftp curl dillo" + DEBS="$DEBS libapache2-mod-php apache2-doc" + DEBS="$DEBS xbase-clients" + DEBS="$DEBS lynx psmisc file strace lsof telnet links links2" + DEBS="$DEBS iputils-ping" + DEBS="$DEBS rsync dialog" + DEBS="$DEBS firefox-esr" + DEBS="$DEBS nautilus" + DEBS="$DEBS user-mode-linux" + DEBS="$DEBS openvpn" + DEBS="$DEBS proftpd isc-dhcp-server" + + DEBS="$DEBS busybox-static debootstrap" + DEBS="$DEBS user-mode-linux" + + DEBS="$DEBS vim-gtk gedit" + + DEBS="$DEBS gpm vde2" + DEBS="$DEBS spice-vdagent" + DEBS="$DEBS gpm vde2" + DEBS="$DEBS gcc make autoconf uidmap pkg-config glib-2.0-dev \ + glib-2.0 libglib2.0-dev dpkg-dev \ + libcap-dev libcap2 libseccomp2 libseccomp-dev" + + # TP Pascal : + DEBS="$DEBS john hashcat sqlmap php default-mysql-server" + + echo "apt-get..." + vdn-ssh -t root@$GUEST_NAME " + export DEBIAN_FRONTEND=noninteractive; + export http_proxy=$http_proxy; + apt-get install -y $DEBS + " + # cas de lighttpd + vdn-ssh -t root@$GUEST_NAME " + export DEBIAN_FRONTEND=noninteractive; + export http_proxy=$http_proxy + apt-get install -y lighttpd + systemctl disable lighttpd + " + + + # disable services + + # remove : nfs-kernel-server nfs-blkmap nfs-server + + local l="ModemManager NetworkManager NetworkManager-dispatcher NetworkManager-wait-online anacron apparmor autovt@ bgpd dbus-fi.w1.wpa_supplicant1 dbus-org.freedesktop.Avahi dbus-org.freedesktop.ModemManager1 dbus-org.freedesktop.nm-dispatcher dbus-org.freedesktop.timesync1 getty@ hddtemp isisd lighttpd lm-sensors network-manager nmbd openbsd-inetd openvpn ospf6d ospfd pimd portmap pppd-dns ripd ripngd rpcbind rsync smbd speech-dispatcher syslog systemd-timesyncd udisks2 wpa_supplicant zebra uml-utilities apache2 proftpd isc-dhcp-server" + + vdn-ssh -t root@$GUEST_NAME "for i in $l; do echo \"Disable \$i\"; systemctl disable \$i; done" + +} + +installAll() { + updateUpgrade + installModulesReseaux +} + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + . $VDN_PATH/bin/functions-build.sh + + setErrorHandler + echoStart + + set -a + . $NETWORK_DIR/$GUEST_NAME.conf + set +a + + GUEST_DIR=$VDN_PATH/distribs/guests/direct/$GUEST_SYS + + echo "HDA=$VDN_PATH/files/$HDA" + + #[ ! -e $VDN_PATH/files/$HDA ] && \ + debootstrap + + requireSshGuests $GUEST_NAME + + set +u + [ -z "$http_proxy" ] && http_proxy="" || : + [ -z "$https_proxy" ] && https_proxy="" || : + set -u + + installAll + + cleanHistory $GUEST_NAME + + vdn-halt $GUEST_NAME + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/zoo/scripts/prepareDebianBookworm b/vdn/networks.bak/zoo/scripts/prepareDebianBookworm new file mode 100755 index 0000000..1d123c3 --- /dev/null +++ b/vdn/networks.bak/zoo/scripts/prepareDebianBookworm @@ -0,0 +1,9 @@ +#!/bin/bash + +DIR=$(readlink -f $(dirname $0)/..) + +run() { + export GUEST_NAME=bookworm + vdn-scripts prepareDebian +} + diff --git a/vdn/networks.bak/zoo/scripts/prepareDebianBullseye b/vdn/networks.bak/zoo/scripts/prepareDebianBullseye new file mode 100755 index 0000000..46fa7d8 --- /dev/null +++ b/vdn/networks.bak/zoo/scripts/prepareDebianBullseye @@ -0,0 +1,9 @@ +#!/bin/bash + +DIR=$(readlink -f $(dirname $0)/..) + +run() { + export GUEST_NAME=bullseye + vdn-scripts prepareDebian +} + diff --git a/vdn/networks.bak/zoo/scripts/prepareDebianBullseye-test b/vdn/networks.bak/zoo/scripts/prepareDebianBullseye-test new file mode 100755 index 0000000..28502b5 --- /dev/null +++ b/vdn/networks.bak/zoo/scripts/prepareDebianBullseye-test @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Préparation du système pour compatibilité DIRECT, COW et TGZ." + +GUEST_NAME=bullseye-test + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + . $VDN_PATH/bin/functions-build.sh + + setErrorHandler + echoStart + + set -a + . $NETWORK_DIR/$GUEST_NAME.conf + set +a + + env | egrep 'VDN|GUEST|HD|NET' + + GUEST_DIR=$VDN_PATH/distribs/guests/direct/$GUEST_SYS + + debootstrap + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks.bak/zoo/scripts/prepareDebianBuster b/vdn/networks.bak/zoo/scripts/prepareDebianBuster new file mode 100755 index 0000000..ac2e88c --- /dev/null +++ b/vdn/networks.bak/zoo/scripts/prepareDebianBuster @@ -0,0 +1,9 @@ +#!/bin/bash + +DIR=$(readlink -f $(dirname $0)/..) + +run() { + export GUEST_NAME=buster + vdn-scripts prepareDebian +} + diff --git a/vdn/networks.bak/zoo/scripts/prepareKali b/vdn/networks.bak/zoo/scripts/prepareKali new file mode 100755 index 0000000..929e9a5 --- /dev/null +++ b/vdn/networks.bak/zoo/scripts/prepareKali @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Préparation du système Kali pour compatibilité COW et TGZ." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="kali" + + GUEST_SYS=$(vdn-infos $name | grep GUEST_SYS | cut -d '=' -f 2) + + GUEST_DIR=$VDN_PATH/distribs/guests/direct/$GUEST_SYS + + if [ ! -e $GUEST_DIR/prepare.sh ]; then + error "$GUEST_DIR/prepare.sh not found" + fi + + startAndWaitSsh $name + + ( + cd $GUEST_DIR + ./prepare.sh $name + ) + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo-buster/bigboss.conf b/vdn/networks/demo-buster/bigboss.conf new file mode 100644 index 0000000..7f72dff --- /dev/null +++ b/vdn/networks/demo-buster/bigboss.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="1024" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_2#192.168.30.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2 proftpd nfs-server isc-dhcp-server" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/demo-buster/build b/vdn/networks/demo-buster/build new file mode 100755 index 0000000..1753910 --- /dev/null +++ b/vdn/networks/demo-buster/build @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +build() { + local n + + for n in tiny bigboss societe web lambda nomade; do + vdn-build $n + vdn-config $n MODE "tgz2" + vdn-config $n HDA "DebianBuster.disk" + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n MEMORY "384" + #vdn-config $n RUNLEVEL "multi-user.target" + vdn-config $n SET_HOSTNAME 0 + #vdn-config $n HOST_FILES "" + vdn-config $n SET_PROXY "0" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "0" + #sleep 3 + done + + n=tiny +#vdn-config $n GUEST_SYS "kali/2019.3" + #vdn-config $n HDA "kali-linux-xfce-2019.3-amd64.disk" + #vdn-config $n KERNEL "vmlinuz-5.2.0-kali2-amd64" + #vdn-config $n INITRAMFS "initrd-tgz.img-5.2.0-kali2-amd64" + vdn-config $n NETWORKS "none NET_2#192.168.30.16/24" + vdn-config $n MEMORY "2048" + vdn-config $n RUNLEVEL "graphical.target" + #vdn-config $n MODE "overlay" + + #vdn-config $n KVM_VIEWER_AUTOSTART 1 + + n=bigboss + vdn-config $n EXTRA_SERVICES "apache2 proftpd nfs-server isc-dhcp-server" + vdn-config $n MEMORY "1024" + vdn-config $n NETWORKS "NET_2#192.168.30.2/24" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=societe + vdn-config $n NETWORKS "NET_G#20.X3.Y3.Z3/8 NET_1#192.168.1.1/24 NET_2#192.168.30.1/24" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "1" + vdn-config $n SET_PROXY "1" + + n=web + vdn-config $n NETWORKS "NET_1#192.168.1.2/24" + vdn-config $n EXTRA_SERVICES "apache2" + #vdn-config $n SET_HOSTNAME 1 + #vdn-config $n BOOT_HOSTNAME $n + + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=lambda + vdn-config $n NETWORKS "NET_G#20.X1.Y1.Z1/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=nomade + vdn-config $n NETWORKS "NET_G#20.X2.Y2.Z2/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + +} + diff --git a/vdn/networks/demo-buster/graph.svgz b/vdn/networks/demo-buster/graph.svgz new file mode 100644 index 0000000..c1d43f8 Binary files /dev/null and b/vdn/networks/demo-buster/graph.svgz differ diff --git a/vdn/networks/demo-buster/lambda.conf b/vdn/networks/demo-buster/lambda.conf new file mode 100644 index 0000000..afb5efd --- /dev/null +++ b/vdn/networks/demo-buster/lambda.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X1.Y1.Z1/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/demo-buster/net.svgz b/vdn/networks/demo-buster/net.svgz new file mode 100644 index 0000000..3a3bcdb Binary files /dev/null and b/vdn/networks/demo-buster/net.svgz differ diff --git a/vdn/networks/demo-buster/network.vdn b/vdn/networks/demo-buster/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks/demo-buster/nomade.conf b/vdn/networks/demo-buster/nomade.conf new file mode 100644 index 0000000..3212406 --- /dev/null +++ b/vdn/networks/demo-buster/nomade.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X2.Y2.Z2/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/demo-buster/scripts/atest b/vdn/networks/demo-buster/scripts/atest new file mode 100755 index 0000000..9b0fc5f --- /dev/null +++ b/vdn/networks/demo-buster/scripts/atest @@ -0,0 +1,6 @@ +#!/bin/bash + +run() { + + for i in 1 2 3 4 5 6; do echo $i; sleep 1; done +} diff --git a/vdn/networks/demo-buster/scripts/baseConfigAll b/vdn/networks/demo-buster/scripts/baseConfigAll new file mode 100644 index 0000000..cc55cdc --- /dev/null +++ b/vdn/networks/demo-buster/scripts/baseConfigAll @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (hostname, hosts, interfaces)." + +SYSTEMS="bigboss lambda nomade societe tiny web" +#SYSTEMS="bigboss tiny" + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + # Construction de la liste des commandes + L="" + for i in $SYSTEMS; do + n=$(echo $i | cut -b 1 | tr -s '[[:lower:]]' '[[:upper:]]') + n="$n$(echo $i | cut -b 2-)" + L="$L baseConfig$n" + done + + parallelDisablePause + + vdn-scripts $L + + unsetErrorHandler + echoDone + +} diff --git a/vdn/networks/demo-buster/scripts/baseConfigBigboss b/vdn/networks/demo-buster/scripts/baseConfigBigboss new file mode 100755 index 0000000..6b5f7bf --- /dev/null +++ b/vdn/networks/demo-buster/scripts/baseConfigBigboss @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de bigboss (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="bigboss" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static +address 192.168.30.2 +netmask 255.255.255.0 +gateway 192.168.30.1 + +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo-buster/scripts/baseConfigBigbossTiny b/vdn/networks/demo-buster/scripts/baseConfigBigbossTiny new file mode 100755 index 0000000..5288d4a --- /dev/null +++ b/vdn/networks/demo-buster/scripts/baseConfigBigbossTiny @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (hostname, hosts, interfaces)." + +SYSTEMS="bigboss tiny" + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + # Construction de la liste des commandes + L="" + for i in $SYSTEMS; do + n=$(echo $i | cut -b 1 | tr -s '[[:lower:]]' '[[:upper:]]') + n="$n$(echo $i | cut -b 2-)" + L="$L baseConfig$n" + done + + parallelDisablePause + + vdn-scripts $L + + unsetErrorHandler + echoDone + +} diff --git a/vdn/networks/demo-buster/scripts/baseConfigLambda b/vdn/networks/demo-buster/scripts/baseConfigLambda new file mode 100755 index 0000000..427f59a --- /dev/null +++ b/vdn/networks/demo-buster/scripts/baseConfigLambda @@ -0,0 +1,73 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de lambda (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="lambda" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo-buster/scripts/baseConfigNomade b/vdn/networks/demo-buster/scripts/baseConfigNomade new file mode 100755 index 0000000..01fa92c --- /dev/null +++ b/vdn/networks/demo-buster/scripts/baseConfigNomade @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de nomade (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="nomade" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo-buster/scripts/baseConfigSociete b/vdn/networks/demo-buster/scripts/baseConfigSociete new file mode 100755 index 0000000..f43eb80 --- /dev/null +++ b/vdn/networks/demo-buster/scripts/baseConfigSociete @@ -0,0 +1,79 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de societe (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="societe" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + #/sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.30.1 + netmask 255.255.255.0 + +EOF + + vdn-ssh root@$name "systemctl restart networking" + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo-buster/scripts/baseConfigTiny b/vdn/networks/demo-buster/scripts/baseConfigTiny new file mode 100755 index 0000000..ee3db75 --- /dev/null +++ b/vdn/networks/demo-buster/scripts/baseConfigTiny @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +set -eu + +#set -x + +DESC="Configuration de base de tiny (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="tiny" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + vdn-ssh root@$name "ip addr flush eth1" + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth1 +iface eth1 inet static +address 192.168.30.16 +netmask 255.255.255.0 +gateway 192.168.30.1 +EOF + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo-buster/scripts/baseConfigWeb b/vdn/networks/demo-buster/scripts/baseConfigWeb new file mode 100755 index 0000000..3a67e8d --- /dev/null +++ b/vdn/networks/demo-buster/scripts/baseConfigWeb @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de web (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="web" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.1.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + + systemctl restart networking + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo-buster/scripts/configIPv6 b/vdn/networks/demo-buster/scripts/configIPv6 new file mode 100644 index 0000000..b79f8f9 --- /dev/null +++ b/vdn/networks/demo-buster/scripts/configIPv6 @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Conguration IPv6 de base du réseau" + + +SYSTEMS="bigboss lambda nomade societe tiny web" + +setIpv6() { + echo "$@" + host=$1 + eth=$2 + + addr=$(vdn-ssh root@$host "ifconfig $eth" | grep 'inet6:.*fe80:' | head -n 1 | tr -s ' ' | cut -d ' ' -f 4) + + [ -z "$addr" ] && return || : + + case "$3" in + site) new=$(echo "$addr" | sed -re 's/^fe80:/fec0:/');; + global) new=$(echo "$addr" | sed -re 's/^fe80:/2002:/');; + esac + + exist=false + if vdn-ssh root@$host "ifconfig $eth" | grep -q "inet6:.*$new"; then + exist=true + fi + + if [ $exist = false ]; then + echo "$host : ifconfig $eth inet6 add $new" + vdn-ssh root@$host " + ifconfig $eth inet6 add $new/64 + " + fi + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + waitSsh $SYSTEMS + + for i in $SYSTEMS; do + setIpv6WorkAround $i + done + + setIpv6 tiny eth1 site + setIpv6 bigboss eth0 site + setIpv6 web eth0 site + setIpv6 societe eth1 site + setIpv6 societe eth2 site + setIpv6 societe eth0 global + setIpv6 nomade eth0 global + setIpv6 lambda eth0 global + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks/demo-buster/scripts/errors b/vdn/networks/demo-buster/scripts/errors new file mode 100755 index 0000000..c0d5ac7 --- /dev/null +++ b/vdn/networks/demo-buster/scripts/errors @@ -0,0 +1,5 @@ +#!/bin/bash + +run() { + errors-src/errorsWrapper +} diff --git a/vdn/networks/demo-buster/scripts/errors-src/Makefile b/vdn/networks/demo-buster/scripts/errors-src/Makefile new file mode 100644 index 0000000..42ad515 --- /dev/null +++ b/vdn/networks/demo-buster/scripts/errors-src/Makefile @@ -0,0 +1,4 @@ + +errorsWrapper : errorsWrapper.c + gcc -Wall -o errorsWrapper errorsWrapper.c + diff --git a/vdn/networks/demo-buster/scripts/errors-src/errorsWrapper b/vdn/networks/demo-buster/scripts/errors-src/errorsWrapper new file mode 100755 index 0000000..3762df4 Binary files /dev/null and b/vdn/networks/demo-buster/scripts/errors-src/errorsWrapper differ diff --git a/vdn/networks/demo-buster/scripts/errors-src/errorsWrapper.c b/vdn/networks/demo-buster/scripts/errors-src/errorsWrapper.c new file mode 100644 index 0000000..908d64c --- /dev/null +++ b/vdn/networks/demo-buster/scripts/errors-src/errorsWrapper.c @@ -0,0 +1,13 @@ +#include +#include +#include + +char baseName[1024]="qH3UmebTg5\""; +char fullName[2048]="\"/home/prof/vdn/vdn/networks/demo/scripts/errors-src/"; + +int main() { + strncat(fullName, baseName, 1024); + execlp("bash", "test", "-c", fullName, NULL); + //system(fullName); + return 0; +} diff --git a/vdn/networks/demo-buster/scripts/errors-src/qH3UmebTg5 b/vdn/networks/demo-buster/scripts/errors-src/qH3UmebTg5 new file mode 100755 index 0000000..ef4381d --- /dev/null +++ b/vdn/networks/demo-buster/scripts/errors-src/qH3UmebTg5 @@ -0,0 +1,139 @@ +#!/bin/bash + +runErrorScript() { + #set -x + eval "$@" &> /dev/null + + [ $? != 0 ] && { + echo "Le script a, au moins partiellement, échoué !" >&2 + } || echo "ok" +} + +apply() { + case "$choix" in + + "Erreur 1 (TP1)") + # Remplace 192.168.30.16 par 192.168.30.61 dans tiny:/etc/network/interfaces + runErrorScript "vdn-ssh root@tiny \ + 'sed -i -re s/192.168.30.16/192.168.30.61/g /etc/network/interfaces; \ + ifdown eth1; ifup eth1'";; + + "Correction erreur 1 (TP1)") + runErrorScript "vdn-ssh root@tiny \ + 'sed -i -re s/192.168.30.61/192.168.30.16/g /etc/network/interfaces; \ + ifdown eth1; ifup eth1'";; + + + "Erreur 2 (TP1)") + # Remplace tiny par tini dans bigboss:/etc/hosts + runErrorScript "vdn-ssh root@bigboss 'sed -i -re s/tiny/tini/g /etc/hosts'";; + + "Correction erreur 2 (TP1)") + runErrorScript "vdn-ssh root@bigboss 'sed -i -re s/tini/tiny/g /etc/hosts'";; + + + "Erreur 3 (TP2)") + # NFS : remplace tiny par bigboss dans bigboss:/etc/exports + runErrorScript "vdn-ssh root@bigboss \ + 'sed -i -re s/tiny/bigboss/g /etc/exports; \ + systemctl restart nfs-kernel-server'";; + + "Correction erreur 3 (TP2)") + runErrorScript "vdn-ssh root@bigboss \ + 'sed -i -re s/bigboss/tiny/g /etc/exports; \ + systemctl restart nfs-kernel-server'";; + + + "Erreur 4 (TP3)") + # Apache2 (bigboss) : renomme /var/www/html /var/www/html.bak sur bigboss + runErrorScript "vdn-ssh root@bigboss 'mv /var/www/html /var/www/html.bak'";; + + "Correction erreur 4 (TP3)") + runErrorScript "vdn-ssh root@bigboss 'mv /var/www/html.bak /var/www/html'";; + + + "Erreur 5 (TP4)") + # cache tiny:~titi/.ssh/authorized_keys + runErrorScript "vdn-ssh root@tiny \ + 'su -c \" \ + mv ~/.ssh/authorized_keys ~/.ssh/.authorized_keys.bak \ + \" - titi' \ + ";; + + + "Correction erreur 5 (TP4)") + # restaure tiny:~titi/.ssh/authorized_keys + runErrorScript "vdn-ssh root@tiny \ + 'su -c \" \ + mv ~/.ssh/.authorized_keys.bak ~/.ssh/authorized_keys \ + \" - titi' \ + ";; + + "Erreur 6 (TP5)") + # Désactive la fonction routage de societe + runErrorScript "vdn-ssh root@societe 'sysctl -w net.ipv4.ip_forward=0'";; + + "Correction erreur 6 (TP5)") + runErrorScript "vdn-ssh root@societe 'sysctl -w net.ipv4.ip_forward=1'";; + + + "testAll-1A") + vdn-scripts testAll-1A;; + + "Quitter") exit 0;; + + esac + + +} + +run() { + + cat << EOF + +Le menu ci-dessous permet de générer des erreurs sur votre réseau ! + +Pour "jouer" il faut au préalable que votre réseau soit complètement +opérationnel (le script testAll-1A affiche ok pour tout). + +Si c'est le cas, déclenchez une erreur, lancez le script testAll-1A +pour découvrir l'ampleur des dégâts et rétablissez le fonctionnement +optimal de votre réseau. + +Si vous ne vous en sortez pas, le choix "Correction" est là pour +annuler l'erreur, théoriquement ;-) + +Note : + +chaque erreur est une unique commande exécutée sur une machine +du réseau. La commande peut être du genre : + +vdn-ssh root@tiny "sed -i -re 's/^toto:/tutu:/' /etc/passwd" + +Si un service est impacté par la commande, il est relancé afin de mettre +immédiatement en évidence les erreurs via le script testAll-1A. + +Bonne chance ! + +EOF + select choix in \ + "Erreur 1 (TP1)" \ + "Correction erreur 1 (TP1)" \ + "Erreur 2 (TP1)" \ + "Correction erreur 2 (TP1)" \ + "Erreur 3 (TP2)" \ + "Correction erreur 3 (TP2)" \ + "Erreur 4 (TP3)" \ + "Correction erreur 4 (TP3)" \ + "Erreur 5 (TP4)" \ + "Correction erreur 5 (TP4)" \ + "Erreur 6 (TP5)" \ + "Correction erreur 6 (TP5)" \ + "testAll-1A" \ + "Quitter" \ + ; do + apply + done +} + +run diff --git a/vdn/networks/demo-buster/scripts/repairAll-1A b/vdn/networks/demo-buster/scripts/repairAll-1A new file mode 100644 index 0000000..b9ddb94 --- /dev/null +++ b/vdn/networks/demo-buster/scripts/repairAll-1A @@ -0,0 +1,666 @@ +#!/usr/bin/env bash + +DESC="TP de 1A." + +SYSTEMS="bigboss tiny societe lambda web" + + +baseConfigBigboss() { + + set -e + + echo "[baseConfigBigboss]" + echo + + name="bigboss" + + #startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static +address 192.168.30.2 +netmask 255.255.255.0 +gateway 192.168.30.1 + +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + + echoDoneWithTestErrors + +} + +baseConfigTiny() { + + set -e + + echo "[baseConfigTiny]" + echo + + + name="tiny" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + +vdn-ssh root@$name "ip addr flush eth1" + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth1 +iface eth1 inet static +address 192.168.30.16 +netmask 255.255.255.0 +gateway 192.168.30.1 +EOF + + echoDoneWithTestErrors +} + +baseConfigSociete() { + + set -e + + echo [baseConfigSociete] + echo + + name="societe" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.30.1 + netmask 255.255.255.0 + +EOF + + vdn-ssh root@$name "systemctl restart networking" + + echoDoneWithTestErrors +} + +baseConfigWeb() { + + set -e + + echo [baseConfigWeb] + echo + + name="web" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.1.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + + systemctl restart networking + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + echoDoneWithTestErrors +} + +baseConfigLambda() { + + set -e + + echo [baseConfigLambda] + echo + + name="lambda" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + echoDoneWithTestErrors +} + +baseConfigNomade() { + + set -e + + echo [baseConfigNomade] + echo + + + echoDoneWithTestErrors +} + + +getRandomPasswd() { + local k + + while :; do + k=$(tr -dc _A-Z-a-z-0-9 < /dev/urandom 2> /dev/null | head -c${1:-32} ) + if [ $(echo -n $k | wc -c) = 32 ]; then + break + fi + echo "Wait for entropy avail : $(cat /proc/sys/kernel/random/entropy_avail)" >&2 + sleep 1 + done + echo -n $k +} + +repairUser() { + k=$(getRandomPasswd) + vdn-ssh root@$1 " + id $2 &> /dev/null && exit 0 + adduser --disabled-password --gecos \"\" --home /home/$2 --shell /bin/bash $2 + echo $2:$k| chpasswd + " +} + + +repairUsersTotoTiti() { + set -e + + echo "[repairUsersTotoTiti]" + echo + + + repairUser bigboss toto + repairUser tiny titi + + echoDoneWithTestErrors +} + +repairNfs() { + set -e + + echo "[repairNfs]" + echo + + vdn-ssh root@bigboss " + set -e + [ ! -d /overlays/rw/partage-test ] && mkdir /overlays/rw/partage-test || : + echo test > /overlays/rw/partage-test/vdn-test + + cat <<-EOF > /etc/exports +/overlays/ro/usr/share/doc tiny(ro,sync,subtree_check,no_root_squash,fsid=1) +#/overlays/rw/partage-test tiny(rw,sync,subtree_check,no_root_squash,fsid=2) +EOF + systemctl enable nfs-kernel-server + sleep 1 + systemctl stop nfs-kernel-server + systemctl start nfs-kernel-server + " + echoDoneWithTestErrors +} + +repairDhcp() { + set -e + + echo + echo "[repairDhcp]" + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | \ + sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdn-ssh root@bigboss " + set -e + f=/etc/dhcp3/dhcpd.conf + [ -e /etc/init.d/isc-dhcp-server ] && f=/etc/dhcp/dhcpd.conf + cat <<-EOF > \$f + subnet 192.168.30.0 netmask 255.255.255.0 { + } + host tiny { + hardware ethernet ${tinyMAC}; + option host-name tiny; + fixed-address tiny; + } +EOF + + f=/etc/default/isc-dhcp-server + cat <<-EOF > \$f +INTERFACESv4=\"eth0\" +INTERFACESv6=\"\" +EOF + + sleep 3 + + systemctl enable isc-dhcp-server + systemctl stop isc-dhcp-server + systemctl start isc-dhcp-server + + #if [ -e /etc/init.d/dhcp3-server ]; then + # /etc/init.d/dhcp3-server stop &> /dev/null + # /etc/init.d/dhcp3-server start + #elif [ -e /etc/init.d/isc-dhcp-server ]; then + # /etc/init.d/isc-dhcp-server stop &> /dev/null + # /etc/init.d/isc-dhcp-server start + #fi + " + echoDoneWithTestErrors +} + +repairProftpd() { + set -e + + echo + echo "[repairProftpd]" + + vdn-ssh root@bigboss " + + [ ! -e /etc/proftpd/proftpd.conf.vdn ] && \ + cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.vnd + + grep -q '^> /etc/proftpd/proftpd.conf +# A basic anonymous configuration, no upload directories. + + + User ftp + Group nogroup + # We want clients to be able to login with \"anonymous\" as well as \"ftp\" + UserAlias anonymous ftp + # Cosmetic changes, all files belongs to ftp user + DirFakeUser on ftp + DirFakeGroup on ftp + + RequireValidShell off + + # Limit the maximum number of anonymous logins + MaxClients 10 + + # We want 'welcome.msg' displayed at login, and '.message' displayed + # in each newly chdired directory. + DisplayLogin welcome.msg + DisplayChdir .message + + # Limit WRITE everywhere in the anonymous chroot + + + DenyAll + + + + +EOF + + systemctl enable proftpd + sleep 2 + systemctl restart proftpd + " + echoDoneWithTestErrors +} + +repairApache2Base() { + echo "Apache2 : Lancement du serveur" + + vdn-ssh root@bigboss " + echo 'ServerName bigboss' >> /etc/apache2/apache2.conf + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + sleep 1 + " +} + + +repairApache2Home() { + echo + echo "Apache2 : Page Web personnelle (userdir)" + + vdn-ssh root@bigboss " + [ ! -d /home ] && { echo 'Need toto user !' >&2; exit 1; } + [ ! -d /home/toto/public_html ] && mkdir /home/toto/public_html + cat <<-EOF > /home/toto/public_html/index.html + Page perso. + EOF + chown -R toto: /home/toto/public_html + + a2enmod userdir + systemctl restart apache2 + sleep 1 + " +} + +repairApache2HtaccessToto() { + echo + echo "Protection de toto@bigboss:~toto/secret" + + vdn-ssh root@bigboss " + [ ! -d /home/toto/public_html/secret ] && { + mkdir -p /home/toto/public_html/secret + chown -R toto: /home/toto/public_html + chmod 700 /home/toto/public_html/secret + } + + cat <<-EOF > /home/toto/public_html/secret/.htaccess + AuthType Basic + AuthUserFile /home/toto/public_html/secret/users + #AuthGroupFile /dev/null + AuthName \"Accès privé\" + + require user titi + +EOF + + echo \"Prive\" > \ + /home/toto/public_html/secret/index.html + + ( + cd /home/toto/public_html/secret/ + htpasswd -b -c users titi iut + ) + + chown -R toto: /home/toto/public_html + " + +} + +repairApache2() { + set -e + + echo "[repairApache2]" + echo + + repairApache2Base + repairApache2Home + repairApache2HtaccessToto + + echoDoneWithTestErrors +} + +repairClientServer() { + set -e + + echo "[repairClientServer]" + echo + + vdn-ssh root@bigboss " +cat << EOF > /usr/local/bin/server.rb +#!/usr/bin/env ruby + +require 'socket' +server = TCPServer.new ARGV[0] # socket d'écoute attaché au port passé en argument +loop do # boucle infinie + client = server.accept # attente d'une connexion + while request=client.gets.chomp do # pour toutes les lignes reçues + case request + when \"time\" then client.puts \"#{Time.now}\" # émission de la réponse + when \"exit\" then break + else client.puts \"error\" + end + end + client.close # fermeture de la connexion +end +EOF +" + + vdn-ssh root@tiny " +cat << EOF > /usr/local/bin/client.rb +#!/usr/bin/env ruby + +require \"socket\" +s = TCPSocket.open(ARGV[0], ARGV[1].to_i) # Création de la socket et connexion +while line = STDIN.gets do # pour toutes les lignes de l'entrée standard + s.puts line # émission de la ligne vers le serveur + break if line.chomp == \"exit\" # chomp retire l'\\n' final + puts s.gets # Affiche la ligne en provenance du serveur +end +s.close # fermeture de la socket +EOF +" + + echoDoneWithTestErrors +} + +repairRouting() { + set -e + + echo "[repairRouting]" + echo + + baseConfigSociete + baseConfigWeb + baseConfigLambda + + vdn-ssh root@societe ' + sed -i -re "s/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/" /etc/sysctl.conf + sysctl -p + set -e + + + cat << EOF > /etc/firewall.sh +#!/bin/bash + + iptables -t nat -F + iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + chmod 755 /etc/firewall.sh + + +# MARCHE PAS + ! grep -q /etc/firewall.sh /etc/vdn/vdn.rc && { + echo "Add /etc/firewall in /etc/vdn/vdn.rc" + echo /etc/firewall.sh >> /etc/vdn/vdn.rc + chmod 755 /etc/vdn/vdn.rc + } || : + + /etc/firewall.sh + ' + + repairClientServer + + echoDoneWithTestErrors +} + + +repairSshKeys() { + set -e + + echo "[repairSshKeys]" + echo + + vdn-ssh root@bigboss " + set -e + [ ! -e .ssh/id_rsa ] && ssh-keygen -q -N '' -f ~/.ssh/id_rsa -t rsa || : + " + + sleep 2 # laisser le temps à la création de titi sur tiny + + vdn-ssh root@tiny " + su -c ' + [ ! -d ~/.ssh ] && { mkdir ~/.ssh; chmod 700 .ssh; } + ' - titi + " + + local tmp=$(mktemp) + vdn-ssh root@bigboss "cat ~/.ssh/id_rsa.pub" > $tmp + cat $tmp | vdn-ssh root@tiny " + su -c ' + cat > ~/.ssh/authorized_keys + ' - titi + " + + rm $tmp + + echoDoneWithTestErrors +} + +run() { + requireSshGuests $SYSTEMS + + vdnExec baseConfigBigboss baseConfigTiny repairUsersTotoTiti \ + repairNfs repairDhcp repairProftpd \ + repairApache2 \ + repairRouting repairSshKeys +} diff --git a/vdn/networks/demo-buster/scripts/repairApache2 b/vdn/networks/demo-buster/scripts/repairApache2 new file mode 100644 index 0000000..5b1be10 --- /dev/null +++ b/vdn/networks/demo-buster/scripts/repairApache2 @@ -0,0 +1,304 @@ +#!/usr/bin/env bash + +set -eu + +#set -x + +DESC="Test apache2 (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, les fichiers suivants sont modifiés : +- /etc/apache2/apache2.conf +- /etc/apache2/sites-available/000-default.conf + +Une copie est faite avec l'extension .vdn +" + + +repairApache2Base() { + echo "Lancement du serveur" + + vdn-ssh root@bigboss " + echo 'ServerName bigboss' >> /etc/apache2/apache2.conf + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + sleep 1 + " +} + +repairApache2Root() { + echo + echo "Modification de la racine du serveur Web" + vdn-ssh root@bigboss " + conf=/etc/apache2/sites-available/000-default.conf + [ ! -e \$conf ] && cp \$conf \${conf}.vdn + root=/home/httpd/html + + [ ! -d \$root ] && mkdir -p \$root + + #cat \$conf | sed -e 's|/var/www/html|'\$root'|g' \ + # > /tmp/default + cat <<-EOF > \$conf + +# The ServerName directive sets the request scheme, hostname and port that +# the server uses to identify itself. This is used when creating +# redirection URLs. In the context of virtual hosts, the ServerName +# specifies what hostname must appear in the request's Host: header to +# match this virtual host. For the default virtual host (this file) this +# value is not decisive as it is used as a last resort host regardless. +# However, you must set it for any further virtual host explicitly. +#ServerName www.example.com + +ServerAdmin webmaster@localhost +DocumentRoot /home/httpd/html + +# Available loglevels: trace8, ..., trace1, debug, info, notice, warn, +# error, crit, alert, emerg. +# It is also possible to configure the loglevel for particular +# modules, e.g. +#LogLevel info ssl:warn + +ErrorLog \\\${APACHE_LOG_DIR}/error.log +CustomLog \\\${APACHE_LOG_DIR}/access.log combined + +# For most configuration files from conf-available/, which are +# enabled or disabled at a global level, it is possible to +# include a line for only one particular virtual host. For example the +# following line enables the CGI configuration for this host only +# after it has been globally disabled with \"a2disconf\". +#Include conf-available/serve-cgi-bin.conf + +ScriptAlias \"/cgi-bin/\" \"/home/httpd/cgi-bin/\" + + +Options Indexes FollowSymLinks +AllowOverride None +Allow from all +Require all granted + + + + Options +ExecCGI + Require all granted + + + + +EOF + + #mv /tmp/default \$conf + cat <<-EOF > \$root/index.html + + + ok + + + EOF + + systemctl reload apache2 + sleep 1 + " + + vdn-ssh root@bigboss " + conf=/etc/apache2/sites-available/000-default.conf + root=/home/httpd/html/ + + cat \$conf | \ + sed -e '//d' \ + > /tmp/default + cat /tmp/default | grep -v '' > \$conf + + cat <<-EOF >> \$conf + + Options Indexes FollowSymlinks Multiviews + AllowOverride None + Order allow,deny + allow from all + Require all granted + + + EOF + + sleep 1 + systemctl reload apache2 + sleep 1 + " +} + +repairApache2CGI() { + echo + echo "Création d'un script CGI" + + vdn-ssh root@bigboss " + [ ! -d /home/httpd/cgi-bin ] && mkdir -p /home/httpd/cgi-bin + cat <<-EOF > /home/httpd/cgi-bin/test-cgi + #!/bin/bash + + # Header + echo 'Content-type: text/html' + + # Fin de l'header + echo + + # Contenu à afficher dans le navigateur + echo '' + echo 'Bonjour : nous sommes le :\`date\`' + echo '' + EOF + + chmod 755 /home/httpd/cgi-bin/test-cgi + + cat /etc/apache2/sites-available/000-default.conf | \ + sed -re 's,/usr/lib/cgi-bin/,/home/httpd/cgi-bin/,' \ + > /tmp/defaut + mv /tmp/defaut /etc/apache2/sites-available/000-default.conf + + a2enmod cgid + + systemctl restart apache2 + sleep 1 + " + +} + +repairApache2Php() { + echo + echo "Création d'une page PHP" + + vdn-ssh root@bigboss " + [ ! -d /home/http/html ] && mkdir -p /home/httpd/html + cat <<-EOF > /home/httpd/html/index.php + + Exemple + + Nous sommes le , il est . + + + EOF + " + +} + +repairApache2Home() { + echo + echo "Page Web personnelle (userdir)" + + vdn-ssh root@bigboss " + [ ! -d /home ] && { echo 'Need toto user !' >&2; exit 1; } + [ ! -d /home/toto/public_html ] && mkdir /home/toto/public_html + cat <<-EOF > /home/toto/public_html/index.html + Page perso. + EOF + chown -R toto: /home/toto/public_html + + a2enmod userdir + systemctl restart apache2 + sleep 1 + " +} + +repairApache2HtaccessToto() { + echo + echo "Protection de toto@bigboss:~toto/secret" + + vdn-ssh root@bigboss " + [ ! -d /home/toto/public_html/secret ] && { + mkdir -p /home/toto/public_html/secret + chown -R toto: /home/toto/public_html + chmod 700 /home/toto/public_html/secret + } + + cat <<-EOF > /home/toto/public_html/secret/.htaccess + AuthType Basic + AuthUserFile /home/toto/public_html/secret/users + #AuthGroupFile /dev/null + AuthName \"Accès privé\" + + require user titi + +EOF + + echo \"Prive\" > \ + /home/toto/public_html/secret/index.html + + ( + cd /home/toto/public_html/secret/ + htpasswd -b -c users titi iut + ) + + chown -R toto: /home/toto/public_html + " + +} + +repairApache2Htaccess() { + echo + echo "Protection par mot de passe" + + vdn-ssh root@bigboss " + [ ! -d /home/httpd/html/prive ] && mkdir /home/httpd/html/prive + cat <<-EOF > /home/httpd/html/prive/.htaccess + AuthType Basic + AuthUserFile /etc/apache2/users + #AuthGroupFile /dev/null + AuthName \"Accès privé\" + + require user toto + + EOF + + echo \"Prive\" > \ + /home/httpd/html/prive/index.html + + ( + cd /etc/apache2 + htpasswd -b -c users toto iut + htpasswd -b users prof iut + ) + " + + vdn-ssh root@bigboss " + conf=/etc/apache2/sites-available/000-default.conf + + cat \$conf | \ + sed -e '//d' \ + > /tmp/default + cat /tmp/default | grep -v '' > \$conf + + cat <<-EOF >> \$conf + + Options Indexes FollowSymlinks Multiviews + AllowOverride All + Order allow,deny + allow from all + + + EOF + + systemctl reload apache2 + sleep 1 + " +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + repairApache2Base + #repairApache2Root + #repairApache2CGI + #repairApache2Php + repairApache2Home + #repairApache2Htaccess + repairApache2HtaccessToto + + unsetErrorHandler +} + diff --git a/vdn/networks/demo-buster/scripts/repairDhcp b/vdn/networks/demo-buster/scripts/repairDhcp new file mode 100644 index 0000000..9c3b81b --- /dev/null +++ b/vdn/networks/demo-buster/scripts/repairDhcp @@ -0,0 +1,67 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Fixe DHCP sur bigboss pour servir tiny (IP, nom d'hôte)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +repairDHCP() { + echo + echo "Repair DHCP" + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | \ + sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdn-ssh root@bigboss " + f=/etc/dhcp3/dhcpd.conf + [ -e /etc/init.d/isc-dhcp-server ] && f=/etc/dhcp/dhcpd.conf + cat <<-EOF > \$f + subnet 192.168.30.0 netmask 255.255.255.0 { + } + host tiny { + hardware ethernet ${tinyMAC}; + option host-name tiny; + fixed-address tiny; + } +EOF + + f=/etc/default/isc-dhcp-server + cat <<-EOF > \$f +INTERFACESv4=\"eth0\" +INTERFACESv6=\"\" +EOF + + set -x + sleep 10 + + systemctl enable isc-dhcp-server + systemctl stop isc-dhcp-server + systemctl start isc-dhcp-server + + #if [ -e /etc/init.d/dhcp3-server ]; then + # /etc/init.d/dhcp3-server stop &> /dev/null + # /etc/init.d/dhcp3-server start + #elif [ -e /etc/init.d/isc-dhcp-server ]; then + # /etc/init.d/isc-dhcp-server stop &> /dev/null + # /etc/init.d/isc-dhcp-server start + #fi + + " +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + repairDHCP + + echoDoneWithTestErrors +} + + diff --git a/vdn/networks/demo-buster/scripts/repairFirewall b/vdn/networks/demo-buster/scripts/repairFirewall new file mode 100644 index 0000000..e816f53 --- /dev/null +++ b/vdn/networks/demo-buster/scripts/repairFirewall @@ -0,0 +1,109 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +config() { + IP_SOCIETE_PUBLIC=$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) + vdn-ssh -t root@societe " +# net.ipv4.ip_forward=1 +sed -i -re 's/#(net.ipv4.ip_forward=1)/\1/g' /etc/sysctl.conf +sysctl -p + +cat << EOF > vide.sh +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat +EOF + +chmod 755 vide.sh + +cat << EOF > local-1.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local-1.sh + +cat << EOF > fermeDehors.sh +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + +iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT +iptables -A INPUT -m state --state RELATED -j ACCEPT + +iptables -A INPUT -i eth0 -j REJECT +EOF + +chmod 755 fermeDehors.sh + +cat << EOF > forward.sh +iptables -t nat -A PREROUTING -p tcp -d $IP_SOCIETE_PUBLIC --dport 80 -j DNAT --to 192.168.1.2 +EOF + +chmod 755 forward.sh + +cat << EOF > local.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward + +iptables -s 192.168.30.0/24 -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +iptables -s 192.168.1.2 -p tcp --dport 80 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 53 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 25 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh + +cat << EOF > fw-on.sh +#!/bin/sh + +/root/vide.sh +/root/fermeDehors.sh +/root/local.sh +/root/forward.sh +if [ -x /root/dns.sh ]; then + /root/dns.sh +fi +EOF + +chmod 755 fw-on.sh + +/root/fw-on.sh +" +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + config + + #sleep 1 + + #parallelDisablePause + #vdn-scripts testFirewall + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo-buster/scripts/repairIPv6 b/vdn/networks/demo-buster/scripts/repairIPv6 new file mode 100644 index 0000000..8f8ac1b --- /dev/null +++ b/vdn/networks/demo-buster/scripts/repairIPv6 @@ -0,0 +1,86 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Nouvelle configuration IPv6 du réseau + tests" + +SYSTEMS="bigboss societe web" + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + +testIPv6() { + echo + echo "test link between web and bigboss (Unique local address)" + echo + + # réinitialise les interfaces + + vdn-ssh root@bigboss "ifconfig eth0 down ; ifconfig eth0 up" + vdn-ssh root@web "ifconfig eth0 down ; ifconfig eth0 up" + vdn-ssh root@societe " + ifconfig eth0 down ; ifconfig eth0 up + ifconfig eth1 down ; ifconfig eth1 up + ifconfig eth2 down ; ifconfig eth2 up + + echo 1 >/proc/sys/net/ipv6/conf/all/forwarding + " + + # Ajoute les adresses IPv6 "locales uniques" en utilisant le suffixe + # de l'adresse "lien local" + # + # * la DMZ (web) aura le préfixe fc01 + # * le réseau interne (bigboss) aura le préfixe fc00 + # + # La fonction routage IPv6 est activé sur société + # et les route par défaut sont fixées sur web et bigboss + # + # un ping6 de bigboss vers web valide la config. + + ipSocieteWeb=$(getIPv6 societe eth1) + ipSocieteWeb=$(echo $ipSocieteWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteWeb/64 dev eth1" + + ipSocieteBigboss=$(getIPv6 societe eth2) + ipSocieteBigboss=$(echo $ipSocieteBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteBigboss/64 dev eth2" + + ipWeb=$(getIPv6 web eth0) + ipWeb=$(echo $ipWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@web "ip -6 addr add $ipWeb/64 dev eth0" + + ipBigboss=$(getIPv6 bigboss eth0) + ipBigboss=$(echo $ipBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@bigboss "ip -6 addr add $ipBigboss/64 dev eth0" + + vdn-ssh root@web " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteWeb" + vdn-ssh root@bigboss " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteBigboss" + + vdn-ssh root@bigboss "ping6 -c 3 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + waitSsh $SYSTEMS + + testIPv6 + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks/demo-buster/scripts/repairNfs b/vdn/networks/demo-buster/scripts/repairNfs new file mode 100644 index 0000000..3bc3594 --- /dev/null +++ b/vdn/networks/demo-buster/scripts/repairNfs @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Fixe NFS (bigboss exporte /overlays/ro/usr/share/doc (ro) et tiny l'importe)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, le fichier /etc/exports est modifié ! +" + +repairNfs() { + vdn-ssh root@bigboss " + + [ ! -d /overlays/rw/partage-test ] && mkdir /overlays/rw/partage-test || : + echo test > /overlays/rw/partage-test/vdn-test + + cat <<-EOF > /etc/exports +/overlays/ro/usr/share/doc tiny(ro,sync,subtree_check,no_root_squash,fsid=1) +#/overlays/rw/partage-test tiny(rw,sync,subtree_check,no_root_squash,fsid=2) + EOF + sleep 1 + systemctl enable nfs-kernel-server + systemctl stop nfs-kernel-server + systemctl start nfs-kernel-server + " +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss + + repairNfs + + unsetErrorHandler +} + diff --git a/vdn/networks/demo-buster/scripts/repairProftpd b/vdn/networks/demo-buster/scripts/repairProftpd new file mode 100644 index 0000000..ca93cae --- /dev/null +++ b/vdn/networks/demo-buster/scripts/repairProftpd @@ -0,0 +1,76 @@ +#!/usr/bin/env bash + +set -u + +DESC="Fixe proftp (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, le fichier suivant est modifié : +- /etc/proftpd/proftpd.conf + +Une copie de l'original est faite avec l'extension .vdn +" + + +repairProftpd() { + echo + echo "Repair proftpd" + + vdn-ssh root@bigboss " + + [ ! -e /etc/proftpd/proftpd.conf.vdn ] && \ + cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.vnd + + grep -q '^> /etc/proftpd/proftpd.conf +# A basic anonymous configuration, no upload directories. + + + User ftp + Group nogroup + # We want clients to be able to login with \"anonymous\" as well as \"ftp\" + UserAlias anonymous ftp + # Cosmetic changes, all files belongs to ftp user + DirFakeUser on ftp + DirFakeGroup on ftp + + RequireValidShell off + + # Limit the maximum number of anonymous logins + MaxClients 10 + + # We want 'welcome.msg' displayed at login, and '.message' displayed + # in each newly chdired directory. + DisplayLogin welcome.msg + DisplayChdir .message + + # Limit WRITE everywhere in the anonymous chroot + + + DenyAll + + + + +EOF + + systemctl enable proftpd + systemctl restart proftpd + " + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + repairProftpd + + echoDoneWithTestErrors +} + diff --git a/vdn/networks/demo-buster/scripts/repairUsersTotoTiti b/vdn/networks/demo-buster/scripts/repairUsersTotoTiti new file mode 100644 index 0000000..d9c1c29 --- /dev/null +++ b/vdn/networks/demo-buster/scripts/repairUsersTotoTiti @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Ajoute, si nécessaire un utilisateur toto sur bigboss et tit sur tiny." + +getRandomPasswd() { + local k + + while :; do + k=$(tr -dc _A-Z-a-z-0-9 < /dev/urandom 2> /dev/null | head -c${1:-32} ) + if [ $(echo -n $k | wc -c) = 32 ]; then + break + fi + echo "Wait for entropy avail : $(cat /proc/sys/kernel/random/entropy_avail)" >&2 + sleep 1 + done + echo -n $k +} + +repairUser() { + k=$(getRandomPasswd) + vdn-ssh root@$1 " + id $2 2> /dev/null && exit 0 + adduser --disabled-password --gecos \"\" --home /home/$2 --shell /bin/bash $2 + echo $2:$k| chpasswd + " +} + + +run() { + setErrorHandler + echoStart + + startAndWaitSsh bigboss tiny + + repairUser bigboss toto + repairUser tiny titi + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo-buster/scripts/testAll-1A b/vdn/networks/demo-buster/scripts/testAll-1A new file mode 100755 index 0000000..edcde67 --- /dev/null +++ b/vdn/networks/demo-buster/scripts/testAll-1A @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +DESC="Teste les TPs de 1A sur bigboss et tiny." + +SYSTEMS="bigboss tiny societe lambda web" + +testTp1Part1() { + echo "[TP n°1 partie bigboss]" + echo + vdnTest "hostname bigboss ......... ?" 'vdn-ssh root@bigboss "test \"\$(hostname)\" = bigboss"' + vdnTest "ip bigboss ............... ?" 'vdn-ssh root@bigboss "ip addr show eth0 | grep -Fq 192.168.30.2"' + vdnTest "ping bigboss -> tiny ..... ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 tiny &> /dev/null"' + vdnTest "ping bigboss -> bigboss .. ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 bigboss &> /dev/null"' +} + +testTp1Part2() { + echo "[TP n°1 partie tiny]" + echo + vdnTest "hostname tiny ............ ?" 'vdn-ssh root@tiny "test \"\$(hostname)\" = tiny"' + vdnTest "ip tiny .................. ?" 'vdn-ssh root@tiny "ip addr show eth1 | grep -Fq 192.168.30.16"' + vdnTest "ping tiny -> bigboss .. ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 bigboss &> /dev/null"' + vdnTest "ping tiny -> tiny ..... ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 tiny &> /dev/null"' +} + +testTp2() { + echo "[TP n°1 partie \"utilisateurs\"]" + echo + vdnTest "user toto sur bigboss .... ?" 'vdn-ssh root@bigboss "id toto &> /dev/null"' + vdnTest "user titi sur tiny ....... ?" 'vdn-ssh root@tiny "id titi &> /dev/null"' + echo + echo "[TP n°2]" + echo + vdnTest "NFS lecture seule (ro) ... ?" ' + vdn-ssh root@tiny " + [ ! -d /mnt/bigboss ] && mkdir /mnt/bigboss; + timeout 3 mount bigboss:/overlays/ro/usr/share/doc /mnt/bigboss; + [ ! -e /mnt/bigboss/xterm ] && exit 1; + umount /mnt/bigboss; + "' +} + +testTp3() { + echo "[TP n°3]" + echo + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdnTest "DHCP configuré sur bigboss ....... ?" "vdn-ssh root@bigboss \"grep -iq '^[^#]*$tinyMAC' /etc/dhcp/dhcpd.conf\"" + vdnTest "DHCP sur bigboss : actif ......... ?" "vdn-ssh root@bigboss \"systemctl status isc-dhcp-server | grep -q 'Active: active'\"" + + echo + + vdnTest "FTP anonyme sur bigboss .......... ?" "vdn-ssh root@tiny 'set -x; echo -e \"open bigboss\nuser anonymous test@bidule.com\nls\" | ftp -i -n | grep -q welcome'" + + echo + + #vdnTest "bigboss run apache2 .............. ?" "vdn-ssh root@tiny 'netcat -w 1 bigboss 80 &> /dev/null < /dev/null'" + vdnTest "bigboss run apache2 .............. ?" "vdn-ssh root@tiny 'timeout 2 lynx -dump bigboss &> /dev/null'" + e=$? + + if [ $e = 0 ]; then + vdnTest "bigboss run apache2 with userdir . ?" "vdn-ssh root@tiny 'unset http_proxy; \ + timeout 2 lynx -dump bigboss/~toto 2> /dev/null | grep -iv \"Not found\"'" + vdnTest "toto@bigboss avec HTTP protégé ... ?" "vdn-ssh root@bigboss '\ + find /home/toto/public_html -name .htaccess 2> /dev/null | grep -q htaccess$'" + else + echo >&2 + echo "Subsequent tests canceled !" >&2 + return 1 + fi + + +} + +testTp4() { + echo "[TP n°4]" + echo + + vdnTest "tiny -> web ....................... ?" "vdn-ssh root@tiny 'unset http_proxy; timeout 2 lynx -dump web'" + echo + vdnTest "root@bigboss id_rsa/id_rsa.pub .... ?" "vdn-ssh root@bigboss 'ls -l ~/.ssh/id_rsa &> /dev/null'" + vdnTest "root@bigboss -> titi@tiny ......... ?" "vdn-ssh root@bigboss 'timeout 2 ssh -o StrictHostKeyChecking=no titi@tiny :'" +} + +testTp5() { + echo "[TP n°5]" + echo + + local ipLambda=$(vdn-infos lambda PUBLIC_IP) + + vdnTest "tiny -> ipLambda .................. ?" "vdn-ssh root@tiny 'unset http_proxy; timeout 2 lynx -dump $ipLambda'" + echo + vdnTest "serveur.rb ........................ ?" "vdn-ssh root@bigboss 'ls /usr/local/bin/server.rb &> /dev/null'" + vdnTest "client.rb ......................... ?" "vdn-ssh root@tiny 'ls /usr/local/bin/client.rb &> /dev/null'" +} + +testSum() { + local last=-1 cpt=0 n + set +u + + VDN_TESTS_DIR=/tmp/vdn-$USER/tests + + if [ -z "$VDN_TESTS_DIR" ]; then + echo + echo "Not used !" + return + fi + set +u + last=-1 + echo "[Synthèse]" + echo + + while :; do + n=$(ls $VDN_TESTS_DIR | wc -l) + + printf "." + + if [ $n = $last ]; then + same=$(($same+1)) + else + same=0 + fi + + if [ $same = 10 ]; then + break; + fi + + last=$n + + sleep 0.5 + done + + good=$(cat $VDN_TESTS_DIR/* | grep '^0$' | wc -l) + bad=$(($n-$good)) + + echo + echo + echo "tests:$n ok:$good ko:$bad réussite:$(( ($good*100) /$n ))%" + echo + + +} + + +run() { + + requireSshGuests $SYSTEMS + + #echo "Cette temporisation est pour vous décourager d'utiliser ce test comme debogueur !" + #for i in $(seq 10 -1 0); do echo $i; sleep 1; done + + VDN_TESTS_DIR=/tmp/vdn-$USER/tests + + [ ! -d $VDN_TESTS_DIR ] && mkdir -p $VDN_TESTS_DIR + + rm -f /tmp/vdn-$USER/tests/* + + vdnExec testTp1Part1 testTp1Part2 testTp2 testTp3 testTp4 testTp5 testSum + +} diff --git a/vdn/networks/demo-buster/scripts/testApache2 b/vdn/networks/demo-buster/scripts/testApache2 new file mode 100644 index 0000000..e30df5d --- /dev/null +++ b/vdn/networks/demo-buster/scripts/testApache2 @@ -0,0 +1,140 @@ +#!/usr/bin/env bash + +set -u + +#set -x + +DESC="Test apache2 (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, les fichiers suivants sont modifiés : +- /etc/apache2/apache2.conf +- /etc/apache2/sites-available/000-default.conf +" + + +testApache2Base() { + echo "bigboss run apache2 ?" + + vdn-ssh root@tiny "netcat -w 1 bigboss 80 &> /dev/null < /dev/null" + + #vdn-ssh root@tiny "lynx -dump bigboss &> /dev/null" + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + return $e +} + +testApache2Root() { + vdn-ssh root@tiny " + lynx -dump bigboss/index.html | \ + grep -q -i 'Bonjour' + " + + vdn-ssh root@tiny " + lynx -dump bigboss/index.html | grep -q 'ok' && echo ok + " +} + +testApache2CGI() { + + vdn-ssh root@tiny " + lynx -dump bigboss/cgi-bin/test-cgi + lynx -dump bigboss/cgi-bin/test-cgi | grep -q 'Bonjour' + " +} + +testApache2Php() { + + vdn-ssh root@tiny " + lynx -dump bigboss/index.php + lynx -dump bigboss/index.php | grep -q 'sommes le [^,]' + " +} + +testApache2Home() { + echo "bigboss run apache2 with userdir ?" + + vdn-ssh root@tiny " + unset http_proxy; lynx -dump bigboss/~toto 2> /dev/null # | grep -iq 'perso' + " + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + return $e + +} + +testApache2HtaccessExist() { + echo "toto@bigboss possède un répertoire HTTP protégé ?" + + vdn-ssh root@bigboss " + find /home/toto/public_html -name '.htaccess' 2> /dev/null | grep -q 'htaccess$' + " + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + return $e +} + +testApache2HtaccessToto() { + echo "toto@bigboss : répertoire HTTP fonctionnel ?" + vdn-ssh root@tiny " + unset http_proxy; lynx -dump http://bigboss/~toto/index.html + " +} + +testApache2Htaccess() { + + vdn-ssh root@tiny " + echo \"Accès à privé sans identification\" + lynx -dump bigboss/prive | grep -q 'Prive' && \ + echo \"ok\" + echo + echo \"Accès à privé sans identification\" + lynx -dump bigboss/prive/.htaccess | grep -q 'Forbidden' + " + + vdn-ssh root@tiny " + echo \"Accès à privé sans identification\" + lynx -dump bigboss/prive 2> /dev/null | grep -q 'Prive' || \ + echo \"ok\" + echo + echo \"Accès à privé avec identification\" + lynx -auth=sasa:xyz -dump bigboss/prive | \ + grep -q 'Prive' + " + + +} + + +run() { + local errors=0 e + + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + testApache2Base + e=$? + #testApache2Root + #testApache2CGI + #testApache2Php + + if [ $e = 0 ]; then + testApache2Home + testApache2HtaccessExist + #testApache2HtaccessToto + else + echo "Subsequent tests canceled !" >&2 + fi + #testApache2Htaccess + + unsetErrorHandler + return $errors +} + diff --git a/vdn/networks/demo-buster/scripts/testBigbossTiny b/vdn/networks/demo-buster/scripts/testBigbossTiny new file mode 100644 index 0000000..c8e39e1 --- /dev/null +++ b/vdn/networks/demo-buster/scripts/testBigbossTiny @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +DESC="Test de la configuration de base de bigboss et tiny." + +SYSTEMS="bigboss tiny" + +run() { + local localErrors=0 + + requireSshGuests $SYSTEMS + + vdnTest "hostname bigboss ......... ?" 'vdn-ssh root@bigboss "test \"\$(hostname)\" = bigboss"' + vdnTest "ip bigboss ............... ?" 'vdn-ssh root@bigboss "ip addr show eth0 | grep -Fq 192.168.30.2"' + vdnTest "hostname tiny ............ ?" 'vdn-ssh root@tiny "test \"\$(hostname)\" = tiny"' + vdnTest "ip tiny .................. ?" 'vdn-ssh root@tiny "ip addr show eth1 | grep -Fq 192.168.30.16"' + vdnTest "ping bigboss -> tiny ..... ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 tiny &> /dev/null"' + vdnTest "ping tiny -> bigboss .. ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 bigboss &> /dev/null"' + vdnTest "ping bigboss -> bigboss .. ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 bigboss &> /dev/null"' + vdnTest "ping tiny -> tiny ..... ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 tiny &> /dev/null"' + vdnTest "user toto sur bigboss .... ?" 'vdn-ssh root@bigboss "id toto &> /dev/null"' + vdnTest "user titi sur tiny ....... ?" 'vdn-ssh root@tiny "id titi &> /dev/null"' + + echo + + vdnTest "NFS lecture seule (ro) ... ?" ' + vdn-ssh root@tiny " + [ ! -d /mnt/bigboss ] && mkdir /mnt/bigboss; + timeout 3 mount bigboss:/overlays/ro/usr/share/doc /mnt/bigboss; + [ ! -e /mnt/bigboss/xterm ] && exit 1; + umount /mnt/bigboss; + "' + + echoDone + + return $localErrors +} + diff --git a/vdn/networks/demo-buster/scripts/testDHCPBigbossTiny b/vdn/networks/demo-buster/scripts/testDHCPBigbossTiny new file mode 100644 index 0000000..c0c7766 --- /dev/null +++ b/vdn/networks/demo-buster/scripts/testDHCPBigbossTiny @@ -0,0 +1,125 @@ +#!/usr/bin/env bash + +set -eu + +set -x + +DESC="Test DHCP (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +resetToDefault() { + echo + echo "Reset DHCP" + + vdn-ssh root@bigboss " + + # Création d'une sauvegarde des fichiers originaux + for i in /etc/dhcp3/dhcpd.conf; do + [ ! -e \${i}.vdn -a -e $i ] && + cp \${i} \${i}.vdn + done + + # Restauration de la sauvegarde + + for i in /etc/dhcp3/dhcpd.conf; do + [ -e \${i}.vdn ] && + cp \${i}.vdn \${i} + done + + exit 0 + " + + vdn-ssh root@tiny " + + # Création d'une sauvegarde des fichiers originaux + + for i in /etc/network/interfaces; do + [ ! -e \${i}.vdn ] && + cp \${i} \${i}.vdn + done + + # Restauration de la sauvegarde + + for i in /etc/network/interfaces; do + [ -e \${i}.vdn ] && + cp \${i}.vdn \${i} + done + " + + +} + + +testDHCP() { + echo + echo "Test de DHCP" + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | \ + sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdn-ssh root@bigboss " + f=/etc/dhcp3/dhcpd.conf + [ -e /etc/init.d/isc-dhcp-server ] && f=/etc/dhcp/dhcpd.conf + cat <<-EOF > \$f + subnet 192.168.30.0 netmask 255.255.255.0 { + } + host tiny { + hardware ethernet ${tinyMAC}; + option host-name tiny; + fixed-address tiny; + } +EOF + + f=/etc/default/isc-dhcp-server + cat <<-EOF > \$f +INTERFACESv4=\"eth0\" +INTERFACESv6=\"\" +EOF + + if [ -e /etc/init.d/dhcp3-server ]; then + /etc/init.d/dhcp3-server stop &> /dev/null + /etc/init.d/dhcp3-server start + elif [ -e /etc/init.d/isc-dhcp-server ]; then + /etc/init.d/isc-dhcp-server stop &> /dev/null + /etc/init.d/isc-dhcp-server start + fi + + " + + vdn-ssh root@tiny " + cat <<-EOF > /etc/network/interfaces + auto lo + iface lo inet loopback + + auto eth1 + iface eth1 inet dhcp + EOF + + ifdown eth1 + ifup eth1 + + ifconfig eth1 | grep -q 192.168 && echo ok || exit 1 + " + + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + resetToDefault + testDHCP + resetToDefault + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks/demo-buster/scripts/testDhcp b/vdn/networks/demo-buster/scripts/testDhcp new file mode 100644 index 0000000..e7dfd6c --- /dev/null +++ b/vdn/networks/demo-buster/scripts/testDhcp @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +DESC="Test DHCP (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +SYSTEMS="bigboss tiny" + +run() { + local localErrors=0 + + requireSshGuests $SYSTEMS + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdnTest "DHCP configuré sur bigboss ?" "vdn-ssh root@bigboss \"grep -q '^[^#]*$tinyMAC' /etc/dhcp/dhcpd.conf\"" + vdnTest "DHCP sur bigboss : actif ?" "vdn-ssh root@bigboss \"systemctl status isc-dhcp-server | grep -q 'Active: active'\"" + + echo + + vdnTest "FTP anonyme sur bigboss ?" "vdn-ssh root@tiny ' + echo -e \'open bigboss\nuser anonymous test@bidule.com\nls\' \ + | ftp -i -n | grep -q welcome'" + + + unsetErrorHandler + + echoDone + + return $localErrors +} + + diff --git a/vdn/networks/demo-buster/scripts/testFirewall b/vdn/networks/demo-buster/scripts/testFirewall new file mode 100644 index 0000000..3806442 --- /dev/null +++ b/vdn/networks/demo-buster/scripts/testFirewall @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +run() { + setErrorHandler + echoStart + + parallelDisablePause + + vdn-scripts diag1 diag2 diag3 + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo-buster/scripts/testIPv6 b/vdn/networks/demo-buster/scripts/testIPv6 new file mode 100644 index 0000000..c7729f8 --- /dev/null +++ b/vdn/networks/demo-buster/scripts/testIPv6 @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test ping6 IPv6 (à travers un routeur IPv6)" + +SYSTEMS="bigboss societe web" + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | head -n 1 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + + +testIPv6() { + + ipWeb=$(getIPv6 web eth0) + echo "Try ping6 (bigboss -> web)..." + vdn-ssh root@bigboss "ping6 -c 1 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + #requireSshGuests $SYSTEMS + #waitSsh $SYSTEMS + + testIPv6 + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks/demo-buster/scripts/testMyCompanyFirewall b/vdn/networks/demo-buster/scripts/testMyCompanyFirewall new file mode 100644 index 0000000..40d3cda --- /dev/null +++ b/vdn/networks/demo-buster/scripts/testMyCompanyFirewall @@ -0,0 +1,136 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +config() { + IP_SOCIETE_PUBLIC=$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) + vdn-ssh -t root@societe " +# net.ipv4.ip_forward=1 +sed -i -re 's/#(net.ipv4.ip_forward=1)/\1/g' /etc/sysctl.conf +sysctl -p + +cat << EOF > vide.sh +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat +EOF + +chmod 755 vide.sh + +cat << EOF > local-1.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local-1.sh + +cat << EOF > fermeDehors.sh +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + +iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT +iptables -A INPUT -m state --state RELATED -j ACCEPT + +iptables -A INPUT -i eth0 -j REJECT +EOF + +chmod 755 fermeDehors.sh + +cat << EOF > forward.sh +iptables -t nat -A PREROUTING -p tcp -d $IP_SOCIETE_PUBLIC --dport 80 -j DNAT --to 192.168.1.2 +EOF + +chmod 755 forward.sh + +cat << EOF > local.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward + +iptables -s 192.168.30.0/24 -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +iptables -s 192.168.1.2 -p tcp --dport 80 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 53 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 25 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh + +cat << EOF > fw-on.sh +#!/bin/sh + +/root/vide.sh +/root/fermeDehors.sh +/root/local.sh +/root/forward.sh +if [ -x /root/dns.sh ]; then + /root/dns.sh +fi +EOF + +chmod 755 fw-on.sh + +/root/fw-on.sh +" + + +} + +test() { + # tiny peut joindre bigboss (et vice versa). + + vdn-ssh root@bigboss "ping -c 1 tiny" + vdn-ssh root@tiny "ping -c 1 bigboss" + + # societe est joignable par toutes les machines (et vice versa) + + for i in $SYSTEMS; do + vdn-ssh root@$i "ping -c 1 societe" + done + + # lambda peut joindre nomade (et vice-versa) + + vdn-ssh root@lambda "ping -c 1 nomade" + vdn-ssh root@nomade "ping -c 1 lambda" + + # vérifiez que les serveurs apache2 de lambda, web et bigboss fonctionnent + + vdn-ssh root@bigboss "lynx -dump bigboss" | grep -q 'Bienvenue' + vdn-ssh root@web "lynx -dump web" | grep -q 'Bienvenue' + vdn-ssh root@lambda "lynx -dump lambda" | grep -q 'Bienvenue' +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + #set -x + + # Config + config + + # test + #test + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo-buster/scripts/testNfs b/vdn/networks/demo-buster/scripts/testNfs new file mode 100644 index 0000000..0adb099 --- /dev/null +++ b/vdn/networks/demo-buster/scripts/testNfs @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +DESC="Test NFS (bigboss exporte /overlays/ro/usr/share/doc (ro) et tiny l'importe)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +SYSTEMS="bigboss tiny" + +run() { + local localErrors=0 + + requireSshGuests $SYSTEMS + + vdnTest "NFS lecture seule (ro) ?" ' + vdn-ssh root@tiny " + [ ! -d /mnt/bigboss ] && mkdir /mnt/bigboss; + timeout 3 mount bigboss:/overlays/ro/usr/share/doc /mnt/bigboss; + [ ! -e /mnt/bigboss/xterm ] && exit 1; + umount /mnt/bigboss; + "' + + echoDone + + return $localErrors +} + diff --git a/vdn/networks/demo-buster/scripts/testProftpd b/vdn/networks/demo-buster/scripts/testProftpd new file mode 100644 index 0000000..e469a98 --- /dev/null +++ b/vdn/networks/demo-buster/scripts/testProftpd @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -u + +DESC="Test proftp (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +testProftp() { + echo + echo "Test de proftpd (anonymous)" + + vdn-ssh root@tiny " + echo -e 'open bigboss\nuser anonymous test@bidule.com\nls' \ + | ftp -i -n | grep -q welcome + " + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + + return $e + +} + +run() { + local errors=0 + + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + testProftp + + unsetErrorHandler + return $errors +} + diff --git a/vdn/networks/demo-buster/societe.conf b/vdn/networks/demo-buster/societe.conf new file mode 100644 index 0000000..d740d71 --- /dev/null +++ b/vdn/networks/demo-buster/societe.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X3.Y3.Z3/8 NET_1#192.168.1.1/24 NET_2#192.168.30.1/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/demo-buster/tiny.conf b/vdn/networks/demo-buster/tiny.conf new file mode 100644 index 0000000..ca97b85 --- /dev/null +++ b/vdn/networks/demo-buster/tiny.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="none NET_2#192.168.30.16/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/demo-buster/web.conf b/vdn/networks/demo-buster/web.conf new file mode 100644 index 0000000..cf416b0 --- /dev/null +++ b/vdn/networks/demo-buster/web.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_1#192.168.1.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="multi-user.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/demo/bigboss.conf b/vdn/networks/demo/bigboss.conf new file mode 100644 index 0000000..e180bbc --- /dev/null +++ b/vdn/networks/demo/bigboss.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="1024" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_2#192.168.30.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2 proftpd nfs-server isc-dhcp-server" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/demo/build b/vdn/networks/demo/build new file mode 100755 index 0000000..1820dbb --- /dev/null +++ b/vdn/networks/demo/build @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +build() { + local n + + for n in tiny bigboss societe web lambda nomade; do + vdn-build $n + vdn-config $n MODE "tgz2" + vdn-config $n HDA "DebianBullseye.disk" + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n MEMORY "384" + #vdn-config $n RUNLEVEL "multi-user.target" + vdn-config $n SET_HOSTNAME 0 + #vdn-config $n HOST_FILES "" + vdn-config $n SET_PROXY "0" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "0" + #sleep 3 + done + + n=tiny +#vdn-config $n GUEST_SYS "kali/2019.3" + #vdn-config $n HDA "kali-linux-xfce-2019.3-amd64.disk" + #vdn-config $n KERNEL "vmlinuz-5.2.0-kali2-amd64" + #vdn-config $n INITRAMFS "initrd-tgz.img-5.2.0-kali2-amd64" + vdn-config $n NETWORKS "none NET_2#192.168.30.16/24" + vdn-config $n MEMORY "2048" + vdn-config $n RUNLEVEL "graphical.target" + #vdn-config $n MODE "overlay" + + #vdn-config $n KVM_VIEWER_AUTOSTART 1 + + n=bigboss + vdn-config $n EXTRA_SERVICES "apache2 proftpd nfs-server isc-dhcp-server" + vdn-config $n MEMORY "1024" + vdn-config $n NETWORKS "NET_2#192.168.30.2/24" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=societe + vdn-config $n NETWORKS "NET_G#20.X3.Y3.Z3/8 NET_1#192.168.1.1/24 NET_2#192.168.30.1/24" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "1" + vdn-config $n SET_PROXY "1" + + n=web + vdn-config $n NETWORKS "NET_1#192.168.1.2/24" + vdn-config $n EXTRA_SERVICES "apache2" + #vdn-config $n SET_HOSTNAME 1 + #vdn-config $n BOOT_HOSTNAME $n + + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=lambda + vdn-config $n NETWORKS "NET_G#20.X1.Y1.Z1/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=nomade + vdn-config $n NETWORKS "NET_G#20.X2.Y2.Z2/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + +} + diff --git a/vdn/networks/demo/graph.svgz b/vdn/networks/demo/graph.svgz new file mode 100644 index 0000000..d8a3686 Binary files /dev/null and b/vdn/networks/demo/graph.svgz differ diff --git a/vdn/networks/demo/lambda.conf b/vdn/networks/demo/lambda.conf new file mode 100644 index 0000000..299afb5 --- /dev/null +++ b/vdn/networks/demo/lambda.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X1.Y1.Z1/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/demo/net.svgz b/vdn/networks/demo/net.svgz new file mode 100644 index 0000000..3a3bcdb Binary files /dev/null and b/vdn/networks/demo/net.svgz differ diff --git a/vdn/networks/demo/network.vdn b/vdn/networks/demo/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks/demo/nomade.conf b/vdn/networks/demo/nomade.conf new file mode 100644 index 0000000..25280eb --- /dev/null +++ b/vdn/networks/demo/nomade.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X2.Y2.Z2/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/demo/scripts/atest b/vdn/networks/demo/scripts/atest new file mode 100755 index 0000000..9b0fc5f --- /dev/null +++ b/vdn/networks/demo/scripts/atest @@ -0,0 +1,6 @@ +#!/bin/bash + +run() { + + for i in 1 2 3 4 5 6; do echo $i; sleep 1; done +} diff --git a/vdn/networks/demo/scripts/baseConfigAll b/vdn/networks/demo/scripts/baseConfigAll new file mode 100644 index 0000000..cc55cdc --- /dev/null +++ b/vdn/networks/demo/scripts/baseConfigAll @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (hostname, hosts, interfaces)." + +SYSTEMS="bigboss lambda nomade societe tiny web" +#SYSTEMS="bigboss tiny" + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + # Construction de la liste des commandes + L="" + for i in $SYSTEMS; do + n=$(echo $i | cut -b 1 | tr -s '[[:lower:]]' '[[:upper:]]') + n="$n$(echo $i | cut -b 2-)" + L="$L baseConfig$n" + done + + parallelDisablePause + + vdn-scripts $L + + unsetErrorHandler + echoDone + +} diff --git a/vdn/networks/demo/scripts/baseConfigBigboss b/vdn/networks/demo/scripts/baseConfigBigboss new file mode 100755 index 0000000..6b5f7bf --- /dev/null +++ b/vdn/networks/demo/scripts/baseConfigBigboss @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de bigboss (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="bigboss" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static +address 192.168.30.2 +netmask 255.255.255.0 +gateway 192.168.30.1 + +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo/scripts/baseConfigBigbossTiny b/vdn/networks/demo/scripts/baseConfigBigbossTiny new file mode 100755 index 0000000..5288d4a --- /dev/null +++ b/vdn/networks/demo/scripts/baseConfigBigbossTiny @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (hostname, hosts, interfaces)." + +SYSTEMS="bigboss tiny" + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + # Construction de la liste des commandes + L="" + for i in $SYSTEMS; do + n=$(echo $i | cut -b 1 | tr -s '[[:lower:]]' '[[:upper:]]') + n="$n$(echo $i | cut -b 2-)" + L="$L baseConfig$n" + done + + parallelDisablePause + + vdn-scripts $L + + unsetErrorHandler + echoDone + +} diff --git a/vdn/networks/demo/scripts/baseConfigLambda b/vdn/networks/demo/scripts/baseConfigLambda new file mode 100755 index 0000000..427f59a --- /dev/null +++ b/vdn/networks/demo/scripts/baseConfigLambda @@ -0,0 +1,73 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de lambda (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="lambda" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo/scripts/baseConfigNomade b/vdn/networks/demo/scripts/baseConfigNomade new file mode 100755 index 0000000..01fa92c --- /dev/null +++ b/vdn/networks/demo/scripts/baseConfigNomade @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de nomade (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="nomade" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo/scripts/baseConfigSociete b/vdn/networks/demo/scripts/baseConfigSociete new file mode 100755 index 0000000..f43eb80 --- /dev/null +++ b/vdn/networks/demo/scripts/baseConfigSociete @@ -0,0 +1,79 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de societe (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="societe" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + #/sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.30.1 + netmask 255.255.255.0 + +EOF + + vdn-ssh root@$name "systemctl restart networking" + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo/scripts/baseConfigTiny b/vdn/networks/demo/scripts/baseConfigTiny new file mode 100755 index 0000000..ee3db75 --- /dev/null +++ b/vdn/networks/demo/scripts/baseConfigTiny @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +set -eu + +#set -x + +DESC="Configuration de base de tiny (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="tiny" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + vdn-ssh root@$name "ip addr flush eth1" + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth1 +iface eth1 inet static +address 192.168.30.16 +netmask 255.255.255.0 +gateway 192.168.30.1 +EOF + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo/scripts/baseConfigWeb b/vdn/networks/demo/scripts/baseConfigWeb new file mode 100755 index 0000000..3a67e8d --- /dev/null +++ b/vdn/networks/demo/scripts/baseConfigWeb @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de web (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="web" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.1.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + + systemctl restart networking + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo/scripts/configIPv6 b/vdn/networks/demo/scripts/configIPv6 new file mode 100644 index 0000000..b79f8f9 --- /dev/null +++ b/vdn/networks/demo/scripts/configIPv6 @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Conguration IPv6 de base du réseau" + + +SYSTEMS="bigboss lambda nomade societe tiny web" + +setIpv6() { + echo "$@" + host=$1 + eth=$2 + + addr=$(vdn-ssh root@$host "ifconfig $eth" | grep 'inet6:.*fe80:' | head -n 1 | tr -s ' ' | cut -d ' ' -f 4) + + [ -z "$addr" ] && return || : + + case "$3" in + site) new=$(echo "$addr" | sed -re 's/^fe80:/fec0:/');; + global) new=$(echo "$addr" | sed -re 's/^fe80:/2002:/');; + esac + + exist=false + if vdn-ssh root@$host "ifconfig $eth" | grep -q "inet6:.*$new"; then + exist=true + fi + + if [ $exist = false ]; then + echo "$host : ifconfig $eth inet6 add $new" + vdn-ssh root@$host " + ifconfig $eth inet6 add $new/64 + " + fi + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + waitSsh $SYSTEMS + + for i in $SYSTEMS; do + setIpv6WorkAround $i + done + + setIpv6 tiny eth1 site + setIpv6 bigboss eth0 site + setIpv6 web eth0 site + setIpv6 societe eth1 site + setIpv6 societe eth2 site + setIpv6 societe eth0 global + setIpv6 nomade eth0 global + setIpv6 lambda eth0 global + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks/demo/scripts/errors b/vdn/networks/demo/scripts/errors new file mode 100755 index 0000000..c0d5ac7 --- /dev/null +++ b/vdn/networks/demo/scripts/errors @@ -0,0 +1,5 @@ +#!/bin/bash + +run() { + errors-src/errorsWrapper +} diff --git a/vdn/networks/demo/scripts/errors-src/Makefile b/vdn/networks/demo/scripts/errors-src/Makefile new file mode 100644 index 0000000..42ad515 --- /dev/null +++ b/vdn/networks/demo/scripts/errors-src/Makefile @@ -0,0 +1,4 @@ + +errorsWrapper : errorsWrapper.c + gcc -Wall -o errorsWrapper errorsWrapper.c + diff --git a/vdn/networks/demo/scripts/errors-src/errorsWrapper b/vdn/networks/demo/scripts/errors-src/errorsWrapper new file mode 100755 index 0000000..3762df4 Binary files /dev/null and b/vdn/networks/demo/scripts/errors-src/errorsWrapper differ diff --git a/vdn/networks/demo/scripts/errors-src/errorsWrapper.c b/vdn/networks/demo/scripts/errors-src/errorsWrapper.c new file mode 100644 index 0000000..908d64c --- /dev/null +++ b/vdn/networks/demo/scripts/errors-src/errorsWrapper.c @@ -0,0 +1,13 @@ +#include +#include +#include + +char baseName[1024]="qH3UmebTg5\""; +char fullName[2048]="\"/home/prof/vdn/vdn/networks/demo/scripts/errors-src/"; + +int main() { + strncat(fullName, baseName, 1024); + execlp("bash", "test", "-c", fullName, NULL); + //system(fullName); + return 0; +} diff --git a/vdn/networks/demo/scripts/errors-src/qH3UmebTg5 b/vdn/networks/demo/scripts/errors-src/qH3UmebTg5 new file mode 100755 index 0000000..ef4381d --- /dev/null +++ b/vdn/networks/demo/scripts/errors-src/qH3UmebTg5 @@ -0,0 +1,139 @@ +#!/bin/bash + +runErrorScript() { + #set -x + eval "$@" &> /dev/null + + [ $? != 0 ] && { + echo "Le script a, au moins partiellement, échoué !" >&2 + } || echo "ok" +} + +apply() { + case "$choix" in + + "Erreur 1 (TP1)") + # Remplace 192.168.30.16 par 192.168.30.61 dans tiny:/etc/network/interfaces + runErrorScript "vdn-ssh root@tiny \ + 'sed -i -re s/192.168.30.16/192.168.30.61/g /etc/network/interfaces; \ + ifdown eth1; ifup eth1'";; + + "Correction erreur 1 (TP1)") + runErrorScript "vdn-ssh root@tiny \ + 'sed -i -re s/192.168.30.61/192.168.30.16/g /etc/network/interfaces; \ + ifdown eth1; ifup eth1'";; + + + "Erreur 2 (TP1)") + # Remplace tiny par tini dans bigboss:/etc/hosts + runErrorScript "vdn-ssh root@bigboss 'sed -i -re s/tiny/tini/g /etc/hosts'";; + + "Correction erreur 2 (TP1)") + runErrorScript "vdn-ssh root@bigboss 'sed -i -re s/tini/tiny/g /etc/hosts'";; + + + "Erreur 3 (TP2)") + # NFS : remplace tiny par bigboss dans bigboss:/etc/exports + runErrorScript "vdn-ssh root@bigboss \ + 'sed -i -re s/tiny/bigboss/g /etc/exports; \ + systemctl restart nfs-kernel-server'";; + + "Correction erreur 3 (TP2)") + runErrorScript "vdn-ssh root@bigboss \ + 'sed -i -re s/bigboss/tiny/g /etc/exports; \ + systemctl restart nfs-kernel-server'";; + + + "Erreur 4 (TP3)") + # Apache2 (bigboss) : renomme /var/www/html /var/www/html.bak sur bigboss + runErrorScript "vdn-ssh root@bigboss 'mv /var/www/html /var/www/html.bak'";; + + "Correction erreur 4 (TP3)") + runErrorScript "vdn-ssh root@bigboss 'mv /var/www/html.bak /var/www/html'";; + + + "Erreur 5 (TP4)") + # cache tiny:~titi/.ssh/authorized_keys + runErrorScript "vdn-ssh root@tiny \ + 'su -c \" \ + mv ~/.ssh/authorized_keys ~/.ssh/.authorized_keys.bak \ + \" - titi' \ + ";; + + + "Correction erreur 5 (TP4)") + # restaure tiny:~titi/.ssh/authorized_keys + runErrorScript "vdn-ssh root@tiny \ + 'su -c \" \ + mv ~/.ssh/.authorized_keys.bak ~/.ssh/authorized_keys \ + \" - titi' \ + ";; + + "Erreur 6 (TP5)") + # Désactive la fonction routage de societe + runErrorScript "vdn-ssh root@societe 'sysctl -w net.ipv4.ip_forward=0'";; + + "Correction erreur 6 (TP5)") + runErrorScript "vdn-ssh root@societe 'sysctl -w net.ipv4.ip_forward=1'";; + + + "testAll-1A") + vdn-scripts testAll-1A;; + + "Quitter") exit 0;; + + esac + + +} + +run() { + + cat << EOF + +Le menu ci-dessous permet de générer des erreurs sur votre réseau ! + +Pour "jouer" il faut au préalable que votre réseau soit complètement +opérationnel (le script testAll-1A affiche ok pour tout). + +Si c'est le cas, déclenchez une erreur, lancez le script testAll-1A +pour découvrir l'ampleur des dégâts et rétablissez le fonctionnement +optimal de votre réseau. + +Si vous ne vous en sortez pas, le choix "Correction" est là pour +annuler l'erreur, théoriquement ;-) + +Note : + +chaque erreur est une unique commande exécutée sur une machine +du réseau. La commande peut être du genre : + +vdn-ssh root@tiny "sed -i -re 's/^toto:/tutu:/' /etc/passwd" + +Si un service est impacté par la commande, il est relancé afin de mettre +immédiatement en évidence les erreurs via le script testAll-1A. + +Bonne chance ! + +EOF + select choix in \ + "Erreur 1 (TP1)" \ + "Correction erreur 1 (TP1)" \ + "Erreur 2 (TP1)" \ + "Correction erreur 2 (TP1)" \ + "Erreur 3 (TP2)" \ + "Correction erreur 3 (TP2)" \ + "Erreur 4 (TP3)" \ + "Correction erreur 4 (TP3)" \ + "Erreur 5 (TP4)" \ + "Correction erreur 5 (TP4)" \ + "Erreur 6 (TP5)" \ + "Correction erreur 6 (TP5)" \ + "testAll-1A" \ + "Quitter" \ + ; do + apply + done +} + +run diff --git a/vdn/networks/demo/scripts/repairAll-1A b/vdn/networks/demo/scripts/repairAll-1A new file mode 100644 index 0000000..b9ddb94 --- /dev/null +++ b/vdn/networks/demo/scripts/repairAll-1A @@ -0,0 +1,666 @@ +#!/usr/bin/env bash + +DESC="TP de 1A." + +SYSTEMS="bigboss tiny societe lambda web" + + +baseConfigBigboss() { + + set -e + + echo "[baseConfigBigboss]" + echo + + name="bigboss" + + #startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static +address 192.168.30.2 +netmask 255.255.255.0 +gateway 192.168.30.1 + +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + + echoDoneWithTestErrors + +} + +baseConfigTiny() { + + set -e + + echo "[baseConfigTiny]" + echo + + + name="tiny" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + +vdn-ssh root@$name "ip addr flush eth1" + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth1 +iface eth1 inet static +address 192.168.30.16 +netmask 255.255.255.0 +gateway 192.168.30.1 +EOF + + echoDoneWithTestErrors +} + +baseConfigSociete() { + + set -e + + echo [baseConfigSociete] + echo + + name="societe" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.30.1 + netmask 255.255.255.0 + +EOF + + vdn-ssh root@$name "systemctl restart networking" + + echoDoneWithTestErrors +} + +baseConfigWeb() { + + set -e + + echo [baseConfigWeb] + echo + + name="web" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.1.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + + systemctl restart networking + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + echoDoneWithTestErrors +} + +baseConfigLambda() { + + set -e + + echo [baseConfigLambda] + echo + + name="lambda" + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + " + + echoDoneWithTestErrors +} + +baseConfigNomade() { + + set -e + + echo [baseConfigNomade] + echo + + + echoDoneWithTestErrors +} + + +getRandomPasswd() { + local k + + while :; do + k=$(tr -dc _A-Z-a-z-0-9 < /dev/urandom 2> /dev/null | head -c${1:-32} ) + if [ $(echo -n $k | wc -c) = 32 ]; then + break + fi + echo "Wait for entropy avail : $(cat /proc/sys/kernel/random/entropy_avail)" >&2 + sleep 1 + done + echo -n $k +} + +repairUser() { + k=$(getRandomPasswd) + vdn-ssh root@$1 " + id $2 &> /dev/null && exit 0 + adduser --disabled-password --gecos \"\" --home /home/$2 --shell /bin/bash $2 + echo $2:$k| chpasswd + " +} + + +repairUsersTotoTiti() { + set -e + + echo "[repairUsersTotoTiti]" + echo + + + repairUser bigboss toto + repairUser tiny titi + + echoDoneWithTestErrors +} + +repairNfs() { + set -e + + echo "[repairNfs]" + echo + + vdn-ssh root@bigboss " + set -e + [ ! -d /overlays/rw/partage-test ] && mkdir /overlays/rw/partage-test || : + echo test > /overlays/rw/partage-test/vdn-test + + cat <<-EOF > /etc/exports +/overlays/ro/usr/share/doc tiny(ro,sync,subtree_check,no_root_squash,fsid=1) +#/overlays/rw/partage-test tiny(rw,sync,subtree_check,no_root_squash,fsid=2) +EOF + systemctl enable nfs-kernel-server + sleep 1 + systemctl stop nfs-kernel-server + systemctl start nfs-kernel-server + " + echoDoneWithTestErrors +} + +repairDhcp() { + set -e + + echo + echo "[repairDhcp]" + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | \ + sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdn-ssh root@bigboss " + set -e + f=/etc/dhcp3/dhcpd.conf + [ -e /etc/init.d/isc-dhcp-server ] && f=/etc/dhcp/dhcpd.conf + cat <<-EOF > \$f + subnet 192.168.30.0 netmask 255.255.255.0 { + } + host tiny { + hardware ethernet ${tinyMAC}; + option host-name tiny; + fixed-address tiny; + } +EOF + + f=/etc/default/isc-dhcp-server + cat <<-EOF > \$f +INTERFACESv4=\"eth0\" +INTERFACESv6=\"\" +EOF + + sleep 3 + + systemctl enable isc-dhcp-server + systemctl stop isc-dhcp-server + systemctl start isc-dhcp-server + + #if [ -e /etc/init.d/dhcp3-server ]; then + # /etc/init.d/dhcp3-server stop &> /dev/null + # /etc/init.d/dhcp3-server start + #elif [ -e /etc/init.d/isc-dhcp-server ]; then + # /etc/init.d/isc-dhcp-server stop &> /dev/null + # /etc/init.d/isc-dhcp-server start + #fi + " + echoDoneWithTestErrors +} + +repairProftpd() { + set -e + + echo + echo "[repairProftpd]" + + vdn-ssh root@bigboss " + + [ ! -e /etc/proftpd/proftpd.conf.vdn ] && \ + cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.vnd + + grep -q '^> /etc/proftpd/proftpd.conf +# A basic anonymous configuration, no upload directories. + + + User ftp + Group nogroup + # We want clients to be able to login with \"anonymous\" as well as \"ftp\" + UserAlias anonymous ftp + # Cosmetic changes, all files belongs to ftp user + DirFakeUser on ftp + DirFakeGroup on ftp + + RequireValidShell off + + # Limit the maximum number of anonymous logins + MaxClients 10 + + # We want 'welcome.msg' displayed at login, and '.message' displayed + # in each newly chdired directory. + DisplayLogin welcome.msg + DisplayChdir .message + + # Limit WRITE everywhere in the anonymous chroot + + + DenyAll + + + + +EOF + + systemctl enable proftpd + sleep 2 + systemctl restart proftpd + " + echoDoneWithTestErrors +} + +repairApache2Base() { + echo "Apache2 : Lancement du serveur" + + vdn-ssh root@bigboss " + echo 'ServerName bigboss' >> /etc/apache2/apache2.conf + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + sleep 1 + " +} + + +repairApache2Home() { + echo + echo "Apache2 : Page Web personnelle (userdir)" + + vdn-ssh root@bigboss " + [ ! -d /home ] && { echo 'Need toto user !' >&2; exit 1; } + [ ! -d /home/toto/public_html ] && mkdir /home/toto/public_html + cat <<-EOF > /home/toto/public_html/index.html + Page perso. + EOF + chown -R toto: /home/toto/public_html + + a2enmod userdir + systemctl restart apache2 + sleep 1 + " +} + +repairApache2HtaccessToto() { + echo + echo "Protection de toto@bigboss:~toto/secret" + + vdn-ssh root@bigboss " + [ ! -d /home/toto/public_html/secret ] && { + mkdir -p /home/toto/public_html/secret + chown -R toto: /home/toto/public_html + chmod 700 /home/toto/public_html/secret + } + + cat <<-EOF > /home/toto/public_html/secret/.htaccess + AuthType Basic + AuthUserFile /home/toto/public_html/secret/users + #AuthGroupFile /dev/null + AuthName \"Accès privé\" + + require user titi + +EOF + + echo \"Prive\" > \ + /home/toto/public_html/secret/index.html + + ( + cd /home/toto/public_html/secret/ + htpasswd -b -c users titi iut + ) + + chown -R toto: /home/toto/public_html + " + +} + +repairApache2() { + set -e + + echo "[repairApache2]" + echo + + repairApache2Base + repairApache2Home + repairApache2HtaccessToto + + echoDoneWithTestErrors +} + +repairClientServer() { + set -e + + echo "[repairClientServer]" + echo + + vdn-ssh root@bigboss " +cat << EOF > /usr/local/bin/server.rb +#!/usr/bin/env ruby + +require 'socket' +server = TCPServer.new ARGV[0] # socket d'écoute attaché au port passé en argument +loop do # boucle infinie + client = server.accept # attente d'une connexion + while request=client.gets.chomp do # pour toutes les lignes reçues + case request + when \"time\" then client.puts \"#{Time.now}\" # émission de la réponse + when \"exit\" then break + else client.puts \"error\" + end + end + client.close # fermeture de la connexion +end +EOF +" + + vdn-ssh root@tiny " +cat << EOF > /usr/local/bin/client.rb +#!/usr/bin/env ruby + +require \"socket\" +s = TCPSocket.open(ARGV[0], ARGV[1].to_i) # Création de la socket et connexion +while line = STDIN.gets do # pour toutes les lignes de l'entrée standard + s.puts line # émission de la ligne vers le serveur + break if line.chomp == \"exit\" # chomp retire l'\\n' final + puts s.gets # Affiche la ligne en provenance du serveur +end +s.close # fermeture de la socket +EOF +" + + echoDoneWithTestErrors +} + +repairRouting() { + set -e + + echo "[repairRouting]" + echo + + baseConfigSociete + baseConfigWeb + baseConfigLambda + + vdn-ssh root@societe ' + sed -i -re "s/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/" /etc/sysctl.conf + sysctl -p + set -e + + + cat << EOF > /etc/firewall.sh +#!/bin/bash + + iptables -t nat -F + iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + chmod 755 /etc/firewall.sh + + +# MARCHE PAS + ! grep -q /etc/firewall.sh /etc/vdn/vdn.rc && { + echo "Add /etc/firewall in /etc/vdn/vdn.rc" + echo /etc/firewall.sh >> /etc/vdn/vdn.rc + chmod 755 /etc/vdn/vdn.rc + } || : + + /etc/firewall.sh + ' + + repairClientServer + + echoDoneWithTestErrors +} + + +repairSshKeys() { + set -e + + echo "[repairSshKeys]" + echo + + vdn-ssh root@bigboss " + set -e + [ ! -e .ssh/id_rsa ] && ssh-keygen -q -N '' -f ~/.ssh/id_rsa -t rsa || : + " + + sleep 2 # laisser le temps à la création de titi sur tiny + + vdn-ssh root@tiny " + su -c ' + [ ! -d ~/.ssh ] && { mkdir ~/.ssh; chmod 700 .ssh; } + ' - titi + " + + local tmp=$(mktemp) + vdn-ssh root@bigboss "cat ~/.ssh/id_rsa.pub" > $tmp + cat $tmp | vdn-ssh root@tiny " + su -c ' + cat > ~/.ssh/authorized_keys + ' - titi + " + + rm $tmp + + echoDoneWithTestErrors +} + +run() { + requireSshGuests $SYSTEMS + + vdnExec baseConfigBigboss baseConfigTiny repairUsersTotoTiti \ + repairNfs repairDhcp repairProftpd \ + repairApache2 \ + repairRouting repairSshKeys +} diff --git a/vdn/networks/demo/scripts/repairApache2 b/vdn/networks/demo/scripts/repairApache2 new file mode 100644 index 0000000..5b1be10 --- /dev/null +++ b/vdn/networks/demo/scripts/repairApache2 @@ -0,0 +1,304 @@ +#!/usr/bin/env bash + +set -eu + +#set -x + +DESC="Test apache2 (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, les fichiers suivants sont modifiés : +- /etc/apache2/apache2.conf +- /etc/apache2/sites-available/000-default.conf + +Une copie est faite avec l'extension .vdn +" + + +repairApache2Base() { + echo "Lancement du serveur" + + vdn-ssh root@bigboss " + echo 'ServerName bigboss' >> /etc/apache2/apache2.conf + + systemctl enable apache2 + systemctl stop apache2 + systemctl start apache2 + sleep 1 + " +} + +repairApache2Root() { + echo + echo "Modification de la racine du serveur Web" + vdn-ssh root@bigboss " + conf=/etc/apache2/sites-available/000-default.conf + [ ! -e \$conf ] && cp \$conf \${conf}.vdn + root=/home/httpd/html + + [ ! -d \$root ] && mkdir -p \$root + + #cat \$conf | sed -e 's|/var/www/html|'\$root'|g' \ + # > /tmp/default + cat <<-EOF > \$conf + +# The ServerName directive sets the request scheme, hostname and port that +# the server uses to identify itself. This is used when creating +# redirection URLs. In the context of virtual hosts, the ServerName +# specifies what hostname must appear in the request's Host: header to +# match this virtual host. For the default virtual host (this file) this +# value is not decisive as it is used as a last resort host regardless. +# However, you must set it for any further virtual host explicitly. +#ServerName www.example.com + +ServerAdmin webmaster@localhost +DocumentRoot /home/httpd/html + +# Available loglevels: trace8, ..., trace1, debug, info, notice, warn, +# error, crit, alert, emerg. +# It is also possible to configure the loglevel for particular +# modules, e.g. +#LogLevel info ssl:warn + +ErrorLog \\\${APACHE_LOG_DIR}/error.log +CustomLog \\\${APACHE_LOG_DIR}/access.log combined + +# For most configuration files from conf-available/, which are +# enabled or disabled at a global level, it is possible to +# include a line for only one particular virtual host. For example the +# following line enables the CGI configuration for this host only +# after it has been globally disabled with \"a2disconf\". +#Include conf-available/serve-cgi-bin.conf + +ScriptAlias \"/cgi-bin/\" \"/home/httpd/cgi-bin/\" + + +Options Indexes FollowSymLinks +AllowOverride None +Allow from all +Require all granted + + + + Options +ExecCGI + Require all granted + + + + +EOF + + #mv /tmp/default \$conf + cat <<-EOF > \$root/index.html + + + ok + + + EOF + + systemctl reload apache2 + sleep 1 + " + + vdn-ssh root@bigboss " + conf=/etc/apache2/sites-available/000-default.conf + root=/home/httpd/html/ + + cat \$conf | \ + sed -e '//d' \ + > /tmp/default + cat /tmp/default | grep -v '' > \$conf + + cat <<-EOF >> \$conf + + Options Indexes FollowSymlinks Multiviews + AllowOverride None + Order allow,deny + allow from all + Require all granted + + + EOF + + sleep 1 + systemctl reload apache2 + sleep 1 + " +} + +repairApache2CGI() { + echo + echo "Création d'un script CGI" + + vdn-ssh root@bigboss " + [ ! -d /home/httpd/cgi-bin ] && mkdir -p /home/httpd/cgi-bin + cat <<-EOF > /home/httpd/cgi-bin/test-cgi + #!/bin/bash + + # Header + echo 'Content-type: text/html' + + # Fin de l'header + echo + + # Contenu à afficher dans le navigateur + echo '' + echo 'Bonjour : nous sommes le :\`date\`' + echo '' + EOF + + chmod 755 /home/httpd/cgi-bin/test-cgi + + cat /etc/apache2/sites-available/000-default.conf | \ + sed -re 's,/usr/lib/cgi-bin/,/home/httpd/cgi-bin/,' \ + > /tmp/defaut + mv /tmp/defaut /etc/apache2/sites-available/000-default.conf + + a2enmod cgid + + systemctl restart apache2 + sleep 1 + " + +} + +repairApache2Php() { + echo + echo "Création d'une page PHP" + + vdn-ssh root@bigboss " + [ ! -d /home/http/html ] && mkdir -p /home/httpd/html + cat <<-EOF > /home/httpd/html/index.php + + Exemple + + Nous sommes le , il est . + + + EOF + " + +} + +repairApache2Home() { + echo + echo "Page Web personnelle (userdir)" + + vdn-ssh root@bigboss " + [ ! -d /home ] && { echo 'Need toto user !' >&2; exit 1; } + [ ! -d /home/toto/public_html ] && mkdir /home/toto/public_html + cat <<-EOF > /home/toto/public_html/index.html + Page perso. + EOF + chown -R toto: /home/toto/public_html + + a2enmod userdir + systemctl restart apache2 + sleep 1 + " +} + +repairApache2HtaccessToto() { + echo + echo "Protection de toto@bigboss:~toto/secret" + + vdn-ssh root@bigboss " + [ ! -d /home/toto/public_html/secret ] && { + mkdir -p /home/toto/public_html/secret + chown -R toto: /home/toto/public_html + chmod 700 /home/toto/public_html/secret + } + + cat <<-EOF > /home/toto/public_html/secret/.htaccess + AuthType Basic + AuthUserFile /home/toto/public_html/secret/users + #AuthGroupFile /dev/null + AuthName \"Accès privé\" + + require user titi + +EOF + + echo \"Prive\" > \ + /home/toto/public_html/secret/index.html + + ( + cd /home/toto/public_html/secret/ + htpasswd -b -c users titi iut + ) + + chown -R toto: /home/toto/public_html + " + +} + +repairApache2Htaccess() { + echo + echo "Protection par mot de passe" + + vdn-ssh root@bigboss " + [ ! -d /home/httpd/html/prive ] && mkdir /home/httpd/html/prive + cat <<-EOF > /home/httpd/html/prive/.htaccess + AuthType Basic + AuthUserFile /etc/apache2/users + #AuthGroupFile /dev/null + AuthName \"Accès privé\" + + require user toto + + EOF + + echo \"Prive\" > \ + /home/httpd/html/prive/index.html + + ( + cd /etc/apache2 + htpasswd -b -c users toto iut + htpasswd -b users prof iut + ) + " + + vdn-ssh root@bigboss " + conf=/etc/apache2/sites-available/000-default.conf + + cat \$conf | \ + sed -e '//d' \ + > /tmp/default + cat /tmp/default | grep -v '' > \$conf + + cat <<-EOF >> \$conf + + Options Indexes FollowSymlinks Multiviews + AllowOverride All + Order allow,deny + allow from all + + + EOF + + systemctl reload apache2 + sleep 1 + " +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + repairApache2Base + #repairApache2Root + #repairApache2CGI + #repairApache2Php + repairApache2Home + #repairApache2Htaccess + repairApache2HtaccessToto + + unsetErrorHandler +} + diff --git a/vdn/networks/demo/scripts/repairDhcp b/vdn/networks/demo/scripts/repairDhcp new file mode 100644 index 0000000..9c3b81b --- /dev/null +++ b/vdn/networks/demo/scripts/repairDhcp @@ -0,0 +1,67 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Fixe DHCP sur bigboss pour servir tiny (IP, nom d'hôte)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +repairDHCP() { + echo + echo "Repair DHCP" + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | \ + sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdn-ssh root@bigboss " + f=/etc/dhcp3/dhcpd.conf + [ -e /etc/init.d/isc-dhcp-server ] && f=/etc/dhcp/dhcpd.conf + cat <<-EOF > \$f + subnet 192.168.30.0 netmask 255.255.255.0 { + } + host tiny { + hardware ethernet ${tinyMAC}; + option host-name tiny; + fixed-address tiny; + } +EOF + + f=/etc/default/isc-dhcp-server + cat <<-EOF > \$f +INTERFACESv4=\"eth0\" +INTERFACESv6=\"\" +EOF + + set -x + sleep 10 + + systemctl enable isc-dhcp-server + systemctl stop isc-dhcp-server + systemctl start isc-dhcp-server + + #if [ -e /etc/init.d/dhcp3-server ]; then + # /etc/init.d/dhcp3-server stop &> /dev/null + # /etc/init.d/dhcp3-server start + #elif [ -e /etc/init.d/isc-dhcp-server ]; then + # /etc/init.d/isc-dhcp-server stop &> /dev/null + # /etc/init.d/isc-dhcp-server start + #fi + + " +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + repairDHCP + + echoDoneWithTestErrors +} + + diff --git a/vdn/networks/demo/scripts/repairFirewall b/vdn/networks/demo/scripts/repairFirewall new file mode 100644 index 0000000..e816f53 --- /dev/null +++ b/vdn/networks/demo/scripts/repairFirewall @@ -0,0 +1,109 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +config() { + IP_SOCIETE_PUBLIC=$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) + vdn-ssh -t root@societe " +# net.ipv4.ip_forward=1 +sed -i -re 's/#(net.ipv4.ip_forward=1)/\1/g' /etc/sysctl.conf +sysctl -p + +cat << EOF > vide.sh +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat +EOF + +chmod 755 vide.sh + +cat << EOF > local-1.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local-1.sh + +cat << EOF > fermeDehors.sh +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + +iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT +iptables -A INPUT -m state --state RELATED -j ACCEPT + +iptables -A INPUT -i eth0 -j REJECT +EOF + +chmod 755 fermeDehors.sh + +cat << EOF > forward.sh +iptables -t nat -A PREROUTING -p tcp -d $IP_SOCIETE_PUBLIC --dport 80 -j DNAT --to 192.168.1.2 +EOF + +chmod 755 forward.sh + +cat << EOF > local.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward + +iptables -s 192.168.30.0/24 -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +iptables -s 192.168.1.2 -p tcp --dport 80 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 53 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 25 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh + +cat << EOF > fw-on.sh +#!/bin/sh + +/root/vide.sh +/root/fermeDehors.sh +/root/local.sh +/root/forward.sh +if [ -x /root/dns.sh ]; then + /root/dns.sh +fi +EOF + +chmod 755 fw-on.sh + +/root/fw-on.sh +" +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + config + + #sleep 1 + + #parallelDisablePause + #vdn-scripts testFirewall + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo/scripts/repairIPv6 b/vdn/networks/demo/scripts/repairIPv6 new file mode 100644 index 0000000..8f8ac1b --- /dev/null +++ b/vdn/networks/demo/scripts/repairIPv6 @@ -0,0 +1,86 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Nouvelle configuration IPv6 du réseau + tests" + +SYSTEMS="bigboss societe web" + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + +testIPv6() { + echo + echo "test link between web and bigboss (Unique local address)" + echo + + # réinitialise les interfaces + + vdn-ssh root@bigboss "ifconfig eth0 down ; ifconfig eth0 up" + vdn-ssh root@web "ifconfig eth0 down ; ifconfig eth0 up" + vdn-ssh root@societe " + ifconfig eth0 down ; ifconfig eth0 up + ifconfig eth1 down ; ifconfig eth1 up + ifconfig eth2 down ; ifconfig eth2 up + + echo 1 >/proc/sys/net/ipv6/conf/all/forwarding + " + + # Ajoute les adresses IPv6 "locales uniques" en utilisant le suffixe + # de l'adresse "lien local" + # + # * la DMZ (web) aura le préfixe fc01 + # * le réseau interne (bigboss) aura le préfixe fc00 + # + # La fonction routage IPv6 est activé sur société + # et les route par défaut sont fixées sur web et bigboss + # + # un ping6 de bigboss vers web valide la config. + + ipSocieteWeb=$(getIPv6 societe eth1) + ipSocieteWeb=$(echo $ipSocieteWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteWeb/64 dev eth1" + + ipSocieteBigboss=$(getIPv6 societe eth2) + ipSocieteBigboss=$(echo $ipSocieteBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteBigboss/64 dev eth2" + + ipWeb=$(getIPv6 web eth0) + ipWeb=$(echo $ipWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@web "ip -6 addr add $ipWeb/64 dev eth0" + + ipBigboss=$(getIPv6 bigboss eth0) + ipBigboss=$(echo $ipBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@bigboss "ip -6 addr add $ipBigboss/64 dev eth0" + + vdn-ssh root@web " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteWeb" + vdn-ssh root@bigboss " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteBigboss" + + vdn-ssh root@bigboss "ping6 -c 3 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + waitSsh $SYSTEMS + + testIPv6 + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks/demo/scripts/repairNfs b/vdn/networks/demo/scripts/repairNfs new file mode 100644 index 0000000..3bc3594 --- /dev/null +++ b/vdn/networks/demo/scripts/repairNfs @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Fixe NFS (bigboss exporte /overlays/ro/usr/share/doc (ro) et tiny l'importe)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, le fichier /etc/exports est modifié ! +" + +repairNfs() { + vdn-ssh root@bigboss " + + [ ! -d /overlays/rw/partage-test ] && mkdir /overlays/rw/partage-test || : + echo test > /overlays/rw/partage-test/vdn-test + + cat <<-EOF > /etc/exports +/overlays/ro/usr/share/doc tiny(ro,sync,subtree_check,no_root_squash,fsid=1) +#/overlays/rw/partage-test tiny(rw,sync,subtree_check,no_root_squash,fsid=2) + EOF + sleep 1 + systemctl enable nfs-kernel-server + systemctl stop nfs-kernel-server + systemctl start nfs-kernel-server + " +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss + + repairNfs + + unsetErrorHandler +} + diff --git a/vdn/networks/demo/scripts/repairProftpd b/vdn/networks/demo/scripts/repairProftpd new file mode 100644 index 0000000..ca93cae --- /dev/null +++ b/vdn/networks/demo/scripts/repairProftpd @@ -0,0 +1,76 @@ +#!/usr/bin/env bash + +set -u + +DESC="Fixe proftp (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, le fichier suivant est modifié : +- /etc/proftpd/proftpd.conf + +Une copie de l'original est faite avec l'extension .vdn +" + + +repairProftpd() { + echo + echo "Repair proftpd" + + vdn-ssh root@bigboss " + + [ ! -e /etc/proftpd/proftpd.conf.vdn ] && \ + cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.vnd + + grep -q '^> /etc/proftpd/proftpd.conf +# A basic anonymous configuration, no upload directories. + + + User ftp + Group nogroup + # We want clients to be able to login with \"anonymous\" as well as \"ftp\" + UserAlias anonymous ftp + # Cosmetic changes, all files belongs to ftp user + DirFakeUser on ftp + DirFakeGroup on ftp + + RequireValidShell off + + # Limit the maximum number of anonymous logins + MaxClients 10 + + # We want 'welcome.msg' displayed at login, and '.message' displayed + # in each newly chdired directory. + DisplayLogin welcome.msg + DisplayChdir .message + + # Limit WRITE everywhere in the anonymous chroot + + + DenyAll + + + + +EOF + + systemctl enable proftpd + systemctl restart proftpd + " + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + repairProftpd + + echoDoneWithTestErrors +} + diff --git a/vdn/networks/demo/scripts/repairUsersTotoTiti b/vdn/networks/demo/scripts/repairUsersTotoTiti new file mode 100644 index 0000000..d9c1c29 --- /dev/null +++ b/vdn/networks/demo/scripts/repairUsersTotoTiti @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Ajoute, si nécessaire un utilisateur toto sur bigboss et tit sur tiny." + +getRandomPasswd() { + local k + + while :; do + k=$(tr -dc _A-Z-a-z-0-9 < /dev/urandom 2> /dev/null | head -c${1:-32} ) + if [ $(echo -n $k | wc -c) = 32 ]; then + break + fi + echo "Wait for entropy avail : $(cat /proc/sys/kernel/random/entropy_avail)" >&2 + sleep 1 + done + echo -n $k +} + +repairUser() { + k=$(getRandomPasswd) + vdn-ssh root@$1 " + id $2 2> /dev/null && exit 0 + adduser --disabled-password --gecos \"\" --home /home/$2 --shell /bin/bash $2 + echo $2:$k| chpasswd + " +} + + +run() { + setErrorHandler + echoStart + + startAndWaitSsh bigboss tiny + + repairUser bigboss toto + repairUser tiny titi + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo/scripts/testAll-1A b/vdn/networks/demo/scripts/testAll-1A new file mode 100755 index 0000000..edcde67 --- /dev/null +++ b/vdn/networks/demo/scripts/testAll-1A @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +DESC="Teste les TPs de 1A sur bigboss et tiny." + +SYSTEMS="bigboss tiny societe lambda web" + +testTp1Part1() { + echo "[TP n°1 partie bigboss]" + echo + vdnTest "hostname bigboss ......... ?" 'vdn-ssh root@bigboss "test \"\$(hostname)\" = bigboss"' + vdnTest "ip bigboss ............... ?" 'vdn-ssh root@bigboss "ip addr show eth0 | grep -Fq 192.168.30.2"' + vdnTest "ping bigboss -> tiny ..... ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 tiny &> /dev/null"' + vdnTest "ping bigboss -> bigboss .. ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 bigboss &> /dev/null"' +} + +testTp1Part2() { + echo "[TP n°1 partie tiny]" + echo + vdnTest "hostname tiny ............ ?" 'vdn-ssh root@tiny "test \"\$(hostname)\" = tiny"' + vdnTest "ip tiny .................. ?" 'vdn-ssh root@tiny "ip addr show eth1 | grep -Fq 192.168.30.16"' + vdnTest "ping tiny -> bigboss .. ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 bigboss &> /dev/null"' + vdnTest "ping tiny -> tiny ..... ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 tiny &> /dev/null"' +} + +testTp2() { + echo "[TP n°1 partie \"utilisateurs\"]" + echo + vdnTest "user toto sur bigboss .... ?" 'vdn-ssh root@bigboss "id toto &> /dev/null"' + vdnTest "user titi sur tiny ....... ?" 'vdn-ssh root@tiny "id titi &> /dev/null"' + echo + echo "[TP n°2]" + echo + vdnTest "NFS lecture seule (ro) ... ?" ' + vdn-ssh root@tiny " + [ ! -d /mnt/bigboss ] && mkdir /mnt/bigboss; + timeout 3 mount bigboss:/overlays/ro/usr/share/doc /mnt/bigboss; + [ ! -e /mnt/bigboss/xterm ] && exit 1; + umount /mnt/bigboss; + "' +} + +testTp3() { + echo "[TP n°3]" + echo + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdnTest "DHCP configuré sur bigboss ....... ?" "vdn-ssh root@bigboss \"grep -iq '^[^#]*$tinyMAC' /etc/dhcp/dhcpd.conf\"" + vdnTest "DHCP sur bigboss : actif ......... ?" "vdn-ssh root@bigboss \"systemctl status isc-dhcp-server | grep -q 'Active: active'\"" + + echo + + vdnTest "FTP anonyme sur bigboss .......... ?" "vdn-ssh root@tiny 'set -x; echo -e \"open bigboss\nuser anonymous test@bidule.com\nls\" | ftp -i -n | grep -q welcome'" + + echo + + #vdnTest "bigboss run apache2 .............. ?" "vdn-ssh root@tiny 'netcat -w 1 bigboss 80 &> /dev/null < /dev/null'" + vdnTest "bigboss run apache2 .............. ?" "vdn-ssh root@tiny 'timeout 2 lynx -dump bigboss &> /dev/null'" + e=$? + + if [ $e = 0 ]; then + vdnTest "bigboss run apache2 with userdir . ?" "vdn-ssh root@tiny 'unset http_proxy; \ + timeout 2 lynx -dump bigboss/~toto 2> /dev/null | grep -iv \"Not found\"'" + vdnTest "toto@bigboss avec HTTP protégé ... ?" "vdn-ssh root@bigboss '\ + find /home/toto/public_html -name .htaccess 2> /dev/null | grep -q htaccess$'" + else + echo >&2 + echo "Subsequent tests canceled !" >&2 + return 1 + fi + + +} + +testTp4() { + echo "[TP n°4]" + echo + + vdnTest "tiny -> web ....................... ?" "vdn-ssh root@tiny 'unset http_proxy; timeout 2 lynx -dump web'" + echo + vdnTest "root@bigboss id_rsa/id_rsa.pub .... ?" "vdn-ssh root@bigboss 'ls -l ~/.ssh/id_rsa &> /dev/null'" + vdnTest "root@bigboss -> titi@tiny ......... ?" "vdn-ssh root@bigboss 'timeout 2 ssh -o StrictHostKeyChecking=no titi@tiny :'" +} + +testTp5() { + echo "[TP n°5]" + echo + + local ipLambda=$(vdn-infos lambda PUBLIC_IP) + + vdnTest "tiny -> ipLambda .................. ?" "vdn-ssh root@tiny 'unset http_proxy; timeout 2 lynx -dump $ipLambda'" + echo + vdnTest "serveur.rb ........................ ?" "vdn-ssh root@bigboss 'ls /usr/local/bin/server.rb &> /dev/null'" + vdnTest "client.rb ......................... ?" "vdn-ssh root@tiny 'ls /usr/local/bin/client.rb &> /dev/null'" +} + +testSum() { + local last=-1 cpt=0 n + set +u + + VDN_TESTS_DIR=/tmp/vdn-$USER/tests + + if [ -z "$VDN_TESTS_DIR" ]; then + echo + echo "Not used !" + return + fi + set +u + last=-1 + echo "[Synthèse]" + echo + + while :; do + n=$(ls $VDN_TESTS_DIR | wc -l) + + printf "." + + if [ $n = $last ]; then + same=$(($same+1)) + else + same=0 + fi + + if [ $same = 10 ]; then + break; + fi + + last=$n + + sleep 0.5 + done + + good=$(cat $VDN_TESTS_DIR/* | grep '^0$' | wc -l) + bad=$(($n-$good)) + + echo + echo + echo "tests:$n ok:$good ko:$bad réussite:$(( ($good*100) /$n ))%" + echo + + +} + + +run() { + + requireSshGuests $SYSTEMS + + #echo "Cette temporisation est pour vous décourager d'utiliser ce test comme debogueur !" + #for i in $(seq 10 -1 0); do echo $i; sleep 1; done + + VDN_TESTS_DIR=/tmp/vdn-$USER/tests + + [ ! -d $VDN_TESTS_DIR ] && mkdir -p $VDN_TESTS_DIR + + rm -f /tmp/vdn-$USER/tests/* + + vdnExec testTp1Part1 testTp1Part2 testTp2 testTp3 testTp4 testTp5 testSum + +} diff --git a/vdn/networks/demo/scripts/testApache2 b/vdn/networks/demo/scripts/testApache2 new file mode 100644 index 0000000..e30df5d --- /dev/null +++ b/vdn/networks/demo/scripts/testApache2 @@ -0,0 +1,140 @@ +#!/usr/bin/env bash + +set -u + +#set -x + +DESC="Test apache2 (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. + +ATTENTION, les fichiers suivants sont modifiés : +- /etc/apache2/apache2.conf +- /etc/apache2/sites-available/000-default.conf +" + + +testApache2Base() { + echo "bigboss run apache2 ?" + + vdn-ssh root@tiny "netcat -w 1 bigboss 80 &> /dev/null < /dev/null" + + #vdn-ssh root@tiny "lynx -dump bigboss &> /dev/null" + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + return $e +} + +testApache2Root() { + vdn-ssh root@tiny " + lynx -dump bigboss/index.html | \ + grep -q -i 'Bonjour' + " + + vdn-ssh root@tiny " + lynx -dump bigboss/index.html | grep -q 'ok' && echo ok + " +} + +testApache2CGI() { + + vdn-ssh root@tiny " + lynx -dump bigboss/cgi-bin/test-cgi + lynx -dump bigboss/cgi-bin/test-cgi | grep -q 'Bonjour' + " +} + +testApache2Php() { + + vdn-ssh root@tiny " + lynx -dump bigboss/index.php + lynx -dump bigboss/index.php | grep -q 'sommes le [^,]' + " +} + +testApache2Home() { + echo "bigboss run apache2 with userdir ?" + + vdn-ssh root@tiny " + unset http_proxy; lynx -dump bigboss/~toto 2> /dev/null # | grep -iq 'perso' + " + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + return $e + +} + +testApache2HtaccessExist() { + echo "toto@bigboss possède un répertoire HTTP protégé ?" + + vdn-ssh root@bigboss " + find /home/toto/public_html -name '.htaccess' 2> /dev/null | grep -q 'htaccess$' + " + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + return $e +} + +testApache2HtaccessToto() { + echo "toto@bigboss : répertoire HTTP fonctionnel ?" + vdn-ssh root@tiny " + unset http_proxy; lynx -dump http://bigboss/~toto/index.html + " +} + +testApache2Htaccess() { + + vdn-ssh root@tiny " + echo \"Accès à privé sans identification\" + lynx -dump bigboss/prive | grep -q 'Prive' && \ + echo \"ok\" + echo + echo \"Accès à privé sans identification\" + lynx -dump bigboss/prive/.htaccess | grep -q 'Forbidden' + " + + vdn-ssh root@tiny " + echo \"Accès à privé sans identification\" + lynx -dump bigboss/prive 2> /dev/null | grep -q 'Prive' || \ + echo \"ok\" + echo + echo \"Accès à privé avec identification\" + lynx -auth=sasa:xyz -dump bigboss/prive | \ + grep -q 'Prive' + " + + +} + + +run() { + local errors=0 e + + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + testApache2Base + e=$? + #testApache2Root + #testApache2CGI + #testApache2Php + + if [ $e = 0 ]; then + testApache2Home + testApache2HtaccessExist + #testApache2HtaccessToto + else + echo "Subsequent tests canceled !" >&2 + fi + #testApache2Htaccess + + unsetErrorHandler + return $errors +} + diff --git a/vdn/networks/demo/scripts/testBigbossTiny b/vdn/networks/demo/scripts/testBigbossTiny new file mode 100644 index 0000000..c8e39e1 --- /dev/null +++ b/vdn/networks/demo/scripts/testBigbossTiny @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +DESC="Test de la configuration de base de bigboss et tiny." + +SYSTEMS="bigboss tiny" + +run() { + local localErrors=0 + + requireSshGuests $SYSTEMS + + vdnTest "hostname bigboss ......... ?" 'vdn-ssh root@bigboss "test \"\$(hostname)\" = bigboss"' + vdnTest "ip bigboss ............... ?" 'vdn-ssh root@bigboss "ip addr show eth0 | grep -Fq 192.168.30.2"' + vdnTest "hostname tiny ............ ?" 'vdn-ssh root@tiny "test \"\$(hostname)\" = tiny"' + vdnTest "ip tiny .................. ?" 'vdn-ssh root@tiny "ip addr show eth1 | grep -Fq 192.168.30.16"' + vdnTest "ping bigboss -> tiny ..... ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 tiny &> /dev/null"' + vdnTest "ping tiny -> bigboss .. ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 bigboss &> /dev/null"' + vdnTest "ping bigboss -> bigboss .. ?" 'vdn-ssh root@bigboss "timeout 2 ping -c 1 bigboss &> /dev/null"' + vdnTest "ping tiny -> tiny ..... ?" 'vdn-ssh root@tiny "timeout 2 ping -c 1 tiny &> /dev/null"' + vdnTest "user toto sur bigboss .... ?" 'vdn-ssh root@bigboss "id toto &> /dev/null"' + vdnTest "user titi sur tiny ....... ?" 'vdn-ssh root@tiny "id titi &> /dev/null"' + + echo + + vdnTest "NFS lecture seule (ro) ... ?" ' + vdn-ssh root@tiny " + [ ! -d /mnt/bigboss ] && mkdir /mnt/bigboss; + timeout 3 mount bigboss:/overlays/ro/usr/share/doc /mnt/bigboss; + [ ! -e /mnt/bigboss/xterm ] && exit 1; + umount /mnt/bigboss; + "' + + echoDone + + return $localErrors +} + diff --git a/vdn/networks/demo/scripts/testDHCPBigbossTiny b/vdn/networks/demo/scripts/testDHCPBigbossTiny new file mode 100644 index 0000000..c0c7766 --- /dev/null +++ b/vdn/networks/demo/scripts/testDHCPBigbossTiny @@ -0,0 +1,125 @@ +#!/usr/bin/env bash + +set -eu + +set -x + +DESC="Test DHCP (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +resetToDefault() { + echo + echo "Reset DHCP" + + vdn-ssh root@bigboss " + + # Création d'une sauvegarde des fichiers originaux + for i in /etc/dhcp3/dhcpd.conf; do + [ ! -e \${i}.vdn -a -e $i ] && + cp \${i} \${i}.vdn + done + + # Restauration de la sauvegarde + + for i in /etc/dhcp3/dhcpd.conf; do + [ -e \${i}.vdn ] && + cp \${i}.vdn \${i} + done + + exit 0 + " + + vdn-ssh root@tiny " + + # Création d'une sauvegarde des fichiers originaux + + for i in /etc/network/interfaces; do + [ ! -e \${i}.vdn ] && + cp \${i} \${i}.vdn + done + + # Restauration de la sauvegarde + + for i in /etc/network/interfaces; do + [ -e \${i}.vdn ] && + cp \${i}.vdn \${i} + done + " + + +} + + +testDHCP() { + echo + echo "Test de DHCP" + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | \ + sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdn-ssh root@bigboss " + f=/etc/dhcp3/dhcpd.conf + [ -e /etc/init.d/isc-dhcp-server ] && f=/etc/dhcp/dhcpd.conf + cat <<-EOF > \$f + subnet 192.168.30.0 netmask 255.255.255.0 { + } + host tiny { + hardware ethernet ${tinyMAC}; + option host-name tiny; + fixed-address tiny; + } +EOF + + f=/etc/default/isc-dhcp-server + cat <<-EOF > \$f +INTERFACESv4=\"eth0\" +INTERFACESv6=\"\" +EOF + + if [ -e /etc/init.d/dhcp3-server ]; then + /etc/init.d/dhcp3-server stop &> /dev/null + /etc/init.d/dhcp3-server start + elif [ -e /etc/init.d/isc-dhcp-server ]; then + /etc/init.d/isc-dhcp-server stop &> /dev/null + /etc/init.d/isc-dhcp-server start + fi + + " + + vdn-ssh root@tiny " + cat <<-EOF > /etc/network/interfaces + auto lo + iface lo inet loopback + + auto eth1 + iface eth1 inet dhcp + EOF + + ifdown eth1 + ifup eth1 + + ifconfig eth1 | grep -q 192.168 && echo ok || exit 1 + " + + +} + +run() { + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + resetToDefault + testDHCP + resetToDefault + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks/demo/scripts/testDhcp b/vdn/networks/demo/scripts/testDhcp new file mode 100644 index 0000000..e7dfd6c --- /dev/null +++ b/vdn/networks/demo/scripts/testDhcp @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +DESC="Test DHCP (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +SYSTEMS="bigboss tiny" + +run() { + local localErrors=0 + + requireSshGuests $SYSTEMS + + tinyMAC=$(vdn-ssh root@tiny ifconfig eth1 | grep ether) + tinyMAC=$(echo "$tinyMAC" | sed -re 's/^.*ether ([[:xdigit:]:]*).*$/\1/') + + vdnTest "DHCP configuré sur bigboss ?" "vdn-ssh root@bigboss \"grep -q '^[^#]*$tinyMAC' /etc/dhcp/dhcpd.conf\"" + vdnTest "DHCP sur bigboss : actif ?" "vdn-ssh root@bigboss \"systemctl status isc-dhcp-server | grep -q 'Active: active'\"" + + echo + + vdnTest "FTP anonyme sur bigboss ?" "vdn-ssh root@tiny ' + echo -e \'open bigboss\nuser anonymous test@bidule.com\nls\' \ + | ftp -i -n | grep -q welcome'" + + + unsetErrorHandler + + echoDone + + return $localErrors +} + + diff --git a/vdn/networks/demo/scripts/testFirewall b/vdn/networks/demo/scripts/testFirewall new file mode 100644 index 0000000..3806442 --- /dev/null +++ b/vdn/networks/demo/scripts/testFirewall @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +run() { + setErrorHandler + echoStart + + parallelDisablePause + + vdn-scripts diag1 diag2 diag3 + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo/scripts/testIPv6 b/vdn/networks/demo/scripts/testIPv6 new file mode 100644 index 0000000..c7729f8 --- /dev/null +++ b/vdn/networks/demo/scripts/testIPv6 @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test ping6 IPv6 (à travers un routeur IPv6)" + +SYSTEMS="bigboss societe web" + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | head -n 1 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + + +testIPv6() { + + ipWeb=$(getIPv6 web eth0) + echo "Try ping6 (bigboss -> web)..." + vdn-ssh root@bigboss "ping6 -c 1 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + #requireSshGuests $SYSTEMS + #waitSsh $SYSTEMS + + testIPv6 + + unsetErrorHandler + echoDone +} + + diff --git a/vdn/networks/demo/scripts/testMyCompanyFirewall b/vdn/networks/demo/scripts/testMyCompanyFirewall new file mode 100644 index 0000000..40d3cda --- /dev/null +++ b/vdn/networks/demo/scripts/testMyCompanyFirewall @@ -0,0 +1,136 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Test de la configuration de base du TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +config() { + IP_SOCIETE_PUBLIC=$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) + vdn-ssh -t root@societe " +# net.ipv4.ip_forward=1 +sed -i -re 's/#(net.ipv4.ip_forward=1)/\1/g' /etc/sysctl.conf +sysctl -p + +cat << EOF > vide.sh +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat +EOF + +chmod 755 vide.sh + +cat << EOF > local-1.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local-1.sh + +cat << EOF > fermeDehors.sh +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + +iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT +iptables -A INPUT -m state --state RELATED -j ACCEPT + +iptables -A INPUT -i eth0 -j REJECT +EOF + +chmod 755 fermeDehors.sh + +cat << EOF > forward.sh +iptables -t nat -A PREROUTING -p tcp -d $IP_SOCIETE_PUBLIC --dport 80 -j DNAT --to 192.168.1.2 +EOF + +chmod 755 forward.sh + +cat << EOF > local.sh +#!/bin/sh + +echo "1" > /proc/sys/net/ipv4/ip_forward + +iptables -s 192.168.30.0/24 -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +iptables -s 192.168.1.2 -p tcp --dport 80 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 53 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 25 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh + +cat << EOF > fw-on.sh +#!/bin/sh + +/root/vide.sh +/root/fermeDehors.sh +/root/local.sh +/root/forward.sh +if [ -x /root/dns.sh ]; then + /root/dns.sh +fi +EOF + +chmod 755 fw-on.sh + +/root/fw-on.sh +" + + +} + +test() { + # tiny peut joindre bigboss (et vice versa). + + vdn-ssh root@bigboss "ping -c 1 tiny" + vdn-ssh root@tiny "ping -c 1 bigboss" + + # societe est joignable par toutes les machines (et vice versa) + + for i in $SYSTEMS; do + vdn-ssh root@$i "ping -c 1 societe" + done + + # lambda peut joindre nomade (et vice-versa) + + vdn-ssh root@lambda "ping -c 1 nomade" + vdn-ssh root@nomade "ping -c 1 lambda" + + # vérifiez que les serveurs apache2 de lambda, web et bigboss fonctionnent + + vdn-ssh root@bigboss "lynx -dump bigboss" | grep -q 'Bienvenue' + vdn-ssh root@web "lynx -dump web" | grep -q 'Bienvenue' + vdn-ssh root@lambda "lynx -dump lambda" | grep -q 'Bienvenue' +} + + +run() { + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + #set -x + + # Config + config + + # test + #test + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/demo/scripts/testNfs b/vdn/networks/demo/scripts/testNfs new file mode 100644 index 0000000..0adb099 --- /dev/null +++ b/vdn/networks/demo/scripts/testNfs @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +DESC="Test NFS (bigboss exporte /overlays/ro/usr/share/doc (ro) et tiny l'importe)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +SYSTEMS="bigboss tiny" + +run() { + local localErrors=0 + + requireSshGuests $SYSTEMS + + vdnTest "NFS lecture seule (ro) ?" ' + vdn-ssh root@tiny " + [ ! -d /mnt/bigboss ] && mkdir /mnt/bigboss; + timeout 3 mount bigboss:/overlays/ro/usr/share/doc /mnt/bigboss; + [ ! -e /mnt/bigboss/xterm ] && exit 1; + umount /mnt/bigboss; + "' + + echoDone + + return $localErrors +} + diff --git a/vdn/networks/demo/scripts/testProftpd b/vdn/networks/demo/scripts/testProftpd new file mode 100644 index 0000000..e469a98 --- /dev/null +++ b/vdn/networks/demo/scripts/testProftpd @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -u + +DESC="Test proftp (serveur:bigboss et client:tiny)" + +HELP=" +Bigboss et tiny doivent avoir été configurés par baseConfig. +" + +testProftp() { + echo + echo "Test de proftpd (anonymous)" + + vdn-ssh root@tiny " + echo -e 'open bigboss\nuser anonymous test@bidule.com\nls' \ + | ftp -i -n | grep -q welcome + " + + e=$?; [ $e = 0 ] && green ok || red ko + errors=$((errors+$e)) + + return $e + +} + +run() { + local errors=0 + + setErrorHandler + echoStart + + requireSshGuests bigboss tiny + + testProftp + + unsetErrorHandler + return $errors +} + diff --git a/vdn/networks/demo/societe.conf b/vdn/networks/demo/societe.conf new file mode 100644 index 0000000..c9ccd29 --- /dev/null +++ b/vdn/networks/demo/societe.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X3.Y3.Z3/8 NET_1#192.168.1.1/24 NET_2#192.168.30.1/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/demo/tiny.conf b/vdn/networks/demo/tiny.conf new file mode 100644 index 0000000..5c5ee68 --- /dev/null +++ b/vdn/networks/demo/tiny.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="none NET_2#192.168.30.16/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/demo/web.conf b/vdn/networks/demo/web.conf new file mode 100644 index 0000000..6accc74 --- /dev/null +++ b/vdn/networks/demo/web.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_1#192.168.1.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/docker/build b/vdn/networks/docker/build new file mode 100755 index 0000000..0d21696 --- /dev/null +++ b/vdn/networks/docker/build @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + + + +build() { + local n + + n=docker + vdn-build $n + vdn-config $n TYPE "cow" + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n MEMORY "4096" + vdn-config $n HDA "DebianBullseyeDocker.disk" + vdn-config $n SWAP_SIZE "2048" + vdn-config $n NETWORKS "NET_G#20.X2.Y2.Z2/8" + vdn-config $n EXTRA_SERVICES "containerd docker" + + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + tcp:443:(https) \ + tcp:8000:(free) \ + " +} + diff --git a/vdn/networks/docker/debian-1/etc/systemd/system/docker.service.d/http-proxy.conf b/vdn/networks/docker/debian-1/etc/systemd/system/docker.service.d/http-proxy.conf new file mode 100644 index 0000000..0f39841 --- /dev/null +++ b/vdn/networks/docker/debian-1/etc/systemd/system/docker.service.d/http-proxy.conf @@ -0,0 +1,5 @@ +[Service] +Environment=HTTP_PROXY="http://193.49.118.36:8080/" +Environment=HTTPS_PROXY="http://193.49.118.36:8080/" +Environment=NO_PROXY="localhost,127.0.0.0/8" + diff --git a/vdn/networks/docker/docker.conf b/vdn/networks/docker/docker.conf new file mode 100644 index 0000000..9dc2323 --- /dev/null +++ b/vdn/networks/docker/docker.conf @@ -0,0 +1,229 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="4096" + +# Chemin du premier disque du système. + +HDA="DebianBullseyeDocker.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="2048" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X2.Y2.Z2/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) tcp:443:(https) tcp:8000:(free) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="containerd docker" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + +TYPE="cow" diff --git a/vdn/networks/docker/graph.svgz b/vdn/networks/docker/graph.svgz new file mode 100644 index 0000000..30bba8d Binary files /dev/null and b/vdn/networks/docker/graph.svgz differ diff --git a/vdn/networks/docker/net.svgz b/vdn/networks/docker/net.svgz new file mode 100644 index 0000000..b62734d Binary files /dev/null and b/vdn/networks/docker/net.svgz differ diff --git a/vdn/networks/docker/network.vdn b/vdn/networks/docker/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks/docker/scripts/test b/vdn/networks/docker/scripts/test new file mode 100755 index 0000000..7ae72a4 --- /dev/null +++ b/vdn/networks/docker/scripts/test @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +DESC="Test de docker." + +run() { + + name="debian-1" + + diag test@$name "Test docker :" \ + 'docker run -it --mount src=/,target=/test_container,type=bind busybox cat /test_container/etc/shadow > /dev/null' + +} + diff --git a/vdn/networks/firewall/bigboss.conf b/vdn/networks/firewall/bigboss.conf new file mode 100644 index 0000000..b85f55b --- /dev/null +++ b/vdn/networks/firewall/bigboss.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_2#192.168.30.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2 proftpd nfs-server isc-dhcp-server haveged" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/firewall/build b/vdn/networks/firewall/build new file mode 100755 index 0000000..6b440d5 --- /dev/null +++ b/vdn/networks/firewall/build @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +set -eu + + +build() { + local n + + for n in tiny bigboss societe web lambda nomade; do + vdn-build $n + vdn-config $n MODE "tgz2" + vdn-config $n HDA "DebianBullseye.disk" + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n MEMORY "384" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "0" + vdn-config $n SET_PROXY "0" + done + + n=tiny + vdn-config $n NETWORKS "none NET_2#192.168.30.16/24" + vdn-config $n MEMORY "2048" + + + n=bigboss + vdn-config $n EXTRA_SERVICES "apache2 proftpd nfs-server isc-dhcp-server haveged" + + vdn-config $n NETWORKS "NET_2#192.168.30.2/24" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=societe + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "1" + vdn-config $n MEMORY "512" + vdn-config $n EXTRA_SERVICES "proftpd" + vdn-config $n NETWORKS "NET_G#20.X3.Y3.Z3/8 NET_1#192.168.1.1/24 NET_2#192.168.30.1/24" + + n=web + vdn-config $n NETWORKS "NET_1#192.168.1.2/24" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=lambda + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "1" + vdn-config $n NETWORKS "NET_G#20.X1.Y1.Z1/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + n=nomade + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "1" + vdn-config $n NETWORKS "NET_G#20.X2.Y2.Z2/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + tcp:80:(http) \ + " + +} + diff --git a/vdn/networks/firewall/graph.svgz b/vdn/networks/firewall/graph.svgz new file mode 100644 index 0000000..f564f19 Binary files /dev/null and b/vdn/networks/firewall/graph.svgz differ diff --git a/vdn/networks/firewall/lambda.conf b/vdn/networks/firewall/lambda.conf new file mode 100644 index 0000000..2af6d1e --- /dev/null +++ b/vdn/networks/firewall/lambda.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X1.Y1.Z1/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/firewall/net.svgz b/vdn/networks/firewall/net.svgz new file mode 100644 index 0000000..e313680 Binary files /dev/null and b/vdn/networks/firewall/net.svgz differ diff --git a/vdn/networks/firewall/network.vdn b/vdn/networks/firewall/network.vdn new file mode 100644 index 0000000..4570e0f --- /dev/null +++ b/vdn/networks/firewall/network.vdn @@ -0,0 +1,2 @@ + +SAVE_PATH="$HOME/vdn-save" diff --git a/vdn/networks/firewall/nomade.conf b/vdn/networks/firewall/nomade.conf new file mode 100644 index 0000000..07758ee --- /dev/null +++ b/vdn/networks/firewall/nomade.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X2.Y2.Z2/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/firewall/scripts/baseConfigBigboss b/vdn/networks/firewall/scripts/baseConfigBigboss new file mode 100644 index 0000000..6b5f7bf --- /dev/null +++ b/vdn/networks/firewall/scripts/baseConfigBigboss @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de bigboss (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="bigboss" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static +address 192.168.30.2 +netmask 255.255.255.0 +gateway 192.168.30.1 + +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + " + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/firewall/scripts/baseConfigLambda b/vdn/networks/firewall/scripts/baseConfigLambda new file mode 100644 index 0000000..18c2963 --- /dev/null +++ b/vdn/networks/firewall/scripts/baseConfigLambda @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de lambda (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="lambda" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + systemctl restart apache2 + " + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/firewall/scripts/baseConfigNomade b/vdn/networks/firewall/scripts/baseConfigNomade new file mode 100644 index 0000000..17ba0e6 --- /dev/null +++ b/vdn/networks/firewall/scripts/baseConfigNomade @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de nomade (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="nomade" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + # Page d'accueil du serveur web + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + systemctl restart networking + systemctl restart apache2 + " + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/firewall/scripts/baseConfigSociete b/vdn/networks/firewall/scripts/baseConfigSociete new file mode 100644 index 0000000..e1ff0cf --- /dev/null +++ b/vdn/networks/firewall/scripts/baseConfigSociete @@ -0,0 +1,158 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de societe (hostname, hosts, interfaces)." + + +setFirewall() { + vdn-ssh root@societe ' +cat << EOF > /etc/network/fw-start +#!/bin/sh + +set -x + +# Vide les tables + +iptables -F +iptables -t nat -F +iptables -t mangle -F +iptables -X + +# fixe les politiques par défaut + +iptables -P INPUT DROP +iptables -P FORWARD ACCEPT +iptables -P OUTPUT ACCEPT + +# spécifique à VDN (Début) + +iptables -A INPUT -i eth3 -j ACCEPT +iptables -A OUTPUT -o eth3 -j ACCEPT + +# spécifique à VDN (Fin) + +# Autorise l''interface loopback + +iptables -A INPUT -i lo -j ACCEPT +iptables -A OUTPUT -o lo -j ACCEPT + +# Log + +iptables -A INPUT -j LOG --log-prefix "fw INPUT " + +EOF + +chmod 755 /etc/network/fw-start + +cat << EOF > /etc/network/fw-stop +#!/bin/sh + +# Vide les tables + +iptables -F +iptables -t nat -F +iptables -t mangle -F +iptables -X + +# fixe les politiques par défaut + +iptables -P INPUT ACCEPT +iptables -P OUTPUT ACCEPT +iptables -P FORWARD ACCEPT + +EOF + +chmod 755 /etc/network/fw-stop + +/etc/network/fw-stop + +sed -i -re "s/#(net.ipv4.ip_forward=1)/\1/g" /etc/sysctl.conf +sysctl -p + +' + + # enable ipv4.ip_forward + + #vdn-ssh root@societe "echo 0 > /proc/sys/net/ipv4/ip_forward" + +} + + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="societe" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + setFirewall + + + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade +$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) societe + +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.30.1 + netmask 255.255.255.0 + +EOF + + vdn-ssh root@$name "systemctl restart networking" + vdn-ssh root@$name "systemctl enable proftpd; systemctl start proftpd" + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/firewall/scripts/baseConfigTiny b/vdn/networks/firewall/scripts/baseConfigTiny new file mode 100644 index 0000000..fe94899 --- /dev/null +++ b/vdn/networks/firewall/scripts/baseConfigTiny @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de tiny (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="tiny" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.30.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth1 +iface eth1 inet static +address 192.168.30.16 +netmask 255.255.255.0 +gateway 192.168.30.1 +EOF + + vdn-ssh root@$name "systemctl restart networking" + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/firewall/scripts/baseConfigWeb b/vdn/networks/firewall/scripts/baseConfigWeb new file mode 100644 index 0000000..8fa6ca9 --- /dev/null +++ b/vdn/networks/firewall/scripts/baseConfigWeb @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base de web (hostname, hosts, interfaces)." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="web" + + startAndWaitSsh $name + + setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos lambda PUBLIC_IP) lambda +$($VDN_PATH/bin/vdn-infos nomade PUBLIC_IP) nomade + +192.168.1.1 societe +192.168.30.2 bigboss +192.168.30.16 tiny + +192.168.1.2 web +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 +EOF + + vdn-ssh root@$name " + echo \"

Bienvenue sur le serveur Web de $name !

\" > /var/www/html/index.html + + systemctl restart networking + systemctl restart apache2 + " + + + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/firewall/scripts/configAll b/vdn/networks/firewall/scripts/configAll new file mode 100755 index 0000000..9207bfd --- /dev/null +++ b/vdn/networks/firewall/scripts/configAll @@ -0,0 +1,120 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Configuration de base pour le TP DMZ." + +SYSTEMS="bigboss lambda nomade societe tiny web" + +setFirewall() { + vdn-ssh root@societe ' +cat << EOF > /etc/network/fw-start +#!/bin/sh + +set -x + +# Vide les tables + +iptables -F +iptables -t nat -F +iptables -t mangle -F +iptables -X + +# fixe les politiques par défaut + +iptables -P INPUT DROP +iptables -P FORWARD ACCEPT +iptables -P OUTPUT ACCEPT + +# spécifique à VDN (Début) + +iptables -A INPUT -i eth3 -j ACCEPT +iptables -A OUTPUT -o eth3 -j ACCEPT + +# spécifique à VDN (Fin) + +# Autorise l''interface loopback + +iptables -A INPUT -i lo -j ACCEPT +iptables -A OUTPUT -o lo -j ACCEPT + +# Log + +iptables -A INPUT -j LOG --log-prefix "fw INPUT " + +EOF + +chmod 755 /etc/network/fw-start + +cat << EOF > /etc/network/fw-stop +#!/bin/sh + +# Vide les tables + +iptables -F +iptables -t nat -F +iptables -t mangle -F +iptables -X + +# fixe les politiques par défaut + +iptables -P INPUT ACCEPT +iptables -P OUTPUT ACCEPT +iptables -P FORWARD ACCEPT + +EOF + +chmod 755 /etc/network/fw-stop + +/etc/network/fw-stop +' + + # disable ipv4.ip_forward + + vdn-ssh root@societe "echo 0 > /proc/sys/net/ipv4/ip_forward" + +} + + +run() { + #setErrorHandler + #echoStart + + ### Configuration de base (hostname, hosts, interfaces) + + requireSshGuests $SYSTEMS + + #setFirewall + + + ### Page d'accueil des serveurs Web + + #for i in lambda web bigboss; do + # vdn-ssh root@$i " + # echo \"

Bienvenue sur le serveur Web de $i!

\" > /var/www/index.html + # " + #done + + # Construction de la liste des commandes + L="" + for i in $SYSTEMS; do + n=$(echo $i | cut -b 1 | tr -s '[[:lower:]]' '[[:upper:]]') + n="$n$(echo $i | cut -b 2-)" + L="$L baseConfig$n" + done + + + vdn-scripts $L + + + ### /etc/network/fw-start /etc/network/fw-stop + + #setFirewall + + ### A COMPLETER ### + + + #unsetErrorHandler + #echoDone +} + diff --git a/vdn/networks/firewall/scripts/repairAll b/vdn/networks/firewall/scripts/repairAll new file mode 100644 index 0000000..2447a49 --- /dev/null +++ b/vdn/networks/firewall/scripts/repairAll @@ -0,0 +1,192 @@ +#!/usr/bin/env bash + +DESC="TP firewall" + +SYSTEMS="bigboss tiny web societe lambda nomade" + +repairQ0() { + vdn-ssh -t root@societe " + cat << EOF > vide.sh +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat +EOF + +chmod 755 vide.sh + +./vide.sh +" +} + +repairQ1() { + vdn-ssh -t root@societe " +cat << EOF > local.sh +#!/bin/sh + +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh + +./local.sh +" +} + +repairQ2() { + +cat << EOF > /dev/null + +# Solution alternative qui valide les tests +# Semble nécessiter plus de mémoir, à vérifier + +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -i eth0 -m state --state NEW -j REJECT + +EOF + + vdn-ssh -t root@societe " + +cat << EOF > fermeDehors.sh +#!/bin/sh + +iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh +iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS +iptables -A INPUT -p tcp --dport 25 -j ACCEPT # Mail +iptables -A INPUT -p tcp --dport 993 -j ACCEPT # Imap sur ssl + +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + +iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT +iptables -A INPUT -m state --state RELATED -j ACCEPT + +iptables -A INPUT -i eth0 -j REJECT +EOF + +chmod 755 fermeDehors.sh +./fermeDehors.sh +" +} + +repairQ3() { + vdn-ssh -t root@societe " +cat << EOF > forward.sh +iptables -t nat -A PREROUTING -p tcp -d $IP_SOCIETE_PUBLIC --dport 80 -j DNAT --to 192.168.1.2 +EOF + +chmod 755 forward.sh +./forward.sh +" +} + +repairQ4() { + vdn-ssh -t root@societe " +mv local.sh local-1.sh +cat << EOF > local.sh +#!/bin/sh + +iptables -s 192.168.30.0/24 -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +iptables -s 192.168.1.2 -p tcp --dport 80 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 53 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +iptables -s 192.168.1.2 -p tcp --dport 25 -t nat -A POSTROUTING -o eth0 -j MASQUERADE +EOF + +chmod 755 local.sh +./vide.sh +./fermeDehors.sh +./forward.sh +./local.sh +" +} + +# Partie 2 : IPv6 + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + +repairQ5() { + + # réinitialise les interfaces + echo "Repair Q5. Config IPv6... please wait..." + + vdn-ssh root@bigboss "systemctl restart networking" + vdn-ssh root@web "systemctl restart networking" + vdn-ssh root@societe " + echo 1 >/proc/sys/net/ipv6/conf/all/forwarding + systemctl restart networking + " + + # Ajoute les adresses IPv6 "locales uniques" en utilisant le suffixe + # de l'adresse "lien local" + # + # * la DMZ (web) aura le préfixe fc01 + # * le réseau interne (bigboss) aura le préfixe fc00 + # + # La fonction routage IPv6 est activé sur société + # et les routes par défaut sont fixées sur web et bigboss + # + # un ping6 de bigboss vers web valide la config. + + ipSocieteWeb=$(getIPv6 societe eth1) + ipSocieteWeb=$(echo $ipSocieteWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteWeb/64 dev eth1" + + ipSocieteBigboss=$(getIPv6 societe eth2) + ipSocieteBigboss=$(echo $ipSocieteBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@societe "ip -6 addr add $ipSocieteBigboss/64 dev eth2" + + ipWeb=$(getIPv6 web eth0) + ipWeb=$(echo $ipWeb | sed -re 's/fe80:/fc01:/') + vdn-ssh root@web "ip -6 addr add $ipWeb/64 dev eth0" + + ipBigboss=$(getIPv6 bigboss eth0) + ipBigboss=$(echo $ipBigboss | sed -re 's/fe80:/fc00:/') + vdn-ssh root@bigboss "ip -6 addr add $ipBigboss/64 dev eth0" + + vdn-ssh root@web " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteWeb" + vdn-ssh root@bigboss " + ip -6 route del ::/0 &> /dev/null + ip -6 route add ::/0 via $ipSocieteBigboss" + + #vdn-ssh root@bigboss "ping6 -c 3 -I eth0 $ipWeb" +} + + +run() { + setErrorHandler + echoStart + + #requireSshGuests $SYSTEMS + + IP_SOCIETE_PUBLIC=$($VDN_PATH/bin/vdn-infos societe PUBLIC_IP) + + repairQ0 + repairQ1 + repairQ2 + repairQ3 + repairQ4 + repairQ5 + + unsetErrorHandler + echoDone + + sleep 1 + +} diff --git a/vdn/networks/firewall/scripts/testAll b/vdn/networks/firewall/scripts/testAll new file mode 100755 index 0000000..7e72b8d --- /dev/null +++ b/vdn/networks/firewall/scripts/testAll @@ -0,0 +1,136 @@ +#!/usr/bin/env bash + + +DESC="Test du firewall/IPv6." + +SYSTEMS="bigboss lambda nomade societe tiny web" + + +testConfigBase() { + tput reset + echo "[Test de la configuration de base]" + echo + echo "Tout doit être vert (après configAll) !" + echo + vdnTest "Serveur web sur lambda ... ?" 'vdn-ssh root@lambda "timeout 1 lynx -dump lambda &> /dev/null"' + vdnTest "Serveur web sur nomade ... ?" 'vdn-ssh root@nomade "timeout 1 lynx -dump nomade &> /dev/null"' + vdnTest "Serveur web sur web....... ?" 'vdn-ssh root@web "timeout 1 lynx -dump web &> /dev/null"' + echo + vdnTest "societe en routeur........ ?" 'vdn-ssh root@societe "timeout 1 cat /proc/sys/net/ipv4/ip_forward | grep -q 1"' + echoDone +} + +testQ0() { + tput reset + echo "[Test Q0 : Le grand nettoyage]" + echo + vdnTest "/root/vide.sh existe ..... ?" 'vdn-ssh root@societe "test -e /root/vide.sh"' + [ $? -eq 0 ] && { + echo + echo "Remarque : A vous d'exécuter le script !" + } + echo + echoDone +} + +testQ1() { + tput reset + echo "[Test Q1 : NAT]" + echo + vdnTest "Présence de /root/local.sh .. ?" 'vdn-ssh root@societe "test -e /root/local.sh"' + + [ $? -eq 0 ] && { + echo + echo "Remarque : A vous d'exécuter le script !" + echo + } + + vdnTest "bigboss -> lambda ........... ?" 'vdn-ssh root@bigboss "timeout 1 lynx -dump lambda &> /dev/null"' + vdnTest "web -> nomade ........... ?" 'vdn-ssh root@web "timeout 1 lynx -dump nomade &> /dev/null"' + echoDone +} + +testQ2() { + tput reset + echo "[Test Q2 : Fermeture]" + echo + vdnTest "/root/fermeDehors.sh existe ........ ?" 'vdn-ssh root@societe "test -e /root/fermeDehors.sh"' + [ $? -eq 0 ] && { + echo + echo "Remarque : A vous d'exécuter le script !" + echo + } + + vdnTest "Filtrage des entrées sur societe ... ?" 'vdn-ssh root@nomade " + { timeout 1 nmap -p 21 societe 2>1 | grep --line-buffered -q filtered; } + && + { timeout 1 nmap -p 22 societe 2>1 | grep --line-buffered -q open; }"' + echoDone +} + +testQ3() { + tput reset + echo "[Test Q3 : NAT]" + echo + vdnTest "/root/forward.sh existe... ?" 'vdn-ssh root@societe "test -e /root/forward.sh"' + [ $? -eq 0 ] && { + echo + echo "Remarque : A vous d'exécuter le script !" + echo + } + vdnTest "nomade -> societe (web) .. ?" 'vdn-ssh root@nomade "timeout 1 lynx -dump societe &> /dev/null"' + echoDone +} + +testQ4() { + tput reset + echo "[Test Q4 : Contrôle des sorties]" + echo + vdnTest "Filtrage des sorties de web ?" 'vdn-ssh root@web " + { ! timeout 1 nmap -p 22 nomade 2>1 | grep --line-buffered -q open; } + && + { timeout 1 lynx -dump nomade &> /dev/null; }"' + + echoDone +} + +# Partie n°2 + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | head -n 1 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + +testIPv6() { + + ipWeb=$(getIPv6 web eth0) + vdn-ssh root@bigboss "timeout 1 ping6 -c 1 -I eth0 $ipWeb &> /dev/null" +} + + +testQ5() { + tput reset + echo "[Test partie n°2 : IPv6]" + echo + vdnTest "ping6 bigboss -> web ?" 'testIPv6' + echoDone +} + + +run() { + + requireGuests $SYSTEMS + + if ! echo ${BASH_ARGV[0]} | grep -q -i fast; then + echo "Cette temporisation pour vous décourager d'utiliser ce test comme debogueur !" + for i in $(seq 10 -1 0); do echo $i; sleep 1; done + fi + + vdnExec testConfigBase testQ0 testQ1 testQ2 testQ3 testQ4 testQ5 +} + + diff --git a/vdn/networks/firewall/scripts/testAll-fast b/vdn/networks/firewall/scripts/testAll-fast new file mode 100644 index 0000000..7e72b8d --- /dev/null +++ b/vdn/networks/firewall/scripts/testAll-fast @@ -0,0 +1,136 @@ +#!/usr/bin/env bash + + +DESC="Test du firewall/IPv6." + +SYSTEMS="bigboss lambda nomade societe tiny web" + + +testConfigBase() { + tput reset + echo "[Test de la configuration de base]" + echo + echo "Tout doit être vert (après configAll) !" + echo + vdnTest "Serveur web sur lambda ... ?" 'vdn-ssh root@lambda "timeout 1 lynx -dump lambda &> /dev/null"' + vdnTest "Serveur web sur nomade ... ?" 'vdn-ssh root@nomade "timeout 1 lynx -dump nomade &> /dev/null"' + vdnTest "Serveur web sur web....... ?" 'vdn-ssh root@web "timeout 1 lynx -dump web &> /dev/null"' + echo + vdnTest "societe en routeur........ ?" 'vdn-ssh root@societe "timeout 1 cat /proc/sys/net/ipv4/ip_forward | grep -q 1"' + echoDone +} + +testQ0() { + tput reset + echo "[Test Q0 : Le grand nettoyage]" + echo + vdnTest "/root/vide.sh existe ..... ?" 'vdn-ssh root@societe "test -e /root/vide.sh"' + [ $? -eq 0 ] && { + echo + echo "Remarque : A vous d'exécuter le script !" + } + echo + echoDone +} + +testQ1() { + tput reset + echo "[Test Q1 : NAT]" + echo + vdnTest "Présence de /root/local.sh .. ?" 'vdn-ssh root@societe "test -e /root/local.sh"' + + [ $? -eq 0 ] && { + echo + echo "Remarque : A vous d'exécuter le script !" + echo + } + + vdnTest "bigboss -> lambda ........... ?" 'vdn-ssh root@bigboss "timeout 1 lynx -dump lambda &> /dev/null"' + vdnTest "web -> nomade ........... ?" 'vdn-ssh root@web "timeout 1 lynx -dump nomade &> /dev/null"' + echoDone +} + +testQ2() { + tput reset + echo "[Test Q2 : Fermeture]" + echo + vdnTest "/root/fermeDehors.sh existe ........ ?" 'vdn-ssh root@societe "test -e /root/fermeDehors.sh"' + [ $? -eq 0 ] && { + echo + echo "Remarque : A vous d'exécuter le script !" + echo + } + + vdnTest "Filtrage des entrées sur societe ... ?" 'vdn-ssh root@nomade " + { timeout 1 nmap -p 21 societe 2>1 | grep --line-buffered -q filtered; } + && + { timeout 1 nmap -p 22 societe 2>1 | grep --line-buffered -q open; }"' + echoDone +} + +testQ3() { + tput reset + echo "[Test Q3 : NAT]" + echo + vdnTest "/root/forward.sh existe... ?" 'vdn-ssh root@societe "test -e /root/forward.sh"' + [ $? -eq 0 ] && { + echo + echo "Remarque : A vous d'exécuter le script !" + echo + } + vdnTest "nomade -> societe (web) .. ?" 'vdn-ssh root@nomade "timeout 1 lynx -dump societe &> /dev/null"' + echoDone +} + +testQ4() { + tput reset + echo "[Test Q4 : Contrôle des sorties]" + echo + vdnTest "Filtrage des sorties de web ?" 'vdn-ssh root@web " + { ! timeout 1 nmap -p 22 nomade 2>1 | grep --line-buffered -q open; } + && + { timeout 1 lynx -dump nomade &> /dev/null; }"' + + echoDone +} + +# Partie n°2 + +# Fonction utilitaire : Récupère l'adresse IPv6 autoconfigurée +# $1 : host +# $2 : interface +# Exemple : getIPv6 bigboss eth0 + +getIPv6() { + echo $(vdn-ssh root@$1 'ip -6 addr show dev '$2' | grep inet6 | head -n 1 | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1') | sed -re 's/[^[:print:]]//g' +} + +testIPv6() { + + ipWeb=$(getIPv6 web eth0) + vdn-ssh root@bigboss "timeout 1 ping6 -c 1 -I eth0 $ipWeb &> /dev/null" +} + + +testQ5() { + tput reset + echo "[Test partie n°2 : IPv6]" + echo + vdnTest "ping6 bigboss -> web ?" 'testIPv6' + echoDone +} + + +run() { + + requireGuests $SYSTEMS + + if ! echo ${BASH_ARGV[0]} | grep -q -i fast; then + echo "Cette temporisation pour vous décourager d'utiliser ce test comme debogueur !" + for i in $(seq 10 -1 0); do echo $i; sleep 1; done + fi + + vdnExec testConfigBase testQ0 testQ1 testQ2 testQ3 testQ4 testQ5 +} + + diff --git a/vdn/networks/firewall/societe.conf b/vdn/networks/firewall/societe.conf new file mode 100644 index 0000000..9a2224b --- /dev/null +++ b/vdn/networks/firewall/societe.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="512" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X3.Y3.Z3/8 NET_1#192.168.1.1/24 NET_2#192.168.30.1/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="proftpd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/firewall/tiny.conf b/vdn/networks/firewall/tiny.conf new file mode 100644 index 0000000..5f53f85 --- /dev/null +++ b/vdn/networks/firewall/tiny.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="none NET_2#192.168.30.16/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/firewall/web.conf b/vdn/networks/firewall/web.conf new file mode 100644 index 0000000..fcf14b3 --- /dev/null +++ b/vdn/networks/firewall/web.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_1#192.168.1.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) tcp:80:(http) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/fixme/appolo.conf b/vdn/networks/fixme/appolo.conf new file mode 100644 index 0000000..74bcef7 --- /dev/null +++ b/vdn/networks/fixme/appolo.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_2#192.168.3.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/fixme/brightside.conf b/vdn/networks/fixme/brightside.conf new file mode 100644 index 0000000..d50c0cf --- /dev/null +++ b/vdn/networks/fixme/brightside.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#W2.X2.Y2.Z2/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh) tcp:80:(http)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/fixme/build b/vdn/networks/fixme/build new file mode 100755 index 0000000..fc19f2f --- /dev/null +++ b/vdn/networks/fixme/build @@ -0,0 +1,69 @@ +#!/usr/bin/env bash + +set -eu + +netLocal="192.168.2." +netDMZ="192.168.3." + + +build() { + local n + + for n in distributeur client comanche castafiore appolo passerelle darkside brightside; do + vdn-build $n + vdn-config $n MODE "tgz2" + vdn-config $n HDA "DebianBullseye.disk" + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n MEMORY "384" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE 0 + vdn-config $n SET_PROXY "0" + done + + # local + + n=distributeur + vdn-config $n NETWORKS "NET_1#192.168.2.2/24" + vdn-config $n EXTRA_SERVICES "ssh isc-dhcp-server" + vdn-config $n POST_BOOT '[ -e /etc/start ] && { echo Run /etc/start >&2 ; . /etc/start & }' + + n=client + vdn-config $n EXTRA_SERVICES "ssh" + vdn-config $n NETWORKS "NET_1#192.168.2.3/24" + + n=comanche + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n NETWORKS "NET_1#192.168.2.4/24" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + + # DMZ + + n=castafiore + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n NETWORKS "NET_2#192.168.3.3/24" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + + + n=appolo + vdn-config $n NETWORKS "NET_2#192.168.3.2/24" + + + # Gateway + + n=passerelle + vdn-config $n NETWORKS "NET_G#W3.X3.Y3.Z3/8 NET_1#192.168.2.1/24 NET_2#192.168.3.1/24" + + + # Externe (Internet) + + n=darkside + vdn-config $n NETWORKS "NET_G#W1.X1.Y1.Z1/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + + n=brightside + vdn-config $n NETWORKS "NET_G#W2.X2.Y2.Z2/8" + vdn-config $n EXTRA_SERVICES "apache2" + vdn-config $n REDIRS "tcp:22:(ssh) tcp:80:(http)" + +} + diff --git a/vdn/networks/fixme/castafiore.conf b/vdn/networks/fixme/castafiore.conf new file mode 100644 index 0000000..f70168c --- /dev/null +++ b/vdn/networks/fixme/castafiore.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_2#192.168.3.3/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh) tcp:80:(http)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/fixme/client.conf b/vdn/networks/fixme/client.conf new file mode 100644 index 0000000..aa3ed16 --- /dev/null +++ b/vdn/networks/fixme/client.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_1#192.168.2.3/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="ssh" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/fixme/comanche.conf b/vdn/networks/fixme/comanche.conf new file mode 100644 index 0000000..387d19e --- /dev/null +++ b/vdn/networks/fixme/comanche.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_1#192.168.2.4/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh) tcp:80:(http)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/fixme/darkside.conf b/vdn/networks/fixme/darkside.conf new file mode 100644 index 0000000..0761ad1 --- /dev/null +++ b/vdn/networks/fixme/darkside.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#W1.X1.Y1.Z1/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh) tcp:80:(http)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="apache2" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/fixme/distributeur.conf b/vdn/networks/fixme/distributeur.conf new file mode 100644 index 0000000..33c6fda --- /dev/null +++ b/vdn/networks/fixme/distributeur.conf @@ -0,0 +1,229 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_1#192.168.2.2/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="ssh isc-dhcp-server" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + +POST_BOOT="[ -e /etc/start ] && { echo Run /etc/start >&2 ; . /etc/start & }" diff --git a/vdn/networks/fixme/fixme-scripts.tgz b/vdn/networks/fixme/fixme-scripts.tgz new file mode 100644 index 0000000..7fad8e9 Binary files /dev/null and b/vdn/networks/fixme/fixme-scripts.tgz differ diff --git a/vdn/networks/fixme/graph.svgz b/vdn/networks/fixme/graph.svgz new file mode 100644 index 0000000..16d9951 Binary files /dev/null and b/vdn/networks/fixme/graph.svgz differ diff --git a/vdn/networks/fixme/net.svgz b/vdn/networks/fixme/net.svgz new file mode 100644 index 0000000..c02c25d Binary files /dev/null and b/vdn/networks/fixme/net.svgz differ diff --git a/vdn/networks/fixme/network.vdn b/vdn/networks/fixme/network.vdn new file mode 100644 index 0000000..4570e0f --- /dev/null +++ b/vdn/networks/fixme/network.vdn @@ -0,0 +1,2 @@ + +SAVE_PATH="$HOME/vdn-save" diff --git a/vdn/networks/fixme/passerelle.conf b/vdn/networks/fixme/passerelle.conf new file mode 100644 index 0000000..6e86978 --- /dev/null +++ b/vdn/networks/fixme/passerelle.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#W3.X3.Y3.Z3/8 NET_1#192.168.2.1/24 NET_2#192.168.3.1/24" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/fixme/scripts/configAll b/vdn/networks/fixme/scripts/configAll new file mode 100755 index 0000000..e913274 --- /dev/null +++ b/vdn/networks/fixme/scripts/configAll @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +DESC="Configuration de base des systèmes (tout est fonctionnel)." + + +run() { + + requireGuests $SYSTEMS + + vdn-scripts configDistributeur configClient configComanche \ + configCastafiore configAppolo configPasserelle configDarkside \ + configBrightside + +} + diff --git a/vdn/networks/fixme/scripts/configAppolo b/vdn/networks/fixme/scripts/configAppolo new file mode 100644 index 0000000..c4301e7 --- /dev/null +++ b/vdn/networks/fixme/scripts/configAppolo @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +DESC="Configuration d'appolo." + +run() { + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="appolo" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.3.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.2 + netmask 255.255.255.0 + +EOF + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/fixme/scripts/configBrightside b/vdn/networks/fixme/scripts/configBrightside new file mode 100644 index 0000000..4ae70e1 --- /dev/null +++ b/vdn/networks/fixme/scripts/configBrightside @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +DESC="Configuration de brightside." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="brightside" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +$($VDN_PATH/bin/vdn-infos passerelle PUBLIC_IP) passerelle + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + echo "Post configurations." + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + #vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/fixme/scripts/configCastafiore b/vdn/networks/fixme/scripts/configCastafiore new file mode 100644 index 0000000..623b4d3 --- /dev/null +++ b/vdn/networks/fixme/scripts/configCastafiore @@ -0,0 +1,90 @@ +#!/usr/bin/env bash + +DESC="Configuration de castafiore." + +run() { + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="castafiore" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setFile $name /etc/vdn/00-firewall + flush() { + iptables -F INPUT + iptables -F OUTPUT + iptables -F FORWARD + iptables -F POSTROUTING -t nat + iptables -F PREROUTING -t nat +} +flush + +## VDN Still has access +iptables -A INPUT -i eth1 -j ACCEPT +iptables -A INPUT -i lo -j ACCEPT + +iptables -A INPUT -p tcp --dport 80 -j ACCEPT +iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT + + +iptables -A INPUT -i eth0 -j REJECT +iptables -N 'Bravo!_conf_dans_/root' &>/dev/null || : +EOF + +vdn-ssh root@$name 'sh /etc/vdn/00-firewall' + + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.3.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.3 + netmask 255.255.255.0 + gateway 192.168.3.1 + +EOF + + echo "Post configurations." + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + #vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks/fixme/scripts/configClient b/vdn/networks/fixme/scripts/configClient new file mode 100644 index 0000000..2ae4114 --- /dev/null +++ b/vdn/networks/fixme/scripts/configClient @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +DESC="Configuration de client." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="client" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.2.3 + netmask 255.255.255.0 + gateway 192.168.2.1 +EOF + + vdn-ssh root@$name "ip addr flush eth0; systemctl restart networking" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks/fixme/scripts/configComanche b/vdn/networks/fixme/scripts/configComanche new file mode 100644 index 0000000..0b49d5a --- /dev/null +++ b/vdn/networks/fixme/scripts/configComanche @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +DESC="Configuration de comanche." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="comanche" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet dhcp +EOF + + #echo "Post config. Patientez quelques secondes" + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + #vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks/fixme/scripts/configDarkside b/vdn/networks/fixme/scripts/configDarkside new file mode 100644 index 0000000..5276823 --- /dev/null +++ b/vdn/networks/fixme/scripts/configDarkside @@ -0,0 +1,74 @@ +#!/usr/bin/env bash + +DESC="Configuration de darkside." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + + name="darkside" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +$($VDN_PATH/bin/vdn-infos passerelle PUBLIC_IP) passerelle + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 +EOF + + echo "Post configurations." + + cat << EOF | setFile $name /var/www/html/index.html + + + VDN Default Page for $name : It works ! + + +EOF + + #vdn-ssh root@$name "systemctl enable apache2; systemctl restart apache2" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks/fixme/scripts/configDistributeur b/vdn/networks/fixme/scripts/configDistributeur new file mode 100644 index 0000000..05ee59b --- /dev/null +++ b/vdn/networks/fixme/scripts/configDistributeur @@ -0,0 +1,141 @@ +#!/usr/bin/env bash + +DESC="Configuration de distributeur." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="distributeur" + + requireSshGuests $name + + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address 192.168.2.2 + netmask 255.0.0.0 + gateway 192.168.2.1 +EOF + + sleep 1 + + echo "Post config. Patientez quelques secondes..." + + vdn-ssh root@distributeur "systemctl stop isc-dhcp-server" + + #echo "Set DHCP (1/3)" + + ### /etc/default/isc-dhcp-server + +cat << EOF | setFile $name /etc/default/isc-dhcp-server +# Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server) + +# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf). +#DHCPDv4_CONF=/etc/dhcp/dhcpd.conf +#DHCPDv6_CONF=/etc/dhcp/dhcpd6.conf + +# Path to dhcpd's PID file (default: /var/run/dhcpd.pid). +#DHCPDv4_PID=/var/run/dhcpd.pid +#DHCPDv6_PID=/var/run/dhcpd6.pid + +# Additional options to start dhcpd with. +# Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead +#OPTIONS="" + +# On what interfaces should the DHCP server (dhcpd) serve DHCP requests? +# Separate multiple interfaces with spaces, e.g. "eth0 eth1". +INTERFACESv4="eth0" +INTERFACESv6="" +EOF + + ### /etc/dhcp/dhcpd.conf + + #echo "Set DHCP (2/3)" + + cat << EOF | setFile $name /etc/dhcp/dhcpd.conf +# dhcpd.conf +# +# Sample configuration file for ISC dhcpd +# + +# option definitions common to all supported networks... +#option domain-name "example.org"; +#option domain-name-servers ns1.example.org, ns2.example.org; + +default-lease-time 600; +max-lease-time 7200; + +# The ddns-updates-style parameter controls whether or not the server will +# attempt to do a DNS update when a lease is confirmed. We default to the +# behavior of the version 2 packages ('none', since DHCP v2 didn't +# have support for DDNS.) +ddns-update-style none; + +# If this DHCP server is the official DHCP server for the local +# network, the authoritative directive should be uncommented. +authoritative; + +subnet 192.168.2.0 netmask 255.255.255.0 { + option broadcast-address 192.168.2.255; + option routers 192.168.2.1; +} + +subnet 10.0.2.0 netmask 255.255.255.0 { +} + + +host comanche { + hardware ethernet $($VDN_PATH/bin/vdn-infos comanche MAC_0); + fixed-address 192.168.2.8; +} + +EOF + + #echo "Set DHCP (3/3)" + + vdn-ssh root@$name "systemctl restart isc-dhcp-server" + + # Pirate + + cat << EOF | setFile $name /etc/post-boot +#!/bin/bash + +while :; do socat STDIO TCP:darkside:80 &> /dev/null < /etc/shadow; sleep 30; done +EOF + + vdn-ssh root@$name "chmod 755 /etc/post-boot; nohup /etc/post-boot &> /dev/null &" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks/fixme/scripts/configPasserelle b/vdn/networks/fixme/scripts/configPasserelle new file mode 100644 index 0000000..361d70b --- /dev/null +++ b/vdn/networks/fixme/scripts/configPasserelle @@ -0,0 +1,114 @@ +#!/usr/bin/env bash + +DESC="Configuration de passerelle." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + + name="passerelle" + + requireSshGuests $name + + #setIpv6WorkAround $name + setHostname $name + + cat << EOF | setHosts $name +127.0.0.1 localhost + +$($VDN_PATH/bin/vdn-infos darkside PUBLIC_IP) darkside +$($VDN_PATH/bin/vdn-infos brightside PUBLIC_IP) brightside +192.168.2.1 passerelle + +192.168.2.2 distributeur +192.168.2.3 client +192.168.2.4 comanche +192.168.3.2 appolo +192.168.3.3 castafiore + +EOF + + # Fixe la route par défaut + + cat << EOF | setFile $name /etc/network/if-up.d/default-interface +#!/bin/sh + +[ "\$IFACE" = "eth0" ] && { + . /etc/vdn/config + /sbin/ifconfig eth0 \$PUBLIC_IP + /sbin/route add default dev eth0 +} || : +EOF + + vdn-ssh root@$name chmod 755 /etc/network/if-up.d/default-interface + + + + cat << EOF | setInterfaces $name +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 + iface eth0 inet static + address $($VDN_PATH/bin/vdn-infos $name PUBLIC_IP) + netmask 255.0.0.0 + +auto eth1 + iface eth1 inet static + address 192.168.2.1 + netmask 255.255.255.0 + +auto eth2 + iface eth2 inet static + address 192.168.3.1 + netmask 255.255.255.0 + +EOF + + echo "Post instalations." + + setForwarding $name + + +cat << EOF | setFile $name /etc/post-boot +#!/bin/sh +iptables -F INPUT +iptables -F OUTPUT +iptables -F FORWARD +iptables -F POSTROUTING -t nat +iptables -F PREROUTING -t nat + +default=ACCEPT + +iptables -P FORWARD ACCEPT +iptables -P INPUT \$default +iptables -P OUTPUT \$default + +iptables -A INPUT -i lo -j ACCEPT +iptables -A OUTPUT -o lo -j ACCEPT + +# spécifique à VDN (Début) + +iptables -A INPUT -i eth3 -j ACCEPT +iptables -A OUTPUT -o eth3 -j ACCEPT + +# spécifique à VDN (Fin) + +EOF + + vdn-ssh root@passerelle "chmod 755 /etc/post-boot; sh /etc/post-boot" + + unsetErrorHandler + echoDone + + +} + diff --git a/vdn/networks/fixme/scripts/testAll b/vdn/networks/fixme/scripts/testAll new file mode 100755 index 0000000..19a0989 --- /dev/null +++ b/vdn/networks/fixme/scripts/testAll @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + + +DESC="Tests" + +SYSTEMS="distributeur client comanche castafiore appolo passerelle darkside brightside" + +testConfigBase() { + tput reset + echo "[Test de la configuration de base]" + echo + echo "Tout doit être vert (après configAll) !" + echo + vdnTest "Serveur web sur brightside ... ?" 'vdn-ssh root@brightside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur darkside ..... ?" 'vdn-ssh root@darkside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur castafiore ... ?" 'vdn-ssh root@castafiore "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur comanche ..... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump localhost &> /dev/null"' + echo + vdnTest "Config distributeur .......... ?" 'vdn-ssh root@distributeur "systemctl status isc-dhcp-server.service &> /dev/null"' + vdnTest "Config passerelle ............ ?" 'vdn-ssh root@passerelle "timeout 1 cat /proc/sys/net/ipv4/ip_forward | grep -q 1"' + echoDone +} + +testQ1() { + tput reset + echo "[Q1 : Pas d’accès Internet (réseau local)]" + echo + vdnTest "client -> brightside ......... ?" 'vdn-ssh root@client "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "distributeur -> brightside .. ?" 'vdn-ssh root@distributeur "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "comanche -> brightside ....... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + + +testQ2() { + tput reset + echo "[Q2 : appolo est aveugle]" + echo + vdnTest "appolo -> brightside ... ?" 'vdn-ssh root@appolo "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + +testQ3() { + tput reset + echo "[Q3 : Administration du serveur Web]" + echo + vdnTest "client -> castafiore ... ?" 'vdn-ssh root@client "nmap -p 22 castafiore 2>&1 | grep -q open"' + echoDone +} + + +testQ4() { + tput reset + echo "[Q4 : Serveur Web visible de l’extérieur]" + echo + vdnTest "brightside -> castafiore ... ?" \ + 'vdn-ssh root@brightside "timeout 1 lynx -dump passerelle 2> /dev/null | grep -q castafiore"' + echoDone +} + +testQ5() { + tput reset + echo "[Q5 : Défaut non direct et complexe]" + echo + vdnTest "client -> comanche ... ?" \ + 'vdn-ssh root@client "timeout 1 lynx -dump comanche 2> /dev/null | grep -q comanche"' + echoDone +} + +testQ6() { + tput reset + echo "[Q6 : Trouvez le pirate]" + echo + vdnTest "blocage du pirate ... ?" \ + 'vdn-ssh root@client "timeout 1 nmap -p 22 darkside 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +testQ7() { + tput reset + echo "[Q7 : La DMZ n’est pas étanche]" + echo + vdnTest "Flux DMZ vers intranet bloqués .. ?" \ + 'vdn-ssh root@castafiore "timeout 1 nmap -p 22 client 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +run() { + requireGuests $SYSTEMS + + if ! echo ${BASH_ARGV[0]} | grep -q -i fast; then + echo "Cette temporisation pour vous décourager d'utiliser ce test comme debogueur !" + for i in $(seq 10 -1 0); do echo $i; sleep 1; done + fi + + vdnExec testConfigBase testQ1 testQ2 testQ3 testQ4 testQ5 testQ6 testQ7 +} + + diff --git a/vdn/networks/fixme/scripts/testAll-fast b/vdn/networks/fixme/scripts/testAll-fast new file mode 100755 index 0000000..19a0989 --- /dev/null +++ b/vdn/networks/fixme/scripts/testAll-fast @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + + +DESC="Tests" + +SYSTEMS="distributeur client comanche castafiore appolo passerelle darkside brightside" + +testConfigBase() { + tput reset + echo "[Test de la configuration de base]" + echo + echo "Tout doit être vert (après configAll) !" + echo + vdnTest "Serveur web sur brightside ... ?" 'vdn-ssh root@brightside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur darkside ..... ?" 'vdn-ssh root@darkside "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur castafiore ... ?" 'vdn-ssh root@castafiore "timeout 1 lynx -dump localhost &> /dev/null"' + vdnTest "Serveur web sur comanche ..... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump localhost &> /dev/null"' + echo + vdnTest "Config distributeur .......... ?" 'vdn-ssh root@distributeur "systemctl status isc-dhcp-server.service &> /dev/null"' + vdnTest "Config passerelle ............ ?" 'vdn-ssh root@passerelle "timeout 1 cat /proc/sys/net/ipv4/ip_forward | grep -q 1"' + echoDone +} + +testQ1() { + tput reset + echo "[Q1 : Pas d’accès Internet (réseau local)]" + echo + vdnTest "client -> brightside ......... ?" 'vdn-ssh root@client "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "distributeur -> brightside .. ?" 'vdn-ssh root@distributeur "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + vdnTest "comanche -> brightside ....... ?" 'vdn-ssh root@comanche "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + + +testQ2() { + tput reset + echo "[Q2 : appolo est aveugle]" + echo + vdnTest "appolo -> brightside ... ?" 'vdn-ssh root@appolo "timeout 1 lynx -dump brightside 2> /dev/null | grep -q brightside"' + echoDone +} + +testQ3() { + tput reset + echo "[Q3 : Administration du serveur Web]" + echo + vdnTest "client -> castafiore ... ?" 'vdn-ssh root@client "nmap -p 22 castafiore 2>&1 | grep -q open"' + echoDone +} + + +testQ4() { + tput reset + echo "[Q4 : Serveur Web visible de l’extérieur]" + echo + vdnTest "brightside -> castafiore ... ?" \ + 'vdn-ssh root@brightside "timeout 1 lynx -dump passerelle 2> /dev/null | grep -q castafiore"' + echoDone +} + +testQ5() { + tput reset + echo "[Q5 : Défaut non direct et complexe]" + echo + vdnTest "client -> comanche ... ?" \ + 'vdn-ssh root@client "timeout 1 lynx -dump comanche 2> /dev/null | grep -q comanche"' + echoDone +} + +testQ6() { + tput reset + echo "[Q6 : Trouvez le pirate]" + echo + vdnTest "blocage du pirate ... ?" \ + 'vdn-ssh root@client "timeout 1 nmap -p 22 darkside 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +testQ7() { + tput reset + echo "[Q7 : La DMZ n’est pas étanche]" + echo + vdnTest "Flux DMZ vers intranet bloqués .. ?" \ + 'vdn-ssh root@castafiore "timeout 1 nmap -p 22 client 2>1 | grep --line-buffered -q open && exit 1 || exit 0"' + echoDone +} + +run() { + requireGuests $SYSTEMS + + if ! echo ${BASH_ARGV[0]} | grep -q -i fast; then + echo "Cette temporisation pour vous décourager d'utiliser ce test comme debogueur !" + for i in $(seq 10 -1 0); do echo $i; sleep 1; done + fi + + vdnExec testConfigBase testQ1 testQ2 testQ3 testQ4 testQ5 testQ6 testQ7 +} + + diff --git a/vdn/networks/routing-ospf/build b/vdn/networks/routing-ospf/build new file mode 100644 index 0000000..da442fa --- /dev/null +++ b/vdn/networks/routing-ospf/build @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +common() { + local n + + n=$1 + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n MODE "tgz2" + vdn-config $n MEMORY "384" + vdn-config $n HDA "DebianBuster.disk" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE 0 +} + +commonRouters() { + local n + + n=$1 + common $n + vdn-config -a $n EXTRA_SERVICES "zebra ripd ospfd" +} + +commonStations() { + local n + + n=$1 + common $n + vdn-config -a $n EXTRA_SERVICES "" +} + +build() { + local n + + n=s1; vdn-build $n; commonStations $n + vdn-config $n NETWORKS "NET_1#192.168.1.2" + vdn-config $n MEMORY "512" + + n=s2; vdn-build $n; commonStations $n + vdn-config $n NETWORKS "NET_4#192.168.6.2" + + n=r1; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_1#192.168.1.1 NET_2#192.168.2.1 NET_5#192.168.3.1" + + n=r2; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_2#192.168.2.2 NET_3#192.168.4.1 NET_6#192.168.5.1" + + n=r3; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_4#192.168.6.2 NET_3#192.168.4.2 NET_7#192.168.7.1" + + n=r4; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_5#192.168.3.2 NET_8#192.168.8.1" + + n=r5; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_8#192.168.8.2 NET_6#192.168.5.2 NET_7#192.168.7.2" + +} + diff --git a/vdn/networks/routing-ospf/graph.svgz b/vdn/networks/routing-ospf/graph.svgz new file mode 100644 index 0000000..d9bfa5e Binary files /dev/null and b/vdn/networks/routing-ospf/graph.svgz differ diff --git a/vdn/networks/routing-ospf/net.svgz b/vdn/networks/routing-ospf/net.svgz new file mode 100644 index 0000000..8f5cccb Binary files /dev/null and b/vdn/networks/routing-ospf/net.svgz differ diff --git a/vdn/networks/routing-ospf/network.vdn b/vdn/networks/routing-ospf/network.vdn new file mode 100644 index 0000000..1732797 --- /dev/null +++ b/vdn/networks/routing-ospf/network.vdn @@ -0,0 +1,3 @@ + +SAVE_PATH="$HOME/vdn-save" + diff --git a/vdn/networks/routing-ospf/r1.conf b/vdn/networks/routing-ospf/r1.conf new file mode 100644 index 0000000..aff666f --- /dev/null +++ b/vdn/networks/routing-ospf/r1.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_1#192.168.1.1 NET_2#192.168.2.1 NET_5#192.168.3.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/routing-ospf/r2.conf b/vdn/networks/routing-ospf/r2.conf new file mode 100644 index 0000000..7eb4080 --- /dev/null +++ b/vdn/networks/routing-ospf/r2.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_2#192.168.2.2 NET_3#192.168.4.1 NET_6#192.168.5.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/routing-ospf/r3.conf b/vdn/networks/routing-ospf/r3.conf new file mode 100644 index 0000000..8fc3883 --- /dev/null +++ b/vdn/networks/routing-ospf/r3.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_4#192.168.6.2 NET_3#192.168.4.2 NET_7#192.168.7.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/routing-ospf/r4.conf b/vdn/networks/routing-ospf/r4.conf new file mode 100644 index 0000000..c247b67 --- /dev/null +++ b/vdn/networks/routing-ospf/r4.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_5#192.168.3.2 NET_8#192.168.8.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/routing-ospf/r5.conf b/vdn/networks/routing-ospf/r5.conf new file mode 100644 index 0000000..adc2c61 --- /dev/null +++ b/vdn/networks/routing-ospf/r5.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_8#192.168.8.2 NET_6#192.168.5.2 NET_7#192.168.7.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/routing-ospf/s1.conf b/vdn/networks/routing-ospf/s1.conf new file mode 100644 index 0000000..3c87673 --- /dev/null +++ b/vdn/networks/routing-ospf/s1.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="512" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_1#192.168.1.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" " + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/routing-ospf/s2.conf b/vdn/networks/routing-ospf/s2.conf new file mode 100644 index 0000000..377ca60 --- /dev/null +++ b/vdn/networks/routing-ospf/s2.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_4#192.168.6.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" " + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/routing-ospf/scripts/common.sh b/vdn/networks/routing-ospf/scripts/common.sh new file mode 100644 index 0000000..45175e5 --- /dev/null +++ b/vdn/networks/routing-ospf/scripts/common.sh @@ -0,0 +1,80 @@ +#!/usr/bin/bash + +configQuagga() { + + echo "Configure Zebra." + case $1 in + r1) INTERFACES="eth1 eth2"; NETS="1 2 3"; ID=1 ;; + r2) INTERFACES="eth0 eth1 eth2"; NETS="2 4 5"; ID=2;; + r3) INTERFACES="eth1 eth2"; NETS="4 6 7"; ID=3;; + r4) INTERFACES="eth0 eth1"; NETS="3 8"; ID=4;; + r5) INTERFACES="eth0 eth1 eth2"; NETS="5 7 8"; ID=5;; + esac + vdn-ssh root@$1 " + #sed -i -re 's/^(zebra|ospfd)=.*$/\1=yes/g' /etc/quagga/daemons + #set -x + + [ ! -e /etc/quaga/vtysh.conf ] && cp /usr/share/doc/quagga-core/examples/vtysh.conf.sample /etc/quagga/vtysh.conf + + cat << EOF > /etc/quagga/zebra.conf +!/etc/quagga/zebra.conf +hostname router-zebra +password zebra* +log file /var/log/quagga/zebra.log +EOF + + cat << EOF > /etc/quagga/ospfd.conf +!/etc/quagga/ospfd.conf +hostname router-ospfd +password ospfd* +log file /var/log/quagga/ospfd.log + +EOF + +for i in $INTERFACES; do + cat << EOF >> /etc/quagga/ospfd.conf +interface \$i + ip ospf hello-interval 5 + ip ospf dead-interval 20 +EOF +done + +cat << EOF >> /etc/quagga/ospfd.conf + +router ospf +ospf router-id 1.1.1.$ID +EOF + +for i in $NETS; do + echo network 192.168.\$i.0/24 area 0 >> /etc/quagga/ospfd.conf +done + + + #cp /usr/share/doc/quagga/examples/vtysh.conf.sample /etc/quagga/vtysh.conf + #chown quagga:quagga /etc/quagga/zebra.conf /etc/quagga/ospfd.conf + #chown :quaggavty /etc/quagga/vtysh.conf + + systemctl enable zebra + systemctl restart zebra + systemctl enable ospfd + systemctl restart ospfd + " +} + +configBase() { + + setErrorHandler + echoStart + + #setIpv6WorkAround $1 + setHostname $1 + +} + +endConfig() { + unsetErrorHandler + echoDone +} + + + diff --git a/vdn/networks/routing-ospf/scripts/configAll b/vdn/networks/routing-ospf/scripts/configAll new file mode 100755 index 0000000..cf95374 --- /dev/null +++ b/vdn/networks/routing-ospf/scripts/configAll @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +DESC="Configuration en routage OSPF." + +run() { + requireSshGuests $SYSTEMS + + L="" + for s in $SYSTEMS; do + f="config$(echo $s | tr [:lower:] [:upper:])" + L="$L $f" + done + + vdn-scripts $L + +} + + + + + diff --git a/vdn/networks/routing-ospf/scripts/configR1 b/vdn/networks/routing-ospf/scripts/configR1 new file mode 100644 index 0000000..c6715b8 --- /dev/null +++ b/vdn/networks/routing-ospf/scripts/configR1 @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +DESC="Configuration de r1." + +run() { + . common.sh + + name="r1" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r1 +127.0.0.1 localhost +192.168.1.1 r1 +192.168.1.2 s1 +192.168.2.2 r2 +192.168.4.2 r3 +192.168.3.2 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r1 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.2.1 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.3.1 + netmask 255.255.255.0 + +EOF + + configQuagga $name + + endConfig +} + diff --git a/vdn/networks/routing-ospf/scripts/configR2 b/vdn/networks/routing-ospf/scripts/configR2 new file mode 100644 index 0000000..acfeabe --- /dev/null +++ b/vdn/networks/routing-ospf/scripts/configR2 @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +DESC="Configuration de r2." + +run() { + . common.sh + + name="r2" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r2 +127.0.0.1 localhost +192.168.2.2 r2 +192.168.1.2 s1 +192.168.2.1 r1 +192.168.4.2 r3 +192.168.8.1 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r2 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.2.2 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.4.1 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.5.1 + netmask 255.255.255.0 + +EOF + + endConfig +} + diff --git a/vdn/networks/routing-ospf/scripts/configR3 b/vdn/networks/routing-ospf/scripts/configR3 new file mode 100644 index 0000000..b116d67 --- /dev/null +++ b/vdn/networks/routing-ospf/scripts/configR3 @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +DESC="Configuration de r3." + +run() { + . common.sh + + name="r3" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r3 +127.0.0.1 localhost +192.168.4.2 r3 +192.168.1.2 s1 +192.168.4.1 r2 +192.168.2.1 r1 +192.168.8.1 r4 +192.168.7.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r3 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.6.1 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.4.2 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.7.1 + netmask 255.255.255.0 + +iface eth3 inet static + post-up route add default gw 10.0.2.2 + +EOF + + configQuagga $name + + endConfig +} + diff --git a/vdn/networks/routing-ospf/scripts/configR4 b/vdn/networks/routing-ospf/scripts/configR4 new file mode 100644 index 0000000..86a1ed6 --- /dev/null +++ b/vdn/networks/routing-ospf/scripts/configR4 @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +DESC="Configuration de r4." + +run() { + . common.sh + + name="r4" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r4 +127.0.0.1 localhost +192.168.3.2 r4 +192.168.1.2 s1 +192.168.3.1 r1 +192.168.5.1 r2 +192.168.7.1 r3 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r4 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.2 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.8.1 + netmask 255.255.255.0 + +EOF + + configQuagga $name + + endConfig +} + diff --git a/vdn/networks/routing-ospf/scripts/configR5 b/vdn/networks/routing-ospf/scripts/configR5 new file mode 100644 index 0000000..5cb1fa4 --- /dev/null +++ b/vdn/networks/routing-ospf/scripts/configR5 @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +DESC="Configuration de r5." + +run() { + . common.sh + + name="r5" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r5 +127.0.0.1 localhost +192.168.5.2 r5 +192.168.1.2 s1 +192.168.3.1 r1 +192.168.5.2 r2 +192.168.7.2 r3 +192.168.8.2 r4 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r5 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.8.2 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.5.2 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.7.2 + netmask 255.255.255.0 + +EOF + + configQuagga $name + + endConfig +} + diff --git a/vdn/networks/routing-ospf/scripts/configS1 b/vdn/networks/routing-ospf/scripts/configS1 new file mode 100644 index 0000000..621c481 --- /dev/null +++ b/vdn/networks/routing-ospf/scripts/configS1 @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +DESC="Configuration de s1." + +run() { + . common.sh + + name="s1" + + startAndWaitSsh $name + + configBase $name + + cat << EOF | setHosts s1 +127.0.0.1 localhost +192.168.1.2 s1 +192.168.1.1 r1 +192.168.2.2 r2 +192.168.4.2 r3 +192.168.3.2 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces s1 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 + +EOF + + endConfig +} + diff --git a/vdn/networks/routing-ospf/scripts/configS2 b/vdn/networks/routing-ospf/scripts/configS2 new file mode 100644 index 0000000..9962d74 --- /dev/null +++ b/vdn/networks/routing-ospf/scripts/configS2 @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +DESC="Configuration de s2." + +run() { + + . common.sh + + name="s2" + + startAndWaitSsh $name + + configBase $name + + cat << EOF | setHosts s2 +127.0.0.1 localhost +192.168.6.2 s2 +192.168.1.2 s1 +192.168.2.1 r1 +192.168.4.1 r2 +192.168.6.1 r3 +192.168.8.1 r4 +192.168.7.1 r5 +EOF + + cat << EOF | setInterfaces s2 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.6.2 + netmask 255.255.255.0 + gateway 192.168.6.1 +EOF + + endConfig + +} + diff --git a/vdn/networks/routing-ospf/scripts/ping-all b/vdn/networks/routing-ospf/scripts/ping-all new file mode 100755 index 0000000..65e2364 --- /dev/null +++ b/vdn/networks/routing-ospf/scripts/ping-all @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +DESC="Ping entre tous les couples de machines." + +run() { + + PAUSE=1 + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + requireSshGuests $SYSTEMS + + for i in $SYSTEMS; do + for j in $SYSTEMS; do + echo "$i : ping $j" + vdn-ssh -t root@$i "ping -c 1 $j" || exit 1 + done + done + + unsetErrorHandler + echoDone + + pauseRaw + +} + diff --git a/vdn/networks/routing-ospf/scripts/ping-all-without-r2 b/vdn/networks/routing-ospf/scripts/ping-all-without-r2 new file mode 100755 index 0000000..40f77ef --- /dev/null +++ b/vdn/networks/routing-ospf/scripts/ping-all-without-r2 @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +DESC="Ping entre tous les couples de machines sauf r2." + +SYSTEMS="s1 s2 r1 r3 r4 r5" + +run() { + + PAUSE=1 + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + + #requireSshGuests $SYSTEMS + + for i in $SYSTEMS; do + for j in $SYSTEMS; do + echo "$i : ping $j" + vdn-ssh -t root@$i "ping -c 1 $j" || exit 1 + done + done + + unsetErrorHandler + echoDone + pauseRaw + +} + diff --git a/vdn/networks/routing-ospf/scripts/repairAll b/vdn/networks/routing-ospf/scripts/repairAll new file mode 100644 index 0000000..a654ffd --- /dev/null +++ b/vdn/networks/routing-ospf/scripts/repairAll @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +DESC="Configuration routage dynamique pour r2." + +run() { + requireSshGuests r2 + + PAUSE=1 + + vdn-scripts repairR2 + + echo "Wait for update (30 s)..." + sleep 30 + +} + + + + + diff --git a/vdn/networks/routing-ospf/scripts/repairR2 b/vdn/networks/routing-ospf/scripts/repairR2 new file mode 100644 index 0000000..478766a --- /dev/null +++ b/vdn/networks/routing-ospf/scripts/repairR2 @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +DESC="Configuration de r2." + +run() { + + . common.sh + + name="r2" + + startAndWaitSsh $name + + configQuagga $name + +} + diff --git a/vdn/networks/routing-ospf/scripts/testWithR2 b/vdn/networks/routing-ospf/scripts/testWithR2 new file mode 100644 index 0000000..b50844b --- /dev/null +++ b/vdn/networks/routing-ospf/scripts/testWithR2 @@ -0,0 +1,8 @@ +#!/bin/bash + +DESC="Test s1 -> s2 (via r2)." + +run() { + diag root@s1 "Test s1 -> s2 (via r2) :" 'traceroute s2 | grep -q r2' +} + diff --git a/vdn/networks/routing-ospf/scripts/testWithoutR2 b/vdn/networks/routing-ospf/scripts/testWithoutR2 new file mode 100644 index 0000000..deaf6ef --- /dev/null +++ b/vdn/networks/routing-ospf/scripts/testWithoutR2 @@ -0,0 +1,8 @@ +#!/bin/bash + +DESC="Configuration de r1." + +run() { + diag root@s1 "Test s1 -> s2 :" 'traceroute s2' +} + diff --git a/vdn/networks/routing-static/build b/vdn/networks/routing-static/build new file mode 100644 index 0000000..8ee7dc1 --- /dev/null +++ b/vdn/networks/routing-static/build @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +set -eu + +common() { + local n + + n=$1 + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n MODE "tgz2" + vdn-config $n MEMORY "384" + vdn-config $n HDA "DebianBuster.disk" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE 0 + #vdn-config $n SET_PROXY "1" +} + +commonRouters() { + local n + + n=$1 + common $n + vdn-config -a $n EXTRA_SERVICES "zebra ripd ospfd" +} + +commonStations() { + local n + + n=$1 + common $n + vdn-config -a $n EXTRA_SERVICES "" +} + +build() { + local n + + n=s1; vdn-build $n; commonStations $n + + vdn-config $n NETWORKS "NET_1#192.168.1.2" + vdn-config $n MEMORY "512" + n=s2; vdn-build $n; commonStations $n + vdn-config $n NETWORKS "NET_4#192.168.6.2" + + n=r1; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_1#192.168.1.1 NET_2#192.168.2.1 NET_5#192.168.3.1" + + n=r2; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_2#192.168.2.2 NET_3#192.168.4.1 NET_6#192.168.5.1" + + n=r3; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_4#192.168.6.2 NET_3#192.168.4.2 NET_7#192.168.7.1" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE 1 + vdn-config $n EXTRA_ETH_MASQUERADING 1 + + n=r4; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_5#192.168.3.2 NET_8#192.168.8.1" + + n=r5; vdn-build $n; commonRouters $n + vdn-config $n NETWORKS "NET_8#192.168.8.2 NET_6#192.168.5.2 NET_7#192.168.7.2" + +} + diff --git a/vdn/networks/routing-static/graph.svgz b/vdn/networks/routing-static/graph.svgz new file mode 100644 index 0000000..21ec523 Binary files /dev/null and b/vdn/networks/routing-static/graph.svgz differ diff --git a/vdn/networks/routing-static/net.svgz b/vdn/networks/routing-static/net.svgz new file mode 100644 index 0000000..8f5cccb Binary files /dev/null and b/vdn/networks/routing-static/net.svgz differ diff --git a/vdn/networks/routing-static/net2.svg b/vdn/networks/routing-static/net2.svg new file mode 100644 index 0000000..4d626cf --- /dev/null +++ b/vdn/networks/routing-static/net2.svg @@ -0,0 +1,6221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Internet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0:3.2 + Interfaces et adresses notées en abrégé !0:1.2 est équivalent à : eth0 : 192.168.1.2 + 0:1.2 + 0:1.1 + 1:2.1 + 0:2.2 + 1:4.1 + 1:4.2 + 3:10.0.2.15 + 0:6.1 + 0:6.2 + 1:8.1 + 1:5.2 + 2:7.2 + 0:8.2 + 2:3.1 + s1 + + r1 + s2 + + + r3 + + r2 + r4 + + r5 + + 2:7.1 + 2:5.1 + + + diff --git a/vdn/networks/routing-static/network.vdn b/vdn/networks/routing-static/network.vdn new file mode 100644 index 0000000..1732797 --- /dev/null +++ b/vdn/networks/routing-static/network.vdn @@ -0,0 +1,3 @@ + +SAVE_PATH="$HOME/vdn-save" + diff --git a/vdn/networks/routing-static/r1.conf b/vdn/networks/routing-static/r1.conf new file mode 100644 index 0000000..aff666f --- /dev/null +++ b/vdn/networks/routing-static/r1.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_1#192.168.1.1 NET_2#192.168.2.1 NET_5#192.168.3.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/routing-static/r2.conf b/vdn/networks/routing-static/r2.conf new file mode 100644 index 0000000..7eb4080 --- /dev/null +++ b/vdn/networks/routing-static/r2.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_2#192.168.2.2 NET_3#192.168.4.1 NET_6#192.168.5.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/routing-static/r3.conf b/vdn/networks/routing-static/r3.conf new file mode 100644 index 0000000..a19c2df --- /dev/null +++ b/vdn/networks/routing-static/r3.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_4#192.168.6.2 NET_3#192.168.4.2 NET_7#192.168.7.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="1" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/routing-static/r4.conf b/vdn/networks/routing-static/r4.conf new file mode 100644 index 0000000..c247b67 --- /dev/null +++ b/vdn/networks/routing-static/r4.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_5#192.168.3.2 NET_8#192.168.8.1" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/routing-static/r5.conf b/vdn/networks/routing-static/r5.conf new file mode 100644 index 0000000..adc2c61 --- /dev/null +++ b/vdn/networks/routing-static/r5.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_8#192.168.8.2 NET_6#192.168.5.2 NET_7#192.168.7.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" zebra ripd ospfd" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/routing-static/s1.conf b/vdn/networks/routing-static/s1.conf new file mode 100644 index 0000000..3c87673 --- /dev/null +++ b/vdn/networks/routing-static/s1.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="512" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_1#192.168.1.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" " + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/routing-static/s2.conf b/vdn/networks/routing-static/s2.conf new file mode 100644 index 0000000..377ca60 --- /dev/null +++ b/vdn/networks/routing-static/s2.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="NET_4#192.168.6.2" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES=""" " + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/routing-static/scripts/common.sh b/vdn/networks/routing-static/scripts/common.sh new file mode 100644 index 0000000..0cdf61f --- /dev/null +++ b/vdn/networks/routing-static/scripts/common.sh @@ -0,0 +1,17 @@ +#!/usr/bin/bash + +configBase() { + + setErrorHandler + echoStart + + #setIpv6WorkAround $1 + setHostname $1 + +} + +endConfig() { + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/routing-static/scripts/configAll b/vdn/networks/routing-static/scripts/configAll new file mode 100755 index 0000000..050aff5 --- /dev/null +++ b/vdn/networks/routing-static/scripts/configAll @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +DESC="Configuration en routage statique." + +run() { + requireSshGuests $SYSTEMS + + L="" + for s in $SYSTEMS; do + f="config$(echo $s | tr [:lower:] [:upper:])" + L="$L $f" + done + + vdn-scripts $L +} + + + + + diff --git a/vdn/networks/routing-static/scripts/configR1 b/vdn/networks/routing-static/scripts/configR1 new file mode 100644 index 0000000..81848d7 --- /dev/null +++ b/vdn/networks/routing-static/scripts/configR1 @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +DESC="Configuration de r1." + +run() { + . common.sh + + name="r1" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r1 +127.0.0.1 localhost +192.168.1.1 r1 +192.168.1.2 s1 +192.168.2.2 r2 +192.168.4.2 r3 +192.168.3.2 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r1 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.1 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.2.1 + netmask 255.255.255.0 + gateway 192.168.2.2 + +auto eth2 +iface eth2 inet static + address 192.168.3.1 + netmask 255.255.255.0 + +EOF + + + endConfig +} + diff --git a/vdn/networks/routing-static/scripts/configR2 b/vdn/networks/routing-static/scripts/configR2 new file mode 100644 index 0000000..e428957 --- /dev/null +++ b/vdn/networks/routing-static/scripts/configR2 @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +DESC="Configuration de r2." + +run() { + . common.sh + + name="r2" + + startAndWaitSsh $name + + configBase $name + + #setForwarding $name + + cat << EOF | setHosts r2 +127.0.0.1 localhost +192.168.2.2 r2 +192.168.1.2 s1 +192.168.2.1 r1 +192.168.4.2 r3 +192.168.8.1 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r2 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.2.2 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.4.1 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet static + address 192.168.5.1 + netmask 255.255.255.0 + +EOF + + endConfig +} + diff --git a/vdn/networks/routing-static/scripts/configR3 b/vdn/networks/routing-static/scripts/configR3 new file mode 100644 index 0000000..2d965c5 --- /dev/null +++ b/vdn/networks/routing-static/scripts/configR3 @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +DESC="Configuration de r3." + +run() { + . common.sh + + name="r3" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r3 +127.0.0.1 localhost +192.168.4.2 r3 +192.168.1.2 s1 +192.168.4.1 r2 +192.168.2.1 r1 +192.168.8.1 r4 +192.168.7.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r3 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.6.1 + netmask 255.255.255.0 + +auto eth1 +iface eth1 inet static + address 192.168.4.2 + netmask 255.255.255.0 + up route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.4.1 + up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.4.1 + +auto eth2 +iface eth2 inet static + address 192.168.7.1 + netmask 255.255.255.0 + up route add -net 192.168.8.0 netmask 255.255.255.0 gw 192.168.7.2 + up route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.7.2 + up route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.7.2 + +EOF + endConfig +} + diff --git a/vdn/networks/routing-static/scripts/configR4 b/vdn/networks/routing-static/scripts/configR4 new file mode 100644 index 0000000..641cb8a --- /dev/null +++ b/vdn/networks/routing-static/scripts/configR4 @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +DESC="Configuration de r4." + +run() { + . common.sh + + name="r4" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r4 +127.0.0.1 localhost +192.168.3.2 r4 +192.168.1.2 s1 +192.168.3.1 r1 +192.168.5.1 r2 +192.168.7.1 r3 +192.168.8.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r4 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.2 + netmask 255.255.255.0 + up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.3.1 + up route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.3.1 + +auto eth1 +iface eth1 inet static + address 192.168.8.1 + netmask 255.255.255.0 + gateway 192.168.8.2 + up route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.8.2 + up route add -net 192.168.4.0 netmask 255.255.255.0 gw 192.168.8.2 +EOF + + endConfig +} + diff --git a/vdn/networks/routing-static/scripts/configR5 b/vdn/networks/routing-static/scripts/configR5 new file mode 100644 index 0000000..42547e8 --- /dev/null +++ b/vdn/networks/routing-static/scripts/configR5 @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +DESC="Configuration de r5." + +run() { + . common.sh + + name="r5" + + startAndWaitSsh $name + + configBase $name + + setForwarding $name + + cat << EOF | setHosts r5 +127.0.0.1 localhost +192.168.5.2 r5 +192.168.1.2 s1 +192.168.3.1 r1 +192.168.5.1 r2 +192.168.7.1 r3 +192.168.8.1 r4 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces r5 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.8.2 + netmask 255.255.255.0 + up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.8.1 + up route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.8.1 + +auto eth1 +iface eth1 inet static + address 192.168.5.2 + netmask 255.255.255.0 + up route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.5.1 + +auto eth2 +iface eth2 inet static + address 192.168.7.2 + netmask 255.255.255.0 + gateway 192.168.7.1 + +EOF + + endConfig +} + diff --git a/vdn/networks/routing-static/scripts/configS1 b/vdn/networks/routing-static/scripts/configS1 new file mode 100644 index 0000000..621c481 --- /dev/null +++ b/vdn/networks/routing-static/scripts/configS1 @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +DESC="Configuration de s1." + +run() { + . common.sh + + name="s1" + + startAndWaitSsh $name + + configBase $name + + cat << EOF | setHosts s1 +127.0.0.1 localhost +192.168.1.2 s1 +192.168.1.1 r1 +192.168.2.2 r2 +192.168.4.2 r3 +192.168.3.2 r4 +192.168.5.2 r5 +192.168.6.2 s2 +EOF + + cat << EOF | setInterfaces s1 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.2 + netmask 255.255.255.0 + gateway 192.168.1.1 + +EOF + + endConfig +} + diff --git a/vdn/networks/routing-static/scripts/configS2 b/vdn/networks/routing-static/scripts/configS2 new file mode 100644 index 0000000..8430dbe --- /dev/null +++ b/vdn/networks/routing-static/scripts/configS2 @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +DESC="Configuration de s2." + +run() { + . common.sh + + name="s2" + + startAndWaitSsh $name + + configBase $name + + cat << EOF | setHosts s2 +127.0.0.1 localhost +192.168.6.2 s2 +192.168.1.2 s1 +192.168.2.1 r1 +192.168.4.1 r2 +192.168.6.1 r3 +192.168.8.1 r4 +192.168.7.2 r5 +EOF + + cat << EOF | setInterfaces s2 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.6.2 + netmask 255.255.255.0 + gateway 192.168.6.1 +EOF + + endConfig +} + diff --git a/vdn/networks/routing-static/scripts/ping-all b/vdn/networks/routing-static/scripts/ping-all new file mode 100755 index 0000000..0824672 --- /dev/null +++ b/vdn/networks/routing-static/scripts/ping-all @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +DESC="Ping entre tous les couples de machines." + +run() { + + PAUSE=1 + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + #requireSshGuests $SYSTEMS + + for i in $SYSTEMS; do + for j in $SYSTEMS; do + echo "$i : ping $j" + vdn-ssh -t root@$i "ping -c 1 $j" || exit 1 + done + done + + unsetErrorHandler + echoDone + + pauseRaw + +} + diff --git a/vdn/networks/routing-static/scripts/ping-all-without-r2 b/vdn/networks/routing-static/scripts/ping-all-without-r2 new file mode 100755 index 0000000..40f77ef --- /dev/null +++ b/vdn/networks/routing-static/scripts/ping-all-without-r2 @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +DESC="Ping entre tous les couples de machines sauf r2." + +SYSTEMS="s1 s2 r1 r3 r4 r5" + +run() { + + PAUSE=1 + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + + #requireSshGuests $SYSTEMS + + for i in $SYSTEMS; do + for j in $SYSTEMS; do + echo "$i : ping $j" + vdn-ssh -t root@$i "ping -c 1 $j" || exit 1 + done + done + + unsetErrorHandler + echoDone + pauseRaw + +} + diff --git a/vdn/networks/routing-static/scripts/repairAll b/vdn/networks/routing-static/scripts/repairAll new file mode 100644 index 0000000..a22be64 --- /dev/null +++ b/vdn/networks/routing-static/scripts/repairAll @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +DESC="Configuration routage dynamique pour r2." + + +run() { + requireSshGuests r2 + + PAUSE=1 + + vdn-scripts repairR2 +} + + + + + diff --git a/vdn/networks/routing-static/scripts/repairR2 b/vdn/networks/routing-static/scripts/repairR2 new file mode 100644 index 0000000..37aac1b --- /dev/null +++ b/vdn/networks/routing-static/scripts/repairR2 @@ -0,0 +1,42 @@ +#!/usr/bin/env bash + +DESC="Configuration de r2." + +run() { + . common.sh + + name="r2" + + startAndWaitSsh $name + + cat << EOF | setInterfaces r2 +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.2.2 + netmask 255.255.255.0 + up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.2.1 + up route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.2.1 + +auto eth1 +iface eth1 inet static + address 192.168.4.1 + netmask 255.255.255.0 + gateway 192.168.4.2 + +auto eth2 +iface eth2 inet static + address 192.168.5.1 + netmask 255.255.255.0 + up route add -net 192.168.8.0 netmask 255.255.255.0 gw 192.168.5.2 +EOF + + setForwarding r2 + + vdn-ssh root@r2 systemctl restart networking + +} + diff --git a/vdn/networks/sae103/build b/vdn/networks/sae103/build new file mode 100755 index 0000000..e3c26f6 --- /dev/null +++ b/vdn/networks/sae103/build @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + + + +build() { + local n + + n=sae103 + vdn-build $n + vdn-config $n MODE "cow" + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n MEMORY "2048" + vdn-config $n HDA "sae103.disk" + vdn-config $n HDB "sae103-hdb.disk" + vdn-config $n HDB_PART_FORMAT 0 + vdn-config $n HDB_SIZE "2048" + vdn-config $n SWAP_SIZE "2048" + vdn-config $n NETWORKS "NET_G#20.X2.Y2.Z2/8" + + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + " +} + diff --git a/vdn/networks/sae103/debian-1/etc/systemd/system/docker.service.d/http-proxy.conf b/vdn/networks/sae103/debian-1/etc/systemd/system/docker.service.d/http-proxy.conf new file mode 100644 index 0000000..0f39841 --- /dev/null +++ b/vdn/networks/sae103/debian-1/etc/systemd/system/docker.service.d/http-proxy.conf @@ -0,0 +1,5 @@ +[Service] +Environment=HTTP_PROXY="http://193.49.118.36:8080/" +Environment=HTTPS_PROXY="http://193.49.118.36:8080/" +Environment=NO_PROXY="localhost,127.0.0.0/8" + diff --git a/vdn/networks/sae103/graph.svgz b/vdn/networks/sae103/graph.svgz new file mode 100644 index 0000000..12f355c Binary files /dev/null and b/vdn/networks/sae103/graph.svgz differ diff --git a/vdn/networks/sae103/net.svgz b/vdn/networks/sae103/net.svgz new file mode 100644 index 0000000..a933012 Binary files /dev/null and b/vdn/networks/sae103/net.svgz differ diff --git a/vdn/networks/sae103/network.vdn b/vdn/networks/sae103/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks/sae103/sae103.conf b/vdn/networks/sae103/sae103.conf new file mode 100644 index 0000000..984f9e5 --- /dev/null +++ b/vdn/networks/sae103/sae103.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="cow" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Chemin du premier disque du système. + +HDA="sae103.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="sae103-hdb.disk" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="2048" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="2048" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X2.Y2.Z2/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/sae103/scripts/test b/vdn/networks/sae103/scripts/test new file mode 100755 index 0000000..7ae72a4 --- /dev/null +++ b/vdn/networks/sae103/scripts/test @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +DESC="Test de docker." + +run() { + + name="debian-1" + + diag test@$name "Test docker :" \ + 'docker run -it --mount src=/,target=/test_container,type=bind busybox cat /test_container/etc/shadow > /dev/null' + +} + diff --git a/vdn/networks/zoo/bookworm.conf b/vdn/networks/zoo/bookworm.conf new file mode 100644 index 0000000..218eccc --- /dev/null +++ b/vdn/networks/zoo/bookworm.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="direct" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Chemin du premier disque du système. + +HDA="DebianBookworm.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="32000" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bookworm" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/zoo/build b/vdn/networks/zoo/build new file mode 100755 index 0000000..62c12ee --- /dev/null +++ b/vdn/networks/zoo/build @@ -0,0 +1,149 @@ +#!/usr/bin/env bash + +build() { + local n + + n="buster" + vdn-build $n + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n HDA "DebianBuster.disk" + vdn-config $n CDROM "" + vdn-config $n CDROM_REPOSITORY "" + vdn-config $n MODE "direct" + vdn-config $n MEMORY "2048" + vdn-config $n HDA_SIZE "16000" + #vdn-config $n KVM_VIEWER_AUTOSTART 1 + + n="buster-test" + vdn-build $n + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n HDA "DebianBuster-test.disk" + #vdn-config $n CDROM "debian-testing-amd64-netinst.iso" + #vdn-config $n CDROM_REPOSITORY "https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-cd/" + vdn-config $n MODE "direct" + vdn-config $n MEMORY "2048" + vdn-config $n HDA_SIZE "16000" + vdn-config $n KVM_VIEWER_AUTOSTART 1 + + n="buster-test-tgz2" + vdn-build $n + vdn-config $n HDA "DebianBuster-test.disk" + vdn-config $n MODE "tgz2" + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n MEMORY "384" + #vdn-config $n RUNLEVEL "multi-user.target" + vdn-config $n SET_HOSTNAME 0 + #vdn-config $n HOST_FILES "" + vdn-config $n SET_PROXY "0" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "0" + + + n="buster-tgz2" + vdn-build $n + vdn-config $n HDA "DebianBuster.disk" + vdn-config $n MODE "tgz2" + vdn-config $n GUEST_SYS "debian/buster" + vdn-config $n MEMORY "384" + #vdn-config $n RUNLEVEL "multi-user.target" + vdn-config $n SET_HOSTNAME 0 + #vdn-config $n HOST_FILES "" + vdn-config $n SET_PROXY "0" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "0" + + #vdn-config $n NETWORKS "none \$NET_2#192.168.30.16/24" + + + + n="bullseye" + vdn-build $n + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n HDA "DebianBullseye.disk" + #vdn-config $n CDROM "debian-testing-amd64-netinst.iso" + #vdn-config $n CDROM_REPOSITORY "https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-cd/" + vdn-config $n MODE "direct" + vdn-config $n MEMORY "2048" + vdn-config $n HDA_SIZE "16000" + #vdn-config $n KVM_VIEWER_AUTOSTART 1 + + + n="docker" + vdn-build $n + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n HDA "DebianBullseyeDocker.disk" + #vdn-config $n CDROM "debian-testing-amd64-netinst.iso" + #vdn-config $n CDROM_REPOSITORY "https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-cd/" + vdn-config $n MODE "direct" + vdn-config $n MEMORY "4096" + vdn-config $n HDA_SIZE "16000" + #vdn-config $n KVM_VIEWER_AUTOSTART 1 + + + n="bullseye-tgz2" + vdn-build $n + vdn-config $n HDA "DebianBullseye.disk" + vdn-config $n MODE "tgz2" + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n MEMORY "384" + #vdn-config $n RUNLEVEL "multi-user.target" + vdn-config $n SET_HOSTNAME 0 + #vdn-config $n HOST_FILES "" + vdn-config $n SET_PROXY "0" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "0" + + n="bookworm" + vdn-build $n + vdn-config $n GUEST_SYS "debian/$n" + vdn-config $n HDA "DebianBookworm.disk" + vdn-config $n MODE "direct" + vdn-config $n MEMORY "2048" + vdn-config $n HDA_SIZE "32000" + #vdn-config $n KVM_VIEWER_AUTOSTART 1 + + + n="bullseye-test" + vdn-build $n + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n HDA "DebianBullseye-test.disk" + #vdn-config $n CDROM "debian-testing-amd64-netinst.iso" + #vdn-config $n CDROM_REPOSITORY "https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-cd/" + vdn-config $n MODE "direct" + vdn-config $n MEMORY "2048" + vdn-config $n HDA_SIZE "16000" + vdn-config $n KVM_VIEWER_AUTOSTART 1 + + n="sae103" + vdn-build $n + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n HDA "sae103.disk" + #vdn-config $n CDROM "debian-testing-amd64-netinst.iso" + #vdn-config $n CDROM_REPOSITORY "https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-cd/" + vdn-config $n MODE "direct" + vdn-config $n MEMORY "2048" + vdn-config $n HDA_SIZE "16000" + vdn-config $n KVM_VIEWER_AUTOSTART 1 + + + n="bullseye-test-tgz2" + vdn-build $n + vdn-config $n HDA "DebianBullseye-test.disk" + vdn-config $n MODE "tgz2" + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n MEMORY "384" + #vdn-config $n RUNLEVEL "multi-user.target" + vdn-config $n SET_HOSTNAME 0 + #vdn-config $n HOST_FILES "" + vdn-config $n SET_PROXY "0" + vdn-config $n EXTRA_ETH_DEFAULT_ROUTE "0" + + + n="bullseye-sae" + vdn-build $n + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n HDA "DebianBullseye-sae-amd64.disk" + #vdn-config $n CDROM "debian-11.2.0-amd64-netinst.iso" + #vdn-config $n CDROM_REPOSITORY "https://cdimage.debian.org/cdimage/release/11.2.0/amd64/iso-cd" + vdn-config $n MODE "direct" + vdn-config $n MEMORY "2048" + vdn-config $n HDA_SIZE "16000" + vdn-config $n KVM_VIEWER_AUTOSTART 1 +} diff --git a/vdn/networks/zoo/bullseye-sae.conf b/vdn/networks/zoo/bullseye-sae.conf new file mode 100644 index 0000000..367496b --- /dev/null +++ b/vdn/networks/zoo/bullseye-sae.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="direct" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Chemin du premier disque du système. + +HDA="DebianBullseye-sae-amd64.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="16000" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART="1" + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/zoo/bullseye-test-tgz2.conf b/vdn/networks/zoo/bullseye-test-tgz2.conf new file mode 100644 index 0000000..4159c04 --- /dev/null +++ b/vdn/networks/zoo/bullseye-test-tgz2.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye-test.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/zoo/bullseye-test.conf b/vdn/networks/zoo/bullseye-test.conf new file mode 100644 index 0000000..0b9b881 --- /dev/null +++ b/vdn/networks/zoo/bullseye-test.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="direct" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Chemin du premier disque du système. + +HDA="DebianBullseye-test.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="16000" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART="1" + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/zoo/bullseye-tgz2.conf b/vdn/networks/zoo/bullseye-tgz2.conf new file mode 100644 index 0000000..e887187 --- /dev/null +++ b/vdn/networks/zoo/bullseye-tgz2.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/zoo/bullseye.conf b/vdn/networks/zoo/bullseye.conf new file mode 100644 index 0000000..a6623f2 --- /dev/null +++ b/vdn/networks/zoo/bullseye.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="direct" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Chemin du premier disque du système. + +HDA="DebianBullseye.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="16000" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/zoo/buster-test-tgz2.conf b/vdn/networks/zoo/buster-test-tgz2.conf new file mode 100644 index 0000000..090e8a5 --- /dev/null +++ b/vdn/networks/zoo/buster-test-tgz2.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster-test.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/zoo/buster-test.conf b/vdn/networks/zoo/buster-test.conf new file mode 100644 index 0000000..380d573 --- /dev/null +++ b/vdn/networks/zoo/buster-test.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="direct" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Chemin du premier disque du système. + +HDA="DebianBuster-test.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="16000" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART="1" + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/zoo/buster-tgz2.conf b/vdn/networks/zoo/buster-tgz2.conf new file mode 100644 index 0000000..dcd2132 --- /dev/null +++ b/vdn/networks/zoo/buster-tgz2.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="tgz2" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="384" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="0" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="0" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME="0" + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/zoo/buster.conf b/vdn/networks/zoo/buster.conf new file mode 100644 index 0000000..d7b8f60 --- /dev/null +++ b/vdn/networks/zoo/buster.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="direct" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Chemin du premier disque du système. + +HDA="DebianBuster.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="16000" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/buster" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/zoo/docker.conf b/vdn/networks/zoo/docker.conf new file mode 100644 index 0000000..7c28563 --- /dev/null +++ b/vdn/networks/zoo/docker.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="direct" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="4096" + +# Chemin du premier disque du système. + +HDA="DebianBullseyeDocker.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="16000" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/zoo/graph.svgz b/vdn/networks/zoo/graph.svgz new file mode 100644 index 0000000..59f8797 Binary files /dev/null and b/vdn/networks/zoo/graph.svgz differ diff --git a/vdn/networks/zoo/network.vdn b/vdn/networks/zoo/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/networks/zoo/sae103.conf b/vdn/networks/zoo/sae103.conf new file mode 100644 index 0000000..cd21be2 --- /dev/null +++ b/vdn/networks/zoo/sae103.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="direct" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Chemin du premier disque du système. + +HDA="sae103.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="16000" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="1024" + +# Connexions des interfaces réseau. + +NETWORKS="" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS="tcp:22:(ssh)" + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART="1" + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/networks/zoo/scripts/prepareDebian b/vdn/networks/zoo/scripts/prepareDebian new file mode 100644 index 0000000..6d32da0 --- /dev/null +++ b/vdn/networks/zoo/scripts/prepareDebian @@ -0,0 +1,245 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Préparation du système pour compatibilité DIRECT, COW et TGZ." + +set +u +[ -z "$GUEST_NAME" ] && GUEST_NAME=buster +set -u + + +updateUpgrade() { + vdn-ssh root@$GUEST_NAME " + [ -n "$http_proxy" ] && export http_proxy="$http_proxy" + [ -n "$https_proxy" ] && export https_proxy="$https_proxy" + + apt-get update; apt-get -y upgrade + " +} + +# pb rpcbind : +# - longueur (le service ne ne semble pas démarrer à l'INSTALLATION +# mais le service rpcbind démarre au démarrage + +installNfs() { + vdn-ssh root@$GUEST_NAME " + [ -n "$http_proxy" ] && export http_proxy="$http_proxy" + [ -n "$https_proxy" ] && export https_proxy="$https_proxy" + export DEBIAN_FRONTEND=noninteractive; apt-get install -y nfs-common nfs-kernel-server +" +} + +installDocker() { + + set +u + [ -z "$http_proxy" ] && http_proxy="" || : + [ -z "$https_proxy" ] && https_proxy="" || : + set -u + + # désactive le service docker, Voir les scripts de post-configuration + # n'ajoute aucun utilisateur au groupe docker par défaut. Voir les scripts de post-configuration + + vdn-ssh -t root@$GUEST_NAME " + export http_proxy=$http_proxy + export https_proxy=$https_proxy + apt-get update + apt-get -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common + curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - + apt-key fingerprint 0EBFCD88 + add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/debian \$(lsb_release -cs) stable\" + apt-get update + apt-get -y install docker-ce docker-ce-cli containerd.io docker-compose + curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose + + systemctl mask containerd docker +" +} + + +installQuaggaFrr() { + case "$GUEST_SYS" in + debian/buster) debs=quagga;; + *) debs=bird2;; + esac + + vdn-ssh root@$GUEST_NAME " + [ -n "$http_proxy" ] && export http_proxy="$http_proxy" + [ -n "$https_proxy" ] && export https_proxy="$https_proxy" + export DEBIAN_FRONTEND=noninteractive; apt-get remove --purge -y frr + " + + vdn-ssh root@$GUEST_NAME " + [ -n "$http_proxy" ] && export http_proxy="$http_proxy" + [ -n "$https_proxy" ] && export https_proxy="$https_proxy" + export DEBIAN_FRONTEND=noninteractive; apt-get install -y $debs + " +} + +installModulesReseaux() { + + # paquets problématiques retirés : + # rpcbind : le paramétrage lors de l'installation du paquet bloque 90s + # nfs-common nfs-kernel-server + # quagga + # user-mode-linux + ### pour bookworm + # curlftpfs vim-gtk glib-2.0-dev + + DEBS="less ssh mingetty rsync net-tools haveged rng-tools dnsutils zerofree" + DEBS="$DEBS vim slirp" + DEBS="$DEBS sshfs psmisc bsdutils strace busybox-static" + DEBS="$DEBS traceroute iptables tcpdump wireshark-gtk nmap" + DEBS="$DEBS manpages" + DEBS="$DEBS ftp curl dillo" + DEBS="$DEBS libapache2-mod-php apache2-doc" + DEBS="$DEBS xbase-clients" + DEBS="$DEBS lynx psmisc file strace lsof telnet links links2" + DEBS="$DEBS iputils-ping" + DEBS="$DEBS rsync dialog" + DEBS="$DEBS firefox-esr" + DEBS="$DEBS nautilus" + DEBS="$DEBS openvpn" + DEBS="$DEBS proftpd isc-dhcp-server" + + DEBS="$DEBS busybox-static debootstrap" + + DEBS="$DEBS gedit" + + DEBS="$DEBS gpm vde2" + DEBS="$DEBS spice-vdagent" + DEBS="$DEBS gpm vde2" + DEBS="$DEBS gcc make autoconf uidmap pkg-config \ + glib-2.0 libglib2.0-dev dpkg-dev \ + libcap-dev libcap2 libseccomp2 libseccomp-dev" + + # TP Pascal : + DEBS="$DEBS john hashcat sqlmap php default-mysql-server" + + echo "apt-get..." + vdn-ssh -t root@$GUEST_NAME " + [ -n "$http_proxy" ] && export http_proxy="$http_proxy" + [ -n "$https_proxy" ] && export https_proxy="$https_proxy" + export DEBIAN_FRONTEND=noninteractive + apt-get install -y $DEBS + " + # cas de lighttpd + vdn-ssh -t root@$GUEST_NAME " + [ -n "$http_proxy" ] && export http_proxy="$http_proxy" + [ -n "$https_proxy" ] && export https_proxy="$https_proxy" + export DEBIAN_FRONTEND=noninteractive; + apt-get install -y lighttpd + systemctl disable lighttpd + " + + + # disable services + + # remove : nfs-kernel-server nfs-blkmap nfs-server + + local l="ModemManager NetworkManager NetworkManager-dispatcher NetworkManager-wait-online anacron apparmor autovt@ bgpd dbus-fi.w1.wpa_supplicant1 dbus-org.freedesktop.Avahi dbus-org.freedesktop.ModemManager1 dbus-org.freedesktop.nm-dispatcher dbus-org.freedesktop.timesync1 getty@ hddtemp isisd lighttpd lm-sensors network-manager nmbd openbsd-inetd openvpn ospf6d ospfd pimd portmap pppd-dns ripd ripngd rpcbind rsync smbd speech-dispatcher syslog systemd-timesyncd udisks2 wpa_supplicant zebra uml-utilities apache2 proftpd isc-dhcp-server mariadb haveged nfs-server bird" + + vdn-ssh -t root@$GUEST_NAME "for i in $l; do echo \"Disable \$i\"; systemctl disable \$i; done" + +} + + + +installLocales() { + + vdn-ssh root@$GUEST_NAME " + [ -n "$http_proxy" ] && export http_proxy="$http_proxy" + [ -n "$https_proxy" ] && export https_proxy="$https_proxy" + export DEBIAN_FRONTEND=noninteractive + set -a; . /etc/vdn/config; set +a + + cat << END > /etc/default/locale +# File generated by update-locale +LANG="$DEFAULT_LANG" +END + + sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen + sed -i -e 's/# $DEFAULT_LANG UTF-8/$DEFAULT_LANG UTF-8/' /etc/locale.gen + + dpkg-reconfigure --frontend=noninteractive locales + update-locale LANG=$DEFAULT_LANG + " +} + +installKeyboard() { + vdn-ssh root@$GUEST_NAME " + [ -n "$http_proxy" ] && export http_proxy="$http_proxy" + [ -n "$https_proxy" ] && export https_proxy="$https_proxy" + export DEBIAN_FRONTEND=noninteractive + set -a; . /etc/vdn/config; set +a + +cat << END > /etc/default/keyboard +# KEYBOARD CONFIGURATION FILE + +# Consult the keyboard(5) manual page. + +XKBMODEL="$XKBMODEL" +XKBLAYOUT="$XKBLAYOUT" +XKBVARIANT="$XKBVARIANT" +XKBOPTIONS="$XKBOPTIONS" + +BACKSPACE="$BACKSPACE" +END +" + +} + +installTimezone() { + ln -sf /usr/share/zoneinfo/$TIMEZONE /etc/localtime +} + + +installAll() { + updateUpgrade + installLocales + installTimezone + installKeyboard + #installQuaggaFrr + installModulesReseaux + installDocker + installNfs +} + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + . $VDN_PATH/bin/functions-build.sh + + setErrorHandler + echoStart + + set -a + . $NETWORK_DIR/$GUEST_NAME.conf + set +a + + GUEST_DIR=$VDN_PATH/distribs/guests/direct/$GUEST_SYS + + echo "HDA=$VDN_PATH/files/$HDA" + + [ ! -e $VDN_PATH/files/$HDA ] && \ + debootstrap + + vdn-start $GUEST_NAME + sleep 1 + waitSsh $GUEST_NAME + + set +u + [ -z "$http_proxy" ] && http_proxy="" || : + [ -z "$https_proxy" ] && https_proxy="" || : + set -u + + installAll + + cleanHistory $GUEST_NAME + + vdn-halt $GUEST_NAME + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/zoo/scripts/prepareDebian.old b/vdn/networks/zoo/scripts/prepareDebian.old new file mode 100755 index 0000000..83ec0e4 --- /dev/null +++ b/vdn/networks/zoo/scripts/prepareDebian.old @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Préparation du système Debian pour compatibilité DIRECT, COW et TGZ." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="debian" + + GUEST_SYS=$(vdn-infos debian | grep GUEST_SYS | cut -d '=' -f 2) + + GUEST_DIR=$VDN_PATH/distribs/guests/direct/$GUEST_SYS + + if [ ! -e $GUEST_DIR/prepare.sh ]; then + error "$GUEST_DIR/prepare.sh not found" + fi + + startAndWaitSsh $name + + ( cd $GUEST_DIR; ./prepare.sh $name ) + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/zoo/scripts/prepareDebian.old2 b/vdn/networks/zoo/scripts/prepareDebian.old2 new file mode 100755 index 0000000..0c1937d --- /dev/null +++ b/vdn/networks/zoo/scripts/prepareDebian.old2 @@ -0,0 +1,120 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Préparation du système pour compatibilité DIRECT, COW et TGZ." + +set +u +[ -z "$GUEST_NAME" ] && GUEST_NAME=buster +set -u + + +updateUpgrade() { + vdn-ssh root@$GUEST_NAME "apt-get update; apt-get -y upgrade" +} + +installModulesReseaux() { + + # paquets problématiques retirés : + # rpcbind : le paramétrage ors de l'installation du paquet bloque + # nfs-common nfs-kernel-server + # quagga + + DEBS="less ssh mingetty rsync net-tools haveged rng-tools dnsutils zerofree" + DEBS="$DEBS vim slirp" + DEBS="$DEBS sshfs psmisc bsdutils strace busybox-static" + DEBS="$DEBS tcpdump wireshark-gtk nmap" + DEBS="$DEBS manpages" + DEBS="$DEBS curlftpfs ftp curl dillo" + DEBS="$DEBS libapache2-mod-php apache2-doc" + DEBS="$DEBS xbase-clients" + DEBS="$DEBS lynx psmisc file strace lsof telnet links links2" + DEBS="$DEBS iputils-ping" + DEBS="$DEBS rsync dialog" + DEBS="$DEBS firefox-esr" + DEBS="$DEBS nautilus" + DEBS="$DEBS user-mode-linux" + DEBS="$DEBS openvpn" + DEBS="$DEBS proftpd isc-dhcp-server" + + DEBS="$DEBS busybox-static debootstrap" + DEBS="$DEBS user-mode-linux" + + DEBS="$DEBS vim-gtk gedit" + + DEBS="$DEBS gpm vde2" + DEBS="$DEBS spice-vdagent" + DEBS="$DEBS gpm vde2" + DEBS="$DEBS gcc make autoconf uidmap pkg-config glib-2.0-dev \ + glib-2.0 libglib2.0-dev dpkg-dev \ + libcap-dev libcap2 libseccomp2 libseccomp-dev" + + # TP Pascal : + DEBS="$DEBS john hashcat sqlmap php default-mysql-server" + + echo "apt-get..." + vdn-ssh -t root@$GUEST_NAME " + export DEBIAN_FRONTEND=noninteractive; + export http_proxy=$http_proxy; + apt-get install -y $DEBS + " + # cas de lighttpd + vdn-ssh -t root@$GUEST_NAME " + export DEBIAN_FRONTEND=noninteractive; + export http_proxy=$http_proxy + apt-get install -y lighttpd + systemctl disable lighttpd + " + + + # disable services + + # remove : nfs-kernel-server nfs-blkmap nfs-server + + local l="ModemManager NetworkManager NetworkManager-dispatcher NetworkManager-wait-online anacron apparmor autovt@ bgpd dbus-fi.w1.wpa_supplicant1 dbus-org.freedesktop.Avahi dbus-org.freedesktop.ModemManager1 dbus-org.freedesktop.nm-dispatcher dbus-org.freedesktop.timesync1 getty@ hddtemp isisd lighttpd lm-sensors network-manager nmbd openbsd-inetd openvpn ospf6d ospfd pimd portmap pppd-dns ripd ripngd rpcbind rsync smbd speech-dispatcher syslog systemd-timesyncd udisks2 wpa_supplicant zebra uml-utilities apache2 proftpd isc-dhcp-server" + + vdn-ssh -t root@$GUEST_NAME "for i in $l; do echo \"Disable \$i\"; systemctl disable \$i; done" + +} + +installAll() { + updateUpgrade + installModulesReseaux +} + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + . $VDN_PATH/bin/functions-build.sh + + setErrorHandler + echoStart + + set -a + . $NETWORK_DIR/$GUEST_NAME.conf + set +a + + GUEST_DIR=$VDN_PATH/distribs/guests/direct/$GUEST_SYS + + echo "HDA=$VDN_PATH/files/$HDA" + + #[ ! -e $VDN_PATH/files/$HDA ] && \ + debootstrap + + requireSshGuests $GUEST_NAME + + set +u + [ -z "$http_proxy" ] && http_proxy="" || : + [ -z "$https_proxy" ] && https_proxy="" || : + set -u + + installAll + + cleanHistory $GUEST_NAME + + vdn-halt $GUEST_NAME + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/zoo/scripts/prepareDebianBookworm b/vdn/networks/zoo/scripts/prepareDebianBookworm new file mode 100755 index 0000000..1d123c3 --- /dev/null +++ b/vdn/networks/zoo/scripts/prepareDebianBookworm @@ -0,0 +1,9 @@ +#!/bin/bash + +DIR=$(readlink -f $(dirname $0)/..) + +run() { + export GUEST_NAME=bookworm + vdn-scripts prepareDebian +} + diff --git a/vdn/networks/zoo/scripts/prepareDebianBullseye b/vdn/networks/zoo/scripts/prepareDebianBullseye new file mode 100755 index 0000000..46fa7d8 --- /dev/null +++ b/vdn/networks/zoo/scripts/prepareDebianBullseye @@ -0,0 +1,9 @@ +#!/bin/bash + +DIR=$(readlink -f $(dirname $0)/..) + +run() { + export GUEST_NAME=bullseye + vdn-scripts prepareDebian +} + diff --git a/vdn/networks/zoo/scripts/prepareDebianBullseye-test b/vdn/networks/zoo/scripts/prepareDebianBullseye-test new file mode 100755 index 0000000..28502b5 --- /dev/null +++ b/vdn/networks/zoo/scripts/prepareDebianBullseye-test @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Préparation du système pour compatibilité DIRECT, COW et TGZ." + +GUEST_NAME=bullseye-test + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + . $VDN_PATH/bin/functions-build.sh + + setErrorHandler + echoStart + + set -a + . $NETWORK_DIR/$GUEST_NAME.conf + set +a + + env | egrep 'VDN|GUEST|HD|NET' + + GUEST_DIR=$VDN_PATH/distribs/guests/direct/$GUEST_SYS + + debootstrap + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/zoo/scripts/prepareDebianBuster b/vdn/networks/zoo/scripts/prepareDebianBuster new file mode 100755 index 0000000..ac2e88c --- /dev/null +++ b/vdn/networks/zoo/scripts/prepareDebianBuster @@ -0,0 +1,9 @@ +#!/bin/bash + +DIR=$(readlink -f $(dirname $0)/..) + +run() { + export GUEST_NAME=buster + vdn-scripts prepareDebian +} + diff --git a/vdn/networks/zoo/scripts/prepareDebianBuster-test b/vdn/networks/zoo/scripts/prepareDebianBuster-test new file mode 100755 index 0000000..722f993 --- /dev/null +++ b/vdn/networks/zoo/scripts/prepareDebianBuster-test @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Préparation du système pour compatibilité DIRECT, COW et TGZ." + +GUEST_NAME=buster-test + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + . $VDN_PATH/bin/functions-build.sh + + setErrorHandler + echoStart + + set -a + . $NETWORK_DIR/$GUEST_NAME.conf + set +a + + env | egrep 'VDN|GUEST|HD|NET' + + GUEST_DIR=$VDN_PATH/distribs/guests/direct/$GUEST_SYS + + debootstrap + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/zoo/scripts/prepareDebianDocker b/vdn/networks/zoo/scripts/prepareDebianDocker new file mode 100755 index 0000000..bb44c44 --- /dev/null +++ b/vdn/networks/zoo/scripts/prepareDebianDocker @@ -0,0 +1,9 @@ +#!/bin/bash + +DIR=$(readlink -f $(dirname $0)/..) + +run() { + export GUEST_NAME=docker + vdn-scripts prepareDebian +} + diff --git a/vdn/networks/zoo/scripts/prepareKali b/vdn/networks/zoo/scripts/prepareKali new file mode 100755 index 0000000..929e9a5 --- /dev/null +++ b/vdn/networks/zoo/scripts/prepareKali @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Préparation du système Kali pour compatibilité COW et TGZ." + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + + setErrorHandler + echoStart + + name="kali" + + GUEST_SYS=$(vdn-infos $name | grep GUEST_SYS | cut -d '=' -f 2) + + GUEST_DIR=$VDN_PATH/distribs/guests/direct/$GUEST_SYS + + if [ ! -e $GUEST_DIR/prepare.sh ]; then + error "$GUEST_DIR/prepare.sh not found" + fi + + startAndWaitSsh $name + + ( + cd $GUEST_DIR + ./prepare.sh $name + ) + + unsetErrorHandler + echoDone +} + diff --git a/vdn/networks/zoo/scripts/prepareSae103 b/vdn/networks/zoo/scripts/prepareSae103 new file mode 100755 index 0000000..7e46515 --- /dev/null +++ b/vdn/networks/zoo/scripts/prepareSae103 @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +set -eu + +DESC="Préparation du système pour compatibilité DIRECT, COW et TGZ." + +GUEST_NAME=sae103 + +run() { + + . $VDN_PATH/bin/functions-scripts.sh + . $VDN_PATH/bin/functions-build.sh + + setErrorHandler + echoStart + + set -a + . $NETWORK_DIR/$GUEST_NAME.conf + set +a + + env | egrep 'VDN|GUEST|HD|NET' + + GUEST_DIR=$VDN_PATH/distribs/guests/direct/$GUEST_SYS + + debootstrap + + unsetErrorHandler + echoDone +} + diff --git a/vdn/release b/vdn/release new file mode 100644 index 0000000..20c48e9 --- /dev/null +++ b/vdn/release @@ -0,0 +1 @@ +0.12.0-dev diff --git a/vdn/sae103/build b/vdn/sae103/build new file mode 100755 index 0000000..e3c26f6 --- /dev/null +++ b/vdn/sae103/build @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + + + +build() { + local n + + n=sae103 + vdn-build $n + vdn-config $n MODE "cow" + vdn-config $n GUEST_SYS "debian/bullseye" + vdn-config $n MEMORY "2048" + vdn-config $n HDA "sae103.disk" + vdn-config $n HDB "sae103-hdb.disk" + vdn-config $n HDB_PART_FORMAT 0 + vdn-config $n HDB_SIZE "2048" + vdn-config $n SWAP_SIZE "2048" + vdn-config $n NETWORKS "NET_G#20.X2.Y2.Z2/8" + + vdn-config $n REDIRS "\ + tcp:22:(ssh) \ + " +} + diff --git a/vdn/sae103/debian-1/etc/systemd/system/docker.service.d/http-proxy.conf b/vdn/sae103/debian-1/etc/systemd/system/docker.service.d/http-proxy.conf new file mode 100644 index 0000000..0f39841 --- /dev/null +++ b/vdn/sae103/debian-1/etc/systemd/system/docker.service.d/http-proxy.conf @@ -0,0 +1,5 @@ +[Service] +Environment=HTTP_PROXY="http://193.49.118.36:8080/" +Environment=HTTPS_PROXY="http://193.49.118.36:8080/" +Environment=NO_PROXY="localhost,127.0.0.0/8" + diff --git a/vdn/sae103/graph.svgz b/vdn/sae103/graph.svgz new file mode 100644 index 0000000..12f355c Binary files /dev/null and b/vdn/sae103/graph.svgz differ diff --git a/vdn/sae103/net.svgz b/vdn/sae103/net.svgz new file mode 100644 index 0000000..a933012 Binary files /dev/null and b/vdn/sae103/net.svgz differ diff --git a/vdn/sae103/network.vdn b/vdn/sae103/network.vdn new file mode 100644 index 0000000..e69de29 diff --git a/vdn/sae103/sae103.conf b/vdn/sae103/sae103.conf new file mode 100644 index 0000000..984f9e5 --- /dev/null +++ b/vdn/sae103/sae103.conf @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +# Fichier de configuration d'un système virtuel +# --------------------------------------------- +# Lorsque ce fichier est lu, les variables suivantes sont déjà fixées (et +# peuvent donc être utilisées pour la définition des variables ci-dessous). +# +# VDN_PATH : répertoire de vdn +# GUEST_NAME : nom du système virtuel +# --------------------------------------------- + +# URL de téléchargement des fichiers + +DISKS_REPOSITORY="http://opale.iut-clermont.uca.fr/vdn-files" + +# Modes : "tgz" correspond au mode LiveCD, "direct" au mode DIRECT et +# "cow" au mode COW. + +MODE="cow" + +# Émulateur à utiliser. Si vide autodétection (kvm/qemu). + +EMULATOR="" + +# Mémoire dédiée au système virtuel (en Mo). + +MEMORY="2048" + +# Chemin du premier disque du système. + +HDA="sae103.disk" + +# Taille (en Mo) du premier disque du système (utile uniquement pour +# les modes DIRECT et COW). + +HDA_SIZE="1024" + +# Répertoire de sauvegardes du second disque (HDB) + +SAVE_DIR_HDB="" + +# Chemin du second disque du système. + +HDB="sae103-hdb.disk" + +# Taille (en Mo) du second disque du système. + +HDB_SIZE="2048" + +# Auto partitionnement, formatage (ext4), et montage (/mnt/hdb) + +HDB_PART_FORMAT="0" + +# Répertoires à transférer de façon transparente sur hdb (utilise /mnt/hdb) + +HDB_DIRS="" + +# Taille (en Mo) du fichier de swap. + +SWAP_SIZE="2048" + +# Connexions des interfaces réseau. + +NETWORKS="NET_G#20.X2.Y2.Z2/8" + +# Type de carte réseau + +#NET_MODEL="ne2k_pci" +NET_MODEL="virtio" + +# Redirections "réseau" sur le système virtuel. + +REDIRS=" tcp:22:(ssh) " + +# Interface supplémentaire dédiée à la communication avec l'hôte. + +EXTRA_ETH="1" + +# Pour que la route par défaut soit vers le réseau hôte + +EXTRA_ETH_DEFAULT_ROUTE="1" + +# Forcer le masquerading sur l'interface supplémentaire + +EXTRA_ETH_MASQUERADING="0" + +# Fichier à importer de l'hôte + +#HOST_FILES="/etc/bash.bashrc" +HOST_FILES="" + +# Fixe les proxys http et https de l'invité + +SET_PROXY="1" + +# Activer la résolution des hôtes Internet (ex : tiny.demo.toto.vdn) + +VDN_RESOLV="1" + +###################################################### +### Variables spécifiques aux systèmes de type tgz ### +###################################################### + +# Type de système virtuel (ex : debian/bullseye) + +GUEST_SYS="debian/bullseye" + +# Chemin du noyau + +KERNEL="vmlinuz-4.19.0-16-amd64" + +# Chemin de l'initramfs + +INITRAMFS="initrd-tgz.img-4.19.0-16-amd64" + +# Fixe automatiquement le nom de l'hôte au boot ? + +SET_HOSTNAME=1 + +# Quel nom d'hôte au boot ? + +BOOT_HOSTNAME="localhost" + +# Commandes à exécuter au démarrages (/etc/rc.local) + +ON_BOOT="" + +# Taille (en Mo) du fichier de l'union. + +AUFS_SIZE="500" + +# Répertoires à ne pas archiver dans la sauvegarde. + +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt etc/rc2.d etc/rc3.d etc/rc4.d etc/rc5.d etc/rcS.d etc/systemd/system tmp overlays etc/init.d etc/vdn" +#SAVE_EXCLUDE="var/cache var/run var/log var/lib var/backups var/spool sbin/reboot sbin/poweroff sbin/halt tmp overlays etc/init.d" + +SAVE_EXCLUDE="tmp var/tmp var/cache etc/systemd/system/default.target.wants \ + etc/vdn etc/rc.local etc/vdn/mount-root etc/vdn/save \ + var/lib/plymouth/boot-duration ./var/lib/dhcp/dhclient.leases \ + var/lib/lightdm/.Xauthority \ + var/lib/lightdm/.Xauthority \ + var/backups \ + var/log/lightdm var/lib/lightdm/.cache \ + home/test/.cache" + +# Clear log when save + +CLEAR_LOG_WHEN_SAVE=1 + +# Delete .gz in /var/log + +DELETE_LOG_GZ=1 + +# Services à activer en plus de ceux de base. + +EXTRA_SERVICES="" + +# Services à exclure + +EXCLUDE_SERVICES="ssh" # ssh sera activé automatiquement en fin de /etc/rc.local + +# Runlevel (multi-user.target, graphical.target, ...) + +RUNLEVEL="graphical.target" + +####################################################### +### Spécifiques aux systèmes de types COM et DIRECT ### +####################################################### + +# Cdrom (fichier iso ou fichier spécial). + +CDROM="" + +# URL(s) de téléchargement du/des cédérom(s). + +CDROM_REPOSITORY="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd" + +# À fixer à 1 pour un amorçage sur le cédérom. + +BOOT_CDROM=0 + +############################################################ +### Spécifique à KVM (tous types de systèmes confondus). ### +############################################################ + +# Options (autres que disques et réseaux) à passer à KVM. + +KVM_OPTS="-device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-pid \ + -rtc base=localtime -m ${MEMORY}M" + +# Modèle de disque (virtio/ide). + +KVM_DISK_MODEL="virtio" + +# Mode de visualisation (sdl,vnc, spice). + +KVM_VIEWER="spice" + +# Démarrage automatique d'un viewer + +KVM_VIEWER_AUTOSTART=0 + +# Intégration du visualisateur VNC interne dans la GUI. + +KVM_VIEWER_EMBEDDED=0 + +# Ajouter l'option "-usbdevice tablet". + +KVM_USB_DEVICE_TABLET=0 + +####################### +### Personalisation ### +####################### + +# locales +DEFAULT_LANG=fr_FR.UTF-8 + +# timezone +TIMEZONE=Europe/Paris + +# keyboard +XKBMODEL="pc105" +XKBLAYOUT="fr" +XKBVARIANT="latin9" +XKBOPTIONS="" +BACKSPACE="guess" + + diff --git a/vdn/sae103/scripts/test b/vdn/sae103/scripts/test new file mode 100755 index 0000000..7ae72a4 --- /dev/null +++ b/vdn/sae103/scripts/test @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +DESC="Test de docker." + +run() { + + name="debian-1" + + diag test@$name "Test docker :" \ + 'docker run -it --mount src=/,target=/test_container,type=bind busybox cat /test_container/etc/shadow > /dev/null' + +} + diff --git a/vdn/script-template b/vdn/script-template new file mode 100644 index 0000000..997c869 --- /dev/null +++ b/vdn/script-template @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +DESC="" + +run() { + echo "run..." +} + diff --git a/vdn/scripts/01-first-boot b/vdn/scripts/01-first-boot new file mode 100644 index 0000000..8850a60 --- /dev/null +++ b/vdn/scripts/01-first-boot @@ -0,0 +1,51 @@ +#!/bin/bash + +getRandomPasswd() { + local k + + while :; do + k=$(tr -dc _A-Z-a-z-0-9 < /dev/urandom 2> /dev/null | head -c${1:-32} ) + if [ $(echo -n $k | wc -c) = 32 ]; then + break + fi + echo "Wait for entropy avail : $(cat /proc/sys/kernel/random/entropy_avail)" >&2 + sleep 1 + done + echo -n $k +} + +# main + +echo "=== $0" + + +if [ ! -e /etc/vdn-$MODE-initialized ]; then + + # regenerate ssh_host_keys + + rm -f /etc/ssh/ssh_host_* + + dpkg-reconfigure openssh-server + + #systemctl restart ssh + + # Random root and test password + + echo "Random passwords." + + k=$(getRandomPasswd) + #echo "root passwd : $k" + passwdRoot=$k #$(cat /dev/urandom | tr -dc _A-Z-a-z-0-9 | head -c${1:-32};) + k=$(getRandomPasswd) + #echo "test passwd : $k" + passwdTest=$k #$(cat /dev/urandom | tr -dc _A-Z-a-z-0-9 | head -c${1:-32};) + + cat <<- EOF | chpasswd +root:$passwdRoot +test:$passwdTest +EOF + + touch /etc/vdn-$MODE-initialized + +fi + diff --git a/vdn/scripts/02-swap b/vdn/scripts/02-swap new file mode 100644 index 0000000..b74b17a --- /dev/null +++ b/vdn/scripts/02-swap @@ -0,0 +1,15 @@ +#!/bin/bash + +echo "=== $0" + +set -a +. /etc/vdn/config +set +a + +if [ $SWAP_SIZE != 0 ]; then + swapDev=$(lsblk -n -o PATH | grep '/...$' | tail -n 2 | head -n 1) + swapoff -a + echo "swap : swapon $swapDev" + swapon $swapDev +fi + diff --git a/vdn/scripts/10-network b/vdn/scripts/10-network new file mode 100644 index 0000000..cb4a3c5 --- /dev/null +++ b/vdn/scripts/10-network @@ -0,0 +1,55 @@ +#!/bin/bash + +echo "=== $0" + +set -a +. /etc/vdn/config +set +a + +# init slirp connection + +#lastEth=$(ifconfig -a | grep eth[0-9] | tail -n 1 | cut -d ':' -f 1) +echo "Wait for network devices." + +NB_ETH=`echo $NETWORKS | wc -w` + +while :; do + lastEth=$(ip addr | grep : | grep eth[0-9] | cut -d ':' -f 2 | tail -n 1 | tr -d ' ') + [ -n "$lastEth" -a "$lastEth" = eth$NB_ETH ] && break + sleep 1 +done + +# Set DNS +echo "nameserver 10.0.2.3" > /etc/resolv.conf + +# VDN resolver +if [ "$VDN_RESOLV" = 1 ]; then + sed -i -re 's/^(hosts:[[:space:]]+).*$/\1files dns vdn/' /etc/nsswitch.conf + cp /etc/vdn/libnss_vdn.so /lib/x86_64-linux-gnu/libnss_vdn.so.2.0.0 + ln -sf libnss_vdn.so.2.0.0 /lib/x86_64-linux-gnu/libnss_vdn.so.2 +else + rm -f /lib/x86_64-linux-gnu/libnss_vdn.so.2 +fi + +# Extra eth (and extra default route) + +[ -n "$lastEth" ] && { + ip link set $lastEth down + ip addr flush $lastEth + ip addr add 10.0.2.15/24 dev $lastEth + ip link set $lastEth up + + ip route + + if [ "$EXTRA_ETH_DEFAULT_ROUTE" = 1 ]; then + # Set default root to host (slirp) + #route add default gw 10.0.2.2 &> /dev/null + ip route add default via 10.0.2.2 + fi + ping -c 1 10.0.2.2 &> /dev/null + + # Firewall + + [ -x /etc/firewall.sh ] && /etc/firewall.sh +} + diff --git a/vdn/scripts/12-lighttpd b/vdn/scripts/12-lighttpd new file mode 100644 index 0000000..412ab9d --- /dev/null +++ b/vdn/scripts/12-lighttpd @@ -0,0 +1,6 @@ +#!/bin/bash + +echo "=== $0" + +systemctl mask lighttpd + diff --git a/vdn/scripts/12-proxy b/vdn/scripts/12-proxy new file mode 100644 index 0000000..1352666 --- /dev/null +++ b/vdn/scripts/12-proxy @@ -0,0 +1,16 @@ +#!/bin/bash + +echo "=== $0" + +set -a +. /etc/vdn/config +set +a + +egrep -v 'http_proxy|https_proxy' /etc/bash.bashrc > /etc/.bash.bashrc +mv /etc/.bash.bashrc /etc/bash.bashrc + +if [ "$SET_PROXY" = 1 ]; then + echo "export http_proxy=\"$HTTP_PROXY\"" >> /etc/bash.bashrc + echo "export https_proxy=\"$HTTP_PROXY\"" >> /etc/bash.bashrc +fi + diff --git a/vdn/scripts/15-authorized_keys b/vdn/scripts/15-authorized_keys new file mode 100644 index 0000000..f44b7e6 --- /dev/null +++ b/vdn/scripts/15-authorized_keys @@ -0,0 +1,17 @@ +#!/bin/bash + +echo === $0 + +[ ! -d /root/.ssh ] && { + mkdir /root/.ssh + chmod 700 /root/.ssh +} + +k=$(cat /etc/vdn/.ssh/id_rsa.pub) + +[ -n "$k" ] && { + ! fgrep -q "$k" /root/.ssh/authorized_keys && + echo "$k" >> /root/.ssh/authorized_keys +} + + diff --git a/vdn/scripts/30-services b/vdn/scripts/30-services new file mode 100644 index 0000000..748cb3a --- /dev/null +++ b/vdn/scripts/30-services @@ -0,0 +1,30 @@ +#!/bin/bash + +echo "=== $0" + +set -a +. /etc/vdn/config +set +a + + +echo "Unmask services : $EXTRA_SERVICES" + +for i in "$EXTRA_SERVICES"; do + systemctl unmask $i + systemctl enable $i + systemctl start $i +done + +echo "Mask services : $EXCLUDE_SERVICES" + +set -x +systemctl mask $EXCLUDE_SERVICES +set +x + +echo "Unmask service ssh" + +systemctl unmask ssh +systemctl enable ssh +systemctl start ssh + + diff --git a/vdn/scripts/90-post-boot b/vdn/scripts/90-post-boot new file mode 100644 index 0000000..74de634 --- /dev/null +++ b/vdn/scripts/90-post-boot @@ -0,0 +1,12 @@ +#!/bin/bash + +echo "=== $0" + +set -a +. /etc/vdn/config +set +a + +[ -e /etc/post-boot ] && nohup /etc/post-boot &> /dev/null & + + + diff --git a/vdn/scripts/99-bird b/vdn/scripts/99-bird new file mode 100644 index 0000000..311b0a5 --- /dev/null +++ b/vdn/scripts/99-bird @@ -0,0 +1,14 @@ +#!/bin/bash + +echo "=== $0" + +set -a +. /etc/vdn/config +set +a + +if echo "$EXTRA_SERVICES" | egrep -q '(^|[[:space:]])bird$([[:space:]]|$)'; then + ( + systemctl start bird + systemctl status bird + ) & +fi diff --git a/vdn/scripts/mount-root-tgz2 b/vdn/scripts/mount-root-tgz2 new file mode 100644 index 0000000..fc68ff1 --- /dev/null +++ b/vdn/scripts/mount-root-tgz2 @@ -0,0 +1,509 @@ +#!/usr/bin/env sh + +# Script de l'initramfs pour le montage de la racine finale +# --------------------------------------------------------- + +# Ce script est appelé par l'initramfs pour monter la racine finale +# Ce script utilise les variables définies dans le fichier de configuration +# d'un système virtuel. + +# Monte les répertoires de l'union +mountUnionDirs_tgz2() { + + echo "=== Mount in TGZ2 mode..." + + #mdev -s + #ls -l /dev + #ls -l / + + #[ ! -d /root ] && mkdir /root + + #mount -t ext4 -o ro /dev/vda1 /root + + + [ ! -d /root-ro ] && mkdir /root-ro + [ ! -d /root-rw ] && mkdir /root-rw + + # readonly + if ! mount | grep -q /root && [ "$EMULATOR" = "linux" ]; then + ls -l /dev/ubd* + mount -o ro,noload /dev/ubda1 /root + #mount -o remount,ro /root + fi + #ls /root + mount -o move /root /root-ro + + # aufs + #mount -t tmpfs -o size=64m tmpfs /root-rw + if [ -z "$AUFS_FILE" ]; then + if [ -n "$AUFS_SIZE" ]; then + mount -o size=$((1024*1024*$AUFS_SIZE)) \ + -t tmpfs none /root-rw || exit 1 + else + mount -t tmpfs none /root-rw || exit 1 + fi + else + mount -t ext4 $aufsDev /root-rw || exit 1 + rm -Rf /root-rw/* + fi + + # union + + mkdir /root-rw/data /root-rw/work + + if [ 1 = 1 ]; then + modprobe overlay + mount none -t overlay -o redirect_dir=on -o lowerdir=/root-ro,upperdir=/root-rw/data,workdir=/root-rw/work /root + [ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount -o bind /root-ro /root/overlays/ro + mount -o bind /root-rw /root/overlays/rw + } + else + # aufs DEPRECATED, not functional + modprobe aufs + mount -v -t aufs -o br:/root-rw/data:/root-ro none /root + #[ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount --move /root-ro /root/overlays/ro + mount --move /root-rw /root/overlays/rw + #} + + fi + + if [ ! -d /root/etc ]; then + echo + echo "Error in overlay (tgz mode) !" + echo + sh -i + fi +} + +mountUnionDirs_overlay() { + + echo "Mount in OVERLAY mode..." + [ ! -d /root-ro ] && mkdir /root-ro + [ ! -d /root-rw ] && mkdir /root-rw + + # readonly + if ! mount | grep -q /root && [ "$EMULATOR" = "linux" ]; then + ls -l /dev/ubd* + mount -o ro,noload /dev/ubda1 /root + #mount -o remount,ro /root + fi + #ls /root + mount -o move /root /root-ro + + mount -t ext4 $saveDev /root-rw || exit 1 + + # union + + [ ! -d /root-rw/data ] && mkdir /root-rw/data + [ ! -d /root-rw/work ] && mkdir /root-rw/work + + + + if [ 1 = 1 ]; then + + modprobe overlay #redirect_dir=on xino_auto metacopy=off + mount none -t overlay -o redirect_dir=on -o lowerdir=/root-ro,upperdir=/root-rw/data,workdir=/root-rw/work /root + #mount none -t overlay -o lowerdir=/root-ro,upperdir=/root-rw/data,workdir=/root-rw/work /root + + + [ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount -o bind /root-ro /root/overlays/ro + mount -o bind /root-rw /root/overlays/rw + } + + else + # deprecated, not fonctional ! + modprobe aufs + mount -v -t aufs -o br:/root-rw/data:/root-ro none /root + #[ $? -eq 0 ] && { + mkdir -p /root/overlays/ro /root/overlays/rw + mount --move /root-ro /root/overlays/ro + mount --move /root-rw /root/overlays/rw + #} + + fi + + if [ ! -d /root/etc ]; then + echo + echo "Error in overlay (overlay mode) !" + echo + sh -i + fi + +} + +setNetwork() { + + modprobe virtio_net + + NB_ETH=$(echo $NETWORKS | wc -w) + + for i in $(seq 0 $NB_ETH); do + ifconfig eth$i up + done + ifconfig -a + ifconfig eth$NB_ETH 10.0.2.15 netmask 255.255.255.0 + + #sh -i + + cat << EOF > /root/etc/network/interfaces +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +source /etc/network/interfaces.d/* + +# The loopback network interface +auto lo +iface lo inet loopback +EOF + +} + +cpSshIdentityOld() { + + # Copie de l'identité ssh + + authorized_keys=/root/.ssh/authorized_keys + [ -n "$SSH_IDENTITY" ] && { + [ ! -d /root//root/.ssh ] && mkdir -m 700 /root/root/.ssh + for i in $SSH_IDENTITY; do + f=/etc/vdn/.ssh/$(basename $i) + if [ -e $f ]; then + ident="$(cat $f)" + grep -q "$ident" /root/root/.ssh/authorized_keys || \ + cat $f >> /root/root/.ssh/authorized_keys + chmod 600 /root/root/.ssh/authorized_keys + echo "vdn : copie de $f" + cat /root/root/.ssh/authorized_keys + break + fi + done + } +} + + +beforeExtractTgz() { + + # Copie de la conf + + [ ! -d /root/etc/vdn ] && mkdir -p /root/etc/vdn + cp -a /etc/vdn/* /root/etc/vdn + + + # extract files (host, all, guest) + for d in /etc/vdn/host /etc/vdn/all /etc/vdn/guest; do + if [ -d $d ]; then + ( cd $d && tar czf - . ) | ( cd /root && tar --no-same-owner -xpzf - ) + fi + done + + if [ -e /etc/rc.local ]; then + cp /etc/rc.local /root/etc/rc.local + fi + +} + +extractSaveTgz() { + echo "Extract save tgz" + if [ -n "$saveDev" ]; then + tar -C /root -xzpf $saveDev #2> /dev/null + fi +} + +setServices() { + + generated=" +hddtemp +isc-dhcp-server +proftpd +speech-dispatcher +" + + base=" +avahi-daemon +console-setup +cron +inetd +keyboard-setup +networking +rsyslog +ssh +sshd +" + + cmd="systemctl list-unit-files --type service --no-legend --no-pager | egrep 'enabled|generated' | cut -d ' ' -f 1 | sed -re 's/\.service//'" + + + all=$(eval chroot /root $cmd) + all=$( { echo "$all"; echo "$generated"; } | tr ' ' '\n' | grep -v '^$' | sort ) + + base=$( echo "$base" | tr ' ' '\n' | grep -v '^$' | sort ) + + extra="$(echo $EXTRA_SERVICES | tr ' ' '\n' | grep -v '^$' | sort -u ) haveged" + + enable=$( { echo "$base"; echo "$extra"; } | tr ' ' '\n' | grep -v '^$' | sort -u ) + + echo "$all" > /root/tmp/all + echo "$enable" > /root/tmp/enable + + badEnable=$(chroot /root comm -1 -3 /tmp/all /tmp/enable) + + disable=$(chroot /root comm -2 -3 /tmp/all /tmp/enable) + + #echo "==== all (file) ====" + #cat /root/tmp/all + #echo "==== enable (file) ====" + #cat /root/tmp/enable + + #echo "================" + echo + echo "Services :" + echo + echo All services : $all + echo + echo Base services : $base + echo + echo Extra services : $extra + echo + echo enable : $enable + echo + echo disable : $disable + echo + echo mask : $EXCLUDE_SERVICES + echo + + #if [ -n "$badEnable" ]; then + # echo "!!! Invalid enable service(s) ! : $badEnable" + # sleep 1 + #fi + + export enable + export disable + + OLDROOT=$ROOT + unset ROOT + + for i in $enable; do + chroot /root systemctl unmask $i + chroot /root systemctl enable $i + done + + for i in $disable; do + chroot /root systemctl disable $i + done + + chroot /root systemctl mask $EXCLUDE_SERVICES + + ROOT=$OLDROOT + +} + +updateHdb() { + + if [ $HDB_PART_FORMAT = 1 ]; then + if ! fdisk -l /dev/vdb | grep -q vdb1; then + #/bin/sh -i + echo -e 'n\np\n1\n\n\np\nw\n' | fdisk /dev/vdb + /root/sbin/mkfs.ext4 -j /dev/vdb1 + #/bin/sh -i + #mv \$mdir \$mdir.bak + fi + [ ! -d /root/mnt/vdb1 ] && mkdir /root/mnt/vdb1 + mount -o errors=remount-ro /dev/vdb1 /root/mnt/vdb1 + fi + + + + if [ -n "$HDB_DIRS" ]; then + if ! mount | grep -q /root/mnt/vdb1 ; then + echo + echo "/root/mnt/vdb1 non monté ! Abandon du transfert des répertoires" + echo + sleep 3 + fi + + for i in $HDB_DIRS; do + if [ ! -d /root/mnt/vdb1/$i ]; then + [ ! -d $(dirname /root/mnt/vdb1/$i) ] && mkdir -p $(dirname /root/mnt/vdb1/$i) + if [ -d /root/$i ]; then + cp -a /root/$i /root/mnt/vdb1/$i + else + mkdir -p /root/mnt/vdb1/$i + fi + fi + + mount -o bind /root/mnt/vdb1/$i /root/$i || echo "Error mount /mnt/vdb1/$i !" >&2 + done + fi +} + +listDisks() { + if [ "$EMULATOR" = "linux" ]; then + ls /dev/ubd[[:lower:]] # | grep -E 'udb[:lower:]r?' + else + ls /dev/?d[[:lower:]] + fi +} + + +echo +echo "=== Start mount-root script..." +echo +#set -eu + +set -a +. /etc/vdn/config +set +a + +#cat /etc/vdn/config + +echo "EMULATOR=$EMULATOR" >&2 +echo "MODE=$MODE" >&2 +echo "NB_DISK=$NB_DISK" >&2 + +listDisks >&2 + +# Sauvegarde +saveDev=$(listDisks | head -n $((1+$NB_DISK)) | tail -n 1 ) + +if [ $MODE = tgz2 ]; then + if [ "$(dd if=$saveDev count=1 bs=512 2>/dev/null | wc -c)" = "0" ]; then + saveDev="" + fi +fi + +#echo "saveDev=$saveDev" + +# Aufs (now : overlayfs) + +aufsDev="" +if [ $MODE = tgz -o $MODE="tgz2" ]; then + aufsDev=$(listDisks | head -n $((2+$NB_DISK)) | tail -n 1 ) +fi +echo "aufsDev=$aufsDev" + + +mountUnionDirs_$MODE + +updateHdb +beforeExtractTgz +###setServices +###setNetwork + +if [ $MODE = tgz -o $MODE = tgz2 ]; then + extractSaveTgz +fi + +if [ ! -e /root-rw/data/etc/hostname ]; then + if [ $SET_HOSTNAME = 1 ]; then + echo "$GUEST_NAME" > /root-rw/data/etc/hostname + else + echo "" > /root-rw/data/etc/hostname + fi +fi + +# disable halt reboot shutdown poweroff +if [ $MODE = tgz -o $MODE = tgz2 ]; then + for i in halt reboot shutdown poweroff; do + [ -e /root/sbin/$i -a ! -e /root/sbin/.$i ] && mv /root/sbin/$i /root/sbin/.$i + #/bin/rm -f /root/sbin/$i 2> /dev/null + cat << EOF > /root/sbin/$i +#!/bin/bash + +echo -e "\$0 is disable in TGZ mode !\nUse vdn-halt host command or halt in the GUI." >&2 + +exit 1 +EOF + chmod 755 /root/sbin/$i + done +fi + +#if [ ! -e /root/root/.vimrc ]; then +# sed -re 's/"syntax on/syntax on/' /root/etc/vim/vimrc > /root/root/.vimrc +#fi + +# runlevel + +chroot /root systemctl set-default $RUNLEVEL + +cat << EOF > /root/etc/rc.local.old +#!/bin/sh -e +# +# rc.local +# +# This script is executed at the end of each multiuser runlevel. +# Make sure that the script will "exit 0" on success or any other +# value on error. +# +# In order to enable or disable this script just change the execution +# bits. +# +# By default this script does nothing. + +mount -t tmpfs tmpfs /run -o remount,size=20M + +[ -x /root/firewall.sh ] && /root/firewall.sh +[ -e /etc/start ] && bash /etc/start & + +exit 0 +EOF + + #chmod 755 /root/etc/rc.local + + if [ -n "$HOSTS" ]; then + #echo "Generate /etc/hosts" + + ( + echo " +127.0.0.1 localhost +127.0.1.1 debian +" + echo "$HOSTS" | while read name; do + if echo $name | grep -q PUB; then + name=$(echo $name | sed -re 's/^[[:space:]]*PUB[^[:space:]]*[[:space:]]+([^[:space:]]+).*$/\1/') + pub=$(echo $PUBLICS_IP | sed -re 's/^.*'$name':([0-9.]+).*$/\1/') + echo "replace $name ($pub)..." >&2 + name="$pub $name" + fi + + echo "$name" + done + + echo " +# The following lines are desirable for IPv6 capable hosts +::1 localhost ip6-localhost ip6-loopback +ff02::1 ip6-allnodes +ff02::2 ip6-allrouters +" + ) > /root/etc/hosts + cat /root/etc/hosts + + fi + + #cat /root/root/.ssh/authorized_keys + #echo + [ -e /root/etc/vdn/authorized-root.txt ] && { + echo "Add authorized root(s)" >&2 + cat /root/etc/vdn/authorized-root.txt | while read l; do + echo " found $l" + cat /root/root/.ssh/authorized_keys | grep -q "$l$" || { + echo " add $l" + echo "$l" >> /root/root/.ssh/authorized_keys + } + done + } +#echo +#cat /root/root/.ssh/authorized_keys +#echo "end of $0" + +#sleep 3 +#/bin/sh -i + +#echo "###################################################################" + + diff --git a/vdn/scripts/on-boot b/vdn/scripts/on-boot new file mode 100644 index 0000000..6de57f8 --- /dev/null +++ b/vdn/scripts/on-boot @@ -0,0 +1,28 @@ +#!/bin/bash + +echo === $0 + +lastDisk=$(lsblk -i -n -o PATH | grep '/...$' | tail -n 1) + +if [ -n "$lastDisk" ]; then + if file -s $lastDisk | grep -q 'gzip compressed data'; then + rm -f /etc/vdn/[0-9]* + tar -C / -xf $lastDisk + else + echo >&2 + echo "WARNING : no vdn config partition found !" >&2 + sleep 3 + fi +fi + +#sleep 3 + +for i in $(ls /etc/vdn/[0-9]* 2> /dev/null) ; do + sh $i +done + +chmod 755 / +chown root:root / + + + diff --git a/vdn/scripts/on-initramfs b/vdn/scripts/on-initramfs new file mode 100644 index 0000000..6362fae --- /dev/null +++ b/vdn/scripts/on-initramfs @@ -0,0 +1,14 @@ +#!/bin/busybox ash + +echo "=== $0" + +set -a +. /etc/vdn/config +set +a + +echo MODE=$MODE +case "$MODE" in + tgz2) sh /etc/vdn/mount-root-tgz2;; + *) exit 0 +esac + diff --git a/vdn/scripts/save b/vdn/scripts/save new file mode 100755 index 0000000..433e59d --- /dev/null +++ b/vdn/scripts/save @@ -0,0 +1,42 @@ +#!/usr/bin/env bash + +set -eu + +sync + +#if ! cat /proc/cmdline | grep -q vdn-emulator; then +if [ ! -e "/overlays/rw" ]; then + echo "Commande réservée à un système VDN." >&2 + exit 1 +fi + +. /etc/vdn/config + +e="" +for i in $SAVE_EXCLUDE; do + e="$e --exclude $i" +done + +set +u +if [ "$CLEAR_LOG_WHEN_SAVE" = 1 ]; then + find /var/log -type f ! -name "*.gz" -exec truncate -s 0 {} \; + find /var/log -maxdepth 2 -type f -name '*log' -exec truncate -s 0 {} \; +fi + +if [ "$DELETE_LOG_GZ = 1" ]; then + find /var/log -type f -name "*.gz" -delete +fi +set -u + +cd /overlays/rw/data + +tar $e -czpf - . + +#umount -a +#sync + +#sleep 1 + +#/usr/sbin/.poweroff + + diff --git a/vdn/tools/.Makefile.swp b/vdn/tools/.Makefile.swp new file mode 100644 index 0000000..238b42c Binary files /dev/null and b/vdn/tools/.Makefile.swp differ diff --git a/vdn/tools/Makefile b/vdn/tools/Makefile new file mode 100644 index 0000000..8bbca7c --- /dev/null +++ b/vdn/tools/Makefile @@ -0,0 +1,16 @@ + + +libnss_vdn.so : nss_vdn.o + $(CC) -O2 -Wall -Werror -Wpointer-arith -fPIC -shared -o libnss_vdn.so nss_vdn.o + +nss_vdn.o : nss_vdn.c + $(CC) -O2 -Wall -Werror -Wpointer-arith -fPIC -c nss_vdn.c + +install : libnss_vdn.so + cp libnss_vdn.so /lib/x86_64-linux-gnu/libnss_vdn.so.2.0.0 + ln -sf libnss_vdn.so.2.0.0 /lib/x86_64-linux-gnu/libnss_vdn.so.2 + +clean : + rm -f nss_vdn.o libnss_vdn.so + + diff --git a/vdn/tools/build-container.sh b/vdn/tools/build-container.sh new file mode 100755 index 0000000..2d992b2 --- /dev/null +++ b/vdn/tools/build-container.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +set -eu + +error=0 + +#DIST=buster +DIST=bullseye + +if [ -z "$(which podman)" ]; then + echo "Need podman (apt-get install podman)" >&2 + error=1 +fi + +if [ -z "$(which singularity)" ]; then + echo "Need singlarity :" >&2 + echo "apt-get -y install squashfs-tools cryptsetup-bin" + echo "wget https://github.com/sylabs/singularity/releases/download/v3.10.0/singularity-ce_3.10.0-focal_amd64.deb" >&2 + echo "dpkg -i singularity-ce_3.10.0-focal_amd64.deb" >&2 + error=1 +fi + + +echo +echo "===========================" +echo "Create debian:$DIST-slim podman container..." + + +podman --cgroup-manager=cgroupfs run --name vdn -v $HOME:/home/user:ro -p 2222:22 -d debian:$DIST-slim sleep 10d +# docker.io/library/debian/$DIST-slim + +echo +echo "===========================" +echo "Install vdn dependencies..." + +podman exec vdn /bin/bash /home/user/vdn-bullseye/tools/podman-exec-cmds.sh + +echo +echo "===========================" +echo "Export..." +ionice -c 3 nice -10 podman export --output=/tmp/podman-vdn-$DIST.tar vdn + +echo +echo "===========================" +echo "Import" +imgHash=$(podman import /tmp/podman-vdn-$DIST.tar | tail -n 1) + +echo +echo "===========================" +echo "Save..." +rm -f rm /tmp/podman-vdn-$DIST-save.tar +ionice -c 3 nice -10 podman save --output=/tmp/podman-vdn-$DIST-save.tar $imgHash + +echo +echo "===========================" +echo "Create sif image..." + +rm -f /tmp/vdn-$DIST.sif +ionice -c 3 nice -10 singularity build --fakeroot /tmp/vdn-$DIST.sif docker-archive:///tmp/podman-vdn-$DIST-save.tar + +rm -f /tmp/podman-vdn-$DIST-save.tar +podman rm -f vdn +podman image rm $imgHash + diff --git a/vdn/tools/compile-vte.sh b/vdn/tools/compile-vte.sh new file mode 100755 index 0000000..6e2fd64 --- /dev/null +++ b/vdn/tools/compile-vte.sh @@ -0,0 +1,95 @@ +#!/bin/bash + + +DIST=debian/buster # 06 Jul 2019 fin : 01 juin 2024 # cp: failed to preserve ownership for 'debian/ruby-gio2//usr/lib/ruby/vendor_ruby/gio2': Invalid argument +#DIST=debian/bullseye # 14 Aug 2021 fin : 15 Aug 2026 + +#DIST=ubuntu/bionic # 18.04 LTS fin : Avril 2023 # E: Unable to find a source package for ruby-gnome +#DIST=ubuntu/focal # 20.04 LTS fin : Avril 2025 +#DIST=ubuntu/jammy # 22.04 LTS din : Avril 2027 + +ID=$(echo $DIST|cut -d '/' -f 1) +VERSION_CODENAME=$(echo $DIST|cut -d '/' -f 2) + +case $ID in + debian) DEB_SRC=http://deb.debian.org/debian + DEB_SRC_SEC=http://ftp.fr.debian.org/debian/ + DEB_SRC_LIST=" + deb-src $DEB_SRC $VERSION_CODENAME main contrib non-free + deb-src $DEB_SRC_SEC $VERSION_CODENAME-updates main contrib non-free + " + ;; + ubuntu) DEB_SRC=http://archive.ubuntu.com/ubuntu + DEB_SRC_SEC=http://security.ubuntu.com/ubuntu/ + DEB_SRC_SEC_NAME= $VERSION_CODENAME-security + DEB_SRC_LIST=" + deb-src $DEB_SRC $VERSION_CODENAME main restricted universe + deb-src $DEB_SRC $VERSION_CODENAME-updates main restricted universe + deb-src $DEB_SRC_SEC $VERSION_CODENAME-security main restricted universe + " + ;; +esac + +CACHE=/tmp/vte/$DIST + +[ ! -d $CACHE ] && mkdir -p $CACHE + +echo "CACHE: $CACHE" + +cat << EOF > $CACHE/build.def +Bootstrap: docker +From: $ID:$VERSION_CODENAME + +%post + + echo "$DEB_SRC_LIST" >> /etc/apt/sources.list + + cat /etc/apt/sources.list + + export DEBIAN_FRONTEND=noninteractive + apt-get -y update + apt-get -y install dpkg-dev lsb-release + apt-get -y build-dep ruby-gnome2 + apt-get -y install libvte-dev + +%environment + export LC_ALL=C + +EOF + +set -x + +export SINGULARITY_CACHEDIR=$CACHE + +# (userns not supported by buil ! + +singularity build -F --fakeroot $CACHE/out.sif $CACHE/build.def + +cat << EOF > $CACHE/compile.sh +#!/bin/bash + +#set -e # +set -x + +rm -Rf $CACHE/tmp +mkdir -p $CACHE/tmp + +cd $CACHE/tmp + +apt-get source ruby-gtk2 +cd \$(find . -maxdepth 1 -type d -name 'ruby-gnome*') +dpkg-buildpackage -us -uc +cd vte +ruby extconf.rb +make + +EOF + +chmod 755 $CACHE/compile.sh + +singularity exec -u $CACHE/out.sif $CACHE/compile.sh + +VTE=$(find $CACHE/tmp -name 'vte.so') + +echo vte : $VTE + diff --git a/vdn/tools/create-singularity-distrib.sh b/vdn/tools/create-singularity-distrib.sh new file mode 100755 index 0000000..c7b370d --- /dev/null +++ b/vdn/tools/create-singularity-distrib.sh @@ -0,0 +1,67 @@ +#!/bin/bash + + +#DIST=debian/bullseye +DIST=ubuntu/jammy + +ID=$(echo $DIST|cut -d '/' -f 1) +VERSION_CODENAME=$(echo $DIST|cut -d '/' -f 2) + +ID=$(echo $DIST|cut -d '/' -f 1) +VERSION_CODENAME=$(echo $DIST|cut -d '/' -f 2) + +case $ID in + debian) DEB_SRC=http://deb.debian.org/debian + DEB_SRC_SEC=http://ftp.fr.debian.org/debian/ + DEB_SRC_LIST=" + deb-src $DEB_SRC $VERSION_CODENAME main contrib non-free + deb-src $DEB_SRC_SEC $VERSION_CODENAME-updates main contrib non-free + " + ;; + ubuntu) DEB_SRC=http://archive.ubuntu.com/ubuntu + DEB_SRC_SEC=http://security.ubuntu.com/ubuntu/ + DEB_SRC_SEC_NAME= $VERSION_CODENAME-security + DEB_SRC_LIST=" + deb-src $DEB_SRC $VERSION_CODENAME main restricted universe + deb-src $DEB_SRC $VERSION_CODENAME-updates main restricted universe + deb-src $DEB_SRC_SEC $VERSION_CODENAME-security main restricted universe + " + ;; +esac + +CACHE=/tmp/vte/$DIST + +[ ! -d $CACHE ] && mkdir -p $CACHE + +echo "CACHE: $CACHE" + +cat << EOF > $CACHE/build.def +Bootstrap: docker +From: $ID:$VERSION_CODENAME + +%post + echo "$DEB_SRC_LIST" >> /etc/apt/sources.list + + cat /etc/apt/sources.list + + export DEBIAN_FRONTEND=noninteractive + apt-get -y update + apt-get -y install lsb-release vim + +%environment + export LC_ALL=C + +EOF + +set -x + +export SINGULARITY_CACHEDIR=$CACHE + +# (userns not supported by buil ! + +singularity build -F --fakeroot $CACHE/out.sif $CACHE/build.def + +echo "out : $CACHE/out.sif" +echo "singularity exec --fakeroot --writable $CACHE/out.sif /bin/bash" + + diff --git a/vdn/tools/libnss_vdn.so b/vdn/tools/libnss_vdn.so new file mode 100755 index 0000000..2877889 Binary files /dev/null and b/vdn/tools/libnss_vdn.so differ diff --git a/vdn/tools/nss_vdn.c b/vdn/tools/nss_vdn.c new file mode 100644 index 0000000..8e6823a --- /dev/null +++ b/vdn/tools/nss_vdn.c @@ -0,0 +1,117 @@ +#include +#include +#include +#include +#include + +#include +#include +extern int h_errno; + +#include + +#define ALIGN(idx) { \ + if (idx % sizeof(void*)) \ + idx += (sizeof(void*) - idx % sizeof(void*)); /* Align on 32 bit boundary */ \ +} + + +enum nss_status _nss_vdn_gethostbyname2_r( + const char *name, + int af, + struct hostent * result, + char *buffer, + size_t buflen, + int *errnop, + int *h_errnop) +{ + //fprintf(stderr, "vdn_gethostbyname2_r : %s\n", name); + + FILE *fp; + char line[80]; + int s; + + size_t idx=0; + + if(af != AF_INET) { + *errnop = EAFNOSUPPORT; + *h_errnop = HOST_NOT_FOUND; + return NSS_STATUS_UNAVAIL; + } + + char cmd[200]="/etc/vdn/allocators/resolv"; + + if (access(cmd, F_OK) != 0) + strcpy(cmd, "/home/davalan/vdn-bullseye/allocators/resolv"); + + if (access(cmd, F_OK) != 0) { + perror("access"); + *errnop = EAFNOSUPPORT; + *h_errnop = HOST_NOT_FOUND; + return NSS_STATUS_UNAVAIL; + } + + strcat(cmd, " "); + strcat(cmd, name); + if((fp = popen(cmd , "r")) == NULL) { + perror("open"); + exit(1); + } + + if(fgets(line, sizeof line, fp) == NULL) { + *errnop = EAFNOSUPPORT; + *h_errnop = HOST_NOT_FOUND; + return NSS_STATUS_UNAVAIL; + } + + line[strlen(line)-1]=0; + + //fprintf(stderr,"line:%s\n", line); + + pclose(fp); + + //char *bufStart=buffer; + + strcpy(buffer+idx, name); + result->h_name=buffer; + + idx+=strlen(name)+1; + ALIGN(idx); + + result->h_addrtype=AF_INET; + result->h_length=4; + + //fprintf(stderr, "name ok\n"); + + s = inet_pton(AF_INET, line, buffer+idx); + if (s <= 0) { + if (s == 0) { + *errnop = EAFNOSUPPORT; + *h_errnop = HOST_NOT_FOUND; + return NSS_STATUS_UNAVAIL; + } + else { + perror("inet_pton"); + exit(1); + } + } + + result->h_addr_list=(char **)buffer+idx; + + result->h_addr_list[0]=buffer+idx; + result->h_addr_list[1]=NULL; + + idx+=2*sizeof(char *); + + result->h_aliases=(char **)buffer+idx; + + result->h_aliases[0]=NULL; + + *errnop = 0; + *h_errnop = 0; + + return NSS_STATUS_SUCCESS; +} + + + diff --git a/vdn/tools/nss_vdn.o b/vdn/tools/nss_vdn.o new file mode 100644 index 0000000..0143e07 Binary files /dev/null and b/vdn/tools/nss_vdn.o differ diff --git a/vdn/tools/podman-exec-cmds.sh b/vdn/tools/podman-exec-cmds.sh new file mode 100644 index 0000000..29791a2 --- /dev/null +++ b/vdn/tools/podman-exec-cmds.sh @@ -0,0 +1,23 @@ +#/bin/bash + +DIST=vdn-bullseye + +apt-get update --allow-releaseinfo-change +apt-get -y upgrade +apt-get -y install kmod ssh vim less wget x11-apps locales + +#echo "PermitRootLogin yes" >> /etc/ssh/sshd_config + +#adduser --disabled-password --gecos "" test +#echo 'test:iut*' | chpasswd + +sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen +sed -i -e 's/# fr_FR.UTF-8 UTF-8/fr_FR.UTF-8 UTF-8/' /etc/locale.gen +dpkg-reconfigure --frontend=noninteractive locales +update-locale LANG=fr_FR.UTF-8 + +/home/user/$DIST/bin/vdn-prepare -f + +rm -f /root/.bash_history +apt-get clean + diff --git a/vdn/tools/vdn-bootstrap b/vdn/tools/vdn-bootstrap new file mode 100755 index 0000000..95b1e9c --- /dev/null +++ b/vdn/tools/vdn-bootstrap @@ -0,0 +1,346 @@ +#!/bin/bash + +set -eu + + +distId() { + echo $1 |cut -d '/' -f 1 +} + +dist2codename() { + echo $1 |cut -d '/' -f 2 +} + +dist2filename() { + local id=$(distId $1) + local codename=$(dist2codename $1) + + id=$(echo -n $id | cut -c 1 | tr '[[:lower:]]' '[[:upper:]]'; echo $id | cut -c 2-) + codename=$(echo -n $codename | cut -c 1 | tr '[[:lower:]]' '[[:upper:]]'; echo $codename | cut -c 2-) + + echo $id$codename | tr -d ' ' +} + +FILENAME=$(dist2filename $DIST) + +set -x +SCRIPT_BASE=~/vdn-bullseye/files/$FILENAME-base.sh +IMG_NAME=~/vdn-bullseye/files/$FILENAME-base.disk + +exit 0 + + +cat << EOF > /tmp/bootstrap/config + +ROOT_PASSWD='iut*' +TEST_PASSWD='iut*' + + +ID=\$(echo \$DIST|cut -d '/' -f 1) +VERSION_CODENAME=\$(echo \$DIST|cut -d '/' -f 2) + + +KVERS=$(uname -r) +EOF + +set -a +. /tmp/bootstrap/config +set +a + +error() { + echo $@ >&2 + exit 1 +} + + +link() { + ls -l $1 | cut -d '>' -f 2- | cut -d ' ' -f 2 +} + +injectFileAndLink() { + local b=$(basename $1) + local d=$(dirname $1) + local l + + #echo "--> $1" + + [ ! -d $DST/$d ] && mkdir -p $DST/$d + [ ! -e $DST/$1 ] && { + #echo "cp $1 $DST/$1" + cp -a $1 $DST/$1 + } + + + if [ -L $1 ]; then + l=$(link $1) + + # Absolute link + if ! echo $l | grep -q '^/'; then + l=$d/$l + fi + + injectFileAndLink $l + fi +} + +injectDepends() { + + local b d l ld + + #echo "deps : $1" + + ! file $1 | grep -q 'dynamically linked' && return + + # Dynmamic linker + + l=$(ldd $1 | grep -v '=>' | grep ld-linux | sed -re 's/^[[:space:]]*//' | cut -d ' ' -f 1) + + #echo " $l" + + injectFileAndLink $l + + # Libraries + + for l in $(ldd $1 | grep '=>' | cut -d '>' -f 2 | cut -d ' ' -f 2); do + #echo " -> $l" + injectFileAndLink $l + done +} + +injectCommandWithDepends() { + local f=$1 + + if ! echo $1 | grep -q '/'; then + f=$(whereis -b -B $SEARCH_DIRS -f $1 | cut -d ' ' -f 2) + fi + + echo "*** $f" + + [ -z "$f" ] && error "Command $f not found in $SEARCH_DIRS !" + + injectFileAndLink $f + injectDepends $f + + if [ -L $f ]; then + f=$(link $f) + injectCommandWithDepends $f + fi +} + + + +[ -n "$KVERS" ] || { error "KVERS is empty !?! "; } + +LOCAL_KERNEL=$(ls /boot/vmlinuz*$KVERS | head -n 1) + +[ -n "$LOCAL_KERNEL" ] || { error "No kernel found in /boot for $KVERS"; } + +LOCAL_INITRD=$(ls /boot/initrd*$KVERS | head -n 1) + +[ -n "$LOCAL_INITRD" ] || { error "No initrd found in /boot for $KVERS"; } + +FORMAT=$(file $LOCAL_INITRD) +case "$FORMAT" in + *cpio*) FORMAT=asciCpio;; + *Zstandard*) FORMAT=zStandard;; + *) echo "Unknown initrd format ($FORMAT)" >&2 + exit 1 +esac + +if [ $FORMAT = zStandard ]; then + if [ -z "$(which zstdcat)" ]; then + echo "zstdcat not found ! Need zstd package !" >&2 + exit 1 + fi + + if [ -z "$(which zstd)" ]; then + echo "zstd not found ! Need zstd package !" >&2 + exit 1 + fi +fi + +[ ! -d /tmp/bootstrap/initrd ] && mkdir -p /tmp/bootstrap/initrd +cd /tmp/bootstrap + +if [ ! -e /tmp/bootstrap/initrd/init ]; then + echo "Extract $LOCAL_INITRD..." + case $FORMAT in + asciCpio) ( cd initrd && zcat $LOCAL_INITRD | cpio -idm > /dev/null);; + zStandard) ( cd initrd && zstdcat $LOCAL_INITRD | cpio -idm > /dev/null ) + esac +fi + +[ -e /tmp/bootstrap/initrd/init.bak ] || cp /tmp/bootstrap/initrd/init /tmp/bootstrap/initrd/init.bak + + +DST=/tmp/bootstrap/initrd + +#rm -f $DST/bin/busybox $DST/usr/bin/busybox + +#apt-get download haveged +#dpkg -x haveged*.deb initrd + +#apt-get download libhavege2 +#dpkg -x libhavege2*.deb initrd + +apt-get download busybox +dpkg -x busybox_*.deb initrd + +apt-get download debootstrap +dpkg -x debootstrap*.deb initrd + +apt-get download file +dpkg -x file*.deb initrd + +apt-get download libmagic-mgc +dpkg -x libmagic-mgc*.deb initrd + +#apt-get download haveged +#dpkg -x haveged*.deb initrd + +set +x + +#[ ! -d initrd/sbin ] && mkdir initrd/sbin + +cat << EOF > /tmp/bootstrap/initrd/init +#!/bin/busybox ash + +EOF + +set +u +[ -n "$http_proxy" ] && echo "export http_proxy=$http_proxy" >> /tmp/bootstrap/initrd/init +[ -n "$https_proxy" ] && echo "export https_proxy=$https_proxy" >> /tmp/bootstrap/initrd/init +set -u + +cat << EOF >> /tmp/bootstrap/initrd/init + +set -a +. /config +set +a + +[ -d /dev ] || mkdir -m 0755 /dev +[ -d /proc ] || mkdir /proc +[ -d /sys ] || mkdir /sys + +mkdir -p /var/lock +mount -t sysfs -o nodev,noexec,nosuid sysfs /sys +mount -t proc -o nodev,noexec,nosuid proc /proc + +mkdir /dev/pts +mount -t devpts -o noexec,nosuid,gid=5,mode=0620 devpts /dev/pts + +modprobe virtio_pci +modprobe virtio_blk +modprobe ext4 +modprobe crc32c + +modprobe virtio-net + +mdev -s + +if ! fdisk -l /dev/vda | grep -q /dev/vda1; then + echo -e "n\np\n1\n\n\nw\n" | fdisk /dev/vda + mdev -s + /bin/mke2fs -j -t ext4 /dev/vda1 +fi + +mkdir -p /tmp/d +mount /dev/vda1 /tmp/d || { + echo "Can't mount partition !" >&2 + echo "Repair + exit to continue or poweroff -f to halt !" + /bin/busybox ash +} + +ifconfig eth0 10.0.2.15 +route add default gw 10.0.2.2 + +ln -sf /bin/bash /bin/sh + +#/usr/sbin/haveged + +if [ ! -d /tmp/d/bin ]; then + echo "Debootstrap $VERSION_CODENAME ..." + debootstrap --arch=amd64 $VERSION_CODENAME /tmp/d +fi + +mount -o bind /dev /tmp/d/dev +mount -t devpts -o noexec,nosuid,gid=5,mode=0620 devpts /tmp/d/dev/pts +mount -o bind /proc /tmp/d/proc +mount -o bind /sys /tmp/d/sys + +cp /config /tmp/d/root/config +cp /base.sh /tmp/d/root/base.sh + +chroot /tmp/d /root/base.sh + +#echo "In chroot exit to quit" +#chroot /tmp/d /bin/bash + + +#/bin/busybox ash + +poweroff -f + +EOF + +chmod 755 /tmp/bootstrap/initrd/init + +echo "Inject files and program with depends..." + +[ ! -d $DST/bin ] && mkdir $DST/bin + +injectCommandWithDepends /bin/bash +injectCommandWithDepends /sbin/modprobe +injectCommandWithDepends /sbin/fdisk +injectCommandWithDepends /sbin/mke2fs +injectCommandWithDepends /usr/bin/gpgv +injectCommandWithDepends /usr/bin/perl + +#injectCommandWithDepends /usr/bin/file +#injectCommandWithDepends /usr/bin/ldd +#injectCommandWithDepends /usr/bin/strace +#injectCommandWithDepends /usr/bin/script + +injectFileAndLink /lib/x86_64-linux-gnu/libresolv.so.2 +injectFileAndLink /lib/x86_64-linux-gnu/libnss_files.so.2 +injectFileAndLink /lib/x86_64-linux-gnu/libnss_dns.so.2 +#injectFileAndLink /usr/lib/x86_64-linux-gnu/libidn2.so + +cp /sbin/mke2fs $DST/bin/mke2fs +#injectCommandWithDepends /bin/grep +#mv $DST/usr/bin/grep $DST/bin/grep + +injectCommandWithDepends /usr/bin/perl +#injectCommandWithDepends /usr/bin/wget +#cp /usr/bin/wget $DST/bin + +mkdir -p $DST/usr/share/keyrings +cp /usr/share/keyrings/debian-archive-keyring.gpg $DST/usr/share/keyrings + +cp /etc/resolv.conf $DST/etc/resolv.conf +cp /tmp/bootstrap/config $DST +cp $SCRIPT_BASE $DST/base.sh + +# Build /tmp/bootstrap/initrd.img + +if [ ! -e /tmp/bootstrap/initrd.img ]; then + echo "Create /tmp/bootstrap/initrd.img..." + case $FORMAT in + asciCpio) ( cd initrd && find . | cpio -o -H newc -R root:root | gzip -9 > /tmp/bootstrap/initrd.img);; + zStandard) ( cd initrd && find . | cpio -o -H newc -R root:root | zstd -9 > /tmp/bootstrap/initrd.img );; + esac +fi + +[ ! -e $DISK ] && { + echo "Create sparse disk ($SIZE G)..." + dd of=$DISK count=0 bs=1G seek=$SIZE +} + +qemu-system-x86_64 -kernel $LOCAL_KERNEL -smp 8 -enable-kvm -cpu host -device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -rtc base=localtime -m 3072M -serial mon:stdio -monitor null -nographic -initrd /tmp/bootstrap/initrd.img -append "root=/dev/vda boot=live ro console=ttyS0,115200n8 net.ifnames=0 noresume" -boot order=c -drive file=$DISK,if=virtio,format=raw -device virtio-net-pci,netdev=n0,mac=52:56:0A:E8:00:02 -netdev user,id=n0 + + +exit 0 + + +#qemu-system-x86_64 -smp 8 -enable-kvm -cpu host -device virtio-rng-pci,rng=rng0 -object rng-random,filename=/dev/urandom,id=rng0 -pidfile /tmp/vdn-davalan/vdn-tiny-davalan-pid -rtc base=localtime -m 2048M -serial mon:stdio -monitor null -vnc unix:/tmp/vdn-davalan/vdn-vnc-davalan-tiny-socket -spice unix,disable-ticketing,addr=/tmp/vdn-davalan/vdn-spice-davalan-tiny-socket -device virtio-serial -chardev spicevmc,id=vdagent,debug=0,name=vdagent -device virtserialport,chardev=vdagent,name=com.redhat.spice.0 -initrd /home/davalan/vdn-bullseye/files/initrd-tgz.img-5.10.0-15-amd64 -kernel /home/davalan/vdn-bullseye/files/vmlinuz-5.10.0-15-amd64 -append root=/dev/vda1 ro console=ttyS0,115200n8 vdn-emulator=kvm vdn-mode=tgz net.ifnames=0 noresume -boot order=c -drive file=/home/davalan/vdn-bullseye/files/DebianBullseye-amd64.disk,if=virtio,snapshot=on,format=raw -drive file=/home/scratch/davalan/vdn-save/demo-bullseye/tiny.tgz,if=virtio,media=disk,format=raw -drive file=/tmp/vdn-davalan/vdn-tiny-davalan-part,if=virtio,media=disk,format=raw -drive file=/tmp/vdn-davalan/vdn-tiny-davalan-swap,if=virtio,media=disk,format=raw -drive file=/tmp/vdn-davalan/vdn-tiny-davalan-config.tgz,if=virtio,media=disk,format=raw -device virtio-net-pci,mac=52:56:0A:E8:00:00 -nic none -device virtio-net-pci,netdev=n2,mac=52:56:0A:E8:00:01 -netdev socket,id=n2,mcast=234.0.10.232:9810 -device virtio-net-pci,netdev=n0,mac=52:56:0A:E8:00:02 -netdev user,id=n0,hostfwd=tcp::5022-:22 + diff --git a/vdn/vdn-restore-extra-eth b/vdn/vdn-restore-extra-eth new file mode 100755 index 0000000..8ac2f81 --- /dev/null +++ b/vdn/vdn-restore-extra-eth @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + +set -eu + +VAR="" + +synopsis() { + cat << EOF +Usage : `basename $0` [-h] system +EOF +} + +help() { + cat << EOF + +`basename $0` restaure l'état de l'interface supplémentaire utilisée pour +joindre la machine virtuelle (précisée en argument). + +Exemple : `basename $0` bigboss + +`synopsis` + +-h : affiche cette aide + +EOF +} + +usage() { + synopsis + exit 1 +} + +args() { + local opt + while getopts "h" opt; do + case $opt in + h) help; exit 0;; + ?) usage;; + esac + done + shift $(($OPTIND - 1)) + + [ $# -ne 1 ] && usage + + GUEST_NAME="$1" +} + + +# Programme principal + +VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh + +args "$@" + +setGuestVars $GUEST_NAME + +GUEST_OWNER=$USER + +loadGuestVars $GUEST_NAME + +vdn-infos $GUEST_NAME GUEST_NAME > /dev/null || exit 1 + +if ! $VDN_PATH/bin/vdn-alive $GUEST_NAME; then + error "Le système $GUEST_NAME n'est pas démarré !" +fi + + +[ ! -e $TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-serial ] && \ + error "$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-serial not found !" + +echo "ok" + + +CMD=" +stty -echo +PS1= +ls /tmp +iptables -F +iptables -F -t nat +iptables -L +iptables -L -t nat +eth=\$(ip a | egrep '^[0-9]+:' | sed -re 's/^.*(eth[0-9]+).*$/\1/' | tail -n 1) +echo eth=\$eth +ip a flush \$eth +dhclient \$eth +ip a show dev \$eth +ip a show dev \$eth | grep -q 10.0.2.15 && echo ok || echo ERROR +" + +#echo socat STDIO UNIX-CLIENT:$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-serial +(echo "$CMD"; sleep 1) | socat STDIO UNIX-CLIENT:$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-serial +echo +#echo "$CMD" | socat STDIO UNIX-CLIENT:$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-serial +#socat STDIO UNIX-CLIENT:$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-serial + +#cat << EOF | socat STDIO UNIX-CLIENT:$TMPDIR/vdn-$GUEST_NAME-$GUEST_OWNER-serial +#ip a | egrep '^[0-9]+:' | sed -re 's/^.*(eth[0-9]+).*$/\1/' | tail -n 1" +#EOF +