Więcej miejsc do posłuchania:
Link do artykułu.
0:00 Wprowadzenie
1:46 Włączenie funkcji Wake on Lan na Komputerze
3:19 Konfiguracja Wake On Lan
20:39 Podsumowanie
Transkrypcja
Cześć. W dzisiejszym odcinku pokażę Ci bardzo fajny i ciekawy skrypt z którego korzystam osobiście prywatnie jak i wdrażam go w małych i średnich firmach. Skrypt uruchamia komputer jak i serwer na odległość. Bardzo pomocne narzędzie. Wszystko zbudowane za pomocą Mikrotika. Jeżeli jesteś zainteresowany tego typu tematyką i interesują cię również ciekawe skrypty jak ten, zapisz się na mój darmowy webinar. Link do zapisu znajduje się poniżej.
A więc przejdźmy do obejrzenia tego materiału. Jeżeli posiadasz swojej małej firmie lub w zaciszu domowym komputer, który służy na przykład za serwer plików i chcesz zaoszczędzić na przykład na prądzie bo nie masz takiej potrzeby aby komputer lub serwer działał cały czas a chcesz go uruchomić tylko wtedy kiedy jest to potrzebne? No właśnie i co dalej? Kiedy będzie to nam najbardziej potrzebne? Załóżmy taki scenariusz: Jesteś na wakacjach, wszystko masz wyłączone i dostajesz bardzo ważny telefon którym
ktoś cię prosi o przesłanie bardzo ważnego pliku, VPN jest skonfigurowany
ale komputer sam cię nie uruchomi.
Masz dwa wyjścia: Pierwsze mówisz, że jesteś na wakacjach i nic nie możesz z tym zrobić albo w 10 sekund z telefonu uruchamiasz komputer i działasz. Mając Mikrotika możesz to wszystko bardzo prosty sposób skonfigurować.
Nim jednak przejdziemy do całej konfiguracji musimy sprawdzić jedną rzecz w naszym komputerze. Czy posiada on funkcję zbudzenia komputera za pomocą magicznego pakietu, który umożliwia włączenie komputera poprzez sieć LAN? Często funkcja jest dostępna ale jest wyłączona w BIOSie. Pokażę jak na przykładzie starego komputera Dell w BIOSie uruchomić tą funkcję aby nasza karta sieciowa potrafiła odebrać magiczny pakiet i uruchomić komputer. Aby wejść do BIOSu na samym początku kiedy nasz komputer się uruchamia wystarczy, że naciśniemy przycisk F2. Jeżeli u ciebie nie działa to sprawdź w dokumentacji jak wejść w twoim wypadku do BIOSu. Być może u ciebie ta funkcja jest zupełnie pod innym przyciskiem. Teraz wystarczy, że
znajdziemy opcję Wake on Lan i zaznaczymy aby była włączona. Po restarcie nasz komputer oraz nasza karta sieciowa jest gotowa do pracy.
Wszystko zbudujemy i przećwiczymy na bardzo tanim Mikrotiku. Nie jest on może królem wydajności ale na nasze potrzeby w zupełności wystarczy. Nie musimy kupować bardzo drogich urządzeń aby w domowym zaciszu stworzyć sobie funkcjonalność, która uruchomi komputer na odległość. Prezentowany model możemy bez większego problemu kupić za około 100 zł. Pamiętaj, że interfejs na droższym Mikrotiku będzie dokładnie taki sam. Więc jeżeli będziesz chciał zrobić podobną rzecz na innym dużo droższym Mikrotiku to zasada działania będzie dokładnie taka sama.
Ok, jeżeli mamy wszystko przygotowane możemy przejść do konfiguracji. Konfigurację zaczynamy od pozyskania Mac adresu. W tym celu klikamy w IP a następnie DHCP Server i w zakładkę Leases czyli dzierżawa. Jak widać mój komputer dla którego chcę pozyskać adres MAC jeszcze się nie uruchomił. Ale za chwilę powinien się pojawić wraz z przyznanym adresem IP. Jest i w ten sposób możemy szybko skopiować sobie Mac Address. Oczywiście nic nie stoi na przeszkodzie abyśmy wyciągnęli Mac Address systemu ale tą metodę uważam za znacznie szybszą i pewniejszą.
Adres sobie skopiowaliśmy i możemy przystąpić do kolejnych działań. Nim przejdziemy do pisania skryptu warto wcześniej sprawdzić czy nasza funkcja Wake On Lan czyli funkcja, która odpowiada za uruchomienie komputera, działa poprawnie. W tym celu klikamy w Tools, następnie WoL czyli Wake On Lan. Wpisujemy Mac Address naszego komputera czyli Mac Address, który wcześniej skopiowaliśmy i interfejs wybieramy port 4. Dlaczego port 4? Ponieważ pod tym portem mamy podłączony nasz komputer. Teraz wystarczy, że klikniemy Wake On Lan i w tym momencie powinien się uruchomić nasz komputer.
Jest. Jak widać komputer się uruchomił więc mamy pewność stuprocentową, że nasza funkcja Wake On Lan działa prawidłowo. Pamiętaj, zanim zaczniesz pisać jakikolwiek skrypt związany właśnie z Wake On Lan, wcześniej manualnie sprawdź sobie czy aby na pewno wszystko działa poprawnie. Ponieważ może się okazać, że będziesz szukał problemów z skrypcie a problem będzie tak naprawdę w zupełnie innym miejscu.
W naszym przypadku wszystko działa poprawnie więc możemy przejść do pisania skryptu. Chcemy aby nasz komputer uruchomił się jeżeli zapukamy na odpowiedni port. W tym celu musimy w naszej zaporze sieciowej stworzyć odpowiednią regułę. W tym celu klikamy w IP, Firewall I tutaj mamy wstępnie domyślnie skonfigurowaną zaporę. Domyślnie jest ona dobrze skonfigurowana ale na potrzeby tego ćwiczenia wyłączymy ją. Pamiętaj, że jeżeli masz podłączonego Mikrotika i masz go wystawionego na zewnątrz,
wyłączenie zapory jest skrajnie niebezpieczne. Więc upewnij się czy aby
na pewno możesz wyłączyć zaporę.
W moim wypadku mój Mikrotik jest w mojej wewnętrznej sieci więc tak naprawdę nikt nie ma do niego dostępu oprócz mnie. OK. Na czym polega pukanie? Jak to zostanie zrealizowane? Bardzo prosto. Stworzymy regułę, która będzie dodawać wpis w naszym Mikrotiku, który będzie nam później on potrzebny do uruchomienia naszego komputera. Aby zapukać za pomocą przeglądarki w odpowiedni port, wystarczy wpisać adres IP naszego routera. Później to będzie adres zewnętrzny IP naszego routera. W tym momencie będzie to adres 192.168.88.1 i port czyli :999. Jeżeli wejdę na taką stronę dostanę odpowiedź, że strona nie istnieje ale my stworzymy regułę, która zostanie wykryta przez Mikrotik i doda nam specjalny wpis w naszej liście.
Zaraz zobaczysz dokładnie jak to wszystko zadziała. Aby zwiększyć
bezpieczeństwo warto dodać jeszcze jedną regułę a najlepiej kilka reguł. Dlaczego? Dlatego ponieważ jeżeli zostanie tylko jeden port to prawdopodobieństwo, że boty, które skanują internet uruchomią ci komputer jest ogromne a przecież tego nie chcemy. Prawdopodobieństwo, że ktoś odgadnie sekwencję portu więcej niż 2 jest już znacznie mniejsze a przecież tych reguł możesz dodawać nieskończenie wiele. Oczywiście wszystko
w granicach rozsądku. Pokażę ci teraz jak dodać kolejną regułę, która sprawdza czy pierwszy warunek został spełniony. Czyli chcemy aby nasz komputer uruchomił się wtedy, kiedy wejdziemy najpierw na stronę z portem 999 czyli tak jak teraz a następnie z portem 777.
A więc przechodzimy z powrotem do naszej zapory sieciowej, klikamy w niebieski plusik i teraz tak. Tutaj ponownie wybieramy Input jako Address List, źródło wybieramy Ping1. Czyli warunek, który musi być spełniony aby kolejna reguła dodała wpis. Protocol wybieramy tcp i port tak jak wcześniej rozmawialiśmy dajemy 777. Następnie w Action dodajemy Dodaj źródłowy adres do address list i tutaj wpiszemy jako nazwę ping2. Klikamy OK, dajemy na samą górę i zobaczmy jak teraz to zadziała.
Oczywiście jak możesz się domyśleć zadziała pewnie to podobnie jak przed chwilą czyli wpisujemy wewnętrzny adres naszego Mikrotika, dwukropek port 777. Jak widać strona nie istnieje a w Address List pojawił się wpis w ping2 czyli wszystko działa poprawnie. No dobra ale o co tutaj właściwie chodzi, jak to dokładnie działa. Pokażę ci jeszcze raz.
Mamy przeglądarkę oraz wpisy w naszej address list. Ja usunę te wpisy i wejdę na port 777. Zgodnie z naszymi regułami najpierw musimy wejść na port. Jak widać strona nie istnieje ale żaden wpis się nie pojawił. Dlaczego Ponieważ nie została zachowana reguła, która mówi o tym, że najpierw trzeba wejść na port 999 a więc zobaczmy. Wpisujemy port 999, klikamy enter. Jest. Teraz wpisujemy 777. Jest. Więc jak widzisz musimy po kolei czyli musimy znać sekwencję portów jakie po kolei trzeba odpytać aby pojawiły się wpisy. W moim wypadku są to dwa wpisy ale ty możesz zrobić ich oczywiście więcej. Oczywiście w granicach rozsądku. Głównie o to chodzi aby było więcej wpisów niż jeden ponieważ prawdopodobieństwo że ktoś ci wejdzie na ten port jest duże ale prawdopodobieństwo, że ktoś zgadnie kolejne porty już jest bardzo małe a wręcz niemożliwe. Mam nadzieję, że teraz to ci trochę przybliżyło na czym to polega więc możemy śmiało teraz przejść do budowania już naszego skryptu. OK.
Przejdźmy zatem do napisania naszego skryptu. W tym celu klikamy w System, Scripts, naciskamy niebieski + i teraz tak: skrypt nazwiemy pingok.
Składnia będzie wyglądać następująco tworzymy zmienną lokalną czyli dajemy :local Nazwijmy ją pingok. Teraz musimy dopisać co nasza zmienna ma przyjąć. Czyli otwieramy nawias kwadratowy piszemy [IP firewall address-list szukaj czyli faind list = ping2]; Czyli chcemy aby nasza zmienna pingok miała przypisaną formułkę, która sprawdza czy w naszym Address list jest wpis o nazwie ping2.
Dobra przejdźmy teraz do kolejnej linijki czyli co jeżeli jest coś prawdą, co ma się wykonać a więc dwukropek jeżeli czyli if nasza zmienna pingok czyli ($pingok) Jeżeli nasza zmienna jest prawdą a prawdą będzie tylko wtedy jeżeli w address list będzie wpis ping2 a żeby ping2 był w naszym address list to przypominam, że najpierw musimy spingować nasz Mikrotik na porcie 999 a następnie na porcie 777 wtedy do address list zostanie dodany ping2 więc wtedy to będzie prawdą to wykonaj.
Mam nadzieję, że jest to zrozumiałe. Jeszcze raz. Jeżeli pingok jest prawdą a będzie tylko i wyłącznie prawdą jeżeli w naszym address list czyli tutaj naszym Firewallu address list musi być ping2 czyli musi znaleźć się ten wpis wtedy i tylko wtedy nasza zmienna pingok przyjmie, że jest prawdą. Jeżeli nie będzie tego wpisu czyli będzie lista pusta to jest to nieprawda i tak naprawdę skrypt na tym etapie zostanie zakończony. Ok, sprawdźmy czy nasz skrypt działa. Klikamy OK.
I teraz tak przechodzimy do IP, Firewall, address list. Możemy spingować nasz router ale również możemy dodać ręcznie. Dodajemy ping1 oraz ping2.
Tak naprawdę ping1 jest nam niepotrzebny ponieważ szukamy czy jest ping2 więc ping1 usuwamy. Klikamy w system, scrypt i ręcznie uruchamiamy nasz scrypt. Nasz skrypt się wykonał no i sprawdzamy czy nasz komputer się uruchomi. Jak widać komputer się nie uruchomił więc jest coś nie tak.
Jak sprawdzić czy coś jest nie tak? No niestety nie ma takiej możliwości. Jedyne co nam pozostaje to przeanalizowanie naszego skryptu. A więc klikamy w system, scrypt. Wchodzimy do naszego scryptu i pewnie wprawione oczy już wcześniej zauważyły że w słowie szukaj jest błąd. Poprawiamy. Teraz jest poprawnie. Klikamy OK i ponownie dajemy Uruchom scrypt. Tym razem komputer się uruchomił. Więc wszystko jest w porządku.
Przeanalizujmy jeszcze raz scrypt. Jak widać pierwsza linijka to linijka do której do zmiennej pingok jest przypisana wartość, która sprawdza czy ping2 znajduje się w address list. Następnie druga linijka w zależności czy jest to prawda czy fałsz wykonuje dalsze polecenie. Jeżeli prawda to wykonuje wysłanie magicznego pakietu na określony Mac Address. Jeżeli jest to fałsz to kończy skrypt. Jeżeli uważasz, że twój skrypt jest poprawnie zrobiony i masz problem z debugowaniem. Warto zrobić taki trik.
Ta linijka na pewno uruchamia nasz komputer więc jeżeli jesteś pewny, że jest poprawnie to możemy stworzyć osobny skrypt, wpisać tylko tą linijkę, która odpowiada za uruchomienie naszego komputera, dajemy OK i możemy ręcznie wykonać taki skrypt. Jeżeli komputer się uruchomi to znak, że ta linijka jest poprawna. Więc pozostaje nam tylko sprawdzenie tej linijki. W taki sposób możemy łatwo dojść do tego gdzie mamy błąd.
Ostatnią rzeczą jaką musimy zrobić jest to automatyzacja. Teraz scrypty wykonywaliśmy manualnie ale przecież chcemy aby skrypty wykonywały się automatycznie więc przechodzimy do naszego harmonogramu zadań, dajemy + i chcemy aby co 5 minut nasz scrypt sprawdzał czy nasz ping2 znajduje się w address list. A więc wpisujemy pingok. Ponieważ tak nazywa się nasz scrypt. Klikamy ok.
No i teraz co 5 minut będzie wykonywany nasz skrypt. Na koniec warto wspomnieć jeszcze o jednej rzeczy. Takie małe zabezpieczenie. Jak widzisz wszystko działa poprawnie ale jest jedna rzecz na którą szczególnie warto zwrócić uwagę na samym końcu. Jeżeli mamy już wszystko sprawdzone, jesteśmy pewni, że wszystko działa poprawnie i wszystko przetestowaliśmy. Pamiętaj, zawsze przetestuj każdy krok aby mieć pewność, że działa wszystko poprawnie. To wchodzimy z powrotem do naszego Firewalla, przechodzimy do naszej reguły i w zakładce Action Time out ustawiamy na powiedzmy 5 minut. To samo robimy dla drugiej reguły i teraz pokażę ci dlaczego to zrobiliśmy. Usuniemy teraz nasze wpisy i otworzymy przeglądarkę. Wejdziemy na port 999. Jak widać pojawił się wpis ping1 ale mamy czas, który odlicza do zera. Czyli jeżeli w ciągu 5 minut nie przejdziemy do drugiej sekwencji czyli nie spingujemy portu 777, to tak naprawdę będziemy musieli powtórzyć całą sekwencję od zera.
Jest to bardzo fajne zabezpieczenie ponieważ po 5 minutach nasze reguły automatycznie wygasną. Więc jeżeli dojdzie do wyłączenia komputera no to nasz Mikrotik ponownie nie uruchomi komputera ponieważ będzie brakować wpisu ping2, ponieważ on wygaśnie. Warto zawsze to robić. Oczywiście czas według własnego uznania. Ja uważam, że 5 minut jest takie optymalne. Czyli mamy 5 minut na wykonanie odpowiedniej sekwencji. Polecam zawsze to zrobić ponieważ znacząco zwiększa to bezpieczeństwo.
Mam nadzieję, że podobał ci się materiał. Jeżeli masz jakieś pytania lub sugestie, śmiało pisz w komentarzu. Aha i nie zapomnij zostawić łapki w górę 😉 Do następnego, hej!