Linux

Cannot move /etc/resolv.conf.dhclient-new to /etc/resolv.conf: Operation not permitted

Użytkownicy linux'a przykładają nieco większą wagę do konfiguracji swojego systemu. Te nieco bardziej świadome jednostki zdają sobie sprawę, że różnego rodzaju automaty są w stanie przepisywać konfigurację systemową bez naszej wiedzy. Weźmy sobie resolver DNS. To bardzo krytyczna usługa, nie tylko z punktu widzenia bezpieczeństwa ale też i prywatności. Zakładając, że chcemy korzystać z pewnych określonych serwerów DNS lub też mamy skonfigurowaną usługę dnscrypt-proxy, trzeba zadbać o to, by adresy w pliku /etc/resolv.conf nie zostały z jakiegoś powodu przepisane. Użytkownicy zwykle nadają temu plikowi atrybut odporności ( chattr +i ) . Niemniej jednak, przy pobieraniu konfiguracji sieciowej za sprawą protokołu DHCP, w logu można zaobserwować komunikat: mv: cannot move '/etc/resolv.conf.dhclient-new' to '/etc/resolv.conf': Operation not permitted . Niby w niczym on nie przeszkadza ale możemy tak skonfigurować demona dhclient , by tę wiadomość wyeliminować.

Jak skonfigurować roaming WiFi z wpa_supplicant w linux'ie

Bezprzewodowe sieci WiFi są wszędzie. Wystarczy tylko przejść się kawałek po okolicy i przeskanować eter, a sami zobaczymy, że wynik takiego skanowania zidentyfikuje nam całą masę domowych nadajników. Oczywiście do większości z nich raczej nigdy nie będziemy mieć dostępu ale są wśród nich takie AP, do których zwykliśmy się logować. Niekoniecznie te AP muszą należeć do naszej własnej domowej sieci WiFi. Mogą to być, np. firmowe hotspoty. Nawet jeśli ograniczymy się tylko do naszego domu, to gdy ten jest nieco większy, to prawdopodobnie jeden bezprzewodowy router nie wystarczy, by pokryć zasięgiem całą dostępną przestrzeń użytkową. Będziemy musieli dokupić drugi router, czy jakiś wzmacniacz sygnału. Być może też zdecydujemy się na transmitery sieciowe (powerline). Jest cała masa urządzeń, które mogą nam pomóc rozwiązać problem słabego zasięgu. To co zwykle łączy te urządzenia, to fakt, że wszystkie z nich zawierają dodatkowy AP, który trzeba skonfigurować. Pojawia się zatem problem przełączania między tymi punktami dostępowymi. Można sobie z tym poradzić konfigurując roaming. W takiej sytuacji przełączanie między sieciami będzie następowało automatycznie, szybko i bez naszego udziału. W linux'ach roaming można włączyć przy pomocy narzędzia wpa_supplicant i w tym artykule zobaczymy jak tego dokonać.

Debian: Profilowanie sieci z guessnet, ifplugd i wpasupplicant

Kilka dni temu na forum dug.net.pl pojawił się ciekawy wątek dotyczący problemu skonfigurowania profilowanych sieci. Chodzi o to, że praktycznie każdy z nas jest po części w jakiś sposób mobilny i zabiera laptopa ze sobą w dziwne miejsca. Sieci w tych lokalizacjach mogą cechować się różnym poziomem bezpieczeństwa. Dlatego też zamiast korzystać z jednej konfiguracji sieci na linux'ie, można stworzyć szereg profili i w oparciu o nie dostosować sobie połączenie sieciowe. W tym artykule spróbujemy zaimplementować takie rozwiązanie na Debianie wyposażonym w menadżer okien Openbox. W skrócie stworzymy automat, który będzie nam działał w oparciu o pakiety guessnet, ifplugd oraz wpasupplicant. Cała konfiguracja zaś sprowadzać się będzie jedynie do edycji plików /etc/network/interfaces oraz /etc/wpa_supplicant/wpa_supplicant.conf .

