mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 05:34:43 +02:00
feat(wireguard): accès distant au lab via VPN (Freebox 51820/udp → s01) (#80)
- rôle wireguard : serveur wg0 (10.99.0.0/24) sur storage-01, profils clients générés dans /etc/wireguard/clients/ (fichier .conf / QR code) - gateway : filtrage nftables par pair — full (tout le lab) / portal (uniquement Traefik :80 = portail Guacamole), masquerade VPN→cluster - dnsmasq : bind-dynamic + écoute wg0 → *.lab.local résolu dans le tunnel - pairs initiaux : alkatrazz (full), invite-01 (portal) - vault : clés WireGuard + reprise de l'archive Authentik (remplace #78) - doc : admin/infra/wireguard.md (onboarding pair, pièges, exploitation) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
fbec998c21
commit
bc0e1dd53e
13 changed files with 388 additions and 123 deletions
|
|
@ -1,116 +1,132 @@
|
|||
$ANSIBLE_VAULT;1.1;AES256
|
||||
32353433343965616431373735656533323231313361613937653238333164336532383532316331
|
||||
6636336366313261653939643865616438303635303535340a623366373631383031316365643366
|
||||
61323261373836313736393664343833643238353264623766643837313061353861386165653734
|
||||
3865623234343735350a613839316637663837666265326235373662613263393361343636313664
|
||||
30656463656264643363653031363030313365663039303062303361393734663262363663353761
|
||||
66393364643038376433383561303138663963303361323036656366316264356135366430623964
|
||||
32383835613662376561313239343261623431363439313731396264386666383565333230383135
|
||||
65383262353836396464326231383237363366303363363363366434356265383064306665353738
|
||||
30313964613131323334313563346634366461363330343564643938616164663835616531363338
|
||||
64626461333135313035383839323135643938383137636433393732613836636139356163356461
|
||||
30653937363835363165656364653363363630303130623339343334323737616662656133626136
|
||||
34346338336539663864393833626639626664366234663437393038326163353238383738666231
|
||||
64623830323062386133346639386434343334333866613532643266656364336466626465333135
|
||||
39613130656561333961303261636535636236326461393736653139643435366137373532646265
|
||||
38643839623137373931323438626533656431336438663730366461373761343537353566313734
|
||||
61636537613864646238333037613331323135333261383964343131623462663863613866313864
|
||||
66646239656431663935323938383932313965326162643839613861386231356633363730383030
|
||||
37393330653739663764653862383361643038666364336639626436626336383835613939643130
|
||||
38636364653839336461636534336265393436316134623062326166326433323264613939653161
|
||||
36363139343730663266636666353832636432373139636537323561633037666563323636343630
|
||||
63333838346562336131373436663262653934633838363739653161376264396533396630366661
|
||||
33383962363165326133303539393236303336333534333938623638643238326465653137353434
|
||||
63663461333463333539623762323930393263383030313761633232666236613531633635616232
|
||||
38656637333762633731613936633730623063353163366330323762666430386233356236303931
|
||||
63323330353532373531386466343930656537343336393739626562613664623635333930373632
|
||||
31613563366336323432363134613461636464623264616262346165383536366331396436356531
|
||||
62613438373265376630366261613432323764643633303962333730313762646638333636613931
|
||||
35376636633536623335623962346564363832396464306631383632363931356562663231316335
|
||||
63326339363766396235653466626536396361393663633865396335306531626139323832346561
|
||||
36393461633630353437613538666162323665656565636538633165623965613766303838376661
|
||||
64393662306463393366646133373236386562626631383633633131373032363037626662346536
|
||||
34646435626265366233623065326336376633613035396333363537303430386634326564343531
|
||||
33333261633531363339343730383266353337383734303236363339363463353462376531346533
|
||||
39623762316537613432363964626564323532626661393930386236316466383133376535656631
|
||||
32326237376136306465656165626265303266393333316262656366373539626536646531643361
|
||||
33633835666364616534323630306438663535626661643036323436613264393530336661646537
|
||||
66346533636138333331343066383866643335663635346664373639343035373136636163326163
|
||||
30306532636136303464313865336132356134346232386661656263366662346436336665396234
|
||||
38386362376661396139636164646639393434306135363138343163316161623239623737646435
|
||||
33383634386333616530333735313539333038653836656235633364613131326562363034353539
|
||||
35393263653065363162653334353733633437323137303634353132363561383461316362643630
|
||||
39616239353464613037663763386237623737383561646435343338373433316138623136653232
|
||||
34333162313436373034323339653866353833393831353563303763343832363966356437653435
|
||||
36363734393132623638613463323234653836383263646337633530653432613366306163393163
|
||||
38663237376264353237636335376363343162353331326333396539356436656330326231656632
|
||||
32633330303566623666303037396531356238333730653534636533623536396663343032626335
|
||||
66616331303833393037653166313939386230303232376538666434336234333937383262306232
|
||||
37343931363038356134356138653662353865633265656237616635633637326264633936396237
|
||||
62316534656336333464303939393835653934343339336663366433613165663864643235323563
|
||||
32396530636331383438353464623737656336363062306661303234376332653437653739396466
|
||||
33623866363763633066373764623561363133623164366233313737336564653339396331323765
|
||||
33323832643065396261373466613062313862613233616165336565366433633439373163323533
|
||||
65376633343335643932356634646361643531353239333835623331643737663964343433663165
|
||||
37623238623763306332633366613464633333343734363564396566363566363436373231613562
|
||||
36326363653538613936343233633963336266313431663739653331353734373065303933316264
|
||||
35613664393963316261333039623164356139316530333132353036313735653539333063336330
|
||||
36646562626437333434393631343932313062366136646638343765313831633532386164343463
|
||||
31646134343266623334343965613233383365333738393864326464356332626433663435323836
|
||||
66386334653538306432663439616337356361643361373766303239666231303438353539313065
|
||||
32343433626134626533303066363236616438326135643665336239343038643234633831313437
|
||||
39343332666666323836306437643538663832613432356463336230643538656538346137346264
|
||||
62633666636237633537393533356437623764366134343866613561656631366232373037636161
|
||||
61663231303364636532663531656338316336613263323532386561366533636638363265326136
|
||||
64303332396638643332643530343562383165373066333032643034626439643338663466383466
|
||||
37373431363564313966316562323539303331636664386265653664613064623866613763636566
|
||||
64666138396137616165616166643162353464313165366632303531643734386466346531396538
|
||||
32363731633538373930316566316162313664353964666664306139306435313165386534643063
|
||||
66393362363462383335613437623765363533393539336161313931666637393734663435393533
|
||||
35313561636161633639643663393265343739633661353635343066393938623966613264626333
|
||||
64613131633264663831303931643031663532646532343664646434656161356163623737346465
|
||||
33333832613335306334363131376665323434326634323137623839626633343531663138613062
|
||||
33343832363837353262303536393266376137346434656363363433613066376561313732303235
|
||||
35333732363335376561333938623561373766323132656430376265356533353339633032306130
|
||||
35643836623362363935633630636139663464356261623638663934323861313738336162353665
|
||||
36383663316532353833323034313834363531346564383465313935333966333464636236666330
|
||||
62346237663830653339303264646532313438376363353031313234393462636135393133393563
|
||||
34633064393836663234366436353937373030643439306339633235396635353138623531633465
|
||||
33636632306662373536346137366562633630623235656566316130613336363839353832393736
|
||||
39373135663863353735636365353036633832383932346433356439376334646263353230613061
|
||||
64663338323561376238626465333338303162616638633238663238396633393432386530623136
|
||||
62343230333839323361663133306334633931633963633263613134396366666430613736306265
|
||||
62643031306537366564303561373039326362646332373137386130346430363166616434353834
|
||||
34653462613933623934303461363434326165353537333733343565366634663830306634396136
|
||||
66633562633565353932323634333532616432343330343237333262326139303863636164306630
|
||||
34306335616339353735306331316463646131633335663833643364333362336562396164366133
|
||||
38363866656632643932363236613337333430326335303031646137663066303733396137663430
|
||||
35386665613531376533393530363036616337323165363761623037666464333439333633623038
|
||||
30623738353334373165636434663939663231623961616532616230613535316564316633646236
|
||||
30363164333634626631656337343933633965313839363932623936363464656137663033306363
|
||||
38373561313939623761623935626337346261373534373264306530363930646530386338626238
|
||||
32353634393966326133613534386436343937653662386333383931376330363631623565303336
|
||||
62346265373031396666316435316339393035353663316537343832356364353232346366363932
|
||||
62313762323232663433333233303335363139353461356465373862336266616137663036343539
|
||||
66313838633834363031303662343633376264653163343966373530663439656631313264313538
|
||||
63343037353965323862383563313933636264323237373335616565343031623438613836333634
|
||||
61646562646336303165353238333630623434653665656562333831393933336537616530623866
|
||||
30656463633064306363653561656166663335626664396535303333623363623237336661626432
|
||||
31663330336133353165353762663832323131656133383339336431326261306633363036313465
|
||||
63643230323330323565643237316139636232363963373330636539643130383162353366663164
|
||||
61653964383864316463653331303531616330363132333034363235613536623931373930613965
|
||||
36343131336132333736373232616561343238303833383765616661666130663162323564336162
|
||||
33336564366130353733326535306331646633333039386261616535653164383630343539656536
|
||||
62396631383237353034653431353434343862383135323062353135656533656131656334616661
|
||||
32356561333436386263613530636262613165393561636561653933633937646663386631383863
|
||||
65343562343465613136636663633965396631366533633631393433643033656230353962323435
|
||||
34396562346465636439323436303536323762343435303932653966333239663438386330306563
|
||||
37623235323738313562623363323665326331316464343334623561383030336264316661666235
|
||||
36316166353361343066666233623031386665663135633761323937626638666165623766626463
|
||||
31306431303662343463383934353165666632343266373563363135646336666336383431656665
|
||||
64396465623034366636373164646564383165353131356132643538643835623630383433636539
|
||||
34383630633439323630306536343432306436623735326431663465373237356639666163643332
|
||||
35366362623364333963366265383964373236633037333636643133396533633637623261393839
|
||||
66373337646535323466393733383039626439396436326638393762643834363766336430623939
|
||||
33653065643934373133383736336430323262636161313136663838666638613865333162363432
|
||||
303430383964616464353434396331336437
|
||||
61306339643263663766346630346361326334356330616562393134366139663764623130646534
|
||||
3237353162366637656164663538393563643835623632630a653666363536393731656663636631
|
||||
32313834396237636632666565363934366230656233663430636331323637326133303036626231
|
||||
3562383638306337380a306635376533343431663833363537636139323862643838343731616236
|
||||
66663439636562656139353934323162336530373931383635356634353761623765613933366436
|
||||
62313364613736353639363339326334333131393934373932303665643938313338343238386665
|
||||
64333165306536386466333838613132303361303533386335343030393663396331623064303539
|
||||
61306235663032623066313861323837303638306532646639313637363534663231306231343761
|
||||
36636664383433613763313139383565346262323163393262383561663366386334333064656338
|
||||
35653232643430313635313964353234326465346435323530323639653361363061643966333666
|
||||
37303862653861343664333332346461626266623763633730316132306332393832626433663261
|
||||
33613664633839396662363162663030373936396534376334633364373236626233333965626236
|
||||
34326261636438643039376363666630366238396134613063633634623337663039643666336466
|
||||
33633264303566393765643564383539343933383334393130653964616265366630373863383332
|
||||
64633731353531363531346466343533373437393562636663613933646434633535316232313062
|
||||
64346231326538303733663631666634336230653861646561373362636139646663326661663637
|
||||
64356239343862366562666664373234353761343430343330366436366663386463346164636135
|
||||
63393862393562313232383836336536666361616332356131316438313861326365373163333635
|
||||
65353233333665623432343463623364643964306239616633353637316336633865623030646162
|
||||
39633965636661616431333739363036666536623439636139653962353630343435326639333630
|
||||
64356466613962343463653733653436336363383964336131623266323661396638613234346365
|
||||
35323464393137383862613564613264303135643736636438323935666633353737323062663266
|
||||
38353164303137353734356530643834386134623663383530363037346431663464646230616234
|
||||
38616235633739633939396634373539373634643235623265623533663563343932623636656431
|
||||
38363731333039363835343938326536363138653337366236646163636638623838363066323937
|
||||
37333037353937366531373763326637653839633037383237663132666262616364356335646638
|
||||
64663036353339353637626635343435303932336237383962393036653632316565666165326136
|
||||
37613566336363656264623730316465383835643361393631616638376463356435626662633334
|
||||
61653662333633313730626538333766363466626530303062616338313936656437303261316235
|
||||
38363764636632663936313730613738643930613562643664643963613930333132323364616166
|
||||
64356437613938313062343066326234666366323364393362616435616337643334343730616561
|
||||
30333332343935663833313933633631656336653166373034656461363561373434313465386637
|
||||
32613435316131383638366661326535303865643062323464393865343635333866313939396532
|
||||
39396638303462343162613233613834623635383064316635376331363139396536623362383435
|
||||
38323066666234623231383433386366326466653837633763396463373865616438666263393931
|
||||
63636531343133313930306464396530353765333038346564336165623161393964636337303930
|
||||
33373230653035353933633863653036626431316236633730633630373737303734353231316638
|
||||
38633536663265333766313636383835323636386434643939613436313038653838656335353731
|
||||
35643132613062303130653132366364646334616231376464383866363033333638346139663935
|
||||
39656337313638356462373631636135323135373963616566363866333230353736373662356564
|
||||
62373631346139303063633236623438373533353431646462396432383837646239373537643064
|
||||
37646138383234323638303932326632383161306333623437643363363736633763303439636562
|
||||
38336463376230616132333731616238323934623137333939613332313264373938613163393638
|
||||
36353864373630626464656435623633363331313538376533386566663333636164613063323534
|
||||
34366238656637376462623230383965363661653938653932663130666264666466373062393730
|
||||
64616531633464393335393931346266356365653037303432336632623762666638623338363963
|
||||
32646261363939623762363865333062346336346234363832303463366333333736653664336436
|
||||
37373965656334633933633630326139386438306535333938653734346133613165386664656530
|
||||
62613765396536343735613330313637653466663237653139623336663934383362626630646139
|
||||
65376135626330353262643536346236393531663531373439383363353631303065396538343837
|
||||
61656336633237393663653833376461353430363766373963376332383235626364323766633737
|
||||
61376564353537376236626436303738663530363865633331303433333539306433303662313966
|
||||
62663830333734383939643662336362393564393733326438356436343037626264636338653261
|
||||
32313837653566353364383635353534663765626333396561656134376338633834396135373030
|
||||
38383833633263636537656465323539373362393234366238316663353061353635353536643035
|
||||
63313964313634343564613763313936356430306637353564323734303230643932643733333762
|
||||
34653063653535666331373864643938643838623961383533386630323431363336613633346532
|
||||
37333439353538356264616630383431333238303637323235633966393066383331623465613037
|
||||
36376433376536313335306232326435626361336232653237336436323936323663646337306263
|
||||
61336261636566336563633633353833643763323132383865373039383765353232343066353566
|
||||
35626161626633646235343733363333626161316635643366346437326539396135356233383566
|
||||
36623464343966336434313934666263653030656135383766366636376161326633336435303661
|
||||
38306362623030346530376639343162626637656437646266333665643639336434356636633534
|
||||
36376337616161613130376132306630636230393264333261666235353438646433313633616431
|
||||
33653163313763323965323336666630373465646538396539303065623163313565663864343733
|
||||
38393438383632616665333332386432313465646230663566393139333761623336633136656436
|
||||
33376562636264376134383535386366326262656137646361306265613532343133396135333663
|
||||
61613462326662633038363537356137633131393736656338376539633831666331623963386361
|
||||
66396537356135333639323663336165663430356665323137653137666264616666366333313236
|
||||
38373337333833343866373537303366656235366534346262346666613137303534393836306366
|
||||
37323262343730336137653665343634363931303335333032646631643036633933326463353338
|
||||
31376638383564333639363238643863343665363637343161336435343165383738306264306435
|
||||
64306638376266613163613633366561393337613935316536323862376136396162643463393837
|
||||
34396338656564303966653434393733303935326636323562336531643266373762643039363664
|
||||
65623964336434616663643962303739623839313066626139623037333163666137376562613230
|
||||
32366132346139613232343039363263663965363730373334356363383336636561636363373061
|
||||
31333033306433623030636332626264363835626330383265343937353566343065666636306135
|
||||
36373033373066363666616636366130383130333964613039366238353633636661313233353330
|
||||
61663137616431303633393462386262636332656164383934623162643235616536356337303265
|
||||
66633235396431373336366364303165363261663132306432393931616463646130633437363132
|
||||
38343738303434633138383336366661393131386362613634653435373633663431636536373631
|
||||
66346465633365303934396233363030343633366566343334626230343361393139386464393735
|
||||
65663031323964663233363837643930643865356334653165356139633838356361613533363262
|
||||
32343861326437646363663834356330343132396161353764353330633865376464356462316432
|
||||
31343635323232636132303838333538343063643462316263376264323663323435636133623733
|
||||
33313034623566643138663136643735616563613865643731636465333537326464313266343262
|
||||
31306435306434373537646131316362333836633563653063633131623065393238366330396539
|
||||
34353638353732613237633238643032616538383939353061323561653065376365303538376562
|
||||
34636632626362326562356666373934333931333631636136376436653266656333626138343364
|
||||
62643066363066346133313362353962363134613239386334666433343265613262656463663862
|
||||
35313035643963353166383835353135633862633137373862663766363838306134623735333234
|
||||
36636435363765333230396337393239393065666261336335636436623164346237376237333133
|
||||
38396137616233396664613539646135373266363661626230613263343135663661653134386638
|
||||
64626666323762353937663562363434393961323562626230316266636630646331623136336164
|
||||
36653237663239373338303963353065356531636438643638323133366537663565393637333937
|
||||
62353835373964613066623137353631343035326466376362633764363733653335363730623138
|
||||
64343130653932393962383732623038623535353831666166313135316330386561333762363566
|
||||
62353337653331353561346461353261333635313533353932323631656362356135346539316239
|
||||
31386138646134396564366264346662313165303931663664393136386565656533313031373236
|
||||
38303736643133313464636435396632323938633430653462386236333163633064393339613635
|
||||
37373763663939663239356535306339303365643136326237636331386135623663636238376235
|
||||
39383732613538313362646430356166306465343264623432393535396132653737373262326630
|
||||
65313239386661633439346236353266653736303733306538623135663464333130396431656334
|
||||
38383534623763373134623162396333356235316639373935333339613437373135376463643036
|
||||
35316662393765386137353334393465633964363763663036626339356164366566356161663332
|
||||
38313466623337343361353932646137616465363763643033356439626132326264386364633839
|
||||
36653163383733366535643866313237386632383137386666666661326637626436346136373135
|
||||
63666466383836633334656133346137663961343939653433663463323732323762396139643137
|
||||
62363339346338316631663937353763343938333561333861353335366633326664653663376535
|
||||
33626337363466383833303162376334656266316662373666626630353365663037386131633363
|
||||
66393166643533396663303834353032666361636566646235643064373064396636663363363564
|
||||
37353662626166316132333066373537356166306138333538643465356238366363666434303833
|
||||
64366361626163323431396533623936346332393962636363643862363765366633623839343665
|
||||
65643935383631303138623939656634613334313331323362323037336436316465663961356261
|
||||
31306134643539323635663539396564393135376130373238663439333938306332663539646166
|
||||
32636238396134326134353636323030333864363263386162356364636331363766386338396638
|
||||
65353861643939376166633033346262623239383431643066383132356661313463333262303064
|
||||
63626264633961313062636362313030626164306434393165623064666266313130313931613237
|
||||
35303266623231376636366364383264396163613234393836333465306531643066363033323235
|
||||
62353730323266363364326437343335383566333532343538313434626263373061393461633933
|
||||
33343432313333303536373163393861643639383235303130386332353266626634343666613862
|
||||
30366662303931333932343236663736333965636436343633373435633361653139396232303437
|
||||
36313061333835613838353138666635396661333166663033306365633933313961323233623932
|
||||
64643130376364346337313838663935626661336137376663613236333262336466303866393663
|
||||
36653362396262363266343261633235323735363863343166306236633036633639343034616635
|
||||
63356463353365643063623736646664373031663936316664383338313764623935336662376364
|
||||
38376366663161626530393634336133663162383535353934363035626638626464643465373935
|
||||
61313334306665613334663733363537333336346164376131313231626566353566623462396636
|
||||
61346362396534353737613365623730333530626561316663396466353433353237366630393538
|
||||
31326132373664316665333336323134613736646561633064336333303932333432326264613830
|
||||
356635396330333132373432663432323238
|
||||
|
|
|
|||
|
|
@ -19,3 +19,15 @@ hermes_data_dir: /srv/data/hermes
|
|||
postgres_data_dir: /srv/data/postgres
|
||||
qdrant_data_dir: /srv/data/qdrant
|
||||
minio_data_dir: /srv/data/minio
|
||||
|
||||
# Pairs WireGuard (clés privées : vault_wireguard_peer_private_keys.<name>)
|
||||
# access: full = tout le lab (admin) | portal = portail Guacamole uniquement
|
||||
wireguard_peers:
|
||||
- name: alkatrazz
|
||||
ip: 10.99.0.10
|
||||
public_key: "uMlKJzEdnEyjUbY2m3RzJ+0/VWzshaHnug8MeDXFfFA="
|
||||
access: full
|
||||
- name: invite-01
|
||||
ip: 10.99.0.50
|
||||
public_key: "hMtM2Kn4ENhK1ENFUJQeNLwI1yy5V6o01HKi2zCUDA8="
|
||||
access: portal
|
||||
|
|
|
|||
|
|
@ -19,3 +19,4 @@
|
|||
- { role: hermes_auto_improve, tags: [hermes_auto_improve] }
|
||||
- { role: hermes_exec, tags: [hermes_exec] }
|
||||
- { role: console_user, tags: [console_user] }
|
||||
- { role: wireguard, tags: [wireguard] }
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
# Géré par Ansible — ne pas modifier manuellement
|
||||
|
||||
# Écoute uniquement sur le LAN cluster
|
||||
# Écoute sur le LAN cluster + tunnel WireGuard (DNS des clients VPN).
|
||||
# bind-dynamic (et non bind-interfaces) : wg0 peut apparaître après le démarrage
|
||||
interface={{ lan_interface }}
|
||||
bind-interfaces
|
||||
interface=wg0
|
||||
bind-dynamic
|
||||
|
||||
# Domaine local
|
||||
domain={{ dns_domain }}
|
||||
|
|
|
|||
|
|
@ -17,12 +17,15 @@ table inet filter {
|
|||
ip protocol icmp accept
|
||||
ip6 nexthdr icmpv6 accept
|
||||
|
||||
# SSH depuis le LAN domestique et le LAN cluster
|
||||
tcp dport 22 ip saddr { 192.168.1.0/24, 192.168.10.0/24 } accept
|
||||
# SSH depuis le LAN domestique, le LAN cluster et le tunnel WireGuard
|
||||
tcp dport 22 ip saddr { 192.168.1.0/24, 192.168.10.0/24, 10.99.0.0/24 } accept
|
||||
|
||||
# DNS + DHCP (dnsmasq)
|
||||
udp dport 53 ip saddr 192.168.10.0/24 accept
|
||||
tcp dport 53 ip saddr 192.168.10.0/24 accept
|
||||
# WireGuard — handshake/transport (Freebox 51820/udp → funk-s01)
|
||||
udp dport 51820 accept
|
||||
|
||||
# DNS + DHCP (dnsmasq) — cluster + clients VPN (dnsmasq écoute aussi sur wg0)
|
||||
udp dport 53 ip saddr { 192.168.10.0/24, 10.99.0.0/24 } accept
|
||||
tcp dport 53 ip saddr { 192.168.10.0/24, 10.99.0.0/24 } accept
|
||||
udp dport 67 iif {{ lan_interface }} accept
|
||||
|
||||
# NFS
|
||||
|
|
@ -73,6 +76,18 @@ table inet filter {
|
|||
# 7777 = jeu/API ; 8888 = reliable messaging TCP (1.1) — bloqué = kick à ~60 s
|
||||
ip daddr 192.168.10.20 tcp dport { 7777, 8888 } ct state new,established,related accept
|
||||
ip daddr 192.168.10.20 udp dport 7777 ct state new,established,related accept
|
||||
|
||||
# WireGuard → lab : filtrage par pair (host_vars wireguard_peers)
|
||||
{% for peer in wireguard_peers | selectattr('access', 'equalto', 'full') | list %}
|
||||
# {{ peer.name }} — accès complet
|
||||
iif "wg0" ip saddr {{ peer.ip }} ct state new,established,related accept
|
||||
{% endfor %}
|
||||
{% for peer in wireguard_peers | selectattr('access', 'equalto', 'portal') | list %}
|
||||
# {{ peer.name }} — portail Guacamole uniquement (Traefik)
|
||||
iif "wg0" ip saddr {{ peer.ip }} ip daddr 192.168.10.200 tcp dport 80 ct state new,established,related accept
|
||||
{% endfor %}
|
||||
# Retours vers le tunnel
|
||||
oif "wg0" ct state established,related accept
|
||||
}
|
||||
|
||||
chain output {
|
||||
|
|
@ -95,5 +110,9 @@ table ip nat {
|
|||
|
||||
# NAT masquerade pour le LAN cluster
|
||||
oif {{ wan_interface }} ip saddr 192.168.10.0/24 masquerade
|
||||
|
||||
# Clients VPN → LAN cluster : masquerade en IP s01 (retours garantis même si
|
||||
# un nœud ne route pas 10.99.0.0/24)
|
||||
oif {{ lan_interface }} ip saddr 10.99.0.0/24 masquerade
|
||||
}
|
||||
}
|
||||
|
|
|
|||
36
ansible/roles/wireguard/README.md
Normal file
36
ansible/roles/wireguard/README.md
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
# Rôle `wireguard`
|
||||
|
||||
Serveur **WireGuard** sur storage-01 : accès distant au lab (portail Guacamole, voire
|
||||
tout le LAN cluster) via `kaya.freeboxos.fr:51820/udp` (redirection Freebox → funk-s01).
|
||||
|
||||
## Variables
|
||||
|
||||
| Variable | Défaut | Rôle |
|
||||
|---|---|---|
|
||||
| `wireguard_port` | `51820` | Port UDP d'écoute (= redirection Freebox) |
|
||||
| `wireguard_subnet` / `wireguard_server_ip` | `10.99.0.0/24` / `10.99.0.1` | Réseau du tunnel |
|
||||
| `wireguard_endpoint` | `kaya.freeboxos.fr:51820` | Endpoint public côté clients |
|
||||
| `wireguard_client_allowed_ips` | `192.168.10.0/24, 10.99.0.0/24` | Split tunnel (lab uniquement) |
|
||||
| `wireguard_peers` | `[]` (host_vars) | Pairs : `{name, ip, public_key, access}` |
|
||||
|
||||
`access` : `full` (tout le lab — admin) ou `portal` (uniquement Traefik :80 → portail
|
||||
Guacamole). Le filtrage est fait **par nftables** (rôle `gateway`), pas par WireGuard.
|
||||
|
||||
Secrets vault : `vault_wireguard_server_private_key`,
|
||||
`vault_wireguard_peer_private_keys` (dict `name: clé`).
|
||||
|
||||
## Ajouter un pair
|
||||
|
||||
Procédure complète (clés openssl, vault, host_vars, QR code) :
|
||||
**`admin/infra/wireguard.md`**. Résumé : générer une paire X25519, clé privée dans le
|
||||
vault, entrée dans `wireguard_peers` (host_vars storage-01), ré-appliquer
|
||||
`--tags wireguard,gateway`, distribuer `/etc/wireguard/clients/<name>.conf`.
|
||||
|
||||
## Caveats
|
||||
|
||||
- Les profils clients dans `/etc/wireguard/clients/` contiennent la **clé privée du
|
||||
client** — à transmettre par canal raisonnable, jamais commités.
|
||||
- Le DNS du tunnel = dnsmasq s01 (`10.99.0.1`) : nécessite `bind-dynamic` + `interface=wg0`
|
||||
dans le rôle `dnsmasq`, et l'ouverture 53 depuis `10.99.0.0/24` dans `gateway`.
|
||||
- Retirer un pair : le supprimer de `wireguard_peers` + du vault → re-apply
|
||||
`--tags wireguard,gateway` (la règle nftables et le [Peer] disparaissent).
|
||||
23
ansible/roles/wireguard/defaults/main.yml
Normal file
23
ansible/roles/wireguard/defaults/main.yml
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
---
|
||||
wireguard_interface: wg0
|
||||
wireguard_port: 51820
|
||||
wireguard_subnet: 10.99.0.0/24
|
||||
wireguard_server_ip: 10.99.0.1
|
||||
wireguard_server_public_key: "NCneTVY6UlvaVY9L6dgP+w+w8pheQS30d08NHn9jBk8="
|
||||
# Clé privée serveur : vault_wireguard_server_private_key
|
||||
|
||||
# Endpoint public que les clients contactent (redirection Freebox 51820/udp → funk-s01)
|
||||
wireguard_endpoint: "kaya.freeboxos.fr:{{ wireguard_port }}"
|
||||
|
||||
# DNS poussé aux clients = dnsmasq de s01 (résout *.lab.local → Traefik)
|
||||
wireguard_client_dns: "{{ wireguard_server_ip }}"
|
||||
|
||||
# Split tunnel : seuls le LAN cluster et le tunnel passent dans le VPN,
|
||||
# le reste du trafic client sort par sa connexion normale
|
||||
wireguard_client_allowed_ips: "192.168.10.0/24, {{ wireguard_subnet }}"
|
||||
|
||||
# Pairs — définis dans host_vars/storage-01/vars.yml (clés privées dans le vault :
|
||||
# vault_wireguard_peer_private_keys.<name>). access :
|
||||
# full → tout le LAN cluster (admin)
|
||||
# portal → uniquement le portail web Guacamole (Traefik :80) — invités
|
||||
wireguard_peers: []
|
||||
5
ansible/roles/wireguard/handlers/main.yml
Normal file
5
ansible/roles/wireguard/handlers/main.yml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
- name: Restart wireguard
|
||||
ansible.builtin.systemd:
|
||||
name: "wg-quick@{{ wireguard_interface }}"
|
||||
state: restarted
|
||||
42
ansible/roles/wireguard/tasks/main.yml
Normal file
42
ansible/roles/wireguard/tasks/main.yml
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
---
|
||||
- name: Install wireguard-tools
|
||||
ansible.builtin.dnf:
|
||||
name: wireguard-tools
|
||||
state: present
|
||||
|
||||
- name: Deploy wg0 server config
|
||||
ansible.builtin.template:
|
||||
src: wg0.conf.j2
|
||||
dest: "/etc/wireguard/{{ wireguard_interface }}.conf"
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0600'
|
||||
notify: Restart wireguard
|
||||
|
||||
- name: Create clients config directory
|
||||
ansible.builtin.file:
|
||||
path: /etc/wireguard/clients
|
||||
state: directory
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0700'
|
||||
|
||||
# Profils clients prêts à distribuer (fichier .conf à envoyer / QR code —
|
||||
# voir admin/infra/wireguard.md)
|
||||
- name: Generate client configs
|
||||
ansible.builtin.template:
|
||||
src: client.conf.j2
|
||||
dest: "/etc/wireguard/clients/{{ item.name }}.conf"
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0600'
|
||||
loop: "{{ wireguard_peers }}"
|
||||
loop_control:
|
||||
label: "{{ item.name }}"
|
||||
no_log: true
|
||||
|
||||
- name: Enable and start wg-quick
|
||||
ansible.builtin.systemd:
|
||||
name: "wg-quick@{{ wireguard_interface }}"
|
||||
enabled: true
|
||||
state: started
|
||||
11
ansible/roles/wireguard/templates/client.conf.j2
Normal file
11
ansible/roles/wireguard/templates/client.conf.j2
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# Profil WireGuard « {{ item.name }} » — accès {{ item.access }} au lab Funk
|
||||
[Interface]
|
||||
PrivateKey = {{ vault_wireguard_peer_private_keys[item.name] }}
|
||||
Address = {{ item.ip }}/32
|
||||
DNS = {{ wireguard_client_dns }}
|
||||
|
||||
[Peer]
|
||||
PublicKey = {{ wireguard_server_public_key }}
|
||||
Endpoint = {{ wireguard_endpoint }}
|
||||
AllowedIPs = {{ wireguard_client_allowed_ips }}
|
||||
PersistentKeepalive = 25
|
||||
13
ansible/roles/wireguard/templates/wg0.conf.j2
Normal file
13
ansible/roles/wireguard/templates/wg0.conf.j2
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# Géré par Ansible — ne pas modifier manuellement
|
||||
[Interface]
|
||||
Address = {{ wireguard_server_ip }}/{{ wireguard_subnet.split('/')[1] }}
|
||||
ListenPort = {{ wireguard_port }}
|
||||
PrivateKey = {{ vault_wireguard_server_private_key }}
|
||||
|
||||
{% for peer in wireguard_peers %}
|
||||
# {{ peer.name }} — accès {{ peer.access }}
|
||||
[Peer]
|
||||
PublicKey = {{ peer.public_key }}
|
||||
AllowedIPs = {{ peer.ip }}/32
|
||||
|
||||
{% endfor %}
|
||||
Loading…
Add table
Add a link
Reference in a new issue