Otwarcie Portów Play Orange Era internet mobilny LTE UMTS i inne za pomocą Openvpn.

Cel:

  • Otwarcie dowolnych portów dla wystawienia usług takich jak serwer www, ssh, ftp i inne na świat

Założenia:

  • wykorzystanie tunelu szyfrowanego

Składniki:

  • Router z usb z modemem LTE i/lub HSPA oraz openwrt (wersja Barier Breaker) na pokładzie.
  • Serwer VPS, najtańszy znalazłem na: https://www.arubacloud.pl/ 4zł/m-c (wrzucam link niech mają chłopaki reklamę za tak atrakcyjną ofertę :). Serwer przygotowałem z dystrybujcją Debian 4.0 Weezy i na niej opieram poniższy opis konfiguracji.

Jeśli tu trafiłeś zapewne wiesz już że rozwiązanie problemu jest nietrywialne. Zarezerwuj sobie zatem troche czasu i do dzieła 🙂

Skorzystamy z potężnego projektu Openvpn (dalej nazywał go bede poprostu VPN) który dynamicznie sie rozwija i jest wciąż wspierany w przeciwieństwie do innych narzedzi które mogłyby zostać tu użyte.
Poradnik podzielę na pięć cześci:

Instalacja i Konfiguracja serwera VPN na VPS debian Wheezy,

Ustawienia firewalla dla serwera VPN na VPS debian Wheezy,

Instalacja i Konfiguracja klienta VPN na routerze z OpenWrt BB/CC,

Ustawienia firewalla dla klienta VPN na routerze z OpenWrt BB/CC,

Testowanie połączenia.

Instalacja i Konfiguracja serwera VPN na VPS debian Wheezy

Logujemy sie po ssh na konto root’a Debiana naszego serwera VPS.
Instalujemy openvpn.

1
apt-get install openvpn

Generujemy certyfikaty i umieszczamy je w katalogu roboczym vpn, następnie kopiujemy szablon pliku konfiguracyjnego. Ważne jest aby rekordowi „common name” nadać różne wartości dla każdego z generowanych certyfikatów:

1
2
3
4
5
6
7
8
9
10
11
12
# cd /usr/share/doc/openvpn/examples/easy-rsa/2.0
# nano ./vars # edytujemy podstawowe parametry w ""
# source ./vars
# ./clean-all
# ./build-ca
# ./build-key-server nazwa_serwera
# ./build-key nazwa_1_egoclienta
# ./build-dh
# cd keys
# mv *.pem *.crt *.csr *.key /etc/openvpn
# cd /usr/share/doc/openvpn/examples/sample-config-files
# gunzip -c server.conf.gz > /etc/openvpn/server.conf

Ustawienia w pliku konfiguracyjnym 

1
/etc/openvpn

uzupełniamy na zgodne z poniższym:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
;local a.b.c.d
port 1194
proto tcp
# ;proto udp
;dev tap
dev tun
;dev-node MyTap
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh1024.pem
server 10.4.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
;server-bridge
;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"
;client-config-dir ccd
;route 192.168.40.128 255.255.255.248
;client-config-dir ccd
;route 10.9.0.0 255.255.255.252
# ifconfig-push 10.9.0.1 10.9.0.2
;learn-address ./script
push "dhcp-option DNS 8.8.8.8"
;push "dhcp-option DNS 208.67.220.220"
;client-to-client
;duplicate-cn
# Ping every 15 seconds, assume that remote
# peer is down if no ping received during
# a 100 second time period.
keepalive 20 120
;tls-auth ta.key 0 # This file is secret
;cipher BF-CBC # Blowfish (default)
;cipher AES-128-CBC # AES
;cipher DES-EDE3-CBC # Triple-DES
# comp-lzo # kompresja dla połączenia z OpenWrt musi byc wyłączona inaczej generuje błędy
max-clients 5
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log /etc/openvpn/log/openvpn.log
verb 0 # dla testów warto ustawić 6
mute 20

Tworzymy plik dla logów serwera VPN:

1
touch /etc/openvpn/log/openvpn.log

Pobieramy na komputer w sieci lokalnej pliki certyfikatów z katalogu /etc/openvpn na debianie:

1
ca.crt client.crt client.key

czynimy to za pomocą SFTP lub scp.
Scp i tak bedzie nam niedługo potrzebne do wgrania ich do klienta na routerze VPN.
Zatem musimy miec tez scp na komputerze w sieci lokalnej oraz powyzsze 3 pliki certyfikatów.

1
apt-get install scp

Ustawienia firewalla dla serwera VPN na VPS debian Wheezy,

