From 9f5aa03fe9bef0b2893cb18100a6efdecb8cdd3f Mon Sep 17 00:00:00 2001 From: Philip Sargent Date: Thu, 30 Mar 2023 03:18:37 +0100 Subject: [PATCH] More hut netconfig --- documents/favicon.ico | Bin 0 -> 1150 bytes favicon.ico | Bin 1150 -> 15406 bytes handbook/computing/WR841N.jpg | Bin 0 -> 19010 bytes handbook/computing/copy-of-dnsmasq.conf | 564 ++++++++++++++++++++++++ handbook/computing/netconfig.html | 139 ++++-- handbook/l/hut-cables.html | 1 + 6 files changed, 667 insertions(+), 37 deletions(-) create mode 100644 documents/favicon.ico create mode 100644 handbook/computing/WR841N.jpg create mode 100644 handbook/computing/copy-of-dnsmasq.conf diff --git a/documents/favicon.ico b/documents/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ef8ffbf78a4d8b40813c23eff3961f30fe2df7fe GIT binary patch literal 1150 zcmbW1+iw#`6vnp_Z@eHLc;=D+2=%oh60L+Hp`emhBC5Ehfv6-Tgf>>7tp&=ZN+AKF z&^j~@I8{=obrOeQ*0)@ocx~_cvc6<5KgP2LH9T@wGiT}_P26$3_Ww0o;PSHtN2~{CRc5Bv zNvIloyJf0Xi_K_(aetEO$uy0+E$NOabkQOB(&*vF9zjlag+n!xB@44q&9=C;QS`FXzBv-yjGS(jE@nD4SE`&vJ zMD7*^ts%#6UKg2tnvqbfW8Z9*peq!<8(H3%c~1omQ!A73DY=3Q1iu8ch6>#x&}3j^03D)A4twxz%Iv z@ScWsa3I%;YZ`?}hGy0C;}a75`)QWVKu*-?fJ!7qdN|DJ&^G;DSq8q(qQ=UeU(r|7 zCGrc~a-P3)hirJ23BN%us8XJKPGVkVs4YV8mm>DLB!6|Rp!cp&+xC3ah0aaKCEu9) zlhn-t#%{bqANiTW)bIFxd9JmkxZj^4`9|#1tf2>XNL_qMIi8oijBlMrN$j<5Vnvr( zy80_~m&bTAv_Q|reMSd%sMIWJ>x%o+l(Jgj?Trw{O^s^YVAm(=FK|5?M<2e2uXB;1 zt_XeKWSG1Z$5{4aHEk@ljH8;=HVSP0v_etMVMg=v{yh3E$7ojw-?y*n?M!pGJ;MCs zT}u0{S_r;dv$40UIP#vj6jt}hET?1*>cJNTyJxxG86$Z05gQktV4Gg>wn-3-zC;QLqpV2O3U`c_&vAvXx{$^K2^U1oz0hA literal 0 HcmV?d00001 diff --git a/favicon.ico b/favicon.ico index ef8ffbf78a4d8b40813c23eff3961f30fe2df7fe..0ce306598e447f3511db23b4744da9dc348d6d0d 100644 GIT binary patch literal 15406 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 diff --git a/handbook/computing/WR841N.jpg b/handbook/computing/WR841N.jpg new file mode 100644 index 0000000000000000000000000000000000000000..94b824fc68bb5544b4b9c9eba4acf94d3c6f9fac GIT binary patch literal 19010 zcmb4qV{j%>*Xm)9$^G_XOdI~q!dMoM zzyy8>ZjGi968D0!h@M`Cp|bh*Bar2n3{9a)Qv?gdOr-%>X7Fsf=;E0Pw;?2wOSXMi zoMDV8$eT6D(3@0zqms!)SFRLcVyTgG!p3-N&P!AOsa^JSik=T&=f|M{m=m_syj*$ zqcj7(3C|NU=Txa}qHo;9C*70~i}2a#vR=_(qiY?XvRC&%S2NPY9@NPuVYh=YHBK?A z89kqWMQz`phu*{@zJ3Qz`@^(LiI{qcr=I7hS^5SU+>85&?(Y_V6hlpyZrAYY!TV|g z5z*4ajx$usno!#<3bLRJMnLNT3;>fE1KxU~aNi4uaJHz>Wezqev#Z{YyPQ`>D{Qmwt z>5-ns;2TQxzOR2Nr-wg5+*EVw{f@tG|3-bTp-Y&`CgBm*rnG@Rvn=ENd0lK{J#2lB ztzL4JKB3Fp`{~m-QpeYZgrTu9#%*FKvhbtXM~h9@vdEfy%F>}|2oMAfRo5q{^ik>r7&l*Mx@s?Rg zk~+xlR`dS$wX!RfV>dy=w|Zkl*WmdLQmXbIqs=U>YX?NHyr#~j{F2rrufpixrJ+7! z9kK`YKD~`@KkTk3a~xI79EW^HSvMDc|4#gxYUqFfP*6}1Fz|mZIM~;W0|E*F14sG} zflP>kO2hzUBo=@aWFq)MLeI=E^fduNe@#mu5TImJySl`5ri~H!*SJwLwnw~9#w|0v z@ZgaA$~yKQ>-RFe-aqPxc5E%~W<`-Qk}A)uT;-XqeORZZ5<=trJ($?{VZHaovnj)yP@TFT6aXcM1 z+Vc|wme-Bui^*YeRF%9Ch=~R6xEidXH@Lr^p~RduXMT4X10}L z|7}}R9q?2}zgwzF3~I_1^{#hQ)SRluPtqRG|tRc zBi_ZrENysC+VaS-e$82K%IGg(s6VNb*p|j$+Nw=tf0%OX@iC69ue_-_5)%=u(pq`b zqR-mVuDTR3RoVYg6199(af)D5(*lOdvbIO*M%92FSdMC7n_U^Av{gA+%Xpw#BzHM3 z?-3-NXM{GzF!c+vsETTLECXDyknwrs1{1v0k&K`CxzqOt0BY^Zhg^zQ0L%ibwK#9ab&1wSp~o+jWTQ!hPv!Mm8&0Y9oS_-Zg`JZnhTxPO z8uOrsf!>E`5<}QO?kBDHQqTD_LXEB5SKep)6l4KPnA}=7e5^T`UQaXv$0zuSs>!DU z+XOK63sgU$t;jq!ogmMZj@r!c=PKdApiSGw6n6s6V$y`eoNQ;&kaTV1B{oUC z>e$Fha^uV;{KpEWrl1|Q*ZqSli3cZ*lOm{Ktli8OAtRRoSITh3tguTfAZ_;5*0i&N zUe0Fn&=f(q1#Ks!6^jwztCezUl8qCGi8wmrNcHZr@@5U|#r{hL$t1^_7)fPA^o1@o zOd-Cm&0R|&?)70Eg5%Wi=8F1ykw--Fsw7OJqQXGaN5yHe@Ue`?QBFH?nfmdR$5T!> zae0}?$LXtaQCgbkG39s9tocFL_vG9iQozfS z4k*iTXdb|(x~V=o*rWm-Yj=HO!u->2A>*x-It0Olm9PmltSd*@#3MAep6C~+Qt5Eu zLfd|BqvJ=Qh^$Kc6gFzzXUaoYX2N54g~_zxSPbb z7m=k}tW`Mh5t~AnBDn-ocvz-oZDtf*E+huaK-=4lUV@@I37R{jBX)fhA6aMEpG5oWM5q+9_@6BmnLs(%$%L+~M zGI}cySHF-Hy4=iX6Jo>yK5-kc}cCSEN(9+djwd-0%^(^-C}AtZ?<#ZP4B2)jrN`b{ z{r2Ji0#fil;3p@ilQ#I|uU*4Wxdc^oOJ?c@yhxTNs@66zB%x9{{YX{pG6bT9SXA#~ zZk$`>^>~CatqIQ1p*f3cUA#a}pFDXhu9dcepVE&z=6Q}HuG#0e7|c2hr`-m!uOoQY z5xkmlp0qix(wsJKj@x#po%*v6!+6FKys~kgq$#f4oi=U>&(v!lam+nKm^RS7f-oH0 zgc7K`95=91^ODK#G(ctzF_tzocchX060}imrbK;*8`oy>qjO?z{O0(ctfxdBEk>qH zJp<5*&Dyvo2pXp}VSXB_S4sp;m|)krPhYShOB^jNDKA{ajOaiUd_uwcTSAIj0Y z?4}-|a~$1hcKYWYlgDf;W|`?u790PZ={MS-p={ne#R1AoEqYeUK@%#yNc4LN=0rH7 zIGnphg6VAKQAm-?PfK0EMqN2P4!!=Xf6xmjWs{P|1b%*bE zFQZNH?zSw?%lk@#mgX`rdCa82GwH~J=DsY@?|x3N%SY`kG%_L(l9Y9ttdis*z@eJS zEhSycXQ~yn<+eQR^a#`bIcdx3oe!H5$5F#e2H&<-_-e8;i!)8nUuV*f432E@Yj}kM z@no)^$=O9_W$JX0*b8#<4P9j3Li#QjW78&H_pL*UXLZ_`X7h2l+f;4?2XzWo+*;v8 z3rwaol_(cuXIV`l-`xd=H1tV8Yb~9<014vABrGvOhyz?;2od}2pJ+tS#_D28OB<6i zGQ#+zmB8_`Axon74lzJaJXo%Hz=oXC!~vcv1^pRF+xlLm_uaeNUjT{X^qilo@A0Eu z(<@(9PRnD~UqJuhtKIS|lAqr7M~c$J-1Lf1|4YrEzW^;izH_m8fycjqqr?yE54BU0 zoGQO^zhS$%=`WN+j0E@(#`#K~{;z=`fr5Pp5)kquqkz*ZF#HGEd?jRjAhS`mgEO9W zZU-YHBZ>d9pBf2Y#>ikBaM5I=?0NDyd!F5Tf!B6NajQU{(H+8~mZVaSv4OwY&^)PL zFxD;N>;|kxXc+NsVI6dd?5NQCVZxfmGe3OkgFu<09rni)h zriy2-o*zS+q)37D&ro7W6D35Ty=v^VO81_*?*HR=Twl)1y{+h}QBrb|WTe_mU6tHY zgLe2#E;qAFC#d+q-Yv%R{9`)mLw+YhH2;r$1e~EsipGC8kNSIeU7m=e7Cz9f)Pru2 zZ(rf_0s$akAmGqo|B~&02oms>q9PH3eP<8=5-~C<7&s&Z{LBMKCYaqN7E}z(uQPN^ z?7jIylYR6?d;fzdA^AXsAiPLs-qFnbL#jjsME1(tXt{x8^-i*c*82gXkE?L1D4~;l z-#Mp%O*FVO!HDJGS>oG681s2=3(8qK^3DBI#)@#KnJH9yZuEFeIPAj}Abo%=xJv2g zjm*N_y0#L14>u$-b~l#j8M0RDo63r^nEB349je9J531#PKz4&0o-krUfk9@aQuPta zn_GVE@=jc!D=nqgpjrrdC|N(Mrtirlw+fR=_PJK)Hv(`D&~2r_Ul-j#MeI_`EVqX| z&RubXD&sO&oD^e0&iaj$bPOGC1f8YYQx%Uw=^OqYT4?kUdtob4wV5g&J9O{LaGB)`CI`oGg^}Az($&%BtPu(M==*W(@+1z{}RX)_ zq7sbD!aAwx;ix(-3)wAh0^9eLn+2KDe@e@($<0MQ_S|3#tICe@hUotmcWQ(r(gk|e)LoPvpl=VNoQB-XBJjsD5<`)M#rtXKt9h~1P$8Pe!9}2V zGHEx{fps(@)dZ6$$9w>&NMLrDmVK;b z+TEmmXEE}It2&Q@RY@}?$;eL=kv?JK#Z6IqZWbgOuA>W<5$WYv-{r%O;yxhIX_DpH4s6&7d7HW3cZy0N**h8AILsp!FjjDc5}nz%3!* z4B%gN&#%j2S7;8+AiqQSrYta{KSjaDM)%nZ}3L%5b^%r7B8y+;o1d>n|YL>_AH| zx2k(i^})01je9KRkFSfAzy>9URa5oZVr%^!Y>NA>PHE!n#y z9ity$IOtnfT~96@P58g;F5kyJ{{m38A@RX%LN}{B97i1p&77aKVGi-#r)gMJ2Td2{85}v1rkCDg#^MItN7% zg?Y~L&CD`Jq#Nq38Ct=QYR`52gP;j76CgAV+|vRUwSGTOUnnH1NG4zO{{<-V84pL1 ztu?&~J06pF*w(EXyCk~;jGHE2%kBav>k-LNwugKd)W;Mc_)YaE$XVBEl5Y{75h z@~cgijm5^l0E8S53kEiR%%q*AwrbSC%mqJg1HqkSM!`SfObs9Nm)105Z471C(4(AFYnOX>XYO>)PiRXw z_9G=cOQ{!s@lRfy29HNg+RR6tc|qtJt)5i8Hf|Sn>VEw%{zbsL-A(sk^69mi^(Ek&uVP zp0rZ_0u*e;9zi!gYg@!7&@MmL@3qi!N{*UsczCU@U%i*N|9wmIOY12&f2cgYP&;`Q zTS~?bJKYk-J-uVK<_{gWa;Q?CU$k4cLhL$Wx3ULqe%HSpDugHmD1ug$$eQO8iQxii z)dI?wuG*+dsArgw)60I(!r07@3Ji-LEc%W5gmZRbQ*7j6qubSgrB4258^984+ z+r*K-o@1{fSzsReOGy39$w}>?ahG{-ev0Lt0thtAM-nbdNaPX$LTx=EYl1re&sAcQ zxX@_0lnca(X6z#^_sV$|`-XwTgBELeLl`<@%oPOSP^^BxdPN35OCGtH|9`Esvvi!hc# zRO+YP8`7w6u!iLk8t<5uuN1+mIw?9SQY1geyE3awiK6IB)mAsNA*@;d7qxlu5x@rZw<&vE z;XqdP(LnUk#(MQ@KbEkpN`CIn+Rwq2qA1Ah&M{~X=4~d(Ypn|FxQaRpHB5>CyF(>$ zh|`CEi!j42^26Yw?y^jajf;@AuTe}9btp&MYfyu(!kH~vSLLYGH%qQkf!1=;e>GGr z0qUsfJ^7SqgrZa?iYRTeBJ7+KDVcpE_Zl>o!gEl7VKkZte`LSDY6*wsM!@+xZ zf`1A^Ob)Zu*WL;^sRQ#Q^ZT+;ix^dA+3~~R$wYXuXgvjc%HmLEP*61+gTXV{d~qU4 zs>+$EFu41IXihRnIr5L%&r_-{Ntp6EAp_GxQ~h?K-)){Z3s10QgXa15zF;gF@C&wr zfPq4OWdZ+95E0CiWwNMixmDk)uKK0`5HMxlSG*cal;)7|BuHQN_-ORQsCfuvIO zQ>l^=uRji>*w#R73LWi)Vwd4^=vT=YL?o3#+H9&P)`#qAnH5>^oW^noXyBTbhw>G6 z7JE2r4E3k91{{eK!-3Fc&#G2wH5bh4_*q{So$~P>c1(M+Z5L-+?A<{{>`h+wP^%;c zB3b3?VTuI@{2YBzyDc(qABv_E-em0R;xFI19}WYO^A2U_(jX6po4d^G6?4Q~pV)I^ zt&6FFkQNhi!sxosqu2-%!a7wh5n(#DdzNv)!J3lEoI82m43b9(_+sMZz;PYFL}cM1 z>^DgPs@s7A>j!k`r`+b)890`dR@1LsR;W)kgE@cJyXvyvSRSuBZ;Qr#wQi{x!E=PG z>md*uk-Ta!CA#lbD2Dt0mWJJN*fKww)#m*?b+3EP|T$4jisG{?K=^Wafg=xpx-YNUXL(A z7bvxA)ig^~D|ynKrm2^{2WMiCP8C}_ED-Q^2q<3^+!sy5HB_Et-lP){bG_#~)Amut z4^puBh6*Tl%j<4*Bh55(-ylJN60js!Qm$-34;*@<%}0-H0=`Z3AVB(~7xhTJotK`H1^ zk2Y*+&=RNzjF<1t!c#WvpF**aGQLU0U>mzslU`|8w}xbWf10I#vu?&%gd6f;?D@X- zjpfui^@u4vi#XotH63*{9(01t8*IVSWa_N#F8S&jz9`%dYwerCaWY$w)6VcKR>49|%Ipe++9*e`N?Be(_jhCo|c|1)7D<}47xV*=Rd-tg? z_mOm!lcAZgD@n@v>02;x#R!kF*xv{vIIs3h=><37_z->%$H1VcOYR}5y+UVXzk~04 znCU2^aLCpt0_L`aGo10cwOd-UUlhKfAZ;L(?!RjTfV+(HzuU3;N{GgKt_j zR%{bZv4i1NRDh&tC>HBT0yuE(ddWT5eV~5Mn`=+_LyCw3aZzbg0nei4*(&HB%XY- zU6gdxhd|bdo^F5t63OOMzZi>Q?5ES^(LQR6(MqjQ;H+O=s~C&lFR zUyslNGBn6Cxz)TbYV{jWEx#c$$+~0&22G8mJv+bkxW3&5Q1zb%ZoTl8#YniN*^bYm zGiR_^hAGRyE8*@o5!qOJ~Y66Q%&ZbMrrB-AvQh-mV5Q(h;V zZ^%=2-Br_Bn^ZMg6WK56k~Jkg$Dy$+S=RIvmSJ*PE3^yXoL2|9`ZTbBBNzQTqByRG zDA20v2g&aV2tL&=cuG?rc_aYHXj?|c-W_+vgbNpCq654=hj?K-yn!5z_-+5Lbr7^Z2bd?9hf~JwLkm;?=MRS&*t<7Ovq~H3}AwtXHwQ z?G$y>+lfD+23q!cN&W(0Zh2>(bL1sI9i4S^A{KpaqrzvOYWBC!hu_Hm0%Y#N;H4JyrS0wLt3*8opWLmsh2`<(eMn7jzJz7= zU|mLab|m2b1)xuC)F39glrtuMk*ehz-cxnEcR50bs4S4UI!8F)U;X&tZWI}UORHL^ z?<_MyGlI_^zc&seS!;~eP8Z-Yu!iyX5K_Y7{&qrjZC`9HT{Cy@G)0}+!Vog(aSN8j zusen9J2lwi05h}e(>8>cDmh2iO)2v5GeSSgrS)7;6Z{Kk(6^zX*Uqv+`tuy*w~7)X z%s~a`L#bS)*}<2@gles?OEKrdR&Th)Kk}QWXo?DtY~(J@z91$Z@F$l^XUa_lcTs6g4DWGEvF&dyC=Xdx@l8(whM3sY@M-SUgUmcd)P($b$FfJ4>?{RJI3 zGf^sETTYDCqfT0eyzt;!h_FdIw7D6F~Hol=l9& zMUVyNOqb;O9aKM6 z$Gs65p7easuchD6=S-bJ+>%<8YrrY+8N2TqWnexJVTbtV#}JgXEaEQ@`02wjj4ts3Z;jsnJl$ z@LOL~LW)J)iSWBY^-JpFV}qdM8h8BX{lYZk$5?0HM{XZe4TIF*G^jPG-V3h68{7d&zOcQJg&jhg8Q- z+ArcGi>m)_PtWI1j_scu{XaR<|2eS!6Su*qRQC3eX=%NxNf*f_N5rPIRpi$(EPt7h zVzL;bIaT?)QDljvO@Gt!@LQP0Pj{nCL&bIZFvw+;B`s|loj7Rqi53e^cWlYly2Tm~ zd3lR09wR_rW8f%0X=NPA_DVi>${exln_wl#1k0olq`p+ZI z#H(oEJuE-6u)?o*=#hLUTQN2#N(N2s{?nQ6Nm#03lydWJ4nhv3lvggM7oyn-v%{Jd zT1j?uCPkD^DQ-i|{3^f$OmjVg4xGi6z_8pOhjDic9@BuELo=B}v^k$V_tw@+HjpyY zRofZ*F&VpRs(u0>ro@=8#}XKedb2Xv4Ggo4y$5BcP?Ekjr3lYOStbl0#q6c{=;w_) zg5E#5#;SVd8lOR$ZDrqo8ZyP==)M@whZ`r0c4!mR*?so~dv9A(kkIH6WD{g&o?wKf zikg$3y(NjnHXq6yQ>-03QiMvqAn)YR*)Ba9RDFwnPa@hqcWm{0w-4 zJQiPkY?P0}Bu80_B;*eK4Js;|v9DoMyN6D*7awa?2BSdU^ExrKt@C_|v6+qNQ4m3+ zLP^PWMyVmXv*y@914;u^hawF5{jPpD*ded;6Cd2ycV| zzoACXhBNDntZh4qgRlh{0*PcYvR9?1lb$0Y+8X7JRxrzze@YI#Pi}yL7=JG$vs0I^ zK1F3dUOd+3Kr4hEnT3&<8Aa~;V&2Xc<7A1sfskyvB%whkX(RWDmP?hoeJgZb-I^7MH*fbw_i>;MU=a8i^2z3c>M${W4%NBfCic$iWzf(A?6fdLHrUT^Yzpne;(WlIFtOOVj5%qDW~zKzmUlbG|_)BaH8yOn>&O| z9=l}%s>+yxxh!GfVg&i_S4y$@GvQ6u8rC*{U|iVqJSIbxS_&D>q3Ifd*l=8fGy}^t z+6tUvid?Y-$|7uIgPh3WuU@hxBBCFDDNz+nC`SmTLF{*&4j@sqRaQ54HHU9b9BCim zv!{d!;UIZO&H4jD*9B(-7AAV+Gd3C!!N@8_gJ^Lt>K&L%uGD^V2#ofF+bE^4VND|3 zi}~%uc$sc(#}x1|y}kRbrQ;#ZZ{NCnUNXO%zT}(BC9Si3LS~OvJhP=kTlNdx;wo)J zTRdAnPtURtzfC*Z+`h}`&MQ4@eib6jUNR4V@d5uS$pripzJOQUy|cl}jKAT}rj~UK z;VJmz3p3x8(6mL{oE&5I3+cqcUhPn}%o?tgx6<3mFA#FBqLK=FOiB1A}ExAs*W_EoL= zUsmKx-a`U15D!yv$C7U6Zi6YhTBtq-M1(YVD&@{M{>%kM-Hz!X7>FC)V4 z>$|4bJaq5hA-NDH!5FHojbs*&Ve*4Lu`U?8mFP{!HOvNQRZJ?85}`v438sl&4vU4O zgG2l`HY7;@igdxg!QyCm%| z=FM1uk3Lv3{YZHKF6ejo>i4CjH~NwzMztLIZJ#lzOle@^HY~0NZiGoSy7U`B2|t27 zzDeV)zluFQ3kZJ#x%qig%jmCP4YKHe`%GVl4iSw0kzKW!!dZ=fF&&ITqgJmooSPer zlEsne?5Cr%;|=tAtsmzNRM*&vxrTom9olNCx#2#%z$O)_10x)L*D$?}7waxyAE&M# z--6T$qfysIBqdvowFCb^go3{vuEzfwR#M>CsQ!;$|KFDm1PSoJOk7>>?C#Ai@PCOo zAhf{9+`FqB!VlU$0V=^xw(YiPNCPOzi==M#OGRks0vV^aZahcQw#Hr0`Ao3ty|t(L z36ys$ z0l*Bs(n7&s00S3zR&WW?E!B0T!(17nSHoK$D&tzgg2Q5Ry$(Axe+EN=Q$;`XZs>h` zmKH^Uo-7Y=JU2-8xy9+bu1G1+*j%^zw;_Ze4zN8F+3B(4S}r$w0Hx~qSCu|={6Z}2 zb@DY+vM3hiRr1Lu#t(FA=HKm`ymjDN#tEa)9}IMqnM3~Z-&U@}1$BH>gN0*)>0txc zD2677jYt7cLN@8Kua!Gl4D{~J(xuyA`Bqb8px(%j{GCQn8k3cM!1>s8v1(aKlH+(e zcIMLY+8B5wPOHi(Q*oH$M~M447{P!C`^JW04z&#-@1ANt&NxUk~Zhqs;u%O<1A9&+LBT>@SxTs ze*M@?r%fu>h;mX<_OhZqgPXT!X%@-#c?xm5>r3i#(^$A$^2^+voO?l0R7>i)akv~0 zqYGNj2V`o>dzC}r;Kef}x7B3Vqy;qKjWOKoJ{yWZA4AAp_p8T~@yvoB2=O{Khl*qj zNms;J&OHWn$V&nUd-<|V7c!V<;cYgjq|1IZW=?x$XtufnZqFUU8v)WTSUx|7D`dk^+(ScxW+U4YPa*6;`(FUFI9{s1H4b5x!iRj2iE(w=hN9u!@M_IC33& z?)dP?i2N~-BgV^O=NT#jwSGtRrmPj5FAB4IqnB=kyehuP$y_CDrn3CVCiVxlrP$)h zaKB7iA5c`pI`27M|F-e*)1qdKsVy9&E@{F1L{1w>MidUXwyHcO_l~sVOSA^nu7-W_uY1A1Fb=EE<@{8^(nZ6A4 zRZlAN6v5QkwxBWtzU4=_p00O+d4T0Z-)xtvyVYleo1hQJe<%<#Hj zg~n<~h2xj(aZTN`qVXdM*74z(juF&%T>khoSrq9)oV*|8@$J_%sKTs=>^Vsou05Vb zdKSGrAe^eb+W&YS@dN-4n6;{?s&@I2h8_yLO)c&LWXJ>M0VO*}5~Byg?O3|J?xV~q zb_kSUEpFzpgDZ1KumO*W0K`=y1{K;Ek5P^u8~Y#o7~rXf1I`T=c@O;#fCaVUR$X3( zawPGKiw@`IW&fcI*S#LqWC$ z!8+WJgBh%0ZMZR>JB26{f$eCjE}>$qCupg$_`}gbg04Zjh*L7-n4GArR%$iuf#YS1 z%k*Y?FG;Fwtx(Lk?w<~oH1PMjYb{!j<8?@S8YPQ7H>s9Ld9*e3?*;+MGi}ZVrrkq~ z`A?xudjg|?(=JX1YpO92JqJeKnenS}$W{2QiWj_*m13nqb^XU^L4xsT{} zBCwvjWhr9d+(KO(T+btPm2)UqNv?naF#>R_9<*1}-6-zwGpXL0`o}i_98Q0_F36Fh z#q);#b>Pq7@DiDV$C;rAmR#HxRwrud0G(WC+Lj1yXY=_Qwo-}4@ zLeX1xb_ZlAY|C4ME)U;Qf(>4yb&L{;5Q+`mjW%uQpMPv$cslQ}^}!@66soQ~dF{m~ zYf6J=9?5j$LAx?V=o8Y7Jk@HXS$+7H)8$%orwuZSTA;c_BPl!4x!i}%gsRJpX(wyrso%NwDztpK? z>(k@j8APft@uKeV++*{^dx)NydMSPUPPsbT{OYrdeH2iV?nY+~jhFzPE=sgX8{1Zf z8rT{C@ykCOG8kQxcnc_FSZIA3ATK@ zd>RQ#h;_Eu#|#k#8Q*6%_Gh5|Ez^>yQ5w`m2!{g!i7* zLtdCyPnwVv&FL{{r5wS3>?$LN$FR~bCX~%d@U&%XA5B70u;jJ>?Kh77SzB)+c%=mC zAY#Jl;s9(2bSG}hu#P@S%may-X|$QlCiqhJct`#UB}^UX8`IkWyC9Om>0C}`Bfc?^ zi;jx;7+qe}t^B*{hu6+BY1Z)A<6|E&+OopDR6EVOcNKIBe#b}r36lRdfYY=@~(i?Pea_4I>Jpoj7T#F3jr-+C?) z<&Si~%tRRF?<0@tY*SlKMz}u&e*cDB&%_81gS{p>8$69eCMp!cIH9%Cz`dHfAYnQeb6 zOn#2_g;;e z_3fYA+PnC99H$)vKR;z*di&L9P`%I{od106&2g}{Kh2y?lt0}9!Syo%tSrrB`Dvm zM43^oeHiYFqsBNRyx!XW7)#oA()a!50F|9~k^p!4fw!`$Y%?&g#w^0R%zwoWOLhQJ zmW!ZEPeB{Mc9K-Ikkf%;n2#R3C)X7VIs(LH?W-r31-AVr}Z!?G~cLi zTjjNnj~Myz36b;IVZ{zDgL~^5xsQ++ zaT-_rYb`{`n0Ygk-Dobxif<`h(;yu)(IaJ?(6AC#11|aO%g9O4`(J?D*hXMkwVnDO z9HFcu!#MfhV-8A3oFEFU=3L9P{L}$zeNrnYMhD`n?Pr`1nLEmDNZ4?8)@qIv{!C^H zj~yZa6yg&@`?o9xbrI@K;aN`a)~DW*yo)rt*tBWL+eZ1@F#X#AuEt&3TNdHrhSY3_ zlkeP0uN-yjDH*=nGD0PC9Pl_*R9bF)2!w3CfZ0MX-?}kvWXM*w0`KA%)H(9H)oTXt z?q)*jQDI?Sr@sJ+L5~;p60!i_P}VkkMUDAk z&i#?`XOH}02>G6n;X1edjw1QBw8`)_MHGxW_9dT-!4w3T2LImo8RMGqktzC*I|W#&G=sN zU=VjnV>;t`D*VDb)+e|L@U2CLt=n0pQ61J5?t_|wlE69MuV&#|@EI$}z0vX8?e_d*JPo&N+xh-!lq@?XnQh+qkd`SfsSKhGp5wQ5+NqUU zEUe#cIZDSv$crAD*fyH?b$=W`E;&2?0uVE~T65S=Gx@wtOe1R90-wK~6i8hML&gbF zICgDmFcyvE3izt4mVkPYBBe8GAB48yI%KPp2vnTT9>Wu40KBuD#x_`<^@fMUnnkYM zhRNF2LAr#XJrGcYHVl{nK_Izc@-Y6<1Y=zY$J+XX@`R{QgBvq@*mcFPkC*8-l3;k; z=paBs`6|bc9U|j!_=V~jG+HP^*0#=g*@O{|6VAltYG}J+NU&6OA`ff7Zf^a_XgDE5x_qW(*kb}8+qbr|xCpd#K?J>hgrpyq z7oH9;x;rSz@Zz6aRbIR9Q!O6qXPF*b+zrqo!t=^*WSPuLp)w$U_>hj7)ek~`*r3N@ z+?P!$s{b(6d%qfPam&P%efyM1kkBTic?#A zec;o8I zHpL>+YOM!ZX?bOMqUwNi$fykcR(VefVGfRsMcBI6S9{QHD}mEbr*J}rZFSGg5Y_{2 z+DgZ09mNZ<9pT&SpB%k9P(?ObO78Jrg`o6=n$cFau3J*rw5Ks=aQFpXUStjTx}9B}ZhEA;31zW@x$nroR${|k5y zZs9Kyj~fvMgu&m5Ln~sBBI&1HjT%cz&KDZOSz+tCt_Ypghs<+*H`0TsYvLlyOw%On zvdU&8Jd){FXEG=Gp^3HjZlc&?p4MpBGnn)pRPgfl82Tu%Fn0HX4%_sbEro?rQ5p3y zxIc&*gvSIlxeZLa%XwV9KG6fpUw|FE?1N@UYE0$#V0sh=oUovz(>^K(l4qZ5dEJ^=My96oP4w6L-@r@H98x7`_Tgi>VkGPgUQ4UI zA4A5^PS9ZduJl??-$?YQjqbsrXmtFddm=_xn&QG2ro0J0rC6V8Kl%-|2cmlX5<1-x|BQMBao z{o#lB-E0_(sdH16nP{gScV}jH)K`LD5gytEWiw%suq%_5<<MnIRGku1*NHIl283hKc8W`p0Z>{v)lS$W)YVmzKcg`4!J1Ts)>%2_r^aKY~ zyKk?i2U!E80`bw2I_nVZz^h1U(_XS%RCa*So=7T&`}^YKwcOKHT?Y8^j>CmEFmoC? z>-C*E6AO#!cKUe5P0U#%ml69H>7H7mQun-jy1%o zhxuX3PXedqbCcdv`mm8*lI-;}M^^efr?FK^b3*+pyrRw6%wAtjmUYU9e3ItA!wDisA z0x_`B7IwysSW*XSVVkA4m85-)Re_`+xjAL$C_^pQsm}VXG~f(XWQo!3Z`Kj<3$?88 z`psY$Lhs4=%WEM*``F+b2fG`woUhjY@dRXa3$we^m6i^!so4FpXlRp0_v_OZ0z5mX z#r)u5#bG~_1Yqxl!`DAX{;)DW#s0HL{hy58E>VKxmISNPv-06Y1d0xY#<(zDitXD8 zO^OH#4>GvY!V(l{SW^1n5notK&=(g-l12xgFMPkoDi(8Qr>8hT3sbKbExmZiR{>SQ zhR{4SbGwb%tm?)V6d~-*`(u*Ags^EpejJ9?5<($Z56gxFst-lr>xqdiqf@K6alUx+ z;o9g8K|7+HYTJxK393>bhDsmq>ndPTeImaZCh z`Pe$nncg@(0o?rKg*0SH;EuHOkU9VcFX1j1Wld^CtE1VNby>|~Cg$F7PuS_OS}(<0B4$H1o`<`@oEvBdd6Q`e7~nsMLDI!=R95+1`=;bjK1pEkHX2Z4>#y8_~|d z>`|5rQtJNzw~SD8nFz+s>sp5!OQz{vndDBZq}2$dzB z!nB|6a54f2!rxnwcPF@Kwj%F+#;4A(DC~6telbBwtZ&-_NPW$>z7>3!Ppnn2^q;82 zUyu{`jmpEryol00pS-BO-G3$_7vn#9rsbw@;jnYV)p0Gs^nm;#6+lOfYk zf&67qLDRd>IHrqI0iSyK$!Bu|@X@cFBEj+k{O>$SJAC91mlRSZMfke+#t{i5)ViX2 z@r$Tnpy-pS9@)MV$iEc^C>M08E3#B&LG`ewUE8cfAxuYHrs{FV0P*rzDRxx6;}p3~ z6&#cI^NupQD)Sj(`Rk8M;=qQn*I#aPebN`Ia~_&BWv|Oc%z&(Uo46Fap%Fa~7^DeG ztF`8yIq!`y(bvsxJP_v|peM=Mr(V0tZ2~U?eI*ZSjnJtyT9j z*wrcgqUSx$0ZY|{KCrQd4NzNX@?t}Q(IfYkPdrj!x2Rrc>l8T})t`(DU2N9iMW}4p zpJp@(UZj0sBum{KIxOv-r+IM%cl1p@@diuQH}{S7*}X=6;I72z2lJHW(|l?7g5Hlm z+XqH_q5R^k7q_Hhab~8>1RGg~TMgS3%QW+r|(Ir6Hp^d*s~` z5s43D&df?F9jHFKZ%fp{nuQ??$d)?ioKaGpu;nJ+==7I{M@(t!ukA$$qfVDK;fec>&{`G29&mcaA7`O>{}G=L1xvu_!f> zS{$PFkEw(RY61v2!^p;m20Y_>Nz3qe$>>;K)6~g#Nb<-1tUWMLBMD*GJA7gxzE_fY z_sN|m1aa$LJut;XQ)RqjQq-por(gG+17;Ku&rEFrqqmnNfOa~1;0=#;e|c~>aw=hv zph*Utk9@jN*ofR=5hb-h7zQaF=;p%C#UJ&-sAJR`@0I}3Onx0tj8-vigrVecNQ$7K zSF`atbDUVsaVDtI6Mb@GAQqU-_T=B3(hBf~tnb6pm#zvIDzFyxjhG&$(PKIGmEHx^ z?ZqAjwa#)?BS0iI{p&9xQ%lU#^MGr}7@L7<=cZ`dq7)m?Z9M1UKRNUtjQbzM{{WTs zU!45U)_q6wpNIJW0Kh)s`E%<24t>AFKHEP7^Pf@t{{Zlux&3qQADnplei{D#v-0QR zXVz!l&&h{BO!}Ghv*>5i&-eAttZ_4g(+(crtp5Nvlm7q*(9S>ioag>I!|nZZ@N?^b WS@d)3Kb-nM$Nm@GezWaAjQ`oyb5z9u literal 0 HcmV?d00001 diff --git a/handbook/computing/copy-of-dnsmasq.conf b/handbook/computing/copy-of-dnsmasq.conf new file mode 100644 index 000000000..63ab4907b --- /dev/null +++ b/handbook/computing/copy-of-dnsmasq.conf @@ -0,0 +1,564 @@ +# Configuration file for dnsmasq. +# THIS IS NOT THE EXACT CORRECT COPY FOR 2023 +# IT IS AN EARLIER COPY, WE ARE WAITING FOR THE UPDATED COPY TO BE COPIED HERE. +# 29 March 2023 +# +# Format is one option per line, legal options are the same +# as the long options legal on the command line. See +# "/usr/sbin/dnsmasq --help" or "man 8 dnsmasq" for details. + +# The following two options make you a better netizen, since they +# tell dnsmasq to filter out queries which the public DNS cannot +# answer, and which load the servers (especially the root servers) +# uneccessarily. If you have a dial-on-demand link they also stop +# these requests from bringing up the link uneccessarily. + +# Never forward plain names (without a dot or domain part) +#domain-needed +# Never forward addresses in the non-routed address spaces. +#bogus-priv + + +# Uncomment this to filter useless windows-originated DNS requests +# which can trigger dial-on-demand links needlessly. +# Note that (amongst other things) this blocks all SRV requests, +# so don't use it if you use eg Kerberos, SIP, XMMP or Google-talk. +# This option only affects forwarding, SRV records originating for +# dnsmasq (via srv-host= lines) are not suppressed by it. +#filterwin2k + +# Change this line if you want dns to get its upstream servers from +# somewhere other that /etc/resolv.conf +#resolv-file= + +# By default, dnsmasq will send queries to any of the upstream +# servers it knows about and tries to favour servers to are known +# to be up. Uncommenting this forces dnsmasq to try each query +# with each server strictly in the order they appear in +# /etc/resolv.conf +#strict-order + +# If you don't want dnsmasq to read /etc/resolv.conf or any other +# file, getting its servers from this file instead (see below), then +# uncomment this. +#no-resolv + +# If you don't want dnsmasq to poll /etc/resolv.conf or other resolv +# files for changes and re-read them then uncomment this. +#no-poll + +# Add other name servers here, with domain specs if they are for +# non-public domains. +#server=/csg/192.168.0.200 + +# Example of routing PTR queries to nameservers: this will send all +# address->name queries for 192.168.3/24 to nameserver 10.1.2.3 +#server=/3.168.192.in-addr.arpa/10.1.2.3 + +# Add local-only domains here, queries in these domains are answered +# from /etc/hosts or DHCP only. +#local=/hut/ + +# Add domains which you want to force to an IP address here. +# The example below send any host in doubleclick.net to a local +# webserver. +#address=/hut/192.168.0.200 + +# --address (and --server) work with IPv6 addresses too. +#address=/www.thekelleys.org.uk/fe80::20d:60ff:fe36:f83 + +# You can control how dnsmasq talks to a server: this forces +# queries to 10.1.2.3 to be routed via eth1 +# server=10.1.2.3@eth1 + +# and this sets the source (ie local) address used to talk to +# 10.1.2.3 to 192.168.1.1 port 55 (there must be a interface with that +# IP on the machine, obviously). +# server=10.1.2.3@192.168.1.1#55 + +# If you want dnsmasq to change uid and gid to something other +# than the default, edit the following lines. +#user= +#group= + +# If you want dnsmasq to listen for DHCP and DNS requests only on +# specified interfaces (and the loopback) give the name of the +# interface (eg eth0) here. +# Repeat the line for more than one interface. +interface=wlan0 +dhcp-range=192.168.1.10,192.168.1.199,48h +domain=hut +# wired network +#interface=eth0 +#dhcp-range=10.0.1.10,10.0.1.100,48h +#domain=wiredhut +# Or you can specify which interface _not_ to listen on +#interface=usb0 +#dhcp-range=10.0.0.2,10.0.0.2,1m +#domain=tcldomain.office +#except-interface= +# Or which to listen on by address (remember to include 127.0.0.1 if +# you use this.) +#listen-address= +# If you want dnsmasq to provide only DNS service on an interface, +# configure it as shown above, and then use the following line to +# disable DHCP on it. +no-dhcp-interface=eth0 + +# On systems which support it, dnsmasq binds the wildcard address, +# even when it is listening on only some interfaces. It then discards +# requests that it shouldn't reply to. This has the advantage of +# working even when interfaces come and go and change address. If you +# want dnsmasq to really bind only the interfaces it is listening on, +# uncomment this option. About the only time you may need this is when +# running another nameserver on the same machine. +#bind-interfaces + +# If you don't want dnsmasq to read /etc/hosts, uncomment the +# following line. +#no-hosts +# or if you want it to read another file, as well as /etc/hosts, use +# this. +addn-hosts=/root/fakenet/expo/hosts + +# Set this (and domain: see below) if you want to have a domain +# automatically added to simple names in a hosts-file. +expand-hosts + +# Set the domain for dnsmasq. this is optional, but if it is set, it +# does the following things. +# 1) Allows DHCP hosts to have fully qualified domain names, as long +# as the domain part matches this setting. +# 2) Sets the "domain" DHCP option thereby potentially setting the +# domain of all systems configured by DHCP +# 3) Provides the domain part for "expand-hosts" +domain=potatohut + +# Set a different domain for a particular subnet +#domain=wireless.thekelleys.org.uk,192.168.2.0/24 + +# Same idea, but range rather then subnet +#domain=reserved.thekelleys.org.uk,192.68.3.100,192.168.3.200 + +# Uncomment this to enable the integrated DHCP server, you need +# to supply the range of addresses available for lease and optionally +# a lease time. If you have more than one network, you will need to +# repeat this for each network on which you want to supply DHCP +# service. +#dhcp-range=192.168.0.50,192.168.0.150,12h + +# This is an example of a DHCP range where the netmask is given. This +# is needed for networks we reach the dnsmasq DHCP server via a relay +# agent. If you don't know what a DHCP relay agent is, you probably +# don't need to worry about this. +#dhcp-range=192.168.0.50,192.168.0.150,255.255.255.0,12h + +# This is an example of a DHCP range which sets a tag, so that +# some DHCP options may be set only for this network. +#dhcp-range=set:red,192.168.0.50,192.168.0.150 + +# Use this DHCP range only when the tag "green" is set. +#dhcp-range=tag:green,192.168.0.50,192.168.0.150,12h + +# Specify a subnet which can't be used for dynamic address allocation, +# is available for hosts with matching --dhcp-host lines. Note that +# dhcp-host declarations will be ignored unless there is a dhcp-range +# of some type for the subnet in question. +# In this case the netmask is implied (it comes from the network +# configuration on the machine running dnsmasq) it is possible to give +# an explict netmask instead. +#dhcp-range=192.168.0.0,static + +# Supply parameters for specified hosts using DHCP. There are lots +# of valid alternatives, so we will give examples of each. Note that +# IP addresses DO NOT have to be in the range given above, they just +# need to be on the same network. The order of the parameters in these +# do not matter, it's permissble to give name,adddress and MAC in any order + +# Always allocate the host with ethernet address 11:22:33:44:55:66 +# The IP address 192.168.0.60 +#dhcp-host=11:22:33:44:55:66,192.168.0.60 + +# Always set the name of the host with hardware address +# 11:22:33:44:55:66 to be "fred" +#dhcp-host=11:22:33:44:55:66,fred + +# Always give the host with ethernet address 11:22:33:44:55:66 +# the name fred and IP address 192.168.0.60 and lease time 45 minutes +#dhcp-host=11:22:33:44:55:66,fred,192.168.0.60,45m + +# Give a host with ethernet address 11:22:33:44:55:66 or +# 12:34:56:78:90:12 the IP address 192.168.0.60. Dnsmasq will assume +# that these two ethernet interfaces will never be in use at the same +# time, and give the IP address to the second, even if it is already +# in use by the first. Useful for laptops with wired and wireless +# addresses. +#dhcp-host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.60 + +# Give the machine which says its name is "bert" IP address +# 192.168.0.70 and an infinite lease +#dhcp-host=bert,192.168.0.70,infinite + +# Always give the host with client identifier 01:02:02:04 +# the IP address 192.168.0.60 +#dhcp-host=id:01:02:02:04,192.168.0.60 + +# Always give the host with client identifier "marjorie" +# the IP address 192.168.0.60 +#dhcp-host=id:marjorie,192.168.0.60 + +# Enable the address given for "judge" in /etc/hosts +# to be given to a machine presenting the name "judge" when +# it asks for a DHCP lease. +#dhcp-host=judge + +# Never offer DHCP service to a machine whose ethernet +# address is 11:22:33:44:55:66 +#dhcp-host=11:22:33:44:55:66,ignore + +# Ignore any client-id presented by the machine with ethernet +# address 11:22:33:44:55:66. This is useful to prevent a machine +# being treated differently when running under different OS's or +# between PXE boot and OS boot. +#dhcp-host=11:22:33:44:55:66,id:* + +# Send extra options which are tagged as "red" to +# the machine with ethernet address 11:22:33:44:55:66 +#dhcp-host=11:22:33:44:55:66,set:red + +# Send extra options which are tagged as "red" to +# any machine with ethernet address starting 11:22:33: +#dhcp-host=11:22:33:*:*:*,set:red + +# Ignore any clients which are specified in dhcp-host lines +# or /etc/ethers. Equivalent to ISC "deny unkown-clients". +# This relies on the special "known" tag which is set when +# a host is matched. +#dhcp-ignore=tag:!known + +# Send extra options which are tagged as "red" to any machine whose +# DHCP vendorclass string includes the substring "Linux" +#dhcp-vendorclass=set:red,Linux + +# Send extra options which are tagged as "red" to any machine one +# of whose DHCP userclass strings includes the substring "accounts" +#dhcp-userclass=set:red,accounts + +# Send extra options which are tagged as "red" to any machine whose +# MAC address matches the pattern. +#dhcp-mac=set:red,00:60:8C:*:*:* + +# If this line is uncommented, dnsmasq will read /etc/ethers and act +# on the ethernet-address/IP pairs found there just as if they had +# been given as --dhcp-host options. Useful if you keep +# MAC-address/host mappings there for other purposes. +#read-ethers + +# Send options to hosts which ask for a DHCP lease. +# See RFC 2132 for details of available options. +# Common options can be given to dnsmasq by name: +# run "dnsmasq --help dhcp" to get a list. +# Note that all the common settings, such as netmask and +# broadcast address, DNS server and default route, are given +# sane defaults by dnsmasq. You very likely will not need +# any dhcp-options. If you use Windows clients and Samba, there +# are some options which are recommended, they are detailed at the +# end of this section. + +# Override the default route supplied by dnsmasq, which assumes the +# router is the same machine as the one running dnsmasq. +#dhcp-option=3,1.2.3.4 + +# Do the same thing, but using the option name +#dhcp-option=option:router,1.2.3.4 + +# Override the default route supplied by dnsmasq and send no default +# route at all. Note that this only works for the options sent by +# default (1, 3, 6, 12, 28) the same line will send a zero-length option +# for all other option numbers. +#dhcp-option=3 + +# Set the NTP time server addresses to 192.168.0.4 and 10.10.0.5 +#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5 + +# Set the NTP time server address to be the same machine as +# is running dnsmasq +#dhcp-option=42,0.0.0.0 + +# Set the NIS domain name to "welly" +#dhcp-option=40,welly + +# Set the default time-to-live to 50 +#dhcp-option=23,50 + +# Set the "all subnets are local" flag +#dhcp-option=27,1 + +# Send the etherboot magic flag and then etherboot options (a string). +#dhcp-option=128,e4:45:74:68:00:00 +#dhcp-option=129,NIC=eepro100 + +# Specify an option which will only be sent to the "red" network +# (see dhcp-range for the declaration of the "red" network) +# Note that the tag: part must precede the option: part. +#dhcp-option = tag:red, option:ntp-server, 192.168.1.1 + +# The following DHCP options set up dnsmasq in the same way as is specified +# for the ISC dhcpcd in +# http://www.samba.org/samba/ftp/docs/textdocs/DHCP-Server-Configuration.txt +# adapted for a typical dnsmasq installation where the host running +# dnsmasq is also the host running samba. +# you may want to uncomment some or all of them if you use +# Windows clients and Samba. +#dhcp-option=19,0 # option ip-forwarding off +#dhcp-option=44,0.0.0.0 # set netbios-over-TCP/IP nameserver(s) aka WINS server(s) +#dhcp-option=45,0.0.0.0 # netbios datagram distribution server +#dhcp-option=46,8 # netbios node type + +# Send RFC-3397 DNS domain search DHCP option. WARNING: Your DHCP client +# probably doesn't support this...... +#dhcp-option=option:domain-search,eng.apple.com,marketing.apple.com + +# Send RFC-3442 classless static routes (note the netmask encoding) +#dhcp-option=121,192.168.1.0/24,1.2.3.4,10.0.0.0/8,5.6.7.8 + +# Send vendor-class specific options encapsulated in DHCP option 43. +# The meaning of the options is defined by the vendor-class so +# options are sent only when the client supplied vendor class +# matches the class given here. (A substring match is OK, so "MSFT" +# matches "MSFT" and "MSFT 5.0"). This example sets the +# mtftp address to 0.0.0.0 for PXEClients. +#dhcp-option=vendor:PXEClient,1,0.0.0.0 + +# Send microsoft-specific option to tell windows to release the DHCP lease +# when it shuts down. Note the "i" flag, to tell dnsmasq to send the +# value as a four-byte integer - that's what microsoft wants. See +# http://technet2.microsoft.com/WindowsServer/en/library/a70f1bb7-d2d4-49f0-96d6-4b7414ecfaae1033.mspx?mfr=true +#dhcp-option=vendor:MSFT,2,1i + +# Send the Encapsulated-vendor-class ID needed by some configurations of +# Etherboot to allow is to recognise the DHCP server. +#dhcp-option=vendor:Etherboot,60,"Etherboot" + +# Send options to PXELinux. Note that we need to send the options even +# though they don't appear in the parameter request list, so we need +# to use dhcp-option-force here. +# See http://syslinux.zytor.com/pxe.php#special for details. +# Magic number - needed before anything else is recognised +#dhcp-option-force=208,f1:00:74:7e +# Configuration file name +#dhcp-option-force=209,configs/common +# Path prefix +#dhcp-option-force=210,/tftpboot/pxelinux/files/ +# Reboot time. (Note 'i' to send 32-bit value) +#dhcp-option-force=211,30i + +# Set the boot filename for netboot/PXE. You will only need +# this is you want to boot machines over the network and you will need +# a TFTP server; either dnsmasq's built in TFTP server or an +# external one. (See below for how to enable the TFTP server.) +#dhcp-boot=pxelinux.0 + +# Boot for Etherboot gPXE. The idea is to send two different +# filenames, the first loads gPXE, and the second tells gPXE what to +# load. The dhcp-match sets the gpxe tag for requests from gPXE. +#dhcp-match=set:gpxe,175 # gPXE sends a 175 option. +#dhcp-boot=tag:!gpxe,undionly.kpxe +#dhcp-boot=mybootimage + +# Encapsulated options for Etherboot gPXE. All the options are +# encapsulated within option 175 +#dhcp-option=encap:175, 1, 5b # priority code +#dhcp-option=encap:175, 176, 1b # no-proxydhcp +#dhcp-option=encap:175, 177, string # bus-id +#dhcp-option=encap:175, 189, 1b # BIOS drive code +#dhcp-option=encap:175, 190, user # iSCSI username +#dhcp-option=encap:175, 191, pass # iSCSI password + +# Test for the architecture of a netboot client. PXE clients are +# supposed to send their architecture as option 93. (See RFC 4578) +#dhcp-match=peecees, option:client-arch, 0 #x86-32 +#dhcp-match=itanics, option:client-arch, 2 #IA64 +#dhcp-match=hammers, option:client-arch, 6 #x86-64 +#dhcp-match=mactels, option:client-arch, 7 #EFI x86-64 + +# Do real PXE, rather than just booting a single file, this is an +# alternative to dhcp-boot. +#pxe-prompt="What system shall I netboot?" +# or with timeout before first available action is taken: +#pxe-prompt="Press F8 for menu.", 60 + +# Available boot services. for PXE. +#pxe-service=x86PC, "Boot from local disk" + +# Loads /pxelinux.0 from dnsmasq TFTP server. +#pxe-service=x86PC, "Install Linux", pxelinux + +# Loads /pxelinux.0 from TFTP server at 1.2.3.4. +# Beware this fails on old PXE ROMS. +#pxe-service=x86PC, "Install Linux", pxelinux, 1.2.3.4 + +# Use bootserver on network, found my multicast or broadcast. +#pxe-service=x86PC, "Install windows from RIS server", 1 + +# Use bootserver at a known IP address. +#pxe-service=x86PC, "Install windows from RIS server", 1, 1.2.3.4 + +# If you have multicast-FTP available, +# information for that can be passed in a similar way using options 1 +# to 5. See page 19 of +# http://download.intel.com/design/archives/wfm/downloads/pxespec.pdf + + +# Enable dnsmasq's built-in TFTP server +#enable-tftp + +# Set the root directory for files availble via FTP. +#tftp-root=/var/ftpd + +# Make the TFTP server more secure: with this set, only files owned by +# the user dnsmasq is running as will be send over the net. +#tftp-secure + +# This option stops dnsmasq from negotiating a larger blocksize for TFTP +# transfers. It will slow things down, but may rescue some broken TFTP +# clients. +#tftp-no-blocksize + +# Set the boot file name only when the "red" tag is set. +#dhcp-boot=net:red,pxelinux.red-net + +# An example of dhcp-boot with an external TFTP server: the name and IP +# address of the server are given after the filename. +# Can fail with old PXE ROMS. Overridden by --pxe-service. +#dhcp-boot=/var/ftpd/pxelinux.0,boothost,192.168.0.3 + +# Set the limit on DHCP leases, the default is 150 +#dhcp-lease-max=150 + +# The DHCP server needs somewhere on disk to keep its lease database. +# This defaults to a sane location, but if you want to change it, use +# the line below. +#dhcp-leasefile=/var/lib/misc/dnsmasq.leases + +# Set the DHCP server to authoritative mode. In this mode it will barge in +# and take over the lease for any client which broadcasts on the network, +# whether it has a record of the lease or not. This avoids long timeouts +# when a machine wakes up on a new network. DO NOT enable this if there's +# the slighest chance that you might end up accidentally configuring a DHCP +# server for your campus/company accidentally. The ISC server uses +# the same option, and this URL provides more information: +# http://www.isc.org/index.pl?/sw/dhcp/authoritative.php +#dhcp-authoritative + +# Run an executable when a DHCP lease is created or destroyed. +# The arguments sent to the script are "add" or "del", +# then the MAC address, the IP address and finally the hostname +# if there is one. +#dhcp-script=/bin/echo + +# Set the cachesize here. +#cache-size=150 + +# If you want to disable negative caching, uncomment this. +#no-negcache + +# Normally responses which come form /etc/hosts and the DHCP lease +# file have Time-To-Live set as zero, which conventionally means +# do not cache further. If you are happy to trade lower load on the +# server for potentially stale date, you can set a time-to-live (in +# seconds) here. +#local-ttl= + +# If you want dnsmasq to detect attempts by Verisign to send queries +# to unregistered .com and .net hosts to its sitefinder service and +# have dnsmasq instead return the correct NXDOMAIN response, uncomment +# this line. You can add similar lines to do the same for other +# registries which have implemented wildcard A records. +#bogus-nxdomain=64.94.110.11 + +# If you want to fix up DNS results from upstream servers, use the +# alias option. This only works for IPv4. +# This alias makes a result of 1.2.3.4 appear as 5.6.7.8 +#alias=1.2.3.4,5.6.7.8 +# and this maps 1.2.3.x to 5.6.7.x +#alias=1.2.3.0,5.6.7.0,255.255.255.0 +# and this maps 192.168.0.10->192.168.0.40 to 10.0.0.10->10.0.0.40 +#alias=192.168.0.10-192.168.0.40,10.0.0.0,255.255.255.0 + +# Change these lines if you want dnsmasq to serve MX records. + +# Return an MX record named "maildomain.com" with target +# servermachine.com and preference 50 +#mx-host=maildomain.com,servermachine.com,50 + +# Set the default target for MX records created using the localmx option. +#mx-target=servermachine.com + +# Return an MX record pointing to the mx-target for all local +# machines. +#localmx + +# Return an MX record pointing to itself for all local machines. +#selfmx + +# Change the following lines if you want dnsmasq to serve SRV +# records. These are useful if you want to serve ldap requests for +# Active Directory and other windows-originated DNS requests. +# See RFC 2782. +# You may add multiple srv-host lines. +# The fields are ,,,, +# If the domain part if missing from the name (so that is just has the +# service and protocol sections) then the domain given by the domain= +# config option is used. (Note that expand-hosts does not need to be +# set for this to work.) + +# A SRV record sending LDAP for the example.com domain to +# ldapserver.example.com port 389 +#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389 + +# A SRV record sending LDAP for the example.com domain to +# ldapserver.example.com port 389 (using domain=) +#domain=example.com +#srv-host=_ldap._tcp,ldapserver.example.com,389 + +# Two SRV records for LDAP, each with different priorities +#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389,1 +#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389,2 + +# A SRV record indicating that there is no LDAP server for the domain +# example.com +#srv-host=_ldap._tcp.example.com + +# The following line shows how to make dnsmasq serve an arbitrary PTR +# record. This is useful for DNS-SD. (Note that the +# domain-name expansion done for SRV records _does_not +# occur for PTR records.) +#ptr-record=_http._tcp.dns-sd-services,"New Employee Page._http._tcp.dns-sd-services" + +# Change the following lines to enable dnsmasq to serve TXT records. +# These are used for things like SPF and zeroconf. (Note that the +# domain-name expansion done for SRV records _does_not +# occur for TXT records.) + +#Example SPF. +#txt-record=example.com,"v=spf1 a -all" + +#Example zeroconf +#txt-record=_http._tcp.example.com,name=value,paper=A4 + +# Provide an alias for a "local" DNS name. Note that this _only_ works +# for targets which are names from DHCP or /etc/hosts. Give host +# "bert" another name, bertrand +#cname=bertand,bert + +# For debugging purposes, log each DNS query as it passes through +# dnsmasq. +log-queries + +# Log lots of extra information about DHCP transactions. +#log-dhcp + +# Include a another lot of configuration options. +#conf-file=/etc/dnsmasq.more.conf +#conf-dir=/etc/dnsmasq.d diff --git a/handbook/computing/netconfig.html b/handbook/computing/netconfig.html index fa5be7237..641e6e230 100644 --- a/handbook/computing/netconfig.html +++ b/handbook/computing/netconfig.html @@ -28,7 +28,7 @@ still upright and have not been knocked sideways.

