Narzędzia użytkownika

Narzędzia witryny


sk2:zajecia_zdalne

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
sk2:zajecia_zdalne [2020/11/29 13:41]
jkonczak [Oprogramowanie do zdalnych zajęć]
sk2:zajecia_zdalne [2021/12/18 13:38] (aktualna)
jkonczak [Oprogramowanie do zdalnych zajęć]
Linia 1: Linia 1:
 ====== Oprogramowanie do zdalnych zajęć ====== ====== Oprogramowanie do zdalnych zajęć ======
  
-++++ Programowanie ​niekopoziomowe (zajęcia 1-6) |+++++ Programowanie ​niskopoziomowe ​|
  
 Do zajęć zdalnych koniecznie musicie mieć do dyspozycji: Do zajęć zdalnych koniecznie musicie mieć do dyspozycji:
Linia 23: Linia 23:
     * ''​wireshark''​     * ''​wireshark''​
   * wygodny emulator terminala   * wygodny emulator terminala
- 
 ++++ ++++
  
-++++ Qt – 10.11 i 17.11 (grupy wtorkowe) / 25.11 i 2.12 (grupy środowe) (zajęcia 6 i 7) | +**Qt**\\ 
-Proszę zainstalować program qtcreator oraz podstawowe biblioteki deweloperskie,​ dokumentację i narzędzia frameworku Qt (w wersji 5).  +Proszę zainstalować program qtcreator oraz podstawowe biblioteki deweloperskie,​ dokumentację i narzędzia frameworku Qt (w wersji 5.15.X lub 6.X). \\ 
-W zdecydowanej większości dystrybucji Linuksa pakiety są dostępne w domyślnych repozytoriach (np. dla Ubuntu: ''​qtbase5-dev qt5-doc qtcreator ​libclang-common-8-dev''​((Paczka ''​libclang-common-8-dev''​ jest wymagana w Ubuntu niezależnie od wersji clanga [[https://​bugs.debian.org/​cgi-bin/​bugreport.cgi?​bug=952718|z niezrozumiałych przeze mnie powodów]]))). \\ +W zdecydowanej większości dystrybucji Linuksa pakiety są dostępne w domyślnych repozytoriach (np. dla Ubuntu: ''​qtbase5-dev qt5-doc qtcreator''​). \\ 
-Proszę przetestować czy środowisko działa poprawnie kompilując przykładowy kod: {{:​sk2:​l6_z2_template.tar.xz|}}. +Proszę przetestować czy środowisko działa poprawnie kompilując przykładowy kod: {{:​sk2:​l6_z2_template.tar.xz|}}. ​\\ 
-+++++<​html><​small></​html>​Uwaga:​ dla Qt6 trzeba w CMakeLists.txt zmienić wszystkie wystąpienia ''​Qt5''​ na ''​Qt6''<​html></​small></​html>​
  
-++++ Java - 24.11 (grupy wtorkowe) / 9.11 (grupy środowe) ​ (zajęcia 8) |+**Java**\\
 Proszę zainstalować JDK i swoje ulubione IDE do Javy (np. IntelliJ / Eclipse / NetBeans). ​ Proszę zainstalować JDK i swoje ulubione IDE do Javy (np. IntelliJ / Eclipse / NetBeans). ​
-++++ 
  
-++++ DNS - 1.12 (grupy wtorkowe) / 9.12 (grupy środowe) (zajęcia 9) |+++++ DNS |
 Proszę zainstalować programy ''​dig'',​ ''​host''​ i ''​bind''​. \\ Proszę zainstalować programy ''​dig'',​ ''​host''​ i ''​bind''​. \\
 W zależności od dystrybucji,​ programy mogą być w paczkach o nazwach: W zależności od dystrybucji,​ programy mogą być w paczkach o nazwach:
Linia 75: Linia 73:
  
 ++++ ++++
 +
 +++++ Kształtowanie ruchu |
 +Na zajęciach będziecie pracować na komputerach w laboratorium na Politechnice.
 +Przed zajęciami proszę:
 +  * zalogować się na ''​polluks''​a (tzn. sprawdzić, czy pamiętacie hasło)
 +  * zalogować się z polluksa na wybrany z komputerów laboratoryjnych (lab-net-[1-16] lub lab-sec-[1-16]):​
 +    * swoim kontem ''​inf…'',​ a jeśli się nie da, to
 +    * na konto ''​root''​ ze standardowym hasłem
 +  * jeśli zalogowaliście się swoim kontem do VLABa, proszę wybrać ''​Start local Linux''​ i zalogować się po ok. 2 minutach ponownie (na konto root) \\ __Uwaga:__ jeśli na komputerze jest uruchomiona jakaś maszyna wirtualna, może to oznaczać że ktoś pracuje (np. w ramach innych zdalnych zajęć) na tym komputerach,​ więc proszę wtedy nie wybierać lokalnego linuksa i spróbować później / na innej maszynie.
 +  * uruchomić ponownie (''​reboot''​) maszynę po sprawdzeniu że udało Wam się zalogować na konto roota.
 +Zachęcam do przypomnienia sobie jak korzysta się z SSH i narzędzi takich jak screen i tmux ([[https://​github.com/​zolrath/​wemux|wemux]]),​ korzystając np. [[sk1:​ssh_screen_tmux|z tych materiałów]] (materiały były przedstawione ​  ​[[https://​emeeting.put.poznan.pl/​playback/​presentation/​2.0/​playback.html?​meetingId=74d51a8d51ffe7dd7d66f8eaa6ffeffc725c5060-1585652713066|na początku jednych z zajęć ​ z SK1]]).\\
 +Na tych zajęciach będę sprawdzać stan Waszej pracy logując się na maszyny w laboratorium,​ więc nie musicie udostępniać mi ekranu. Zachęcam do używania screen/tmux żebym np. mógł wskazać Wam gdzie jest błąd w komendach które wpisujecie a są traktowane jako niepoprawne.
 +
 +++++
 +
 +
 +++++ IPv6  |
 +Podobnie jak na zajęciach z kształtowania ruchu (powyżej) w trakcie zajęć będą wykorzystywane komputery w laboratoriach.
 +
 +W trakcie tych zajęć będzie konieczność uruchomienia programu Wireshark na komputerach w laboratorium. \\
 +Dlatego proszę o przygotowanie się do używania programu wireshark, np:
 +  * wykorzystując X11 forwarding w SSH (opisane [[sk1:​ssh_screen_tmux|tutaj]]);​ \\ jeśli korzystacie z Windowsa, X11 forwardig wymaga uruchomionego serwera [[https://​en.wikipedia.org/​wiki/​X_Window_System|X]],​ np. [[https://​sourceforge.net/​projects/​vcxsrv/​|vcxsrv]] \\ Uwaga: z powodu [[https://​github.com/​PowerShell/​Win32-OpenSSH/​issues/​1088|błędu]] w windowsowej wersji ssh może być konieczne posiadanie pliku ''​C:​\dev\tty'',​ <​html><​small></​html>​ np. tworzonego przez:<​code>​
 +mkdir \dev
 +echo x > \dev\tty
 +</​code>​ <​html></​small></​html>​a następnie ustawienie zmiennej DISPLAY na odpowiednią wartość przed wywołaniem ssh, np. w cmd.exe: \\ ''​set DISPLAY=localhost:​0''​
 +  * uruchomienie serwera VNC <​html><​small></​html>​(lub rdesktop)<​html></​small></​html>​ na maszynie w laboratorium i połączenie się z tym serwerem, wykorzystując [[https://​instrukcje.put.poznan.pl/​category/​vpn/​|VPN politechniki]] lub tunelowanie po SSH (opisane skrótowo [[sk1:​ssh_screen_tmux|tutaj]]).
 +++++
 +
 +++++ WLAN 1  |
 +Podobnie jak na zajęciach z IPv6 (powyżej) w trakcie zajęć będą wykorzystywane komputery w laboratoriach. \\
 +Możliwe (zależy od tempa zajęć) że w trakcie zajęć będzie też potrzeba uruchomić Wireshark na komputerach w laboratorium.
 +++++
 +
 +++++ WLAN 2  |
 +Zajęcia będą odbywać się na komputerach w laboratorium. \\
 +W zależności od ilości osób może wystąpić konieczność pracy w grupach – sprzętowych AP jest ograniczona ilość.
 +Dlatego proszę o przećwiczenie pracy w jednej konsoli przez kilka osób (np. używając tmux/wemux lub współdzieląc ekran).
 +++++
 +
 +++++ WLAN 3  |
 +Zajęcia będą odbywać się na komputerach w laboratorium. \\
 +Będziecie konfigurować sprzęt firmy MikroTik, który najłatwiej konfiguruje się z użyciem przeglądarki pod domyślnym ​ dla sprzętu tej firmy adresem IP 192.168.88.1.\\
 +Dla wygody i sprawnego działania interfejsu konfiguracyjnego zalecam skonfigurować przekierowanie portów po SSH.
 +Możecie albo:
 +  * użyć //local port forwarding//​ do przekazywania danych z połączeń nawiązywanych na podany port lokalnego komputera przez połączenie SSH do wskazanego adresu po stronie serwera SSH, np. przez: <​code>​ssh -Y -J infXXX@polluks.cs.put.poznan.pl -L 8080:​192.168.88.1:​80 root@lab-sec-X</​code>​ Wtedy połączenie pod ''​http://​localhost:​8080/''​ z przeglądarki internetowej spowoduje nawiązanie połączenia z serwera ssh do adresu 192.168.88.1:​80 i przekazywanie danych między tymi połączeniami,​ a więc wyświetlenie interfejsu konfiguracyjnego sprzętu.
 +  * użyć //dynamic port forwarding//​ do uruchomienia proxy SOCKS tunelujących połączenia na drugą stronę połączenia SSH i skonfigurować połączenie przeglądarki z siecią tak by używało tego proxy. Przykładowa komenda ssh: <​code>​ssh -Y -J infXXX@polluks.cs.put.poznan.pl -D 8080 root@lab-sec-X</​code>​ Przykładowa instrukcja jak używać takiego proxy jest tutaj: https://​linuxize.com/​post/​how-to-setup-ssh-socks-tunnel-for-private-browsing/​
 +
 +++++
 +
 ====== Udostępnianie widoku swojego pulpitu ​ ====== ====== Udostępnianie widoku swojego pulpitu ​ ======
 +
 +Proszę wybrać __jedną__ metodę na udostępnianie mi podglądu kodu który piszecie.
  
 ===== Metoda #1: Udostępnienie VNC prowadzącemu (Linuks) ===== ===== Metoda #1: Udostępnienie VNC prowadzącemu (Linuks) =====
  
-  # tl;dr (czyli dla osób które chcą gotowe polecenia i nie chce im się czytać dalej) +==== Skrócona instrukcja ==== 
-  wget http://​www.cs.put.poznan.pl/​jkonczak/​pub/​sk2/​sk2-vpn-ca.crt +Instrukcja skrócona ​(dla osób które chcą gotowe polecenia i nie chce im się czytać dalej):
-  sudo openvpn --dev tap --client --ca sk2-vpn-ca.crt --auth-user-pass --daemon --remote ipv4.jprofesorek.mooo.com +
-  x11vnc -quiet -nopw -forever -display :0 & disown +
-  sleep 5 +
-  ip -4 addr show dev tap0 +
-  ​+
  
-==== Krok 1: dołączenie do VPNa ====+  - zainstaluj openvpn, x11vnc i vncviewer 
 +  - wykonaj:<​code>​ 
 +wget http://​www.cs.put.poznan.pl/​jkonczak/​pub/​sk2/​sk2-vpn-ca.crt 
 +sudo openvpn --dev tap --client --ca sk2-vpn-ca.crt --auth-user-pass --daemon --remote ipv4.jprofesorek.mooo.com 
 +x11vnc -quiet -nopw -forever -display :0 & disown 
 +sleep 5 
 +ip -4 addr show dev tap0</​code>​ 
 +  - sprawdź z drugiego komputera czy po połączeniu go identycznymi poleceniami do VPNa możesz zobaczyć swój ekran:<​code>​vncviewer <​ip_komputera></​code>​ 
 + 
 +==== Pełna Instrukcja ==== 
 +   
 +=== Krok 1: dołączenie do VPNa ===
 W trakcie zajęć wykorzystywany będzie OpenVPN. Należy zainstalować odpowiednią paczkę (zwykle o nazwie ''​openvpn''​) w systemie z którego będzie udostępniany ekran. W trakcie zajęć wykorzystywany będzie OpenVPN. Należy zainstalować odpowiednią paczkę (zwykle o nazwie ''​openvpn''​) w systemie z którego będzie udostępniany ekran.
  
Linia 98: Linia 153:
   * (port i protokół domyślne - 1194/udp)   * (port i protokół domyślne - 1194/udp)
   * nazwa użytkownika i hasło, przekazane innym kanałem przez prowadzącego. ​ \\ Nazwę użytkownika i hasło można dla wygody wpisać do pliku o nieskomplikowanym ​ formacie: <code - userPass.txt>​theExampleUsername   * nazwa użytkownika i hasło, przekazane innym kanałem przez prowadzącego. ​ \\ Nazwę użytkownika i hasło można dla wygody wpisać do pliku o nieskomplikowanym ​ formacie: <code - userPass.txt>​theExampleUsername
-someIncorrectPassword</​code>​Uwaga: ​plikz hasłem musi mieć uprawnienia zabraniające odczyt komukolwiek poza bieżącym użytkownikiem (do ustawienia uprawnień można użyć np. ''​chmod go-rwx userPass.txt''​)+someIncorrectPassword</​code>​Uwaga: ​plik z hasłem musi mieć uprawnienia zabraniające odczyt komukolwiek poza bieżącym użytkownikiem (do ustawienia uprawnień można użyć np. ''​chmod go-rwx userPass.txt''​)
  
 Polecenie uruchamiające VPNa, należy je uruchamiać z __roota__ (**wybierz jedno**): Polecenie uruchamiające VPNa, należy je uruchamiać z __roota__ (**wybierz jedno**):
-  * Wersja 1 - wszystko w linii poleceń: <​code>​openvpn --dev tap --client --ca /​somewhere/​sk2-vpn-ca.crt --auth-user-pass /​somewhere/​userPass.txt --remote ipv4.jprofesorek.mooo.com</​code>​ Uwaga 1: można pominąć ​nazwę ​pliku ''​ /​somewhere/​userPass.txt'',​ wtedy program pyta o nazwę użytkownika / hasło. \\ Uwaga 2: można dodać opcję ''​--daemon'',​ która przenosi program w tło. Bez tej opcji program openvpn zajmuje konsolę (a zamknięcie okna z konsolą przerywa połączenie).+  * Wersja 1 - wszystko w linii poleceń: <​code>​openvpn --dev tap --client --ca /​somewhere/​sk2-vpn-ca.crt --auth-user-pass /​somewhere/​userPass.txt --remote ipv4.jprofesorek.mooo.com</​code>​ Uwaga 1: można pominąć ​podawanie ​pliku ''/​somewhere/​userPass.txt'',​ wtedy program pyta o nazwę użytkownika / hasło. \\ Uwaga 2: można dodać opcję ''​--daemon'',​ która przenosi program w tło. Bez tej opcji program openvpn zajmuje konsolę (a zamknięcie okna z konsolą przerywa połączenie).
   * Wersja 2 - przygotuj plik konfiguracyjny:​ <code - sk2-vpn.ovpn>​client   * Wersja 2 - przygotuj plik konfiguracyjny:​ <code - sk2-vpn.ovpn>​client
 remote ipv4.jprofesorek.mooo.com remote ipv4.jprofesorek.mooo.com
Linia 108: Linia 163:
 auth-user-pass /​somewhere/​userPass.txt auth-user-pass /​somewhere/​userPass.txt
 #​daemon</​code>​ następnie uruchom polecenie: <​code>​openvpn --config sk2-vpn.ovpn</​code>​ #​daemon</​code>​ następnie uruchom polecenie: <​code>​openvpn --config sk2-vpn.ovpn</​code>​
-  * Wersja 3 - użyj graficznego konfiguracja dla NetworkManagera (ta wersja potrzebuje NetworkManagera i może potrzebować dodatkowych pakietów, np. ''​network-manager-openvpn-gnome''​).+  * Wersja 3 - użyj graficznego konfiguracja dla NetworkManagera (ta wersja potrzebuje NetworkManagera i może potrzebować dodatkowych pakietów, np. ''​network-manager-openvpn-gnome''​). ​<​html><​small></​html>​ \\ Uwaga: poza przeklikaniem wymienionych wyżej ustawień konieczne jest wyłączenie dodawnia domyślnej bramy przez VPN: \\ ''​IPv4 options''​ / ''​Routes…''​ / ''​Use this connection only for resources on its network''​ \\ Można to też zmienić z konsoli: ''​nmcli c modify <​nazwa_połączenia>​ ipv4.never-default true''​ <​html></​small></​html> ​
  
 **Sprawdzenie czy wszystko poszło dobrze:** po wykonaniu wybranej z komend, w wynikach komendy ''​ip address''​ powinien pojawić się interfejs ''​tap0''​ z adresem IP z sieci 10.0.9.0/​24. Dodatkowo powinna działać komenda ''​ping 10.0.9.1''​. **Sprawdzenie czy wszystko poszło dobrze:** po wykonaniu wybranej z komend, w wynikach komendy ''​ip address''​ powinien pojawić się interfejs ''​tap0''​ z adresem IP z sieci 10.0.9.0/​24. Dodatkowo powinna działać komenda ''​ping 10.0.9.1''​.
Linia 114: Linia 169:
 <​html><​small></​html>​Dla zainteresowanych [[sk2:​vpn_serwer_dla_zajec|konfiguracja serwera]]<​html></​small></​html>​ <​html><​small></​html>​Dla zainteresowanych [[sk2:​vpn_serwer_dla_zajec|konfiguracja serwera]]<​html></​small></​html>​
  
-==== Krok 2: uruchomienie VNC ====+=== Krok 2: uruchomienie VNC ===
  
 Przykładowe polecenie używa serwer [[https://​en.wikipedia.org/​wiki/​X11vnc|x11vnc]] aby udostępnić bieżącą sesję graficzną. \\ <​html><​small></​html>​ Przykładowe polecenie używa serwer [[https://​en.wikipedia.org/​wiki/​X11vnc|x11vnc]] aby udostępnić bieżącą sesję graficzną. \\ <​html><​small></​html>​
Linia 150: Linia 205:
  
 === OpenVPN === === OpenVPN ===
-Należy zainstalować openvpn: https://​openvpn.net/​community-downloads-2/ \\+Należy zainstalować openvpn: https://​openvpn.net/​community-downloads/​ \\
 Nie udało mi się (ale za bardzo nie próbowałem) skorzystać z GUI, stąd Nie udało mi się (ale za bardzo nie próbowałem) skorzystać z GUI, stąd
 proponuję z __uruchomionego jako administrator__ ​ cmd.exe lub powershella proponuję z __uruchomionego jako administrator__ ​ cmd.exe lub powershella
 wykonać odpowiednią komendę: \\ wykonać odpowiednią komendę: \\
-   ''​"​C:​\Program Files\OpenVPN\bin\openvpn.exe"​ …''​ \\+   "​C:​\Program Files\OpenVPN\bin\openvpn.exe"​ …
 Argumenty dla komendy wyglądają jak w Linuksie. Argumenty dla komendy wyglądają jak w Linuksie.
 ++++ Przykładowe screeny: | ++++ Przykładowe screeny: |
Linia 169: Linia 224:
 {{:​sk2:​win-vnc.png|}} {{:​sk2:​win-vnc.png|}}
 ++++ ++++
 +
  
 ===== Metoda #2: Wtyczka 'Live Share' w VS code (tylko zajęcia z programowania C/C++) ===== ===== Metoda #2: Wtyczka 'Live Share' w VS code (tylko zajęcia z programowania C/C++) =====
 +
 +++++ Ten sposób nie nadaje się do tematów innych niż 5-10 (od "​Wstęp do BSD sockets"​ do "Dobre praktyki w programowaniu"​) |
 +
 +Ta metoda jest prostsza do skonfigurowania,​ ale nie pozwala ona mi widzieć terminala, co utrudnia mi pomaganie w razie problemów z/podczas uruchomienia programów.
  
 Edytor VisualStudio Code pozwala udostępniać bieżąco edytowany projekt przy użyciu rozszerzenia [[https://​visualstudio.microsoft.com/​pl/​services/​live-share/​|Live Share]]. Edytor VisualStudio Code pozwala udostępniać bieżąco edytowany projekt przy użyciu rozszerzenia [[https://​visualstudio.microsoft.com/​pl/​services/​live-share/​|Live Share]].
Linia 180: Linia 240:
 {{:​sk2:​vscode_ls.png|}} {{:​sk2:​vscode_ls.png|}}
  
-**Uwaga**: Osoby korzystające z tej metody powinny:+**Uwaga**: Osoby korzystające z tej metody powinny ​do zajęć 1 i 2 z BSD sockets:
   * uruchomić u siebie usługę daytime na TCP i UDP   * uruchomić u siebie usługę daytime na TCP i UDP
   * lub wykonać z roota polecenie zastępujące daytime, np: \\ ''​socat udp-l:​daytime,​fork exec:date & socat tcp-l:​daytime,​fork exec:date &''​   * lub wykonać z roota polecenie zastępujące daytime, np: \\ ''​socat udp-l:​daytime,​fork exec:date & socat tcp-l:​daytime,​fork exec:date &''​
  
 +++++
sk2/zajecia_zdalne.1606653703.txt.gz · ostatnio zmienione: 2020/11/29 13:41 (edycja zewnętrzna)