Sprawdzamy nasze zewnetrzne IP:

1
dig +short myip.opendns.com @resolver1.opendns.com

Tworzymy w katalogu roboczym ~/root plik skryptu powłoki:

1
touch firewall-up.sh
1
2
#!/bin/sh
echo "1" > /proc/sys/net/ipv4/ip_forward

IPTABLES=”/sbin/iptables”

IP_ZEWNETRZNE=”XX.XX.XX.XX”
IP_SERWERA_OVPN=”10.4.0.1″
IP_KLIENTA_OVPN=”10.4.0.6″
DELUGE_TCP=”8112″ # port usługi do udostepnienia w świat

# REDIRECT FUNCTION
# ports, to_host
ACCEPT () {
$IPTABLES -A INPUT –match multiport -p tcp –dports $1 -j ACCEPT
$IPTABLES -A FORWARD –match multiport -p tcp -d $2 –dports $1 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT
}

$IPTABLES -F
$IPTABLES -t nat -F

# SSH ENABLE
$IPTABLES -A INPUT -p tcp –dport 22 -j ACCEPT

ACCEPT $DELUGE_TCP $IP_KLIENTA_OVPN
$IPTABLES -t nat -A PREROUTING -p tcp -d $IP_ZEWNETRZNE –dport $DELUGE_TCP -j DNAT –to $IP_KLIENTA_OVPN
$IPTABLES -t nat -A POSTROUTING -o tun0 -p tcp -d $IP_KLIENTA_OVPN –dport $DELUGE_TCP -j SNAT –to $IP_SERWERA_OVPN

Instalacja i Konfiguracja klienta VPN na routerze z OpenWrt BB/CC,

[yoshi@arch007 openvpn]$ scp ca.crt client.crt client.key root@192.168.2.1:/etc/openvpn/
The authenticity of host ‚192.168.2.1 (192.168.2.1)’ can’t be established.
RSA key fingerprint is SHA256:5a4ZdPaMUW6fITPSVFlx4En/rbWghy0fAHviR3hVY7Q.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‚192.168.2.1’ (RSA) to the list of known hosts.
root@192.168.2.1’s password:
ca.crt 100% 1281 1.3KB/s 00:00
client.crt 100% 3842 3.8KB/s 00:00
client.key 100% 916 0.9KB/s 00:00
[yoshi@arch007 openvpn]$ scp foobar.txt your_username@remotehost.edu:/some/remote/directory
# echo > /etc/config/openvpn
# uci set openvpn.cli1=openvpn
# uci set openvpn.cli1.enabled=1
# uci set openvpn.cli1.dev=tun
# uci set openvpn.cli1.proto=tcp
# uci set openvpn.cli1.log=/tmp/openvpn.log
# uci set openvpn.cli1.verb=0
# uci set openvpn.cli1.ca=/etc/openvpn/ca.crt
# uci set openvpn.cli1.cert=/etc/openvpn/client.crt
# uci set openvpn.cli1.key=/etc/openvpn/client.key
# uci set openvpn.cli1.client=1
# uci set openvpn.cli1.remote_cert_tls=server
# uci set openvpn.cli1.remote=”80.88.90.48 1194″
# uci commit openvpn

Ustawienia firewalla dla klienta VPN na routerze z OpenWrt BB,

# deluge rpi
iptables -I FORWARD -i tun0 -p tcp -d 192.168.2.2 –dport 8112 -j ACCEPT
iptables -t nat -I PREROUTING -i tun0 -p tcp –dport 8112 -j DNAT –to-destination 192.168.2.2:8112
# ssh rpi
iptables -I FORWARD -i tun0 -p tcp -d 192.168.2.2 –dport 23 -j ACCEPT
iptables -t nat -I PREROUTING -i tun0 -p tcp –dport 23 -j DNAT –to-destination 192.168.2.2:23
# serwer www rpi
iptables -I FORWARD -i tun0 -p tcp -d 192.168.2.2 –dport 8080 -j ACCEPT
iptables -t nat -I PREROUTING -i tun0 -p tcp –dport 8080 -j DNAT –to-destination 192.168.2.2:8080

 

Testowanie połączenia.

 

Arch linux + Brother DCP-330C drukarka i skaner

Zacznijmy od drukarki 🙂

Pobieramy:

LPR printer driver (rpm package): dcp330clpr-1.0.1-1.i386.rpm
CUPSwrapper printer driver (rpm package): dcp330ccupswrapper-1.0.1-1.i386.rpm
ze strony producenta:
Drivery Brother’a dla Linuxa RPM drukarka Brother DCP 330C
lub:
Mirror na chomiku