Expo laptops

-

Both expo laptops Crowley and Aziraphale use DHCP over wifi to get an IP4 address and the identity of a DNS nameserver. Neither laptop has any other configuration. +

Both expo laptops Crowley and Aziraphale use DHCP to get an IP4 address and the identity of a DNS nameserver. Neither laptop has any other configuration.

If you connect your laptop or phone to the potato hut wifi you will connect in the same way.

The Gasthof Wifi

@@ -48,19 +48,22 @@ still upright and have not been knocked sideways.

When the netbook powers up, the script /etc/init.d/fakenet runs which sets everything going for the first time. -

wicd

-

The netbook needs to have its persistent networking set up correctly in addition to the other scripts. This -is the wicd gui program that has an icon in the top-right of the sceen in the -system panel. (Or search in all applications in the Internet section for the wicd application). Set the checkboxes so -that the netbook does not connect to any network except the StaudnGast wifi network, and also tick the 'automatically -reconnect' checkbox for the "StaudnGast" network. - -

Netgear WNDR4000

+

Wifi/router Netgear WNDR4000

The Netgear ethernet/wifi hub holds the radio transceiver that provides the wifi coverage inside the potato hut. -It is configured using its web control panel (https://192.168.1.1). It has an online manual but it needs no configuration at all during expo. Just turn it on at the beginning of expo and off again at the end. + It has an online manual but it needs no configuration at all during expo. Just turn it on at the beginning of expo and off again at the end. +

The webpage control panel (which you should never need or touch) is accessed by connecting a laptop to the wifi or using the expo laptop on the ethernet and bringing up a web browser to http://192.168.1.1 with username 'admin' and the usual expo cavey:beery password. The password is also written on the underneath of the box. + +

TL-WR841N
+
+ +
TL-WR841N sockets and switches
+
+ +

In 2023 we will also have a backup wifi/router in Austria, a £20 TL-WR841N belonging to Wookey which is configured identically to the Netgear device except that the username is 'root' not 'admin'. It is to be used only if the Netgear breaks. +

One important difference is that the ethernet cable from the netbook is plugged into the blue socket on the WR841N (it is yellow on the Netgear), and the 4 white sockets on the Netgear are 4 yellow sockets on the WR841N. A word of warning: the WR841N has been flashed with new firmware and so any documentation you may read in online manuals for it will be wrong: notably the reset and wifi on/off buttons don't have any effect, and the lights don't flash in the way the manuals say they do. There is also no USB socket, no IP6, no 5Ghz, slower ethernet (100Mbps not 1Gbps) and the wifi range out to the tents is worse than the Netgear wifi.

IP6

-

While you can use 5Ghz wifi and IP6 to connect within the hut, there is no IP6 connectivity to the external internet. Sorry. We are dependent on the Gasthof system for this. +

While you can use 5Ghz wifi and IP6 to connect within the hut, there is no IP6 connectivity to the external internet. Sorry. We are dependent on the Gasthof system for this. Use a phone and data roaming if you want it.

4 different 'networks'

To understand how the network is configured, you need to realise that we have to manage these different 'networks': @@ -70,7 +73,7 @@ It is configured using its web control panel (https://192.168.1.1). It has an 10.0.x.y The network on the short bit of cable connecting the netbook with the Netgear box.

  • The network on the longer length of cable connecting the Netgear box with the expo laptop (and sometimes the printer). -We bridge the hut wifi with the hut ethernet cable to the expo laptop so they are both 192.168.1.x, but this is a matter of choice. This is configured in the netbook config files. +We bridge the hut wifi with the hut ethernet cable to the expo laptop so they are both 192.168.1.x, but this is a matter of choice. This is configured inside the wifi/router using the webpage control panel.

    Where the DNS happens

    DNS is what connects a computer name (such as expo.survex.com) with an internet address (such as 78.129.164.125). To make the internet work, we need to tell every laptop and phone where to find a DNS nameserver, or what machine to ask in order to get DNS queries forwarded to a DNS nameserver. @@ -84,34 +87,96 @@ We bridge the hut wifi with the hut ethernet cable to the expo laptop

  • 2022 : in the Netgear box.

    1. The benefit of doing it in the Netgear box is that you get to play with a graphical web interface not text files. But also you can test that the Netgear box is working separately from everything else. -

    2. The benefit of doing it in the netbook is that all the configuration is in the same place, and you only have to learn one way of doing things instead of having to use text files and a web interface. Aslo, by making the Netgear box completely dumb, it is swap-replaceable if it dies with no reconfiguration required. +

    2. The benefit of doing it in the netbook is that all the configuration is in the same place, and you only have to learn one way of doing things instead of having to use text files and a web interface. Also, by making the Netgear box completely dumb, it is swap-replaceable if it dies with no reconfiguration required. +

    The DHCP is configured to issue IP addresses with x between 2 and 199, i.e. laptops and phones will get IP addresses between 192.168.1.10 and 192.168.1.199. These may change after 12 hours.

    Static addresses

    -

    The netbook has two network interfaces: the Alfa wifi antenna (which has an address issud by the Gasthof wifi system) plugged into a USB socket, and its ethernet cable socket which is configured to have the address 10.0.1.2. -

    The Netgear box has its yellow ethernet cable socket set to the address 10.0.1.1. The four other ethernet sockets are all on the address range 192.168.1.x and the wifi network interface is set to 192.168.1.1 on the same network range. +

    The netbook has two network interfaces: the Alfa wifi antenna (which has an address issued by the Gasthof wifi system) plugged into a USB socket, and its ethernet cable socket which is configured to have the address 10.0.1.2. +

    The Netgear box has its yellow ethernet cable socket set to the address 10.0.1.1. The four other ethernet sockets are all on the address range 192.168.1.x and the wifi network interface is set to 192.168.1.1 also in the network 192.168.1.x. + +

    So the ethernet cable between the Netgear box and the netbook is 10.0.1.1 at the Netgear end and 10.0.1.2 at the netbook end. Nothing else uses any number like 10.0.x.y. + + + +

    When it all goes wrong

    +

    If everything is working between devices in the hut, but there is no internet access, then the first thing to check is that +the black WiFi antennae on the small black Alfa box are still upright and have not been knocked sideways. + +

    The next thing is to take a phone out to the road and try to connect directly to the Gasthof wifi. This is to check that the Gasthof is on the internet and that the problem is not between the Gasthof and the rest of the world. + +

    You test whether the internet is running by trying to visit www.google.com or +github.com. + +

    The netbook attempts a reconnection every 60 seconds, so wait at least 2 minutes before doing anything. That is because when the netbook attempts a full reconnection it can take nearly a minute to rebuild everything. + +

    Test whether the netbook is actually running and responding by sitting at the expo laptop and logging into the netbook remotely. Do this in a terminal window: +

    ssh expo@10.0.1.2
    +or +
    ssh expo@tclaspire3.hut
    +

    If you get a login prompt, the netbook is running. It is a slow machine so do not expect this to be instant. +

    Login (as user 'expo' using the cavey:beery password) and type this at a prompt: +

    /root/fakenet/runfakenet
    +which will run the script to reconnect. This may take a minute to have the desired effect. + +

    If you didn't get a prompt when you attempted to login from the expo laptop then you will need to do the same thing but actually on the netbook keyboard. While you are at it, it would be a good idea to re-boot the netbook first by typing this on the netbook keyboard first, and waiting for it to re-boot: +

    shutdown --reboot
    +

    You may also need to re-enable wicd, see below. + +

    If it keeps failing, then maybe the cron system which re-triggers it every 60s is not working. That is probably a symptom of something more much more serious wrong with the netbook if you have already re-booted it. Try re-booting it again and this time be more patient. Report this to a nerd and write a record of the problem in the expo logbook. + +

    wicd

    +

    The netbook needs to have its persistent networking set up correctly in addition to the other scripts. This +is the wicd gui program that has an icon in the top-right of the sceen in the +system panel. (Or search in all applications in the Internet section for the wicd application). Set the checkboxes so +that the netbook does not connect to any network except the StaudnGast wifi network, and also tick the 'automatically +reconnect' checkbox for the "StaudnGast" network.

    The scripts

    -

    +

    For the curious or desperate, here is how the scripts actually work. +

    The /root/fakent/expo/hosts file is just two lines: +

    10.0.1.2 tclapsire3
    +10.0.1.1 router
    +
    +

    The file that configures the wifi is the file /root/fakent/expo/hostapd.conf +

    interface=wlan0
    +driver=nl80211
    +ssid=tattyhut
    +hw_mode=g
    +channel=1
    +macaddr_acl=0
    +ignore_broadcast_ssid=0
    +auth_algs=1
    +wpa=3
    +wpa_passphrase=CAVEYBEERYPASSWORD
    +wpa_key_mgmt=WPA-PSK
    +wpa_pairwise=TKIP
    +rsn_pairwise=CCMP
    +
    +where CAVEYBEERYPASSWORD is our usual expo password. In 2022 this capability was configured by the Netgear control panel, not by this file on the netbook. - -

    Because the netbook is on a different network from the laptops connecting to the hut wifi, you can't directly login to the netbook using ssh to the IP address (ssh expo@10.0.1.2), but you can using its name, so ssh expo@tclaspire3.potatohut should work if everything has been configured correctly. -

    -This is the address to use for configuring it using ssh when everything else has failed. So to manage the -connection to the Gasthof WiFi you would use -

    -ssh expo@192.168.200.100
    -
    +

    The file that configures the DNS and DHCP is /root/fakent/expo/dnamasq.conf and it is very long with most of the lines commented out with an initial '#', so they are not all listed here. (You can read a copy of it here). On the netbook 'eth0' is the interface with the antenna (which is actually a USB socket) and 'wlan0' is the ethernet socket interface to the cable to the Netgear box. Some of the more relevant lines are: +

    interface=wlan0
    +dhcp-range=192.168.1.10,192.168.1.199,12h
    +addn-hosts=/root/fakenet/expo/hosts
    +expand-hosts
    +domain=potato.hut
    +no-dhcp-interface=eth0
    +
    +Note the line addn-hosts=/root/fakenet/expo/hosts which refers to the first file listed above which defines the names of the machines for the two ends of the cable between the netbook and the Netgear box. +

    The line that configures crontab to run the fakenet script every 60 seconds is +

    MISSING
    +MISSING - need to get this...
    +
    +

    The actual fakenet script is +

    MISSING
    +MISSING - need to get this...
    +
    +

    The init script which configures everything when the netbook is booted up is +

    MISSING
    +MISSING - need to get this...
    +
    -
    /root/fakenet/runfakenet
    -
    -This used to need running once or twice a day when the internet stops working, but it was radically fettled in 2022 and so should be much more reliable. -Sometimes you may have to walk over to the blue Acer Aspire netbook and run this script directly by typing on its keyboard -as the network has collapsed so badly that ssh doesn't work. - - -
    - -

    Historical Notes

    +

    Historical Notes

    Prior to 2017 we used to run an unconnected local network with our own DNS domain name "potato.hut", our own server holding all the website and survey data, and published WiFi as SSID "tattyhut". @@ -125,11 +190,11 @@ pushing the changes to the distributed version control system on the internet continuously and not to have our own local server. This coincided with a much-improved WiFi service at the Gasthof. We continued with the wifi service in the hut but now it also connects to the external internet instead of to a 'pretend' internet (which is why the system is called 'fakenet'). -

    In 2018 and 2019 we had good Internet access at basecamp, but the high-gain system was returned to its owner during Covid. -

    In 2022 Wifi reception from the Gasthof was very poor. The connection script was improved so that dropped connections were restored more quickly. However the basic bandwidth with a cheap antenna was not enough. +

    In 2018 and 2019 we had good Internet access at basecamp, but the high-gain system was returned to its owner (Sam) during Covid (2020-21). Wookey bought a new one, which proved to not live up to its advertising. +

    In 2022 Wifi reception from the Gasthof was very poor. The connection script was improved so that dropped connections were restored more quickly. However the basic bandwidth with the new cheap antenna was not enough.

    In 2023 a new Wifi device (the Alfa) should restore decent connectivity. We hope this will improve everything to how it was in 2019. However this Alfa has proved to be a right bastard to find the right drivers for. Wookey has had to be inventive in using an Ubuntu PPA to make it work with the Acer Aspire 1. -

    Also during winter 2023/23 Wookey upgraded the operating system on the Acer Aspire One netbook from whatever ancient Debian it had been running to a decently almost-modern Debian distribution. This required much coaxing. As of 26 March, it is still a couple of Debian versions behind where we would want it to be. +

    Also during winter 2023/23 Wookey upgraded the operating system on the Acer Aspire One netbook from the ancient Debian Wheezy it had been running to a decently almost-modern Debian distribution. This required much coaxing.

    History of the scripts

    The structure of the system was created by Wookey in 2013 who used the fakenet principle and the netbook to run training sessions for the Cave Survey Group in the UK. [This is why the script has an extra level of parameter setting that might seem necessary: it has 'csg' and 'expo' options, but the two configurations have diverged so much over the years that this is merely a fossil.] diff --git a/handbook/l/hut-cables.html b/handbook/l/hut-cables.html index 1985c496c..5ddc2adfe 100644 --- a/handbook/l/hut-cables.html +++ b/handbook/l/hut-cables.html @@ -35,6 +35,7 @@

  • Powerbrick for R61 Thinkpad (Aziraphale)
  • Powerbrick for Netgear WNDR4000 wifi/ethernet device +

    [Actually there may be 5 power bricks: the USB hub may need power too.]

    The Acer Aspire One (tclaspire3) and Dell E4200 (Crowley) each have internal, built-in wifi, but we do not use these and they are turned off (with a physical sliding-switch on the case) to reduce confusion.

    Aziraphale also has an ethernet socket and can be connected by ethernet cable to the network if convenient and if within-hut wifi is congested.

    The mains power plugs are illustrated with 2 pins for clarity, but they are all 3-pin UK-style pugs in reality.