/etc/univention/templates/files/etc/network/interfaces

german
feedback

#1

Hallo allerseits,

ich hab gerade ein etwas interessantes Problem und muß
deshalb Routen schmeißen. Dabei fiel mir auf, daß die
Zeilen, die in der /etc/network/interfaces generiert
werden, nicht sortiert sind und leere Trennzeilen fehlen.

Soviel Python kann ich grad noch…

root@mirror:~ # ucr search gateway interface gateway: 172.16.0.1 interfaces/eth0/address: 172.18.0.20 interfaces/eth0/broadcast: 172.19.255.255 interfaces/eth0/netmask: 255.252.0.0 interfaces/eth0/network: 172.16.0.0 interfaces/eth0/options/10route10: post-up route add -net 10.0.0.0/8 gw 172.16.0.1 interfaces/eth0/options/10route20: post-up route add -net 192.168.0.0/16 gw 172.16.0.1 interfaces/eth0/options/10route30: post-up route add -net xxx.xx.xxx.0/26 gw 172.16.0.1 interfaces/eth1/address: 192.168.2.100 interfaces/eth1/broadcast: 192.168.2.255 interfaces/eth1/netmask: 255.255.255.0 interfaces/eth1/network: 192.168.2.0 interfaces/eth1/options/10defaultroute_hi: post-up route add -net 128.0.0.0/1 gw 192.168.2.1 interfaces/eth1/options/10defaultroute_lo: post-up route add -net 0.0.0.0/1 gw 192.168.2.1


#2

Ok, ich darf keine Datei ohne Erweiterung oder mit Erweiterung
.txt hochladen (was soll denn der Unsinn), also inline… auch
wenn dabei die Tabs kaputtgehen.

# Warning: This file is auto-generated and might be overwritten by
#          univention-config-registry.
#          Please edit the following file instead:
# Warnung: Diese Datei wurde automatisch generiert und kann durch
#          univention-config-registry überschrieben werden.
#          Bitte bearbeiten Sie an Stelle dessen die folgende Datei:
#
#       /etc/univention/templates/files/etc/network/interfaces
#


auto lo
iface lo inet loopback
@!@
def check_gateway (ip, netmask, gateway):
        if not gateway:
                return 0
        samenet=1
        for k in range(0,4):
                if not (int(ip[k])&int(netmask[k])) == (int(gateway[k])&int(netmask[k])):
                        samenet=0
        if samenet == 0:
                return 0
        if samenet == 1:
                return 1


