==== Wstęp ==== Ze względu na to, że w trakcie zajęć z firewalla część ćwiczeń (i spory odsetek popełnianych błędów) odcina komputer od internetu, wykonanie tych zajęć na zdalnych maszynach byłoby utrudnione. Jako że do zajęć z filtracji i translacji pakietów w Linuksie należy dysponować przynajmniej trzema komputerami w jednej sieci, proszę o odpowiednie przygotowanie się. Można oczywiście użyć trzech maszyn wirtualnych uruchomionych na jednym komputerze i połączonych odpowiednio w sieć. Osoby które dysponują wystarczającą ilością pamięci RAM zachęcam do stworzenia własnych maszyn wirtualnych z ulubioną dystrybucją Linuksa. Poniżej krótko opisuję jak można wykorzystując [[https://www.qemu.org/|qemu]] i gns3 (opcjonalnie) uruchomić trzy maszyny spięte w żądaną sieć. Dla osób które mają niewielką ilość pamięci RAM polecam skorzystanie z gotowego bardzo okrojonego obrazu używanego w poniższych przykładach (linki: [[http://www.cs.put.poznan.pl/jkonczak/pub/alpine_3_11_qemu/alp_fs.qcow2|dysk]] i [[http://www.cs.put.poznan.pl/jkonczak/pub/alpine_3_11_qemu/kernel|kernel]]((Alpine z zainstalowanym domyślnym kernelem i modułami do niego zajmuje ok. 200MB więcej, stąd własna okrojona kompilacja jądra))). ==== GNS3 ==== Użycie program GNS3 do budowy potrzebnych sieci prezentuje: {{:sk1:gns3_alpines.pdf|}} ==== Ręcznie ==== Do "ręcznego" złożenia potrzebnej sieci w Linuksie najłatwiej stworzyć w systemie operacyjnym odpowiednią ilość mostków, a następnie podpiąć maszyny wirtualne do właściwych urządzeń. === Mostki === //Uwaga:// wszystkie komendy należy wykonywać z uprawieniami roota. Stworzenie i konfiguracja mostków używając Network Manager: nmcli connection add type bridge ifname br0 nmcli connection modify bridge-br0 ipv4.method shared nmcli connection add type bridge ifname br1 Stworzenie i konfiguracja mostków ręcznie: ip link add br1 type bridge ip link set dev br1 up ip link add br0 type bridge ip link set dev br0 up ip address add dev br0 10.42.0.1/24 sysctl net.ipv4.conf.all.forwarding=1 iptables -t nat -A POSTROUTING -s 10.42.0.0/24 ! -d 10.42.0.0/24 -j MASQUERADE dnsmasq -i br0 --dhcp-range=10.42.0.2,10.42.0.254,3h === Maszyny === Uruchomienie maszyn dla filtrowania: # start (każdej) maszyny wirtualnej: qemu-system-x86_64 -kernel kernel -hda alp_fs.qcow2 -device e1000,netdev=N,mac=52:54:00:00:00:XX -netdev bridge,br=br0,id=N -accel kvm -serial stdio -snapshot # -kernel kernel <- użyj tego pliku jako jądra systemu operacyjnego # -hda alp_fs.qcow2 <- użyj tego pliku jako dysku twardego # -device e1000,netdev=N,mac=52:54:00:00:00:XX <- dodaj do maszyny wirtualnej kartę sieciową obsługiwaną przez sterownik e1000 i połącz z urządzeniem 'N' # -netdev bridge,br=br0,id=N <- skonfiguruj urządzenie 'N' jako podłączenie do mostka o nazwie br0 # -accel kvm <- użyj KVM jako wsparcia dla wirtualizacji # -serial stdio <- podłącz port szeregowy do standardowego wejścia/wyjścia # -snapshot <- otwiera wszystkie pliki w trybie tylko do odczytu, zmiany są tracone po zamknięciu maszyny Uruchomienie maszyn dla translacji adresów: # maszyna "w internecie" qemu-system-x86_64 -kernel kernel -hda alp_fs.qcow2 -device e1000,netdev=N,mac=52:54:00:00:00:01 -netdev bridge,br=br0,id=N -accel kvm -serial stdio -snapshot # maszyna "router" qemu-system-x86_64 -kernel kernel -hda alp_fs.qcow2 -device e1000,netdev=N1,mac=52:54:00:00:00:02 -netdev bridge,br=br0,id=N1 -device e1000,netdev=N2,mac=52:54:00:00:00:03 -netdev bridge,br=br1,id=N2 -accel kvm -serial stdio -snapshot # maszyna "za NATem" qemu-system-x86_64 -kernel kernel -hda alp_fs.qcow2 -device e1000,netdev=N,mac=52:54:00:00:00:04 -netdev bridge,br=br1,id=N -accel kvm -serial stdio -snapshot