Niniejszy artykuł został nieco przerobiony po fazach eksperymentów. Przede wszystkim, zrezygnowałem z zaprzęgania guessnet do rozpoznawania sieci WiFi i aplikowania roamingu. Zamiast tego zostały wykorzystane natywne rozwiązania roamingowe oferowane przez wpa_supplicant . Zaowocowało to uproszczeniem całej konfiguracji, co przełożyło się na wyeliminowanie pewnych błędów.

Metryki tras interfejsów eth0 i wlan0 w laptopie (metric)

W obecnych czasach posiadanie komputera, który dysponuje kilkoma interfejsami sieciowymi nie jest niczym niezwykłym. Praktycznie każdy laptop posiada już na pokładzie co najmniej jedną kartę WiFi i minimum jeden port ethernet. W efekcie czego jesteśmy w stanie podłączyć się do sieci zarówno przewodowo jak i bezprzewodowo. Problem jednak pojawia się w momencie, gdy chcemy wykorzystywać oba te interfejsy, z tym, że dysponujemy jedynie niezbyt zaawansowanym menadżerem okien Openbox. Takie środowiska zwykle nie mają na pokładzie automatów pokroju Network Manager, przez co bardziej zaawansowana konfiguracja sieci może być dość skomplikowana. Do tej pory wykorzystywałem interfejs bond0, by mieć możliwość łatwego przełączania się miedzy sieciami. Istnieje inny sposób konfiguracji interfejsów eth0 i wlan0 w pliku /etc/network/interfaces tak, by działały one nam równolegle i nie powodowały problemów z połączeniem, a wszystko za sprawą opcji metric .

Dynamiczna konfiguracja sieci w oparciu o ifplugd

Sporo użytkowników różnego rodzaju linux'ów, zwłaszcza dystrybucji Debian, niezbyt chwali sobie automaty konfigurujące połączenie sieciowe typu Network Manager. W sumie nigdy się jemu bliżej nie przyglądałem ale na necie nie cieszy się on najlepszą opinią. Niemniej jednak, Network Manager potrafi automatyzować pewne aspekty pracy w sieci. Weźmy przykład korzystania z dwóch różnych pod względem parametrów sieci przewodowych. Jak się zachowa nasz OS w chwili przełączania się między tymi sieciami w przypadku, gdy nie będziemy mieli zainstalowanego jakiegoś automatu dynamicznie konfigurującego połączenie? W przypadku jednej sieci, połączenie będzie nam działać, w przypadku drugiej zaś napotkamy problemy. W lekkich środowiskach opartych o menadżery okien, np. Openbox, nie musimy instalować Network Manager'a, by ogarnąć tę kwestię konfiguracyjną. Możemy posiłkować się demonem ifplugd i to tym narzędziu będzie ten wpis.

Blokowanie zapytań DNS z dnscrypt-proxy na linux'ie

Narzędzie dnscrypt-proxy począwszy od wersji 1.7.0 ma domyślnie włączoną obsługę wtyczek. W standardzie nie ma ich dużo, bo jedynie trzy ale mogą one się okazać dla pewnych osób bardzo użyteczne. Dzięki tym pluginom możemy, np. zablokować rozwiązywanie nazw w protokole IPv6 na wypadek, gdyby ten protokół nie był wspierany w naszej sieci domowej czy też u naszego ISP. Możemy także zdefiniować sobie adresy/domeny, które powinny zostać zablokowane i w efekcie użytkownicy nie będą w stanie odwiedzić tych miejsc w internecie. Jest także wtyczka, która może nam pomóc zalogować zapytania DNS. Jak widać, całkiem przyzwoite są te dodatki. W tym wpisie przyjrzymy się nieco bliżej konfiguracji poszczególnych wtyczek dla dnscrypt-proxy .

Request body exceeds maximum size (131072) for SSL buffer

