Posted on 16 lutego, 2019
VNC w Debianie
Jeżeli chcemy skonfigurować usługę VNC, to najprostszym rozwiązaniem jest użycie x11vnc:
1 |
apt-get install x11vnc |
Aby usługa startowała automatycznie tworzymy plik /etc/systemd/system/x11vnc.service:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[Unit] Description="x11vnc" Requires=display-manager.service After=display-manager.service [Service] ExecStart=/usr/bin/x11vnc -forever -rfbport 5900 -xkb -noxrecord -noxfixes -noxdamage -shared -norc -auth /run/user/1000/gdm/Xauthority -display :0 ExecStop=/usr/bin/killall x11vnc Restart=always RestartSec=10 [Install] WantedBy=multi-user.target |
Ustawiamy usługę, aby startowała razem z systemem i uruchamiamy ją:
1 2 |
systemctl enable x11vnc systemctl start x11vnc |
Powyższa konfiguracja pozwala na podłączenie się do sesji aktualnie zalogowanego użytkownika.
Posted on 23 czerwca, 2018
Instalacja Debiana w VirtualBoxie zawiesza się na skanowaniu serwerów lustrzanych
Zauważyłem, że instalacja Debian w wirtualnej maszynie zawiesza się podczas skanowania serwerów lustrzanych (Scanning mirrors…) tylko, gdy w opcjach sieciowych wybieramy „Bridged Adapter”. Jeżeli pozostamy domyślny „NAT”, to instalacja przebiega pomyślnie.
W przypadku wystąpienia powyższego problemu można instalować z opcją „NAT”, a „Bridged Adapter” ustawić po instalacji.
Updated on 2 kwietnia, 2018
OpenVPN na instancji EC2 (Amazon)
Serwer
W celu instalacji OpenVPN-a trzeba włączyć repozytoriun EPEL:
1 2 |
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo yum -y upate |
Instalujemy easy-rsa i OpenVPN:
1 |
sudo yum -y install easy-rsa openvpn |
Generujemy certyfikat i klucz dla serwera:
1 2 3 4 5 |
cd /usr/share/easy-rsa/3.0 ./easyrsa init-pki ./easyrsa build-ca ./easyrsa gen-dh ./easyrsa build-server-full server nopass |
Kopiujemy pliki do katalogu OpenVPN-a:
1 |
cp pki/ca.crt pki/dh.pem pki/issued/server.crt pki/private/server.key /etc/openvpn/server/ |
Generujemy klucz dla TLS-a:
1 2 |
cd /etc/openvpn/server openvpn --genkey --secret pfs.key |
Tworzymy plik konfiguracyjny dla serwera:
1 |
vim /etc/openvpn/server.conf |
Wklejamy do pliku poniższą zawartość:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
port 1194 proto tcp dev tun ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/server.crt key /etc/openvpn/server/server.key dh /etc/openvpn/server/dh.pem cipher AES-256-CBC auth SHA512 server 10.8.0.0 255.255.255.0 # push "redirect-gateway def1 bypass-dhcp" # Directs all traffic through VPN connection. push "route 10.8.0.0 255.255.255.0" # push "dhcp-option DNS 8.8.8.8" # push "dhcp-option DNS 8.8.4.4" ifconfig-pool-persist ipp.txt keepalive 10 120 comp-lzo persist-key persist-tun status openvpn-status.log log-append openvpn.log verb 3 tls-server tls-auth /etc/openvpn/server/pfs.key 0 client-to-client # Enables communication between clients. |
OpenVPN działa na porcie 1194, więc taki port należy odblokować na firewallu.
Aktywujemy i uruchomiamy usługę OpenVPN-a:
1 2 |
systemctl enable openvpn@server systemctl start openvpn@server |
Klient
Na serwerze generujemy certyfikat i klucz dla klienta:
1 2 |
cd /usr/share/easy-rsa/3.0 ./easyrsa build-client-full client nopass |
Kopijemy poniższe pliki na urządzenie, które będzie łączyć się z serwerem:
1 2 3 4 |
/etc/openvpn/server/pfs.key /usr/share/easy-rsa/3.0/pki/ca.crt /usr/share/easy-rsa/3.0/pki/issued/client.crt /usr/share/easy-rsa/3.0/pki/private/client.key |
W katalogu /etc/openvpn tworzymy plik client.conf i wklejamy poniższą zawartość. W „remote” wpisujemy adres naszej instancji:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
client dev tun proto tcp remote ec2.instance.address 1194 resolv-retry infinite nobind persist-key persist-tun ca /etc/openvpn/client/ca.crt cert /etc/openvpn/client/client.crt key /etc/openvpn/client/client.key remote-cert-tls server tls-auth /etc/openvpn/client/pfs.key 1 cipher AES-256-CBC comp-lzo verb 3 auth SHA512 |
Podobnie jak w przypadku serwera aktywujemy i uruchomiamy usługę OpenVPN-a dla klienta:
1 2 |
systemctl enable openvpn@client systemctl start openvpn@client |
Na kliencie sprawdzamy adres jaki został nam przydzielony:
1 2 3 4 5 |
ip addr 3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100 link/none inet 10.8.0.10 peer 10.8.0.9/32 scope global tun0 |
Sprawdzamy na kliencie oraz na serwerze czy komunikacja działa poprawnie:
1 2 3 4 5 6 7 8 9 |
[user@server]$ ping 10.8.0.10 PING 10.8.0.10 (10.8.0.10) 56(84) bytes of data. 64 bytes from 10.8.0.10: icmp_seq=1 ttl=64 time=48.4 ms 64 bytes from 10.8.0.10: icmp_seq=2 ttl=64 time=76.9 ms [user@client]$ ping 10.8.0.1 PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data. 64 bytes from 10.8.0.1: icmp_seq=1 ttl=255 time=53.2 ms 64 bytes from 10.8.0.1: icmp_seq=2 ttl=255 time=39.5 ms |
Linki
https://aws.amazon.com/premiumsupport/knowledge-center/ec2-enable-epel/
https://www.comparitech.com/blog/vpn-privacy/how-to-make-your-own-free-vpn-using-amazon-web-services/
http://blog.dutchcoders.io/configuring-openvpn-using-easyrsa/
Updated on 3 listopada, 2018
OpenStack – część 2 – Tworzenie instancji oraz sieci
Zakładam, że posiadamy już OpenStacka (wersja queens) zainstalowanego w systemie CentOS 7.
Obrazy systemów
Przed utworzeniem instancji należy dodać obraz systemu. Domyślnie mamy do dyspozycji jeden obraz z systemem CirrOS. My jednak załadujemy własny obraz. Możemy to zrobić na dwa sposoby. Pierwszy to pobranie obrazu ISO i samodzielna instalacja systemu, a drugi to użycie obrazu przygotowanego specjalnie dla OpenStacka. Lista dystrubucji które udostępniają obrazy dla OpenStacka znajduje się tutaj. Skorzystamy z najnowszego obrazu Debiana (link do pobrania).
Po pobraniu obrazu wchodzimy na stronę zarządzania obrazami „Project -> Compute -> Images” i klikamy na przycisk „Create Image”.
Wpisujemy nazwę, wybieramy plik z obrazem oraz format „QCOW2 – QEMU Emulator” i naciskamy „Create Image”.
Po chwili do listy obrazów zostanie dodany nowy obraz.
Sieci
W tym momencie powinniśmy utworzyć instancję, ale każda instancja do działania wymaga sieci. OpenStack domyślnie tworzy jedną sieć o nazwie „public”, której użycie powinno nam zagwarantować nadanie adresu naszej instancji przez DHCP oraz dostęp do sieci Internet, ale… z jakiegoś powodu to nie działa. Instancje nie otrzymują adresów.
Problem udało mi się rozwiązać dodając własną sieć.
Przechodzimy do „Project -> Network -> Networks” i klikamy na „Create Network”. Uzupełniamy nazwę sieci („prod”), klikamy „Next” i uzupełniamy nazwę podsieci oraz „Network Address” np. „20.0.0.0/24”, następnie „Next” oraz „Create”.
Teraz musimy podłączyć naszą sieć do Internetu. Podczas instalacji tworzona jest sieć publiczna o nazwie „public” oraz router o nazwie „rourter1”. Te dwa elementy zapewniają nam łączność ze światem zewnętrznym.
Najłatwiej byłoby dodać naszą sieć do domyślnego routera („router1”), ale ta operacja powoduje, że nie da się przypisywać zewnętrznych adresów IP do naszych instancji. Co ciekawe, da się to zrobić przy pomocy narzędzi konsolowych. Problem można ominąć tworząc własny router i ustawiając jego domyślną bramę na router publiczny („router1”).
Wchodzimy w „Project -> Network -> Routers” i klikamy na „Create Router”. Uzupełniamy nazwę i ponownie na „Create Router”. Wchodzimy w szczegóły naszego routera i klikamy w „Add Interface”. W „Subnet” wybieramy naszą sieć („prod”) i naciskamy „Submit”. Następnie klikamy w „Set Gateway”, w „External Network” wybieramy sieć „public” i klikamy „Submit”.
Od teraz wszystkie instancje w naszej sieci („prod”) będą miały dostęp do Internetu.
Instancje
Przechodzimy do „Project -> Compute -> Instances” i klikamy na „Launch Instance”. Uzupełniamy „Instance Name” w zakładce „Details”, wybieramy obraz w zakładce „Source” oraz nowo utworzoną sieć („prod”) w zakładce „Networks”. Następnie tworzymy klucz w zakładce „Key Pair”, pobieramy klucz prywatny i zapisujemy go w pliku. Będziemy go używali do łączenia się z naszą instancją przez SSH. Naciskamy „Launch Instance”.
Możemy kilknąć w naszą instancję, a następnie w zakładkę „Log”, aby zobaczyć co się dzieje. Aby zobaczyć pełny log możemy kliknąć na „View Full Log”. Interesuje nas tabela z interfejsami sieciowymi (szukamy ciągu znaków „Net device info”). Zobaczymy w niej, że interfejs „eth0” utrzymał adres (np. „20.0.0.9”).
Możemy teraz wejść w „Project -> Network -> Network Topology”, aby zobaczyć jak wygląda struktura naszej sieci.
Niestety, nie może się połączyć z instacją, ponieważ dostęp do instancji jest zablokowany (port 22) oraz instancja nie posiada zewnętrzengo adresu IP.
Security groups
Przechodzimy do „Admin -> Network -> Security Groups”. Przy grupie „default” klikamy na „Manage Rules” i „Add Rule”. W nowym oknie w „Rule” wybieramy „SSH” i naciskamy „Add”. W celach testowych możemy również dodać reguły zezwalające na ICMP dzięki czemu będziemy mogli pingować nasze instancje. Dodajemy regułę „All ICMP” dwa razy. Za pierwszym razem w „Direction” wybierami „Ingres”, a za drugim „Engress”.
Zewnętrze adresy IP
OpenStack powinien utworzyć w naszym systemie interfejs „br-ex”, który służy do komunikacji pomiędzy naszymi instancjami, a światem zewnętrznym. Jego obecność możemy sprawdzić poleceniem „ip addr”.
1 2 3 4 5 6 |
5: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000 link/ether 66:7e:ac:bc:aa:44 brd ff:ff:ff:ff:ff:ff inet 172.24.4.1/24 scope global br-ex valid_lft forever preferred_lft forever inet6 fe80::647e:acff:febc:aa44/64 scope link valid_lft forever preferred_lft forever |
Jak widzimy interfejs posiada adres 172.24.4.1/24. Nasze instancje będą otrzymywać adresy właśnie z tego zakresu.
Wracamy do listy instancji. Rozwijamy menu obok instancji i wybieramy „Assiociate Floating IP”. W nowym oknie naciskamy na „+” obok pustej listy IP. W kolejnym oknie naciskamy tylkoe „Allocate IP” i wracamy do poprzedniego okna. W „IP Adress” będzie nowo dodany adres IP, a w „Port to be associated” powinien zostać automatycznie wybrany interfejs sieciowy naszej instancji. Klikamy „Assiocate”.
Po odświeżeniu listy instancji zobaczymy, że adres IP został przypisany. Sprawdzamy poleceniem „ping”:
1 2 3 4 5 |
[root@localhost ~(keystone_admin)]# ping 172.24.4.9 PING 172.24.4.9 (172.24.4.9) 56(84) bytes of data. 64 bytes from 172.24.4.9: icmp_seq=1 ttl=63 time=0.348 ms 64 bytes from 172.24.4.9: icmp_seq=2 ttl=63 time=0.299 ms 64 bytes from 172.24.4.9: icmp_seq=3 ttl=63 time=0.269 ms |
Oraz polecniem „nmap” czy port 22 jest odblokowany:
1 2 3 4 5 6 7 8 9 10 11 |
[root@localhost ~(keystone_admin)]# nmap 172.24.4.9 Starting Nmap 6.40 ( http://nmap.org ) at 2018-04-01 21:47 CEST Nmap scan report for 172.24.4.9 Host is up (0.00041s latency). Not shown: 999 filtered ports PORT STATE SERVICE 22/tcp open ssh MAC Address: FA:16:3E:E9:B3:01 (Unknown) Nmap done: 1 IP address (1 host up) scanned in 4.71 seconds |
Teraz możemy połączyć się z instancją przy pomocy SSH:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[root@localhost ~(keystone_admin)]# ssh -i ~/.ssh/prod.key debian@172.24.4.9 The authenticity of host '172.24.4.9 (172.24.4.9)' can't be established. ECDSA key fingerprint is SHA256:TubIgAQfXsIEN8xEtENFFl7MRlyc5vLeS36G++h/jxc. ECDSA key fingerprint is MD5:47:2d:38:ee:b5:c0:11:99:08:83:14:7f:eb:b2:da:38. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '172.24.4.9' (ECDSA) to the list of known hosts. Linux prod 4.9.0-6-amd64 #1 SMP Debian 4.9.82-1+deb9u3 (2018-03-02) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sun Apr 1 20:03:33 2018 from 172.24.4.1 debian@prod:~$ |
Domyślnie moja instancja nie posiadała skonfigurowanych adresów DNS w pliku /etc/resolv.conf. Po dodaniu serwerów DNS:
1 2 3 4 5 |
debian@prod:~$ ping google.pl PING google.pl (216.58.215.67) 56(84) bytes of data. 64 bytes from waw02s16-in-f3.1e100.net (216.58.215.67): icmp_seq=1 ttl=52 time=18.9 ms 64 bytes from waw02s16-in-f3.1e100.net (216.58.215.67): icmp_seq=2 ttl=52 time=19.8 ms 64 bytes from waw02s16-in-f3.1e100.net (216.58.215.67): icmp_seq=3 ttl=52 time=18.1 ms |
Niestety ta operacja nie jest trwała i DNS-y są kasowane po każdym restarcie instancji, nie wiem jeszcze w jaki sposób zachować konfigurację DNS-ów lub gdzie w OpenStacku należy je skonfigurować.
Updated on 1 kwietnia, 2018
OpenStack – część 1 – Instalacja na CentOS
Zakładam, że posiadamy już zainstalowany system CentOS w wersji 7 (obraz).
Według jednego z poradników przed instalacją OpenStacka należy wyłączyć w systemie usługi NetworkManager i firewalld oraz włączyć usługę network:
1 2 3 4 5 6 7 8 9 10 |
systemctl disable firewalld systemctl stop firewalld systemctl mask firewalld systemctl disable NetworkManager systemctl stop NetworkManager systemctl mask NetworkManager systemctl enable network systemctl start network |
Instalujemy paczkę z najnowszą na chwile obecną wersją Queens:
1 |
yum -y install centos-release-openstack-queens |
Aktualizujemy repozytoria i pakiety:
1 |
yum -y update |
Instalujemy paczkę packstack, która automatycznie zainstaluje usługi OpenStacka:
1 |
yum -y install openstack-packstack |
Uruchamiamy packstacka:
1 |
packstack --allinone |
W przypadku wystąpienia poniższego błędu:
1 |
ERROR : Failed to load plugin from file ssl_001.py |
należy zainstalować python-setuptools:
1 |
yum -y install python-setuptools |
Ponownie uruchamiamy packstacka i czekamy na zakończenie instalacji usług OpenStacka. W moim przypadku trwało to około 40 minut:
1 |
**** Installation completed successfully ****** |
Wchodzimy w przeglądarce pod adres naszego serwer, aby uruchomić panel zarządzania Horizon. Login i hasło do panelu zarządzania znajdują się w pliku „keystonerc_admin”.
1 |
cat keystonerc_admin |
Jeżeli chcemy korzystać z poleceń konsoli OpenStacka, to należy uruchomić ten plik:
1 |
source keystonerc_admin |
Np. poniższe polecenie zwróci listę usług OpenStacka:
1 |
openstack service list |
Linki
Posted on 14 lutego, 2018
Wyłączenie Mass Media Storage w NRF52 DevKit
Uruchom J-Link Commander:
1 |
JLinkExe |
Wydaj polecenie „MSDDisable”:
1 |
MSDDisable |
Zamykamy J-Link Commander.
1 |
Exit |
Po odłączeniu i ponownym podłączeniu devkita przez USB nie będzie one montowany jako Mass Media Storage. Wprawdzie stracimy możliwość programowania devkita przez ładowanie firmware’u na dysk USB, ale nie będziemy musieli go resetować przed próbą połączenia po każdorazowym podłączeniu go przez USB do komputera.
Updated on 12 lutego, 2018
Montowanie obrazu UBIFS
Tworzymy urządzenie o rozmiarze 204800 KiB. Musi być większy niż obraz, który chcemy zamontować:
1 |
sudo modprobe mtdram total_size=204800 |
Stan urządzeń możemy sprawdzić poleceniem:
1 |
cat /proc/mtd |
Wynik:
1 2 |
dev: size erasesize name mtd0: 10000000 00020000 "NAND simulator partition 0" |
Flashujemy urządzenie:
1 2 |
sudo flash_erase /dev/mtd0 0 0 sudo ubiformat /dev/mtd0 -O 2048 -f artifacts/os/connect/firmware-2018-02-02-10-19-59/firmware/slabs-rootfs-image-s-connect.ubi |
Urządzenie zawiera już nasz obraz. Teraz musimy nakazać modułowi jego użycie:
1 2 |
sudo modprobe ubi sudo ubiattach -p /dev/mtd0 -O 2048 |
Montujemy urządzenie w wybranym katalogu:
1 2 |
sudo mkdir -p /mnt/slabs-rootfs-image-s-connect sudo mount -t ubifs /dev/ubi0_0 /mnt/slabs-rootfs-image-s-connect |
Teraz możemy przeglądać jego zawartość:
1 |
ls /mnt/slabs-rootfs-image-s-connect |
Wynik:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
drwxr-xr-x 2 root root 5952 lut 2 11:19 bin drwxr-xr-x 2 root root 160 lut 1 09:15 boot drwxr-xr-x 2 root root 160 lut 1 09:15 dev drwxr-xr-x 25 root root 4432 lut 2 11:19 etc drwxr-xr-x 3 root root 224 lut 1 09:15 home drwxr-xr-x 9 root root 5864 lut 1 15:54 lib drwxr-xr-x 2 root root 160 lut 1 09:15 media drwxr-xr-x 2 root root 160 lut 1 09:15 mnt drwxr-xr-x 2 root root 160 lut 1 09:15 proc drwxr-xr-x 2 root root 160 lut 2 11:19 run drwxr-xr-x 3 root root 4544 lut 2 11:19 sbin drwxr-xr-x 3 root root 224 lut 1 15:57 srv drwxr-xr-x 2 root root 160 lut 1 09:15 sys drwxrwxrwt 2 root root 160 lut 1 09:15 tmp drwxr-xr-x 11 root root 752 lut 1 17:06 usr drwxr-xr-x 8 root root 808 lut 2 11:19 var |
Linki
https://pjankows.blogspot.com/2012/01/how-to-mount-ubi-image.html
Updated on 23 listopada, 2016
Root i TWRP dla Xiaomi Redmi 3
Jak zdobyć uprawnienia roota:
http://en.miui.com/thread-214252-1-1.html
Jeżeli link nie będzie działa, to można pobrać stąd:
root_xiaomi_redmi3-choimobile-vn
Jak zainstalować TWRP
Updated on 2 kwietnia, 2018
Instalacja serwera Plex na Raspberry Pi 2
Aktualizujemy repozytoria:
1 |
sudo apt-get update |
Upewniamy się, że mamy zainstalowane en_US.UTF-8:
1 |
sudo raspi-config |
Upewniamy się, że mamy odpowiednią wersję libc (min. 2.19):
1 |
ldd --version |
Instalujemy potrzebne paczki:
1 |
sudo apt-get install apt-transport-https libexpat1 |
Pobieramy serwer Plex. Najbardziej aktualny link zdobędziemy po wejściu na stronę https://plex.tv/downloads, kliknięciu w NAS, a następnie w ARMV7:
1 |
wget https://downloads.plex.tv/plex-media-server/0.9.14.6.1620-e0b7243/PlexMediaServer-0.9.14.6.1620-e0b7243-arm7.spk |
Instalujemy serwer:
1 2 3 4 |
mv PlexMediaServer-0.9.14.6.1620-e0b7243-arm7.spk PlexMediaServer-0.9.14.6.1620-e0b7243-arm7.tar tar -xvf PlexMediaServer-0.9.14.6.1620-e0b7243-arm7.tar sudo mkdir -p /opt/plex/Application tar -xvf package.tgz -C /opt/plex/Application |
Uruchamiamy serwer:
1 2 |
cd /opt/plex/Application sudo bash start.sh |
Wchodzimy na stronę:
1 |
127.0.0.1:32400/web |
Linki
http://www.htpcguides.com/install-plex-media-server-on-raspberry-pi-2/
Posted on 11 stycznia, 2016
Git – Patch does not have a valid e-mail address.
Poniższy błąd pojawia się, gdy chcemy użyć patcha w innym formacie niż akceptowanym przez polecenie „git am”:
1 |
Patch does not have a valid e-mail address. |
Prostym rozwiązaniem jest dodanie dowolnego nagłówka w poprawnym formacie. Przykład:
1 2 3 4 |
From 610f99ec7d22b5750f12350f67c1341d6be8030f Mon Sep 17 00:00:00 2001 From: Junio C Hamano <[hidden email]> Date: Sun, 25 Oct 2009 18:41:09 -0700 Subject: [PATCH] Update draft release notes to 1.6.6 |
Linki
http://git.661346.n2.nabble.com/Problems-with-git-am-td3895920.html