# Linxmuster-Import-Subnets mit OpenSense 24.7 und LMN 7.2 legt keine statischen Routen an

**URL:** <https://ask.linuxmuster.net/t/linxmuster-import-subnets-mit-opensense-24-7-und-lmn-7-2-legt-keine-statischen-routen-an/11192>\
**Category:** Uncategorized\
**Created:** [25. Juli 2024 um 12:13 UTC](https://ask.linuxmuster.net/t/linxmuster-import-subnets-mit-opensense-24-7-und-lmn-7-2-legt-keine-statischen-routen-an/11192 "2024-07-25T12:13:49Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tw33ki](https://ask.linuxmuster.net/user_avatar/ask.linuxmuster.net/tw33ki/32/5747_2.png) [@Tw33ki](https://ask.linuxmuster.net/u/Tw33ki)\
**Post date:** [25. Juli 2024 um 12:13 UTC](https://ask.linuxmuster.net/t/linxmuster-import-subnets-mit-opensense-24-7-und-lmn-7-2-legt-keine-statischen-routen-an/11192/1 "2024-07-25T12:13:49Z")

</div>

Hello,  
ich wollte mich „mal kurz“ erkundingen, ob das linuxmuster-import-subnets-Skript mit OpenSense 24.07 und LMN 7.2 noch funktionieren sollte?

Ich habe folgende Grundsituation:

subnets.csv:

```auto
# server subnet definition
10.0.0.0/16;10.0.0.253;10.0.255.1;10.0.255.254;;;SETUP
# # add your subnets below;;;;;;
# #Lehrenretz VLAN Tag 20;;;;;;
10.21.0.0/16;10.21.0.253;10.21.0.200;10.21.0.250;;;SETUP
# Schülernetz VLAN TAG 15 
10.17.0.0/16;10.17.0.253;10.17.0.200;10.17.0.250;;;SETUP

```

Der Import lässt sich erfolgreich ausführen:

```auto
root@server:~# linuxmuster-import-subnets 
#### linuxmuster-import-subnets ####
------------------------------------------------------------------------------
#### Reading setup data: ####
#### * Server address: 10.0.0.1 ####
#### * Server network: 10.0.0.0/16 ####
#### Processing dhcp subnets: ####
#### * 10.0.0.0/16 ####
#### * 10.21.0.0/16 ####
#### * 10.17.0.0/16 ####
#### Restarting isc-dhcp-server ..................................... OK! ####
#### Processing netplan configuration: ####
#### * Removed old routes. ####
#### * Added new routes for all subnets. ####
WARNING:root:Cannot call Open vSwitch: ovsdb-server.service is not running.
#### * Applied new netplan configuration. ####
#### Downloading firewall configuration: ####
#### get 10.0.0.254 /conf/config.xml /var/cache/linuxmuster/opnsense.xml ####
#### * Download finished successfully. ####
#### * Saved changed config. ####
#### Uploading firewall configuration: ####
#### put 10.0.0.254 /var/cache/linuxmuster/opnsense.xml /conf/config.xml ####
#### * Upload finished successfully. ####
#### Applied new gateway. ####
#### Updating subnet routing on firewall: ####
#### * Got 2 routes. ####
#### * Route c1107bff-fd9a-4a5d-b78b-51ad5427426d - 10.17.0.0/16 deleted. ####
#### * Route 10.17.0.0/16 deleted. ####
#### * Route ca501ab3-dba3-4e10-a5ff-6adb77c6c9cd - 10.21.0.0/16 deleted. ####
#### * Route 10.21.0.0/16 deleted. ####
#### * Added route for subnet 10.21.0.0/16. ####
#### * Added route for subnet 10.17.0.0/16. ####
#### Applied new routes.

```

Jetzt würde man erwarten, dass in der OpnSense die Route für 10.17 und 10.21 gesetzt werden, folgendes Bild findet man aber vor:

 ![grafik](https://ask.linuxmuster.net/uploads/default/original/2X/4/406b920af55f7507f55acaac5fe252d5b5ec26ff.jpeg)

Erwartet hätte ich folgende Konfiguration (manuell angelegt):

 ![grafik](https://ask.linuxmuster.net/uploads/default/original/2X/1/1b23f657774dfdd0629a0649c0a73e0ae0848dd9.png)

Anscheindend werden die Routen auch wieder gelöscht, wnen ich das Skript „linuxmuster-import-subnets“ erneut aufrufe.

Problem daran ist natürlich, dass die Clients hinter 10.17 und 10.21 keine Internetverbindung bekommen, wenn die Rückroute nicht da ist.

Kann dieses Verhalten jemand bestätigen - oder liegts mal wieder an mir?

Timo

---

<div class="post-metadata">

**Author:** ![Sascha](https://ask.linuxmuster.net/letter_avatar_proxy/v4/letter/s/41988e/32.png) [@Sascha](https://ask.linuxmuster.net/u/Sascha)\
**Post date:** [25. Juli 2024 um 20:13 UTC](https://ask.linuxmuster.net/t/linxmuster-import-subnets-mit-opensense-24-7-und-lmn-7-2-legt-keine-statischen-routen-an/11192/2 "2024-07-25T20:13:36Z")

</div>

Salut,  
wir haben auch Probleme mit dem import der Subnetze - auf den Opensense habe ich noch gar nicht geschaut, aber uns war zunächst aufgefallen, dass das Skript die /etc/netplan/01-netcfg.yaml nicht mehr richtig (?) schreibt – da waren zumindest bei uns vorher Routen für jedes einzelne Subnetz drin

```auto
routes:
      - to: 10.16.1.0/24
        via: 10.16.1.253
      - to: 10.16.2.0/24
        via: 10.16.1.253
...

```

aber wenn man das Skript jetzt durchlaufen lässt, löscht es diese raus und legt sie auch nicht neu an. Von daher kann ich mir vorstellen, dass es _nicht_ an Dir liegt.

Gruß  
Sascha

---

<div class="post-metadata">

**Author:** ![Tw33ki](https://ask.linuxmuster.net/user_avatar/ask.linuxmuster.net/tw33ki/32/5747_2.png) [@Tw33ki](https://ask.linuxmuster.net/u/Tw33ki)\
**Post date:** [26. Juli 2024 um 08:09 UTC](https://ask.linuxmuster.net/t/linxmuster-import-subnets-mit-opensense-24-7-und-lmn-7-2-legt-keine-statischen-routen-an/11192/3 "2024-07-26T08:09:56Z")

</div>

Hi Sascha,  
das kann ich nicht bestätigen - bei mir wird die Netplan-Datei korrekt angepasst.

Timo

---

<div class="post-metadata">

**Author:** ![Sascha](https://ask.linuxmuster.net/letter_avatar_proxy/v4/letter/s/41988e/32.png) [@Sascha](https://ask.linuxmuster.net/u/Sascha)\
**Post date:** [26. Juli 2024 um 09:22 UTC](https://ask.linuxmuster.net/t/linxmuster-import-subnets-mit-opensense-24-7-und-lmn-7-2-legt-keine-statischen-routen-an/11192/4 "2024-07-26T09:22:16Z")

</div>

Hi Timo,  
das ist natürlich ärgerlich, weil es dann möglicherweise zwei verschiedene Probleme gibt…  
Es wundert mich aber auch ein bisschen denn wenn ich mir auf [gitub den code vom import-Skrip anschaue](https://github.com/linuxmuster/linuxmuster-base7/blob/master/sbin/linuxmuster-import-subnets) dann steht da in der Funktion, die die yaml-Datei schreibt an der entscheiden Stelle (ab Zeile 123)

```auto
        for item in subnets:
            # skip if subnet gateway is the default
            if servernet_router == gateway:
                continue
            subnet = item.split(':')[0]
            # tricky: concenate dict object for yaml using eval
            subroute = eval('{"to": \'' + subnet + '\', "via": \'' + servernet_router + '\'}')
            ifcfg['routes'].append(subroute)

```

Das heißt er würde eine Route nur schreiben, wenn die Variable „servernet\_router“ anders wäre als „gateway“. Wenn ich mir anschaue, was in der Zeile steht, die die route tatsächlich schreibt, dann müsste „servernet\_router“ die routeradresse enthalten, die du in der csv für das jeweilige subnet angegeben hast. in der entsprechenden schleife wird die variable servernet\_router aber niemals verändert sondern bleibt auf dem wert, den sie im hauptprogramm bekommt (zeile 304, servernet\_router = firewallip). da ist es auch kein wunder, das keine routen geschrieben werden, den (bei uns) ist gateway == firewall. wenn man die abfrage rausnimmt, schreibt er zwar die routen für die subnetze, setze als routeradresse aber logischerweise immer die firewall-up ein und nicht den eintrag aus der CSV.

das habe ich zumindest bei uns jetzt als grund identifiziert warum die yaml keine einträge für die subnetze bekommt.  
wie sieht denn in deinem skript /usr/sbin/linuxmuster-import-subnets die funktion „updateNetplan“ aus ?

Gruß  
Sascha

---

<div class="post-metadata">

**Author:** ![Tw33ki](https://ask.linuxmuster.net/user_avatar/ask.linuxmuster.net/tw33ki/32/5747_2.png) [@Tw33ki](https://ask.linuxmuster.net/u/Tw33ki)\
**Post date:** [26. Juli 2024 um 09:35 UTC](https://ask.linuxmuster.net/t/linxmuster-import-subnets-mit-opensense-24-7-und-lmn-7-2-legt-keine-statischen-routen-an/11192/5 "2024-07-26T09:35:11Z")

</div>

Mein Gateway ist != L3-Net-Router.  
Vermutlich werden daher bei mir die Routen gesetzt.

Hier der entsprechende Auszug (ist sicherlich gleich wie bei dir):

```auto
 88 # functions begin
 89 # update static routes in netplan configuration
 90 def updateNetplan(subnets):
 91 printScript('Processing netplan configuration:')
 92 cfgfile = constants.NETCFG
 93 # create backup of current configuration
 94 timestamp = str(datetime.datetime.now()).replace('-', '').replace(' ', '').replace(':', '').split('.')[0]
 95 bakfile = cfgfile + '-' + timestamp
 96 rc = subprocess.call('cp ' + cfgfile + ' ' + bakfile, shell=True)
 97 if rc != 0:
 98 printScript('* Failed to backup ' + cfgfile + '!')
 99 return False
100 # read netplan config file
101 with open(cfgfile) as config:
102 netcfg = yaml.safe_load(config)
103 iface = str(netcfg['network']['ethernets']).split('\'')[1]
104 ifcfg = netcfg['network']['ethernets'][iface]
105 # remove deprecated gateway4
106 try:
107 del ifcfg['gateway4']
108 printScript('* Removed deprecated gateway4 statement.')
109 except:
110 None
111 # first delete the old routes if there are any
112 try:
113 del ifcfg['routes']
114 printScript('* Removed old routes.')
115 except:
116 None
117 # set default route
118 ifcfg['routes'] = []
119 subroute = eval('{"to": \'default\', "via": \'' + gateway + '\'}')
120 ifcfg['routes'].append(subroute)
121 # add subnet routes if there are any beside server network
122 if len(subnets) > 0:
123 for item in subnets:
124 # skip if subnet gateway is the default
125 if servernet_router == gateway:
126 continue
127 subnet = item.split(':')[0]
128 # tricky: concenate dict object for yaml using eval
129 subroute = eval('{"to": \'' + subnet + '\', "via": \'' + servernet_router + '\'}')
130 ifcfg['routes'].append(subroute)
131 printScript('* Added new routes for all subnets.')
132 # save netcfg
133 with open(cfgfile, 'w') as config:
134 config.write(yaml.dump(netcfg, default_flow_style=False))
135 rc = subprocess.call('netplan apply', shell=True)
136 if rc == 0:
137 printScript('* Applied new netplan configuration.')
138 else:
139 printScript('* Failed to apply new netplan configuration. Rolling back to previous status.')
140 subprocess.call('cp ' + bakfile + ' ' + cfgfile, shell=True)
141 subprocess.call('netplan apply', shell=True)
142 return False

```

Kann mir das Skript auch mal genauer anschauen, aber vermutlich erst die Tage ☹

---

<div class="post-metadata">

**Author:** ![Sascha](https://ask.linuxmuster.net/letter_avatar_proxy/v4/letter/s/41988e/32.png) [@Sascha](https://ask.linuxmuster.net/u/Sascha)\
**Post date:** [26. Juli 2024 um 10:19 UTC](https://ask.linuxmuster.net/t/linxmuster-import-subnets-mit-opensense-24-7-und-lmn-7-2-legt-keine-statischen-routen-an/11192/6 "2024-07-26T10:19:45Z")

</div>

Ok, dann liegt es daran nicht. Ich habe eh langsame den Verdacht, dass die Router-Adressen, die man in der CSV für die Subnetze angibt total unerheblich sind (ich bin aber auch mehr Programmierer und weniger Administrator), den die landen laut Skript weder in der yaml noch auf dem Gateway und auch Du hast bei Deinem händischen Beispiel ja für alle Subnetz dasselbe Gateway angegeben und nicht die, die Du in Deinem CSV hast…

Kleine Sache am Rande, meinst Du wirklich OpenSense 24.07 oder die aktuellste Version 24.7 (ohne die Null) ?

Gruß  
Sascha

---

<div class="post-metadata">

**Author:** ![Tw33ki](https://ask.linuxmuster.net/user_avatar/ask.linuxmuster.net/tw33ki/32/5747_2.png) [@Tw33ki](https://ask.linuxmuster.net/u/Tw33ki)\
**Post date:** [26. Juli 2024 um 11:32 UTC](https://ask.linuxmuster.net/t/linxmuster-import-subnets-mit-opensense-24-7-und-lmn-7-2-legt-keine-statischen-routen-an/11192/7 "2024-07-26T11:32:48Z")

</div>

> [@Sascha](#):
>
> Router-Adressen, die man in der CSV für die Subnetze angibt total unerheblich sind

Nö, die sind wichtig - vorallem dann wenn du dein Netzwerk auf L3 segementieren möchtest.  
Auf dem Server brauchst du Sie, damit er mit den Clients kommunizieren kann, auf der Firewall für die Rückroute des Internetverkehrs.  
M.E.n. gehts nicht ohne.

Außerdem könnte man prinzipiell ja auch verschiedene Netzwerke hinter verschiedenen Routern verfügbar machen (glaub den Use-Case gibts in Schulnetzen eher selten, aber wer weiß).

> [@Sascha](#):
>
> Du hast bei Deinem händischen Beispiel ja für alle Subnetz dasselbe Gateway angegeben und nicht die, die Du in Deinem CSV hast…

Genau, weil das in diesem Netzwerk so sein muss.

> [@Sascha](#):
>
> Kleine Sache am Rande, meinst Du wirklich OpenSense 24.07 oder die aktuellste Version 24.7 (ohne die Null) ?

Von der Firewall werde ich mit 24.7 begrüßt:  
\*\*\* firewall.xxxx.lan: OPNsense 24.7 \*\*\*

Hab ich wohl geschlafen beim Thread erstellen, sorry.

---

<div class="post-metadata">

**Author:** ![Tw33ki](https://ask.linuxmuster.net/user_avatar/ask.linuxmuster.net/tw33ki/32/5747_2.png) [@Tw33ki](https://ask.linuxmuster.net/u/Tw33ki)\
**Post date:** [26. Juli 2024 um 11:34 UTC](https://ask.linuxmuster.net/t/linxmuster-import-subnets-mit-opensense-24-7-und-lmn-7-2-legt-keine-statischen-routen-an/11192/8 "2024-07-26T11:34:10Z")

</div>

> [@Tw33ki](#):
>
> Nö, die sind wichtig - vorallem dann wenn du dein Netzwerk auf L3 segementieren möchtest.  
> Auf dem Server brauchst du Sie, damit er mit den Clients kommunizieren kann, auf der Firewall für die Rückroute des Internetverkehrs.  
> M.E.n. gehts nicht ohne.

Jaso! Und die Clients in den Subnetzen brauchen natürlich acuh das jeweilige Standard-Gateway :F

---

<div class="post-metadata">

**Author:** ![Sascha](https://ask.linuxmuster.net/letter_avatar_proxy/v4/letter/s/41988e/32.png) [@Sascha](https://ask.linuxmuster.net/u/Sascha)\
**Post date:** [26. Juli 2024 um 12:10 UTC](https://ask.linuxmuster.net/t/linxmuster-import-subnets-mit-opensense-24-7-und-lmn-7-2-legt-keine-statischen-routen-an/11192/9 "2024-07-26T12:10:01Z")

</div>

Ok, ich hatte auch schlecht geschaut – die Router-Adressen werden vom Skript mit den Subnetzen nach /etc/dhcp/subnets.conf geschrieben. Ich glaub, ich muss das Subnetting erst zu Ende verstehen, bevor ich da hilfreich sein kann.  
Vielleicht schaltet sich ja noch jemand mit mehr Ahnung ein.

Gruß  
Sascha

---

<div class="post-metadata">

**Author:** ![Michael](https://ask.linuxmuster.net/user_avatar/ask.linuxmuster.net/michael/32/59_2.png) [@Michael](https://ask.linuxmuster.net/u/Michael)\
**Post date:** [26. Juli 2024 um 14:33 UTC](https://ask.linuxmuster.net/t/linxmuster-import-subnets-mit-opensense-24-7-und-lmn-7-2-legt-keine-statischen-routen-an/11192/11 "2024-07-26T14:33:43Z")

</div>

Hi.

Etwas ähnliches lief hier schon mal. Sucht mal nach „GW\_LAN“ …. vielleicht hilft das irgendwie weiter

hth,  
Michael

---

<div class="post-metadata">

**Author:** ![Sascha](https://ask.linuxmuster.net/letter_avatar_proxy/v4/letter/s/41988e/32.png) [@Sascha](https://ask.linuxmuster.net/u/Sascha)\
**Post date:** [27. Juli 2024 um 08:51 UTC](https://ask.linuxmuster.net/t/linxmuster-import-subnets-mit-opensense-24-7-und-lmn-7-2-legt-keine-statischen-routen-an/11192/12 "2024-07-27T08:51:51Z")

</div>

Moin,

> [@Tw33ki](#):
>
> Kann dieses Verhalten jemand bestätigen - oder liegts mal wieder an mir?

Um auf Deine Ursprungsfrage zurück zu kommen:  
ich habe das mal in meiner Spieleumgebung (Server/Opensense/Clients in VirtualBox) ausprobiert - sowohl mit OpenSense 24.1 also auch mit 24.7 werden die Routen eingetragen.  
Was hingegen bei mir _nicht_ passiert ist das Löschen der Routen - selbst wenn ich die Einträge in der CSV wieder entferne und das Skript erneut durchlaufen lasse - die Routen auf der Firewall bleiben stehen (in der /etc/dhcp/subnets.conf und der netplan Datei werden die einträge für die entfernten Subnetze hingegen ordnungsgemäß gelöscht).

Bei dem beobachteten Fehler in unserem Produktivsystem muss ich zurückrudern, das war selbst verschuldet - als Gateway für das Servernetz hatten wird die Firewall eingetragen statt das extra einzurichtende Layer3-Gateway (…253). Doku lesen hätte halt doch geholfen, Dein Hinweis hat mich auf die Spur gebracht, danke dafür!

Gruß  
Sascha

---

<div class="post-metadata">

**Author:** ![Tw33ki](https://ask.linuxmuster.net/user_avatar/ask.linuxmuster.net/tw33ki/32/5747_2.png) [@Tw33ki](https://ask.linuxmuster.net/u/Tw33ki)\
**Post date:** [29. Juli 2024 um 11:29 UTC](https://ask.linuxmuster.net/t/linxmuster-import-subnets-mit-opensense-24-7-und-lmn-7-2-legt-keine-statischen-routen-an/11192/13 "2024-07-29T11:29:15Z")

</div>

Hm, dann muss ich mal in diesem Setup genauer suchen, wo es herkommen kann. Danke für das gegen testen auf deinem Spielplatz!

Freut mich, dass es in deinem Kontext weitergeholfen hat :-).
