From 8ea7d3191868b06dd00a460679a1596f12a1fccb Mon Sep 17 00:00:00 2001 From: Trent Palmer Date: Sun, 28 Apr 2024 00:45:03 -0700 Subject: [PATCH] add sandbox-iot-network --- docs/photos/iot_sandbox_network.png | Bin 0 -> 32653 bytes docs/posts/sandbox-iot-network.md | 112 ++++++++++++++++++++++++++++ mkdocs.yml | 2 + 3 files changed, 114 insertions(+) create mode 100644 docs/photos/iot_sandbox_network.png create mode 100644 docs/posts/sandbox-iot-network.md diff --git a/docs/photos/iot_sandbox_network.png b/docs/photos/iot_sandbox_network.png new file mode 100644 index 0000000000000000000000000000000000000000..2e202c68db3abc808e7ac0e48beccea452fe1314 GIT binary patch literal 32653 zcmeFZWmuJKyDt0?q9Vu?6(lV{X_S)2A{CL61|_9LYS1AQ6%Y}SPDMmo=?)PQ=@tg1 zG)Q;v>&E%+_3pKgbsTH$AK$NUzGJ>j2G4k&`@Z@*uk#+hiVD)?q_m_MhLOw4+)%Qi8y-a2`!}at?)jRp zJKh>v*r8y$FC+r)rFzZPwN!`nGs>=7WzOkNmz3-HTzhi{mWj<*lDp&3e@JefsYE}A zXb8#B&$zRd=*R#6>;Ho^it6T$VpcEiG)=X%^19=Q7>{VU^_IA#4fcaX8P8Qp%11<3 zq_z)J@63{j<{Rke4C z7@C|2F--k10m+#<_gNQVyX6;y{iebPS1pr+1u^Ucsq6q+lqlSk@7vSaJmHUzMCwM! z{|c-<8CV)F0g!lK!eICfRSH9pSySJ~$0kkc)@ z&*s|00;acTHML}t+ev+{Wpl`XQK2iCSSM2t6h$?PMjHNMw?fxaw$~dTCn>R- zyk}ty6ya5pUjh3{vn0ZX7#xBKU9BJProN07%`&*qJl*ouo>Zf(*I?ygLY6dAzw_jh^5L+DyU;cJnuj5Uk37?p)#@V!c zffB{a7sMI5F1#%{k?p)QYt}BGq||h#qwn^e#sQg_8Nbggb1?^+QifMElWW}==S7GQMx>pwdLv$IMC_kXlipx3jb3CzW{8 zRu9xo=vDdFR*_MZn2=y}X(L!%BTV(ugluwqHb=cvvt}>S0C=#{a7YdcI%u7nop)ke zK81`k%evqm**_t7cw5XBDhDzMBR=&;(X^H0>cW~|UKgi8OqUS;$Q5XdSS7ct%0wC=+K zUoV*0e~we>ikphiPrM@iCK!yt1eY>e7#sS*VM{fK$t20(qOOBsI?F4KR59DN!8DPz z4cGEtzn|4PU7Rg>Xq$(hB=Np_;iG@e1BLS2kGJyj39xw*`FEaFMh)m)9R1d6d9#GL-D)Tpy}$y!pM@-1tI**O}NZ6iSi3FUiaxVxn^CVPTW3PqG6-#zJ{M!3Nr}yefI2G?A3~t zl>1@p5!(lrc79o!C)Icjk_nR}<)zw_N zf5*(#rfZH%;P0Z4GHuWMq;n@Jz8QRqc>3&_yu+Dn4)fNgYsmWQv-yODr+(+FY!4WJ zlz^ZHS{dImP6WO&1iN2WEezOGrlCU>L;WdYH; z)N;x(OAKQ(AR#if(GtjPAJD-g*Dx9umhE2R24_+1id!u4=VbruP+^p>^_Hk$7~MPx zp_frXxX#pInq@P4XA>FU+dITm*wAT0vV_ByJ%tJoUR~15gG>F=#gbsPb`LD%!iCRN zKp~RL2-nD3Oz5VGd6$uDxG|SV1VFj>gSYv(3e+}XP(iI*%*|#fa2`oKZmz)>jPKx8 z>VP_hk$_}~$iWkCG2@2{gI_u!x3X71nZ#ZA0OgA%Di(NhGB`veostVB`<0$l4P_q~ zgM=DfXQ*2L7BYxUk+!O8S%94|Cq6&cnKCc`{!0&j)#Couo0>m%?UNXyXj`cZEIZn$ z3$ijs$1$w;SZJviiIAB4-9XWWn=@|P{!k>GsPcIRVL7;NBwO!2VF6Pz?Xp=Gv z%JQ9~3WMr1EEtyp?&SumSQTJ^gD-d_C2)d~!Q2Bcs~I6K%hL z{|>f{&YDIFC)-AU=f&`&r_fETjaYb?m5hHBT8HrJ!JE3=D5@ zl{rFG4~Y^A8I#FdPI+@lP)7Mw--nFHS@N3&o_UJQ%+T-)>jP^4niIY^OhpVtLRIRwGoSxs=8$>LV!l%ffs43JvIwB<=pS2#> zYN|46r}@+Rhph8aFohfEnlMquK=%0Nl3v0BT5yV9

U4Gz5~#XX@xA@jT`m>~2m% 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 + +

iot sandbox network
+ + +## Hostapd +First install `hostapd` on your RaspberryPi. The relevant config file is +`/etc/hostapd/hostapd.conf`. And then start/enable hostapd with `systemctl`. + +## Describe Wifi AP interface +Without explicitly routing traffic between eth0 and wlan0, no devices connecting +to the wifi ap will be able to reach, or be reached from, the internet or your +home network. +```conf +# /etc/network/interfaces.d/wlan0 + +auto wlan0 +iface wlan0 inet static + address 10.0.8.1 + network 10.0.8.0 + netmask 255.255.255.0 + broadcast 10.0.8.255 +``` + +## Install and configure dnsmasq (for dhcp) +Each device connecting to the wifi ap will need to know its' ip address, +therefore you can use dnsmasq for dhcp service. + +Assuming you can figure out how to navigate the tasmota webui of each device +well enough to set the hostname and figure out the mac addr, +on the RaspberryPi wifi ap install dnsmasq and edit the config file. +```conf +# /etc/dnsmasq.conf +listen-address=10.0.8.1 +interface=wlan0 +dhcp-range=10.0.8.150,10.0.8.200 +dhcp-host=bedroomlight,34:ab:95:c5:27:15,10.0.8.2 +dhcp-host=kitchenlight,40:f5:20:11:a9:5d,10.0.8.3 +dhcp-host=bathroomlight,70:03:9F:C5:7C:4C,10.0.8.4 + +``` + +## Create Wireguard Tunnel Between Application Server and Wifi AP +The wireguard tunnel both encrypts traffic between the application +server and the wifi ap server, but also enables communication between the +dashboard application server and the smart devices. The devil is in the +configuration details. + +I think you need to enable forwarding in sysctl on the wifi ap server so +that traffic can pass between `wlan0` and `wg0` (but I'm not entirely positive). +```conf +# /etc/sysctl.conf +net.ipv4.ip_forward=1 +``` + +Configure wg-quick@wg0 on the wifi ap server as follows. +```conf +# /etc/wireguard/wg0.conf +[Interface] +Address = 10.88.1.1/24 +PrivateKey = +ListenPort = 4449 + +[Peer] +PublicKey = +AllowedIPs = 10.88.1.2/32 +``` + +Configure wg-quick@wg0 on the application server as follows. +** The magic is in the `AllowedIPs` value. ** +```conf +[Interface] +Address = 10.88.1.2/24 +PrivateKey = + +[Peer] +PublicKey = +AllowedIPs = 10.0.88.0/24,10.0.8.0/24 +Endpoint = 192.168.1.88:4444 +PersistentKeepalive = 25 +``` + +## Next Step +The next step, not represented in the diagram, is to attach your +application server to a second wireguard tunnel such that it can be +reached from your client devices. + +Note that you can also double-nat the application server in this scheme, because why not? +Everything happens inside wireguard tunnels. In my diagram the application server +is an virtual machine that is double-natted on an `libvirt` subnet. diff --git a/mkdocs.yml b/mkdocs.yml index d1a4605..1faa4cd 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -24,6 +24,7 @@ markdown_extensions: nav: - Home: - Home: index.md + - "Sandbox IOT Network": posts/sandbox-iot-network.md - "QuasselCore on Debian 11": posts/quasselcore-on-debian-11.md - "Forklift Upgrade Arch Linux To A Dell Precision 3561": posts/forklift-upgrade-arch-linux-precision-3561.md - "Ansible KVM Router Lab Part 6": posts/ansible-kvm-router-lab-part-6.md @@ -71,6 +72,7 @@ nav: - FreeCodeCampChallenges: https://trentspalmer.github.io/fcc-challenges/ - DeviceLayout: https://trentpalmer.work/6a57bbe24d8244289610bf57533d6c6f/ - Posts: + - "Sandbox IOT Network": posts/sandbox-iot-network.md - "QuasselCore on Debian 11": posts/quasselcore-on-debian-11.md - "Forklift Upgrade Arch Linux To A Dell Precision 3561": posts/forklift-upgrade-arch-linux-precision-3561.md - "Ansible KVM Router Lab Part 6": posts/ansible-kvm-router-lab-part-6.md