Před 70 lety, 7. června 1954, ve věku 41 let, zemřel Alan Turing, britský matematik, logik, kryptoanalytik a zakladatel moderní informatiky.
NiceGUI umožňuje používat webový prohlížeč jako frontend pro kód v Pythonu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána ve verzi 2024.6. Z novinek lze vypíchnout lepší integraci LLM (OpenAI, Google AI, Ollama) nebo podporu Matter 1.3.
IKEA ve Spojeném království hledá zaměstnance do své nové pobočky. Do pobočky v počítačové hře Roblox. Nástupní mzda je 13,15 liber na hodinu.
Alyssa Rosenzweig se v příspěvku na svém blogu Vulkan 1.3 na M1 za 1 měsíc rozepsala o novém Vulkan 1.3 ovladači Honeykrisp pro Apple M1 splňujícím specifikaci Khronosu. Vychází z ovladače NVK pro GPU od Nvidie. V plánu je dále rozchodit DXVK a vkd3d-proton a tím pádem Direct3D, aby na Apple M1 s Asahi Linuxem běžely hry pro Microsoft Windows.
Byla vydána (𝕏) květnová aktualizace aneb nová verze 1.90 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.90 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Byla vydána (Mastodon, 𝕏) nová verze 2024.2 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem nových nástrojů v oficiálním oznámení.
Počítačová hra Tetris slaví 40 let. Alexej Pažitnov dokončil první hratelnou verzi 6. června 1984. Mezitím vznikla celá řada variant. Například Peklo nebo Nebe. Loni měl premiéru film Tetris.
MicroPython (Wikipedie), tj. implementace Pythonu 3 optimalizovaná pro jednočipové počítače, byl vydán ve verzi 1.23.0. V přehledu novinek je vypíchnuta podpora dynamických USB zařízení nebo nové moduly openamp, tls a vfs.
Canonical vydal Ubuntu Core 24. Představení na YouTube. Nová verze Ubuntu Core vychází z Ubuntu 24.04 LTS a podporována bude 12 let. Ubuntu Core je určeno pro IoT (internet věcí) a vestavěné systémy.
V tomto zápisku rád sepsal zkušenosti se switchem NetGear GS105PE v síti, která je linuxově pozitvní a windowsově negativní (jinými slovy se jedná o domácí síť, ve které nemám k dispozici žádné m$ windows, pokud se třeba jedná o konfiguraci switche a podobně). To, co zde píši by se přitom mělo/mohlo vztahovat i na nejbližší podobné switche jako jsou třeba GS105Ev2 nebo GS108PE.
NetGear GS105PE vypadá na první pohled jako velmi šikovná pětiportová krabička. Krom toho, že je to switch gigabitový, pak jeho největší výhodou je, že je napájený z PoE (bohužel ale jinak napájet nelze) a zároveň ale umožňuje sám až na dvou portech PoE injektovat (nejlépe ovšem, když je napájen z 802.3.at, pak má dostatek šťávy, aby dal alespoň na jednom portu plné 802.af). A navíc switch podporuje VLAN a pár dalších funkcí z manageovatelných switchů (i když jej Netgear řadí do jakési mezikategorie, kterou nazývá „smart“ - je dnes ještě něco, co není „smart“ ). To by bylo z pozitiv tak víceméně všechno.
Bohužel tento switch má (respektive měl) i několik dosti závažných nesmyslů především co se jeho firmwaru a vzláště pak konfigurace týká. Především: switch původně neměl webové rozhraní a musel se nastavovat utilitou, která je windows only. Vzhledem k tomu, že si to někteří linuxáci nenechali líbít a snažili se napsat si takovou utilitu sami, zjistilo se, že komunikace mezi oficiální utilitou a switchem je z hlediska bezpešnost naprosto tragická. Konfigurace lítala po síti broadcastem po všech VLAN a sice s heslem v plaintextu. To Netgear posléze změnil tak, že heslo zaxoroval řetězcem „NtgrSmartSwitchRock“. Naštěstí se alespoň podařilo vytvořit pár utilitek, kterými šlo switch jakž-takž konfigurovat (viz tady, resp. tady a tady a tady) - teď vám ovšem neřeknu, která z nich funguje s firmwarem se zaxorovaným heslem a která ještě ne, ale v nejhoším to není až takový problém upravit.
Dalším problémem switche (stejně jako spousty dalších - i těch drahých switchů od Netgearu) je, že se snaží „volat domů“. Ať již použijeme jejich windows utilitu nebo v novější verzi firmware webové rozhraní (viz níže), pokaždé se switch snaží spojit se s Netgearem a vynutit si registraci. Vzhledem k tomu, že v kterési verzi firmware měl switch (dle nmap) otevřeny ale vyfiltrovaný port pro PPTP, vykládám si to tak, že ve chvíli, když zákazníkovi něco nefunguje, má technická potvora možnost se na switch připojit, aby se na to podívali, co přesně se děje. Jenže i tak je to dle mého hrozná zhůvěřilost a debilita! Naštěstí, zdá se, existuje způsob, jak minimalizovat škody. Kromě zakázání PPTP a dalších tunelovacích protokolů, dokud je člověk v síti nepotřebuje (což by asi měla být tak jak tak samozřejmost dobrého zabezpečení sítě), zdá se pomůže blokovat v síti na úrovni DNS adresu my.netgear.com
. Netgear se tak pokaždé vzteká, což by ale mohlo znamenat, že stačí blokovat jen tuto adresu .
„Volání domů“ zřejmě bude marketingovým rozhodnutím, které se asi jen tak nezmění. Nicméně, co se týká switche GS105PE, tak šlo v uplynulé době pozorovat velmi výrazný posun k lepšímu. Nejprve se ve verzi firmware objevilo webové rozhraní, které dokonce (oproti jiným switchům z dílny Netgearu) nemělo problém s běžným prohlížečem(TM). Trošičku problémem bylo, jak switch pod linuxem bez windowsovské utility upgradovat, ale i tady se našli lidé, kteří přišli, jak na to, a ještě jiní, kteří zbastlili utilitku, kterou je upgrade možné provést. Jenom bych chtěl upozornit na to, že utilitka neumí xorování hesla, takže je nejjednodušší pro upgrade heslo nastavit na prázdné. Tady je (je třeba mít nainstalováno atftp, konfigurace přímo ve skriptu):
#!/usr/bin/perl -w ####################################################################### # # NSDP firmware update script v.1.0 # Copyright 2012 Konstantin S. Vishnivetsky # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # # For contacts: # WEB: http://www.vishnivetsky.ru # E-mail: kos@vishnivetsky.ru # SkyPE: kvishnivetsky # ICQ: 328-468-511 # Phone: +7 913 774-7588 # ####################################################################### use strict; use utf8; use IO::Select; use IO::Socket; use Data::Dumper; ####################################################################### # !!! ATTENTION !!!! # Some settings are empty - fill it with YOUR settings, please. # !!! ATTENTION !!!! ############ Initial config begin ##################################### my $DEBUG = 1; my $selfmac = "\x00\x11\x22\x33\x44\x55"; # MAC adresa PC (00:11:22:33:44:55) my $swmac = "\x66\x77\x88\x99\xaa\xbb"; # MAC adresa switche (66:77:88:99:aa:bb) my $sw_ip = '10.10.10.10' ; # IP addresa switche (10.10.10.10) my $sw_fw = 'fw.bin' ; # Firmware in *.hex file my $psswd= "password" ; # !!!!! my $DST_ADDR = pack('CCCC', 255,255,255,255); # Global broadcast addr - use on single interface host #my $DST_ADDR = pack('CCCC', 10,10,10,255); # Local broadcast addr of your network - use on multiple interface host ############ Initial config end ####################################### my $seq = rand(65535); printf "Initializing switch for TFTP\n" if $DEBUG; FwUpdate(63321); printf "Waiting...\n"; sleep(5); printf "Sending file %s via TFTP to %s\n", $sw_fw, $sw_ip if $DEBUG; `atftp -p --verbose --trace -l $sw_fw -r $sw_fw $sw_ip`; exit 0; sub FwUpdate { my $SRC_PORT = shift; my $sock = IO::Socket::INET->new( Proto => 'udp', LocalAddr => '0.0.0.0', Broadcast => 1, LocalPort => $SRC_PORT, ReuseAddr => 1 ) or die "Can't bind : $@\n"; my $select = IO::Select->new($sock); sendFwUpdate($sock, $seq++, $selfmac, $swmac, $psswd); my $isAlive = 1; while($isAlive) { my @ready = $select->can_read(5); if (@ready) { my $data = undef; my $from = recv($sock, $data, 1500, 0) || die "recv: $!"; my($port, $from_addr) = sockaddr_in($from); my @hexdata = unpack("C*", $data); printf "<< %s\n", join(' ', map(sprintf("0x%.2x", $_), @hexdata)) if $DEBUG; parseNSDP($data); $isAlive = 0; } else { printf STDERR "Timeout!\n"; $sock->close(); exit -1; } }; $sock->close(); } sub sendFwUpdate { my $sock = shift; my $seq = shift; my $selfmac = shift; my $swmac = shift; my $password = shift; my $msg = pack('nC6a6a6Sna4N', 0x0103, 0x00,0x00,0x00,0x00,0x00,0x00, $selfmac, $swmac, 0x0000, $seq, "NSDP", 0x0000); $msg .= pack('nna'.length($password), 0x000a, length($password), $password); # TLV with password $msg .= pack('nnC', 0x0010, 0x0001, 0x01); # DHCP mode On|Off $msg .= pack('nn', 0xffff, 0x0000); # trailer my @hexdata = unpack("C*", $msg); printf ">> %s\n", join(' ', map(sprintf("0x%.2x", $_), @hexdata)) if $DEBUG; my $dst = sockaddr_in(63322, $DST_ADDR); $sock->send($msg, 0, $dst) or die "send: $!"; }; sub parseNSDP { my $data = shift; my($ctype, $reserved, $selfmac, $dstmac, $reserved1, $seq, $sign, $reserved2) = unpack('na6a6a6a2na4Nn', $data); my @selfmac_ = unpack('C6', $selfmac); my @dstmac_ = unpack('C6', $dstmac); printf "ctype=%.4x\n", $ctype if $DEBUG; printf "selfmac=%s\n", join(':', map(sprintf("%.2x", $_), @selfmac_)) if $DEBUG; printf "dstmac=%s\n", join(':', map(sprintf("%.2x", $_), @dstmac_)) if $DEBUG; printf "seq=%.4x\n", $seq if $DEBUG; printf "sign=%s\n", $sign if $DEBUG; };
Utilitka funguje tak, že se switchi pošle jistý packet a switchi je pak možné firmware poslat přes normální TFTP. Dobrou zprávou je, že ve kterési další verzi firmware lze switch do TFTP módu nastavit přes webové rozhraní a firmware do něj nalít jednoduše pomocí:
atftp -p --verbose --trace -l $FW -r fw.bin $SW_HOST
, kde $FW
je soubor s firmware a $SW_HOST
je ip adresa switche. Nejlepší na tom je, že ani to už není v poslední verzi firmware (1.5.*) nutné. Tento firmware je sice nutno nahrávat nadvakrát - bootloader je zvlášť (čtěte pozorně release-notes), nicméně nakonec tu máme switch, který lze updatovat snadno pomocí webového rozhraní (viz screenshot). Mimochodem, v poslední verzi firmware je možné také vypnout konfiguraci pomocí oné windowsoidní utility úplně (a navíc údajně Netgear tentokrát nasadil „skutečné šifrování“ hesla - popravdě, mně už je to jedno, své switche ovládám nyní jen přes web ).
Zdá se tedy, že alespoň v některých věcech se Netgear poučil ze svých chyb a vývoj firmware GS105PE se ubírá správným směrem. Se šmírováním asi bohužel nic nenaděláme. Zbývá ale jedna věc, která dost vadí ve chvíli, kdy má člověk v sítí více VLAN - switch poslouchá na všech VLAN a pokud si IP adresu žádá dynamicky přes DHCP, pak rozesílá DHCP dotazy přes všechna rozhraní a ve svému důsledku si nastaví adresu z náhodné VLAN. Pochopitelně nejlepší v takovém případě je nastavit adresu na statickou, na což ovšem člověk při nastavování ne vždy zavčas myslí a pak hledá jen, ve kterém segmentu sítě se mu switch usadil. Pro tento případ stačilo blokovat příchozí DHCP packety ze switche a povolit je pouze z VLAN, ze které si to přeji, asi nějak takto (všechny VLAN routuje přes stejný router):
# xx:xx:xx:xx:xx:xx == MAC adresa switche iptables -t raw -A PREROUTING -p udp --dport 67 -m mac --mac-source xx:xx:xx:xx:xx:xx -i $VLAN_SWITCH_ADMIN_IF -j ACCEPT iptables -t raw -A PREROUTING -p udp --dport 67 -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP
Pravda, je to jen narovnávák na vohejbák, ale lepší než drátem do voka. Samozřejmě ideální by bylo, kdyby switch umožňoval nastavit VLAN pro management, jak to má u dražších modelů, ale moc tomu nevěřím, že by do toho NetGear šel...
Tiskni Sdílej:
switchová část umí podstatně víc věcí než switch v RB450GTo rozhodně, ale jak už tu někdo psal, mě to doma stačí .
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09) 00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09) 00:01.1 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09) 00:01.2 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09) 00:06.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09) 00:1c.0 PCI bridge: Intel Corporation DH89xxCC PCI Express Root Port #1 (rev 08) 00:1c.1 PCI bridge: Intel Corporation DH89xxCC PCI Express Root Port #2 (rev 08) 00:1c.2 PCI bridge: Intel Corporation DH89xxCC PCI Express Root Port #3 (rev 08) 00:1c.3 PCI bridge: Intel Corporation DH89xxCC PCI Express Root Port #4 (rev 08) 00:1d.0 USB controller: Intel Corporation DH89xxCC USB2 Enhanced Host Controller #1 (rev 08) 00:1f.0 ISA bridge: Intel Corporation DH89xxCC LPC Controller (rev 08) 00:1f.2 SATA controller: Intel Corporation DH89xxCC 4 Port SATA AHCI Controller (rev 08) 00:1f.3 SMBus: Intel Corporation DH89xxCC SMBus Controller (rev 08) 00:1f.7 System peripheral: Intel Corporation DH89xxCC Watchdog Timer (rev 08) 01:00.0 Co-processor: Intel Corporation Device 0434 (rev 21) 01:00.1 Ethernet controller: Intel Corporation DH8900CC Series Gigabit Fiber Network Connection (rev 21) 01:00.2 Ethernet controller: Intel Corporation DH8900CC Series Gigabit Fiber Network Connection (rev 21) 07:00.0 Unassigned class [ff00]: Juniper Networks Device 0062 (rev 01) 08:00.0 Unassigned class [ff00]: Juniper Networks Device 0063 (rev 01) 09:00.0 Ethernet controller: Broadcom Corporation Device b854 (rev 03):)