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/24
swvcom
/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.service
Die 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/backend
python3 -m venv venv
source venv/bin/activate
pip install wheel
pip install -r files/requirements.txt
pip 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/config
secret.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/frontend
npm i
npm 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 nginx
http://10.135.1.5/
erreichbar sein)http://10.135.1.5/api/reset
zurückgesetzt werden (von einem beliebigen Laptop aus)