Pakiety RPM trzeba rozpakować pod archem narzędziem rpmextract:
Na codzień korzystam z wrappera pacman’a – packer’a
Czyli:

1
packer -S rpmextract

Po zainstalowaniu rpm extract

1
2
rpmextract dcp330clpr-1.0.1-1.i386.rpm
rpmextract dcp330ccupswrapper-1.0.1-1.i386.rpm

Wypakują się pliki w hierarchii względem katalogu root „/”.
Odpowiednio kopiujemy je do naszego systemu w odpowiadajace tej hierarchii miejsca.

Uruchamiamy skrypt basha który był wśród świeżo skopiowanych plików:

1
sh /usr/local/Brother/Printer/dcp330c/cupswrapperdcp330c

Wchodzimy do CUPS’a który był wcześniej zainstalowany i uruchomiony.
Drukaraka powinna byc juz widoczna jeśli nie nalezy ją wyszukać bądź zrestartowac CUPS’a

Jesli drukarka jest widoczna można wydrukować stronę testową z CUP’sa. Koniecznie tą z CUPS’a a nie sprzetową drukarki, bo owa z kolei może nie działać. Lub poprostu przetestować drukowanie z pakietu LibreOffice Writer.

Czas na skaner 🙂

Do brother DCP-330C przypisany jest sterownik brscan2.
Takowy jest dostępny w AUR od ręki zatem:

1
packer -S brscan2

załatwia sterownik.

Teraz jeszcze oprogramowanie do skanowania.

Zatem:

1
packer -S sane xsane

oraz

1
packer -S xsane-gimp

jeśli uzywamy GIMP’a.

Dla testów odpalamy xsane i voula wszystko działa.

Najpopularniejsze iny do kart płatniczych. Zadbajmy o nasze bezpieczeństwo!

Z cyklu bezpieczeństwo płatności. Jeśli masz taki pin do karty płatniczej zmien go:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
LP PIN częstotliwość występowania
#1 1234 10.713%
#2 1111 6.016%
#3 0000 1.881%
#4 1212 1.197%
#5 7777 0.745%
#6 1004 0.616%
#7 2000 0.613%
#8 4444 0.526%
#9 2222 0.516%
#10 6969 0.512%
#11 9999 0.451%
#12 3333 0.419%
#13 5555 0.395%
#14 6666 0.391%
#15 1122 0.366%
#16 1313 0.304%
#17 8888 0.303%
#18 4321 0.293%
#19 2001 0.290%
#20 1010 0.285%

Pin należy zmieniac cykliczie np co ilosc transakcji lub przynajmniej jak olej silnikowy w samochodzie co 10 000 zł xP i nie trzeba wcale do tego miec super pamięci. Wystarczy stworzyc sobie „generator”.
Przykładowy moze i zbyt skomplikowany ale podkreslam przykładowy:
Jest rok 2019 skończę w nim 33 lata, a całe życie lubie liczbe 13. Rok dziele na dwie liczby 20 i 19. W roku nieparzystym odejmuje od nich a w roku parzystym dodaje do kazdej z nich odpowiednio mój wiek w tym roku i ulubiona liczbe.
I tak w
2019 pin: rok nieparzysty, wiek 33, |20-33|=13 19-13=06 pin: 1306
2020 pin: rok parzysty, wiek 34, 20+34=54 20+13=33 pin: 5433
2016 pin: rok parzyst, wiek 30, 20+30=50 16+13=29 pin: 5029

7zip w konsoli pod linuksem. Nowoczesna wielowątkowa kompresja.

Właściwie ak to jest z tą składnią. Częstym problemem jest kompresowanie zawartosci z zachowaniem scieżki bezwzględnej. Ustawienie domyślne pod linuksem. Gdy chcemy aby archiwum zawierało tylko katalog macierzysty dodajemy gwiazdkę jak w przykładzie poniżej.

1
 7z a -t7z -m0=lzma2 -mx=1 -mmt4 archiwum.7z sciezka_do_kompresowaneg/katalogu/*
1
2
3
4
5
6
7
a
-t7z # kontener 7zip
-m0=lzma2 # najnowszy tryb kompresji lzma2 szybki wydajny i wielowątkowy
-mx=1 # stopień kompresji 0-9; 0 - bez 1 - najslabsza 9 - ultra
-mmt4 # używaj czterech wątków/rdzeni
archiwum.7z # nazwa archiwum
sciezka_do_kompresowaneg/katalogu/* # scieżka kompresowanych plików * omija tworzenie scieżki bezwzględnej