Narzędzia użytkownika

Narzędzia witryny


Pasek boczny

sk1:nf_vm

Spis treści

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 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: dysk i kernel1)).

GNS3

Użycie program GNS3 do budowy potrzebnych sieci prezentuje: 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
1) Alpine z zainstalowanym domyślnym kernelem i modułami do niego zajmuje ok. 200MB więcej, stąd własna okrojona kompilacja jądra
sk1/nf_vm.txt · ostatnio zmienione: 2020/06/09 12:59 przez jkonczak