Rheoli ESP8266 heb ddargyfeirio porth: llwybr MQTT allanol
Mae broker y gellir ei gyrraedd o'r rhyngrwyd yn gadael i ddyfais yn y cartref gael ei rheoli dros gysylltiad a agorodd ei hun. Beth mae hynny'n ei newid ar gyfer cof TLS, pynciau ac ailchwarae.
Mae'r ddyfais yn eistedd y tu ôl i router cartref heb ddargyfeirio porth a heb gyfeiriad cyhoeddus, ac mae'n dal i orfod derbyn cyfluniad o fewn eiliadau. Nid twll yn y wal dân yw'r tric. Cysylltiad yw hi y mae'r ddyfais yn ei agor allan at froker y gall ei gyrraedd, ac sydd wedyn yn trosglwyddo negeseuon yn ôl ar hyd yr un llwybr sefydledig. Daw pob nodwedd y mae pobl yn ei hoffi am y dyluniad hwn, a phob trap ynddo, o'r gwrthdroi hwnnw.
Beth sy'n mynd drwy'r NAT mewn gwirionedd
Pan fydd y ddyfais yn agor cysylltiad TCP i'r broker, mae router y cartref yn creu mapiad ac yn ei gadw'n fyw am oes y ffrwd. Mae atebion ar y ffrwd honno'n dychwelyd i'r ddyfais oherwydd bod y mapiad eisoes yn bodoli. Nid yw'r broker byth yn dechrau unrhyw beth tuag at y tŷ, felly nid oes pecyn sy'n dod i mewn heb ei ofyn i'r router ei wrthod. Dyna'r ddadl rwydweithio gyfan, a dyna pam mae'r dull yn gweithio ar rwydweithiau nad ydych yn eu rheoli.
Rhaid i'r ddyfais gadw'r cysylltiad yn fyw neu ei ailsefydlu, a ddaw'n gwestiwn dibynadwyedd unwaith y bydd y bensaernïaeth wedi'i setlo.
Mae'r broker yn llwybro pynciau, nid yw'n dirprwyo HTTP
Mae MQTT yn diffinio cyfnewidiadau cyhoeddi a thanysgrifio: mae'r ddyfais yn tanysgrifio i hidlydd pwnc y caniateir iddi ei ddarllen, ac mae rheolydd awdurdodedig yn cyhoeddi i bwnc sy'n cyfateb. Mae'r broker yn paru cyhoeddiadau â thanysgrifiadau ac yn dosbarthu copïau. Nid yw'n gwybod beth yw cais porwr, ac ni fydd yn anfon HTTP GET ymlaen i weinydd gwe'r ddyfais. Os mai dim ond HTTP y mae'r firmware presennol yn ei siarad, mae angen newid cymhwysiad neu gydran cyfieithu fwriadol ar y dyluniad broker.
Nid yw enwau pynciau'n awdurdodi ychwaith. Mae'r rhan fwyaf o froceri yn cefnogi rhestrau rheoli mynediad fesul cleient, a dylid cyfyngu dyfeisiau i'w coed cyhoeddi a thanysgrifio eu hunain yn hytrach na rhannu un gofod enwau byd-eang.
Adnoddau'r ddyfais sy'n penderfynu siâp TLS
Mae gan ESP8266 RAM cyfyngedig, a'r handshake TLS yw'r peth drytaf y mae'n ei wneud. Mae craidd Arduino yn cludo BearSSL yn benodol ar gyfer y cyfyngiad hwn, ac mae'r dewis rhwng gwirio CA a phinio ôl-brint yn newid yr ôl-troed cof a'r hyn y gall ymosodwr â thystysgrif ddilys ar gyfer enw arall ei wneud. Gwirio CA'r broker yw'r opsiwn cryfaf pan fydd y pentwr yn caniatáu. Mae maint y llwyth yn bwysig hefyd: mae cleient MQTT yn dal byffer, ac mae negeseuon mwy nag ef yn cael eu torri'n dawel oni bai bod y byffer yn cael ei godi'n fwriadol.
Mae keepalive ac amserau allan y soced yn rhan o'r un gyllideb, oherwydd bod cleient nad yw byth yn sylwi ar gysylltiad marw yn stopio derbyn gorchmynion heb adrodd gwall.
Y semanteg negeseuon sy'n brathu
Mae neges a gedwir yn cael ei storio gan y broker a'i dosbarthu i danysgrifwyr cyfatebol hwyrach, sy'n ardderchog ar gyfer y cyflwr presennol ac yn beryglus ar gyfer gorchmynion untro: gall dyfais sy'n ailgysylltu dderbyn gorchymyn ddoe fel petai'n newydd. Mae QoS 1 yn gwarantu dosbarthu o leiaf unwaith, felly mae dyblygiadau'n normal ac mae'n rhaid i'r cymhwysiad fod yn ddiogel rhag ailadrodd, yn ddelfrydol gyda dynodwr neu stamp amser y gall ei wrthod. Mae'r ewyllys olaf yn rhoi signal statws i chi pan fydd y ddyfais yn cwympo, ond dim ond os yw'r cysylltiad yn methu mewn gwirionedd yn hytrach nag yn hongian.
Mae ymddygiad sesiwn glân yn penderfynu a yw'r broker yn cadw eich tanysgrifiadau tra byddwch i ffwrdd, a dyna pam mae rhai dyfeisiau'n colli'r neges gyntaf ar ôl pob ailgysylltu.
Mae TLS yn amddiffyn y naid i'r broker. Nid yw'n amgryptio llwyth o ben bwy gilydd yn erbyn gweithredwr y broker, a all ddarllen popeth a gyhoeddwch drwyddo.
Ffiniwch y cylch bywyd a'i brofi â data diniwed
Cynlluniwch ailgysylltu gyda chwtogi yn lle dolen ailgeisio dynn, tanysgrifiwch yn benodol os nad yw'r sesiwn yn barhaus, a chofnodwch ganlyniad y cysylltiad fel bod dyfais dawel all-lein yn gadael tystiolaeth. Profwch y llwybr ailgysylltu â llwythi sampl nad ydynt yn gwneud dim, oherwydd ni ddylai prawf cynhyrchu cyntaf sianel orchmynion fod yn orchymyn go iawn. Yna cadarnhewch beth mae neges a gedwir yn hen yn ei wneud wrth ailgysylltu, a phenderfynwch a yw'r ymddygiad hwnnw'n dderbyniol ar gyfer pob pwnc.
Wedi'i wneud fel hyn, mae'r dyluniad yn dileu un gofyniad rhwydwaith i mewn ac yn gadael meddalwedd y ddyfais, polisi'r broker a semanteg y negeseuon yn waith gweladwy yn hytrach na rhagdybiaethau cudd.