VNC w Debianie

Jeżeli chcemy skonfigurować usługę VNC, to najprostszym rozwiązaniem jest użycie x11vnc:

 apt-get install x11vnc 

Aby usługa startowała automatycznie tworzymy plik /etc/systemd/system/x11vnc.service:

[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ą:

systemctl enable x11vnc
systemctl start x11vnc

Powyższa konfiguracja pozwala na podłączenie się do sesji aktualnie zalogowanego użytkownika.

Zaszufladkowano do kategorii Linux | Dodaj komentarz

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.

Zaszufladkowano do kategorii Linux, Systemy operacyjne | Dodaj komentarz

OpenVPN na instancji EC2 (Amazon)

Serwer

W celu instalacji OpenVPN-a trzeba włączyć repozytoriun EPEL:

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:

sudo yum -y install easy-rsa openvpn

Generujemy certyfikat i klucz dla serwera:

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:

cp pki/ca.crt pki/dh.pem pki/issued/server.crt pki/private/server.key /etc/openvpn/server/

Generujemy klucz dla TLS-a:

cd /etc/openvpn/server
openvpn --genkey --secret pfs.key

Tworzymy plik konfiguracyjny dla serwera:

vim /etc/openvpn/server.conf

Wklejamy do pliku poniższą zawartość:

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:

systemctl enable openvpn@server
systemctl start openvpn@server

Klient

Na serwerze generujemy certyfikat i klucz dla klienta:

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:

/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:

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:

systemctl enable openvpn@client
systemctl start openvpn@client

Na kliencie sprawdzamy adres jaki został nam przydzielony:

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:

[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/

Zaszufladkowano do kategorii AWS, OpenVPN | Dodaj komentarz

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”.

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”:

[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:

[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:

[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:

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ć.

Zaszufladkowano do kategorii CentOS, OpenStack | Dodaj komentarz

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:

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:

yum -y install centos-release-openstack-queens

Aktualizujemy repozytoria i pakiety:

yum -y update

Instalujemy paczkę packstack, która automatycznie zainstaluje usługi OpenStacka:

yum -y install openstack-packstack

Uruchamiamy packstacka:

packstack --allinone

W przypadku wystąpienia poniższego błędu:

ERROR : Failed to load plugin from file ssl_001.py

należy zainstalować python-setuptools:

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:

**** 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”.

cat keystonerc_admin

Jeżeli chcemy korzystać z poleceń konsoli OpenStacka, to należy uruchomić ten plik:

source keystonerc_admin

Np. poniższe polecenie zwróci listę usług OpenStacka:

openstack service list

Linki

https://www.youtube.com/watch?v=ozUvALQw5T8

https://bugzilla.redhat.com/show_bug.cgi?id=1553463

Zaszufladkowano do kategorii CentOS, OpenStack | Dodaj komentarz

Wyłączenie Mass Media Storage w NRF52 DevKit

Uruchom J-Link Commander:

JLinkExe

Wydaj polecenie „MSDDisable”:

MSDDisable

Zamykamy J-Link Commander.

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.

Zaszufladkowano do kategorii Linux | Dodaj komentarz

Montowanie obrazu UBIFS

Tworzymy urządzenie o rozmiarze 204800 KiB. Musi być większy niż obraz, który chcemy zamontować:

sudo modprobe mtdram total_size=204800

Stan urządzeń możemy sprawdzić poleceniem:

cat /proc/mtd

Wynik:

dev: size erasesize name
mtd0: 10000000 00020000 "NAND simulator partition 0"

Flashujemy urządzenie:

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:

sudo modprobe ubi
sudo ubiattach -p /dev/mtd0 -O 2048

Montujemy urządzenie w wybranym katalogu:

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ść:

ls /mnt/slabs-rootfs-image-s-connect

Wynik:

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

Zaszufladkowano do kategorii Linux | Jeden komentarz

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

https://twrp.me/devices/xiaomiredmi3.html

Zaszufladkowano do kategorii Android | Dodaj komentarz

Instalacja serwera Plex na Raspberry Pi 2

Aktualizujemy repozytoria:

sudo apt-get update

Upewniamy się, że mamy zainstalowane en_US.UTF-8:

sudo raspi-config

Upewniamy się, że mamy odpowiednią wersję libc (min. 2.19):

ldd --version

Instalujemy potrzebne paczki:

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:

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:

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:

cd /opt/plex/Application
sudo bash start.sh

Wchodzimy na stronę:

127.0.0.1:32400/web

Linki

http://www.htpcguides.com/install-plex-media-server-on-raspberry-pi-2/

Zaszufladkowano do kategorii Raspberry Pi | Dodaj komentarz

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”:

Patch does not have a valid e-mail address.

Prostym rozwiązaniem jest dodanie dowolnego nagłówka w poprawnym formacie. Przykład:

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

Zaszufladkowano do kategorii Git | Dodaj komentarz