Dziś chciałem zaktualizować jeden z moich bardziej obszerniejszych wpisów na tym blogu ale oczywiście nie mogło odbyć się bez problemów. Gdy już wszystkie poprawki zostały naniesione i cały artykuł trafił do formularza WordPress'a, przeglądarka zwróciła mi błąd Request Entity Too Large . Z początku nie wiedziałem o co chodzi ale, że ten aktualizowany artykuł był naprawdę długi, to domyśliłem się, że chodzi o ilość bajtów, które chciałem przesłać w zapytaniu. Przeglądając logi serwera Apache2, znalazłem tam jeszcze dodatkowo komunikaty [ssl:error] request body exceeds maximum size (131072) for SSL buffer oraz [ssl:error] could not buffer message body to allow SSL renegotiation to proceed . Może ta cała sytuacja brzmi groźnie ale wybrnięcie z niej jest wręcz banalne. Wystarczy dostosować wartość dyrektywy SSLRenegBufferSize w konfiguracji serwera Apache2.

Chroot Apache2 vs dyrektywa open_basedir w PHP

Kilka dni temu wpadł mi w oko artykuł na temat wykonania chroot serwera Apache2. Problem z tamtym tekstem jest taki, że nie uwzględnia on serwera bazy danych MySQL. W efekcie, taki chroot'owany Apache2 będzie miał problemy z połączeniem się do bazy, a nasz serwis bez niej raczej nie będzie działał prawidłowo. Przydałoby się zatem dopracować nieco ten artykuł i wypracować takie rozwiązanie, które nie popsuje przy okazji naszego serwisu www. Dlatego też w tym wpisie wykonamy sobie chroot zarówno serwera Apache2 z obsługą PHP i bazy danych MySQL za sprawą modułu unixd .

Jak zrobić screenshot całej strony www w Firefox

Każdy z nas potrafi raczej zrobić prostego "skrina" tego co wyświetla się w danej chwili na ekranie naszego komputera. Nie jest to jakaś zaawansowana wiedza i wystarczy przycisnąć przycisk PrintScreen na klawiaturze i zrzut ekranu powinien zostać przechwycony przez system i zwykle gdzieś zapisany. Niemniej jednak, strony www w przeglądarce internetowej bardzo rzadko są nam pokazywane w całej swojej okazałości. Zwykle mamy po prawej stronie pasek przewijania (scrollbar), za pomocą którego możemy przewinąć stronę w górę lub w dół. Pojawia się zatem pytanie: jak w takiej sytuacji zrobić screenshot całej strony www? Można, co prawda, przewinąć stronę kilka razy, zrobić zrzut każdego kawałka i scalić obraz w jakimś programie graficznym ale raczej za dużo z tym zachodu. Można także zaprzęgnąć jakiś plugin do przeglądarki, np. Firefox ma na wyposażeniu Awesome Screenshot. Istnieje jednak prostsza alternatywa i do tego natywnie zaimplementowana w Firefox'ie. Mowa o wierszu poleceń Firefox'a. W tym krótkim wpisie zobaczymy jak przy pomocy tego narzędzia w bardzo prosty sposób zrobić fotkę całej witryny www.

Transmiter sieciowy i jego panel admina pod linux'em

Bawię się ostatnio trochę transmiterem sieciowym (powerline ekstender). Konkretnie jest to zestaw TL-WPA4226T KIT (AV500) od TP-LINK. Same urządzenia działają przyzwoicie i realizują powierzane im funkcje w sposób bardzo zadowalający ale był jeden problem, który mi nie dawał spokoju. Do tych ekstenderów jest dołączona płytka. Na płytce są aplikacje, które umożliwiają konfigurację tych transmiterów sieciowych. Te programiki nie mają wersji dla linux'a. Nasunęło mi się zatem pytanie: to jak mam niby te transmitery skonfigurować pod tym systemem operacyjny? Niby one działają OOTB ale w przypadku bezprzewodowego routera WiFi z alternatywnym firmware OpenWRT/LEDE na pokładzie występuje kolizja adresów IP. Zarówno ekstendery jak i router roszczą sobie prawo do adresu 192.168.1.1 . Panel admina takich transmiterów umożliwia zmianę tego adresu, tylko nie mamy jak się do niego dobrać z poziomu linux'a. W tym artykule postaramy się rozwiązać problem kolizji adresów IP i skonfigurujemy nasz transmiter tak, by miał inny adres.