OSI:Netsim

Z HelpDesk

Server pro simulaci sítě WEBnet

Server netsim.civ.zcu.cz slouží primárně pro simulaci sítě WEBnet.

Instalace GNS3 Serveru

Postupovat podle návodu. Nejdříve nainstalovat potřebné balíky. Pro instalaci samotného serveru je lepší vždy používat pip3 kvůli novějším verzím.

pip3 install gns3-server
pip3 install gns3-server --upgrade

Instalace GNS3 Klienta

Zatím je lepší používat gns3-gui kvůli "odladěnosti". Webový klient je na stejné adrese jako HTTP API pro klienta v pythonu.

pip3 install gns3-gui


Hned po zapnutí klienta je potřeba nastavit jiný server Edit -> Preferences -> Server -> Main server -> Remote main server:

[ ] enable local server
Protocol: HTTP
Host: netsim.civ.zcu.cz
Port: 80 TCP
user: zeptat se v KPS
pass: zeptat se v KPS

Terminál bývá nastavený správně, ale je třeba si nainstalovat wireshark a nějaký VNC viewer třeba Remmina nebo tigervnc. Pak je v General preferences -> VNC možné nastavit cestu s parametrama, pro remminu:

remmina -c vnc://%h:%p

Lokace pro konfiguraci a správu GNS3 na serveru

#Nastavení serveru, zde se nastavují porty, cesty k modulům a projektům
 /root/.config/GNS3/2.2/gns3_server.conf
#Složka s projekty
/root/GNS3/projects/
#Složka s připravenými image
/root/GNS3/images/QEMU
#Systemd servica
/etc/systemd/system/gns3.service

Sestavení VPCS

V debian repozitářích je prehistorická verze VPCS a tak je nutné si dokompilovat verzi novou z GitHubu. Poté se nastaví např. jen symbolické cesty na spustitelný .bin soubor /usr/bin/vpcs.

Jak na Docker

Přidání docker image lze provést z GNS3 marketplacu nebo ručně. Dále bude postup pro manuální přidání čistého debianu a pak si ten image upravíme podle potřeby:

na serveru:

docker pull debian

V gns3-gui New template -> Manually create -> Docker -> New -> Existing Image (vybereme debian:latest), dále necháme v defaultu. Dáme docker na canvas připojíme na internet přes NAT. Připojíme se přes telnet poklikáním a doinstalujeme balíčky co se nám hodí např. net-tools nebo iperf3. Docker necháme zapnutý a dále pokračujeme v terminálu na serveru. Image dockeru jsou z povahy persistentní a nainstalované balíčky by nám zmizely po restartu, proto je třeba stav zachovat.

docker ps #zjistíme id běžícího dockeru např 7f5f9dc6a7b7
docker commit 7f5f9dc6a7b7 kps/debian:verze1 #commitneme si novou verzi s novým tagem

Nyní můžeme přidat úplně stejně další docker v gns3-gui, ale vybereme image kps/debian:verze1, který již má naše featury. Ještě před nastartováním dockeru je možné zvolit "Edit config", kde po odkomentování položek:

auto eth0
iface eth0 inet dhcp

bude automaticky získávat DHCP adresu.

Jak vytvořit qcow2 template

Přetažením již existujících templatů do pracovní plochy se vytvoří .qcow2 kopie v adresáři:

/root/GNS3/projects/*project_uid*/project-files/qemu/*device_uid*/obraz.qcow2

Prováděním úprav v GNS3 se upravuje tento obraz a je možné jej zpět nakopírovat do cesty:

/root/GNS3/images/QEMU/obraz.qcow2

Pak je možné buď template upravit v panelu devices: Configure template -> HDD -> HDA (relativní cesta k obrazu, nelze požít browse ten používá lokální procházení souborů), nebo vytvořit kopii: Edit -> Preferences -> QEMU -> Copy a vytvořit tak nový template s např. stejnou konfigurací pro síťová rozhraní.

Vytvoření nového device

Z menu: File -> New template -> From repository -> NX-OSv 9000, zde je nutné na internetu najít soubor OVMF-20160813.fd (obraz nexus biosu) a také je nutné disponovat samotným obrazem. Jelikož je poslední verze 9.3.3 je potřeba vytvořit novou verzi např. 9.3.7, tak aby seděl název s nahrávaným obrazem. Taky je pro novou verzi nutné zatrhnout položku "Allow custom files". GNS3-gui "skenuje" stažené soubory na našem počítači proti požadovaným souborům a po vybrání konkrétní verze je zeleně označí a je možné je dalším krokem nahrát na server.

NAT

Aby bylo možné vytvořit NAT, je nunté mít na serveru balíček libvirt a vytvořit defaultní virtuální síťové rozhraní virbr0:

virsh net-start default
virsh net-autostart default
virsh net-list --all

Toto rozhraní má rozsah 192.168.122.0/24 a lze dále upravit:

virsh net-edit --network default
<network>
  <name>default</name>
  <uuid>b113d5ef-0b58-489f-9374-42be79bfc46e</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='off' delay='0'/>
  <mac address='52:54:00:0e:2f:30'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
 </network>

Návaznosti na toto rozhraní jsou pak vidět dvěma příkazy:

brctl show # bridgované tun devices z jednotlivých projektů
virsh net-dhcp-leases --network default # aktivní dhcp leasy

Bylo zjištěno, že toto virtuální rozhraní se nechová korektně a když dojde k restarování GNS3 server tak na něj nejsou aplikována nastavení, toto částečně řeší systemd servica:

[Unit]
Description=GNS3 server
Wants=network-online.target
After=network.target network-online.target
[Service]
ExecStart=/usr/local/bin/gns3server --log /var/log/gns3/gns3.logi
ExecStartPost=/usr/bin/virsh net-destroy --network default ; /usr/bin/sleep 3
ExecStartPost=/usr/bin/virsh net-start --network default
ExecReload=/bin/kill -s HUP $MAINPID
Restart=on-abort

Defaultní síť lze také restartovatza běhu GNS3 a tím problém vyřešit. Problém se neobjevuje, pokud je alespoň jedno tap zařízení bridgované do NATu tzn. existuje alespoň jeden projekt, který stále běží.