Disclaimer: I’m not an expert in networking, so the instructions below may be flawed. Be warned and proceed with caution! Corrections are highly welcome.

DNS leaks are nasty. ISPs may tamper with DNS for purposes of censorship or eavesdropping. Luckily, there are public DNS servers, e. g. Google (8.8.8.8), Cisco OpenDNS (208.67.222.222) and Quad9 (9.9.9.10) which may behave better.

I’ve set up my router to use public DNS servers instead of provider’s. In LEDE (OpenWrt) router firmware this can be done in GUI: go to Network → Interfaces → WAN → Edit → Advanced Settings, uncheck ‘Use DNS servers advertised by peer’ and add custom server IPs below.

The trouble is that LEDE runs its own DNS server and advertises its address (e. g. 192.168.0.1) to clients via DHCP. When NetworkManager connects to OpenVPN it keeps this address as one of DNS resolvers (even if you add push "dhcp-option DNS 9.9.9.10" to OpenVPN server config). You can check it with

cat /etc/resolv.conf
> 9.9.9.10
> 208.67.222.222
> 192.168.0.1

This way, DNS requests may occasionally be sent to the router which forwards them to configured servers skipping VPN tunnel and making them visible to the ISP (unless you’ve set up DNSCrypt, of course).

Read more

Recently I was struggling to make tab close icons look closer to Breeze theme. Now I managed to make tabs look Breeze-ish too! The icon rules are also better now, opacity works without superposition problems:

Firefox tabs a-la Breeze

Firefox tabs a-la Breeze - circular icon

Read more

openHAB site openHAB chart

In this post I want to share some details about my simple low budget smart home system based on 433.92 MHz receiver/transmitter controlled by Arduino. It can be easily extended with many cheap wireless devices, such as door bells, remote sockets, smoke alarms, leak detectors, etc. I’ll describe how to control remote socket, receive alarms from wireless smoke detector and draw a plot of room temperature obtained from regular wired sensor.

Read more

Ever since I’ve learned about alternative router firmware I wanted to give it a try. With bugs and security holes being found in vendor firmware every now and then it was becoming even more relevant. Being an open source software advocate, I was mostly looking into OpenWrt. Unfortunately, my hardware was either not supported (ZyXEL P660 ADSL router) or in some early alpha stage (D-Link DIR-300). But then I learned about a reasonably cheap TP-LINK TL-WR841N[D] router which has good OpenWrt support. So I bought it (for ~18 €, got version 9.2) and immediately flashed OpenWrt on it — which was super easy: I just uploaded .bin file and waited for reboot.

Read more

Bitcoin Core, the “full” Bitcoin client, uses a lot of disk space to store the blockchain. I use GdMap to clean up my SSD and was recently shocked to see how many GBs are occupied by those files. So I decided to join the dark side and switch to a lightweight wallet. There are several of them around of which I chose Electrum. The only trouble I had were my old (donation) addresses that are too much of a hassle to change. I seem to have solved this problem by creating a second wallet in Electrum and here’s how I made it:

First, I imported private keys for all needed addresses from Bitcoin Core. In Debug Console I typed dumpprivkey "<address>" for every address I wanted to keep.

Then, I started up Electrum, selected File — New/Restore and entered all the keys I obtained in previous step. If you do that, pay attention to all warnings and remember to backup this wallet — you won’t be able to recover it with your seed.

After that I was able to use my old addresses to receive and send Bitcoins in Electrum. Minus the gigabytes of blockchain data.

Уже достаточно давно я выяснил, что оптимальным методом фильтрации SMS-спама для меня является отсев сообщений с номеров, которых нет в моей адресной книге. С этой задачей справляются многие программы, например, No Spam Sms или Simplest spam sms filter. Однако, ни одна из них не свободна. Решил исправить этот недостаток, попутно собрав в одной программе все необходимые мне функции:

  • Беззвучное уведомление о сообщениях с незнакомых номеров с занесением их в отдельный список;
  • возможность добавления отправителя в адресную книгу;
  • удаление или отправка сообщения во входящие.

Программа не работает в фоне, а запускается только при поступлении новых SMS (разумеется, список заблокированных сообщений можно открыть когда вздумается).

Read more

Со времён старого доброго Delphi 7 ни разу не кодил ничего GUI’ёвого, а тут чёрт дёрнул скачать ADT Bundle. И как-то сама собой написалась простая утилитка, функционала которой хотелось уже давно.

Задача её состоит в том, чтобы выводить настраиваемое напоминание при попадании в зону действия выбранной сети. Таким образом, можно напомнить себе о чём-то, когда попадёшь в указанное место. Определение места по имени беспроводной сети позволяет отказаться от GPS и сэкономить заряд аккумулятора. С этой же целью программа не «будит» устройство периодически, а активируется только когда устройство «проснётся». Поэтому если вы прибыли в нужное место, но ни разу не «разбудили» там аппарат, программа не сработает.

Read more

Утомившись ежедневно просеивать тонны шлака в поисках одной-двух действительно интересных новостей, решил натравить на новостную ленту наивный байесовский классификатор (широко используемый, например, для автоматической фильтрации спама). Для его тренировки добавлял к каждой новости две ссылки: “отстой” и “не отстой”, на которые тыкал в течение несколько дней. Там же выводил результат применения классификатора к этой новости.

Под конец обучения абсолютно все новости стали валиться в категорию “отстой”.

Конечно, в используемой библиотеке могли быть проблемы с кириллицей, или в мой код ошибка вкралась, но подопытный сайт из закладок я все-таки удалил.

Составил композицию из фотографий нескольких светодиодных ламп с DealExtreme, а также обычной лампы накаливания и компактной люминесцентной лампы:

Сравнение цветовой температуры LED-ламп

Read more

Raspberry Pi в роли уютного сервачка

Вот эта кроха с недавних пор обслуживает glsk.net и домашний медиа-сервер. Конечно, LAMP еле ворочается на 496 МБ, но тут есть простор для оптимизации.