gateway=False
configRegistry_items = configRegistry.items()
configRegistry_items.sort()
for i in range(0,4):
        if configRegistry.has_key('interfaces/eth%s/type' % i) and configRegistry['interfaces/eth%s/type' % i] == 'dhcp':
                if configRegistry.has_key('server/role') and ( configRegistry['server/role'] == 'mobileclient' or configRegistry['server/role'] == 'fatclient' ) and not (configRegistry.has_key('interfaces/eth%s/ifplugd' % i) and configRegistry['interfaces/eth%s/ifplugd' % i] == 'no'):
                        print
                else:
                        print
                        print 'auto eth%s' % i
                print 'iface eth%s inet dhcp' % i
        elif  configRegistry['interfaces/eth%s/address' % i]:
                if configRegistry.has_key('server/role') and ( configRegistry['server/role'] == 'mobileclient' or configRegistry['server/role'] == 'fatclient' ) and not (configRegistry.has_key('interfaces/eth%s/ifplugd' % i) and configRegistry['interfaces/eth%s/ifplugd' % i] == 'no'):
                        print
                else:
                        print
                        print 'auto eth%s' % i
                print 'iface eth%s inet static' % i
                print 'address '+configRegistry['interfaces/eth%s/address' % i]
                if configRegistry['interfaces/eth%s/network' % i]:
                        print 'network '+configRegistry['interfaces/eth%s/network' % i]
                if configRegistry['interfaces/eth%s/netmask' % i]:
                        print 'netmask '+configRegistry['interfaces/eth%s/netmask' % i]
                if configRegistry['interfaces/eth%s/broadcast' % i]:
                        print 'broadcast '+configRegistry['interfaces/eth%s/broadcast' % i]
                if configRegistry['interfaces/eth%s/address' % i] and configRegistry['interfaces/eth%s/netmask' % i] and configRegistry['gateway'] and not gateway:
                        if check_gateway(configRegistry['interfaces/eth%s/address' % i].split('.'), configRegistry['interfaces/eth%s/netmask' % i].split('.'), configRegistry['gateway'].split('.')):
                                print 'gateway '+configRegistry['gateway']
                                gateway=True

        for j in range(0,4):
                if configRegistry.has_key('interfaces/eth%s_%s/type' % (i,j)) and configRegistry['interfaces/eth%s_%s/type' % (i,j) ] == 'dhcp':
                        if configRegistry.has_key('server/role') and ( configRegistry['server/role'] == 'mobileclient' or configRegistry['server/role'] == 'fatclient' ) and not (configRegistry.has_key('interfaces/eth%s_%s/ifplugd' % (i,j)) and configRegistry['interfaces/eth%s_%s/ifplugd' % (i,j)] == 'no'):
                                print
                        else:
                                print
                                print 'auto eth%s:%s' % (i,j)
                        print 'iface eth%s:%s inet dchp' % (i,j)
                elif configRegistry['interfaces/eth%s_%s/address' % (i,j) ]:
                        if configRegistry.has_key('server/role') and ( configRegistry['server/role'] == 'mobileclient' or configRegistry['server/role'] == 'fatclient' ) and not (configRegistry.has_key('interfaces/eth%s_%s/ifplugd' % (i,j)) and configRegistry['interfaces/eth%s_%s/ifplugd' % (i,j)] == 'no'):
                                print
                        else:
                                print
                                print 'auto eth%s:%s' % (i,j)
                        print 'iface eth%s:%s inet static' % (i,j)
                        print 'address '+configRegistry['interfaces/eth%s_%s/address' % (i,j) ]
                        if configRegistry['interfaces/eth%s_%s/network' % (i,j) ]:
                                print 'network '+configRegistry['interfaces/eth%s_%s/network' % (i,j) ]
                        if configRegistry['interfaces/eth%s_%s/netmask' % (i,j) ]:
                                print 'netmask '+configRegistry['interfaces/eth%s_%s/netmask' % (i,j) ]
                        if configRegistry['interfaces/eth%s_%s/broadcast' % (i,j) ]:
                                print 'broadcast '+configRegistry['interfaces/eth%s_%s/broadcast' % (i,j) ]
                        if configRegistry['interfaces/eth%s_%s/address' % (i,j)] and configRegistry['interfaces/eth%s_%s/netmask' % (i,j)] and configRegistry['gateway'] and not gateway:
                                if check_gateway(configRegistry['interfaces/eth%s_%s/address' % (i,j)].split('.'), configRegistry['interfaces/eth%s_%s/netmask' % (i,j)].split('.'), configRegistry['gateway'].split('.')):
                                        print 'gateway '+configRegistry['gateway']
                                        gateway=True

        for key,value in configRegistry_items:
                if key.startswith('interfaces/eth%s/route/' % i):
                        if value.startswith('host ') or value.startswith('net '):
                                print 'up route add -%s dev eth%d' % (value, i)

        for key,value in configRegistry_items:
                if key.startswith('interfaces/eth%s/options/' % i):
                        print value
@!@

#3

Hallo,

vielen Dank für die Anregung. Ich habe dazu einen Feature-Request in unserem Bug-Tracking System erzeugt sodass sich die Entwicklung in einer der kommenden UCS Versionen der Formatierung der interfaces-Datei annehmen wird.

Diesbezüglich haben die Konfiguration des Forums erweitert, sodass nun auch das Hochladen von Plaintext Dateien möglich sein sollte.

Mit freundlichen Grüßen
Janis Meybohm


#4

Vielen Dank!


#5

