Switche versenken ist eine Variante von Schiffe versenken, bei der zunächst virtuelle Schiffe gesetzt und dann durch Kabelstecken versenkt werden müssen.
Das hier ist eine neue Version des Switche versenken Spieles. Die alte Version befindet sich hier.
Allgemein ist es vorgesehen, dass das Spielfeld jedes Spielers aus einer 12×6 Matrix aus Switchports besteht. Bei einem 54er Switch sind das beispielsweise 3 übereinander liegende Module (in diesem Beispiel jeweils immer die Module A, C und E) oder falls keine 54er Switche zur Verfügung stehen, können auch mehrere 1HE-Switche mit mindestens 24 Ports gestacked werden. Für die Einrichtung beider Szenarien folgt nun eine Anleitung:
10.135.1.20/24-10.135.1.25/24 haben10.135.1.5/24 und die SNMP-Community heißt swvcom (diese wird später bei der Einrichtung des Servers noch auf diesen Wert gesetzt)menu in der Switch-CLI eingibt und es dort in den VLAN-Einstellungen ändertexpect muss installiert sein./configure_switch.py [switch_ip] [server_ip] [snmp_community] [anzahl_switchports_zum_isolieren] ausgeführt werden./configure_switch.py 10.135.1.20 10.135.1.5 swvcom 48 (das muss jetzt noch für die Switche 2-6 ausgeführt werden und ja 24 isolierte Ports würden prinzipiell auch reichen)10.135.1.20/24 und 10.135.1.30/24 haben10.135.1.5/24 und die SNMP-Community heißt swvcom (diese wird später bei der Einrichtung des Servers noch auf diesen Wert gesetzt)menu in der Switch-CLI eingibt und es dort in den VLAN-Einstellungen ändertexpect muss installiert sein./configure_switch_54.py [switch_ip] [server_ip] [snmp_community] ausgeführt werden./configure_switch.py 10.135.1.20 10.135.1.5 swvcom (das muss jetzt noch für den anderen Switch mit der anderen IP ausgeführt werden)Für die Erklärung wird von folgenden Beispielwerten ausgegangen (Erläuterungen folgen unten):
10.135.1.5/24swvcom/etc/snmp/handle.py/var/www/swv/frontend ausgecheckt/var/www/swv/backend/files ausgecheckt/var/www/swv/backend/venv/var/www/swv/backend/socket/wsgi.sock/etc/systemd/system/swv-backend.serviceDie Einrichtung erfolgt nun so:
apt install python3-dev default-libmysqlclient-dev libssl-dev python3 python3-venv mariadb-server nginx snmptrapd nodejs npm/etc/snmp/handle.py kopieren/etc/snmp/snmptrapd.conf kann dann mit unseren Beispielwerten so aussehen:/etc/snmp/snmptrapd.conf
authCommunity log,execute,net swvcom traphandle default /etc/snmp/handle.py
systemctl enable –now snmptrapd/var/www/swv/backend/files auscheckencd /var/www/swv/backendpython3 -m venv venvsource venv/bin/activatepip install wheelpip install -r files/requirements.txtpip install uwsgi/var/www/swv/backend/files/wsgi.py eine WSGI-Config mit folgendem Inhalt anlegen:wsgi.py
from flaskapp.app import app
if __name__ == "__main__":
app.run()
/var/www/swv/backend/wsgi.ini die WSGI-INI mit folgendem Inhalt anlegen (Pfade bei Bedarf anpassen):wsgi.ini
[uwsgi] chdir = /var/www/swv/backend/files wsgi-file = wsgi.py callable = app master = true processes = 5 socket = /var/www/swv/backend/socket/wsgi.sock chmod-socket = 660 vacuum = true die-on-term = true
/var/www/swv/backend/socket/ anlegen/var/www/swv/backend/files/flaskapp/configsecret.py liegensecret.example.py ist das Beispiel für mehrere 1HE Switche und secret.example_54.py ist das Beispiel für 54er Switche (die Ports sollten jeweils immer so bleiben können)/etc/systemd/system/swv-backend.service
[Unit] Description=uWSGI Instanz für swv-backend After=network.target [Service] User=www-data Group=www-data WorkingDirectory=/var/www/swv/backend/ Environment="PATH=/var/www/swv/backend/venv/bin" ExecStart=/var/www/swv/backend/venv/bin/uwsgi --ini wsgi.ini --enable-threads [Install] WantedBy=multi-user.target
systemctl enable –now swv-backend/var/www/swv/frontend auschecken src/config.ts die BASE_URL in unserem Beispiel auf http://10.135.1.5 abänderncd /var/www/swv/frontendnpm inpm run build/etc/nginx/sites-available/default
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/swv/frontend/build;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
location /api/ {
uwsgi_pass unix:///var/www/swv/backend/socket/wsgi.sock;
include uwsgi_params;
}
}
systemctl reload nginxhttp://10.135.1.5/ erreichbar sein)http://10.135.1.5/api/reset zurückgesetzt werden (von einem beliebigen Laptop aus)