MikroTik Personal Router
Wstęp
Urządzenia firmy MikroTik od dawna mnie interesowały. Jako sieciowiec podczas projektowania i później realizacji sieci starałem się dawać MikroTiki gdzie tylko było to możliwe. Do zeszłego miesiąca wszystko co konfigurowałem, robiłem na podstawie własnego doświadczenia, bez żadnych szkoleń czy certyfikatów. Miałem pewne podstawy, nawet wydawać by się mogło, że dość spore, jednak nie wszystko było dla mnie oczywiste, ale co najważniejsze – nie miałem certyfikatu. Aktualnie nie studia, a właśnie certyfikaty pozwalają na dalszy rozwój kariery.
W czerwcu 2021 roku we Wrocławiu odbyło się szkolenie MTCNA organizowane przez MikroTik Warsaw Training Center. Wziąłem udział w tym szkoleniu oraz udało mi się uzyskać certyfikat. Ale nie o mnie i moim szkoleniu jest ten artykuł, jednak musiałem o nim wspomnieć, gdyż sam pomysł na niego zaczerpnąłem właśnie na tym szkoleniu.
Na samym początku chciałbym zaznaczyć, że pomysł z wykorzystaniem MikroTika jako końcówki VPN nie jest mój. Zostało to zaprezentowane na szkoleniu. Ja ze swojej strony pomysł ten rozbudowałem (a przynajmniej mam taką nadzieję).
MikroTik jako końcówka VPN
Wiadomo – system operacyjny Windows ma wbudowanego klienta VPN (PPTP, SSTP, L2TP, IKEv2). Jednakże jest on dość „ograniczony” pod względem funkcjonalności. Nie wynika to w większości z samego Windowsa, a bardziej ze specyfiki protokołu.
Na szkoleniu prowadzący mówił o tym, że najwygodniej jest wykorzystywać protokół SSTP. Początkowo wydało mi się to dziwne, jednak szybko zrozumiałem o co chodzi. Nie jest to jakiś nadzwyczajny protokół, jednak ma pewną przewagę nad pozostałymi protokołami. Port na którym pracuje to port 443. Brzmi znajomo? Tak, to ten sam port na którym działa HTTPS. Dlaczego to takie ważne? Dlatego, że ten port na publicznym HotSpocie z którego czasem musisz skorzystać na 100% nie będzie zablokowany (w przeciwnym wypadku nie działałaby większość stron internetowych). Co do portów wykorzystywanych w przypadku innych VPNów nie jest to takie pewne i oczywiste. Na ogół w publicznych sieciach dostępne są tylko podstawowe porty.
Kolejna problem VPNów to (może poza OpenVPN niewspieranym natywnie przez Windows i IKEv2) to trasowanie, a w właściwie jego brak. Windows domyślnie przekierowuje cały ruch przez bramę VPN, jednak nie zawsze jest to pożądane. Na ogół potrzebujemy, aby przez bramę VPN przechodził tylko ruch do określonych podsieci, albo wręcz do konkretnych adresów IP. W Windowsie są 2 możliwości – albo akceptujemy przepuszczanie całego ruchu przez VPN, albo ręcznie konfigurujemy trasy. Ani jedno, ani drugie rozwiązanie nie jest tutaj dobre.
Warto też wspomnieć o samym protokole SSTP w Windows. Wymaga on użycia oprócz loginu i hasła również certyfikatu. Nie zawsze mamy chęć i ochotę konfigurować certyfikaty, także jest to kolejne swego rodzaju ograniczenie.
Zatem co zrobić by pozbyć się tych ograniczeń?
Tutaj prowadzący szkolenie zaproponował nam bardzo proste rozwiązanie – noszenie ze sobą małego MikroTik’a, który byłby pośrednikiem między komputerem klienckim, a VPNem. Na szkoleniu pokazał nam urządzenie MikroTik mAP. Zasada jest prosta – Ethernet urządzenia do laptopa, a połączenie z siecią wifi nawiązywane jest już z samego MikroTik’a. Zalet jest sporo. Do SSTP nie potrzebujemy certyfikatu (MikroTik tego nie wymaga), a trasy możemy sobie skonfigurować w dowolny sposób, bądź wręcz wykorzystać protokoły routingu dynamicznego takiego jak np. RIP, OSPF. Wtedy trasy skonfigurują się same! Osiągnięty zostanie cel – określone podsieci przez VPN, reszta ruchu bezpośrednio przez Internet. Jako dodatek zyskujemy w ten sposób dużo bardziej zaawansowany firewall niż ten wbudowany w Windowsa, a to niewątpliwie ma tutaj znaczenie.
Skoro pomysł z zastosowaniem MikroTik’a pozwala na pozbycie się tych ograniczeń to po co właściwie jest ten artykuł?
Rozwiązanie jest dobre, ale postanowiłem je trochę zmodyfikować, tak by było mniej „uciążliwe”. mAP to jednak dodatkowe urządzenie, o którym trzeba pamiętać żeby je zabrać ze sobą. Ponadto trzeba je też zasilić (co prawda wystarczy USB laptopa, ale tracimy to USB na czas pracy MikroTik’a). Ponadto trzeba pamiętać o zabraniu kabla Ethernet, oraz za każdym razem nawiązywać połączenie wifi z poziomu winboxa. Wiem sam po sobie, że na pewno nie raz bym zapomniał zabrać ze sobą tego MikroTik’a, albo któregoś z przewodów. Ponadto laptopy mają teraz bardzo często zaledwie 2 porty usb, co też może odegrać ważną rolę.
Pomyślałem sobie: „Hmmm… a co by zrobić by to dopracować i zniwelować konieczność wykorzystania zewnętrznego urządzenia”. I w ten sposób narodził się pomysł na ten artykuł.
CHR i wirtualizacja
Wpadłem na pomysł, że zamiast fizycznego urządzenia można wykorzystać Hyper-V z obrazem CHR MikroTik’a. Nie upieram się, że to koniecznie musi być hyper-v, ale akurat z tym wirtualizatorem miałem najwięcej do czynienia i najlepiej mi się w nim pracuje. Dalsza część artykułu oparta będzie właśnie o Hyper-V, jednak na 90% w przypadku innych wirtualizatorów kroki do wykonania będą bardzo podobne.
Zanim jednak przejdę do konfiguracji chciałbym wspomnieć o tym, że samo rozwiązanie ma też swoje niedociągnięcia, jednak są one na tyle małe, że można nauczyć się je ignorować. Największym z nich jest informacja w Windowsie o braku Internetu przy połączeniu wifi, jednak wynika to tylko i wyłącznie z tego, że sam Windows faktycznie nie wykorzystuje Internetu z tej karty wifi. Zapewne taką informację można w jakiś sposób wyłączyć, jednak uznałem to za mało istotne i to zignorowałem. Tym bardziej, że w samym zasobniku systemowym pojawia się ikonka połączenia przewodowego i tam mamy już prawidłową informację o dostępie do Internetu.
Drugą wadą tego rozwiązania (aczkolwiek tylko w przypadku Hyper-V) jest konieczność posiadania Windowsa w licencji Pro. Inaczej nie uruchomimy serwera Hyper-V.
Przejdźmy zatem do konfiguracji. W pierwszym kroku musimy włączyć funkcję Hyper-V w swoim systemie. Robimy to z Panelu Sterowania w opcji „Programy”. Jest tam przycisk „Włącz bądź wyłącz funkcje systemu Windows”. Otwieramy to okno i zaznaczamy Hyper-V i klikamy na „OK”.
Po wszystkim wykonujemy restart komputera i Hyper-V jest gotowe do pracy.
Po uruchomieniu Hyper-V musimy tworzyć 2 przełączniki wirtualne. Pierwszy z nich posłuży do zmostkowania przyszłego obrazu CHR z naszą kartą wifi.
W oknie Hyper-V klikamy na przycisk „Menedżer przełącznika wirtualnego”.
Dalej zaznaczamy „Nowy przełącznik sieci wirtualnej” i z listy wybieramy „Zewnętrzna”, po czym klikamy na „Utwórz przełącznik wirtualny”.
W kolejnym kroku wpisujemy nazwę połączenia, wybieramy z listy swoją kartę WiFi, oraz odznaczamy opcję „Zezwalaj systemowi operacyjnemu na współużytkowanie tej karty sieciowej”. Na końcu klikamy OK.
Ten przełącznik wirtualny będzie odpowiadał za komunikację CHR z siecią Internet.
Należy teraz stworzyć drugi przełącznik wirtualny, z tą różnicą że tym razem z listy wybieramy „Wewnętrzna”. Ten przełącznik będzie odpowiadał za komunikację MikroTika z naszym systemem Windows.
Po zakończeniu konfiguracji lista przełączników powinna wyglądać jak na poniższym zdjęciu:
Natomiast w samym Windows’ie w oknie kart sieciowych powinno to wyglądać jak poniżej:
Jak widać, pojawił się przełącznik wewnętrzny (nazwany u mnie MikroTik-LAN), oraz Mostek sieciowy, który łączy kartę Wifi z przełącznikiem zewnętrznym.
Warto w tym miejscu zauważyć, że jeśli mamy skonfigurowane inne usługi, które mogą wykorzystywać kartę wifi, bądź mamy szczątki poprzednich konfiguracji Hyper-V to może się okazać, że nie uda się skonfigurować przełącznika zewnętrznego. Można próbować to naprawić, jednak w moim przypadku szybciej było zainstalować od nowa Windows i wtedy już przełącznik dał się skonfigurować bez najmniejszego problemu.
Jeśli udało Ci się to skonfigurować to najtrudniejsze już za tobą 😊.
Teraz musimy pobrać obraz RouterOS CHR ze strony MikroTik’a. Po pobraniu tworzymy nową maszynę wirtualną. W pierwszym oknie klikamy „Dalej”.
W kolejnym kroku wpisujemy nazwę maszyny oraz ewentualnie wybieramy jej lokalizację docelową.
Kolejny krok to wybór generacji. Tutaj wybieramy „Generacja 1”.
Kolejny krok to przypisanie dostępnej dla maszyny pamięci RAM. 1GB to aż nadto, ale można sobie taką wartość przyjąć jako maksymalną i zaznaczyć użycie pamięci dynamicznej.
Następnie musimy wybrać pierwszy przełącznik sieciowy. Tutaj wybieramy przełącznik do komunikacji z Internetem.
Ostatni krok to wybranie dysku twardego. Tutaj podłączamy obraz CHR, pobrany ze strony MikroTik.
Po zakończeniu konfiguracji musimy wejść w ustawienia nowo powstałej maszyny wirtualnej i dodać kolejną wirtualną kartę sieciową wybierając z listy „Karta sieciowa”. Po kliknięciu wybieramy z listy wcześniej utworzony przełącznik wewnętrzny. Zapisujemy i maszyna wirtualna jest gotowa!
Uruchamiamy maszynę wirtualną. Jeśli wszystko się powiodło zobaczymy konsolę logowania do RouterOS.
MikroTik jest gotowy do pracy. Teraz musimy uruchomić Winboxa. Na interfejsie 1 (WAN) uruchamiamy klienta DHCP, na interfejsie 2 serwer DHCP, oraz odpowiednio konfigurujemy firewall. Konfigurujemy również połączenia VPN.
Po ukończeniu powyższych konfiguracji możemy sprawdzić działanie Internetu na MikroTik’u oraz komputerze:
Pozostało tylko skonfigurowanie VPN i tras (o ile nie używasz routingu dynamicznego).
U mnie skonfigurowany jest protokół RIP, więc wszystkie trasy pojawiły się automatycznie:
Na sam koniec wykonamy test komunikacji z urządzeniem w sieci 10.10.11.0/24
Jak widać komunikacja z urządzeniem w sieci 10.10.11.0/24 odbyła się zgodnie z oczekiwaniami przez VPN. Dla porównania została pokazana trasa pakietu do strony mwtc.pl. Jak widać pakiet ICMP wysłany do tej strony pokonuje zupełnie inną trasę. To również jest zgodne z oczekiwaniami, gdyż jest wysyłany bezpośrednio do internetu z pominięciem VPN.
W trakcie pisania tego artykułu pojawiło się w mojej głowie kilka pomysłów na rozbudowanie tego rozwiązania. Jednym z nich jest automatyczne przełączanie całego ruchu sieciowego na VPN, gdy komputer zostanie połączony z niezabezpieczoną siecią wifi. Miałaby za to odpowiadać napisana przeze mnie malutka aplikacja pracująca w tle i komunikująca się z wirtualnym MikroTik’iem przez API.
Jeśli ten pomysł wydaje się Wam sensowny zachęcam do komunikacji ze mną.
Autor: Kamil Sadowy