Hallo Herr Meybohm,
der DHCP verteilt bei mir Adressen im Intranet 172.16.0.xx (eth0), gibt aber kein gateway auf 172.16.0.1 an den Client weiter.
Das Internet wird über 192.168.2.1 und dem DSL-Router 192.168.2.11 geführt, so dass auf dem Server INet erreicht wird…
Ich kann dem DHCP aber kein Gateway für den Client mitgeben!?.. gibt es dafür eine Lösung ?
Mit freundlichem Gruß


#6

Hallo,

um das Gateway per DHCP zu verteilen muss eine entsprechende Richtlinie eingerichtet werden. Beschrieben ist das z.B. hier:[ul][li]Forum: DHCP Windows 7 und Vista Netzwerkidentifizierung[/li]
[li]UCS Handbuch: Vorgabe des Gateways[/li][/ul]
Mit freundlichen Grüßen
Janis Meybohm


#7

Hallo Herr Meybohm,
vielen Dank für die Info! Nun gibt es auch ein Gateway für den Client…
Mit freundlichem Gruß


#8

Hallo Herr Meybohm,
ich habe jetzt wie erwähnt ein Gateway, ein nslookup auf einen www.server.xx funktioniert
C:\Users\Admin>nslookup www.heise.de
Server: xenucssrv.urgent.local
Address: 172.16.0.1

Nicht autorisierende Antwort:
Name: www.heise.de
Addresses: 2a02:2e0:3fe:100::7
193.99.144.85
Ping wird ausgeführt für www.heise.de [193.99.144.85] mit 32 Bytes Daten:
Zeitüberschreitung der Anforderung.

, aber ein weiterrouten nicht.
Ich habe somit noch keinen Zugriff auf das Internet, der ping bleibt auf der Anzeige der z.B www.xxxxxxxxx.de hängen.
Was mach ich noch falsch ?
Mit freundlichem Gruß


#9

Hallo,

die Meldungen deuten meiner Ansicht nach weiterhin darauf hin dass das Gateway nicht korrekt gesetzt ist oder nicht korrekt arbeitet (Pakete nicht weiterleitet o.ä.).
Mit “route print” können Sie sich die aktuelle Routing-Tabelle eines Windows-Systems ausgeben lassen. Evtl. hilft auch die Ausgabe von Traceroute (“tracert www.heise.de”).

Mit freundlichen Grüßen
Janis Meybohm


#10

Hallo Herr Meybohm,
die Variable /proc/sys/net/ipv4/ip_forward ist im UCS =0, hier müsste 1 stehen ? Wenn ich die ip_forward 1 setze, überschreibt das UCS die Variable nach einem boot?! Wo wird sie im UCS dauerhaft geschrieben ?
Vielen Dank für Ihre Mühe
Mit freundlichem Gruß
Uwe Zeysing


#11

Hallo,

[quote=“cronos_hh”]die Variable /proc/sys/net/ipv4/ip_forward ist im UCS =0, hier müsste 1 stehen ?[/quote]wenn das UCS-System als Gateway verwendet wird, ja.
Bzgl. der Konfiguration finden Sie im Thread UCS c’t Edition mit 2 Netzwerkkarten einige Hinweise.

Mit freundlichen Grüßen
Janis Meybohm


#12

Hallo Herr Meybohm,
Vielen Dank !
Nun klappt es auch mit dem Internet dem “mehl” … und ich hoffe auf weitere Erfolge mit dem UCS-Server!
Ohne Ihre Info zu den 2 Netzwerkkarten, wäre es nicht gegangen, dass war natürlich auch mein Problem!
Aber warum erledigt die UCS-Management Console das nicht per Menue? Das ist doch ein elementarer Punkt zur Funktionsfähigkeit…
Ohne den c’t Artikel aus 26/12 wären auch die Einstellungen für den ZARAFA nicht möglich geworden…
Mit freundlichem Gruß
Uwe Zeysing


#13

Hallo,

[quote=“cronos_hh”]Aber warum erledigt die UCS-Management Console das nicht per Menue? Das ist doch ein elementarer Punkt zur Funktionsfähigkeit…[/quote]In den meisten Szenarien wird UCS nicht als Gateway verwendet, aus diesem Grund ist die entsprechende Einrichtung derzeit nicht per GUI möglich.

Mit freundlichen Grüßen
Janis Meybohm