IOS 12.4(15)T9
Endlich ist diese neue Version erschienen. Wie schon berichtet, ist die 12.4(15)T8 zum Maintenance Deployment Release “befördert” worden. In diesem neuen Release sind dann auch eine Reihe von Bugs beseitigt, die in den Security Advisories vom 25. März angesprochen wurden.
Cisco IOS autostate
Auf Routern mit einem eingebauten Switch ist ein VLAN erst dann aktiv, wenn ein Gerät an dem zugehörigen Switchport angeschlossen ist.
In Umgebungen, in denen nachts alle Geräte ausgeschaltet werden (und die den Link nicht aktiv halten), geht das VLAN-Interface in den Down-State und das zugehörige Netz wird per Routing-Protokoll nicht mehr angekündigt.
Das hat natürlich alles seinen Grund. Man möchte beispielsweise keinen Traffic für ein Netz “anziehen”, das aktuell nicht vorhanden ist. In manchen Umgebungen macht das aber Probleme. Unter anderem, wenn man für das ISDN-Backup mit einer einfachen “Floating-Static-Route”-Konfiguration arbeitet. Oder man möchte das LAN-Interface administrativ nutzen; natürlich wäre dafür ein Loopback-Interface viel besser geeignet.
Eine Möglichkeit, dieses Problem zu umgehen, ist das Ausschalten des “autostate”:
int Vlan 1
no autostate
Hiermit bleibt das VLAN-Interface immer “Up”, das Netz im Routing und die VLAN-IP-Adresse erreichbar.
Cisco Catalyst 2950: Änderungen im AutoQos

AutoQos ist eine Methode, welche die QoS-Implementierung auf Switches und Routern sehr stark vereinfachen kann. Mit einem einzigen Befehl pro Interface bzw. Port wird die komplette Klassifizierung, Markierung und das Queuing eingerichtet. Um so mehr habe ich mich gewundert, als ich nach längerer Zeit mal wieder mit einem Catalyst 2950 zu tun hatte. Früher hat AutoQos auch ein Priority-Queueing konfiguriert, um Voice-Traffic aboluten Vorrang zu geben. Die konfigurierten Parameter waren die Folgenden:
|
In aktuellen Releases hat sich diese Einstellung allerdings geändert:
|
Auf dem Catalyst 2950 wird standardmäßig per AutoQos keine Expedite Queue mehr konfiguriert. Diese Änderung kam mit 12.1(22)EA2; erstaunlich was man manchmal verpasst …
Remote RIP-Routing
IGPs werden normalerweise dazu verwendet, um direkt angeschlossenen Nachbarn Routing-Informationen zu senden. Aber was ist, wenn man einem entfernten Router ein Update senden möchte:
![]() |
Kann R3 ein RIP-Update an R1 senden wenn R2 kein RIP spricht? Tunnel etc. sind natürlich nicht erlaubt. Ja, es geht. Z.B., indem R3 diesen Traffic direkt per Unicast versendet.
Die Konfiguration von R1 startet mit einer IP auf dem Interface und dem Aktivieren von RIP:
interface FastEthernet0/0
ip address 10.10.1.1 255.255.255.0
!
router rip
version 2
passive-interface default
network 10.0.0.0
no auto-summary
Auf R2 werden nur die Interfaces konfiguriert, kein RIP:
interface FastEthernet0/0
ip address 10.10.1.2 255.255.255.0
!
interface FastEthernet0/1
ip address 10.10.2.2 255.255.255.0
Router R3 spricht RIP, benutzt R1 als Neighbor und sendet daher diesem seine Updates als Unicast. Alle Interfaces werden passiv gesetzt (auch auf R1), per Multicast sollen keine Nachbarn mehr erreicht werden. Weiterhin benötigt R3 eine Route, um R1 zu erreichen:
interface Loopback0
ip address 1.1.1.1 255.255.255.255
!
interface FastEthernet0/1
ip address 10.10.2.3 255.255.255.0
!
router rip
version 2
passive-interface default
network 1.0.0.0
network 10.0.0.0
neighbor 10.10.1.1
no auto-summary
!
ip route 0.0.0.0 0.0.0.0 10.10.2.2
Mit dieser Konfig fängt R3 an, seine Updates zu senden:
*Mar 1 00:12:26.291: RIP: sending v2 update to 10.10.1.1 via FastEthernet0/1 (10.10.2.3)
*Mar 1 00:12:26.291: RIP: build update entries
*Mar 1 00:12:26.291: 1.1.1.1/32 via 0.0.0.0, metric 1, tag 0
Diese Updates kommen auch bei R1 an, werden dort aber aufgrund der ungültigen Source-Adresse verworfen:
*Mar 1 00:44:50.767: RIP: ignored v2 update from bad source 10.10.2.3 on FastEthernet0/0
Wenn in der RIP-Konfiguration die Validierung der Source-Adresse abgeschaltet wird, kann die Route von R3 problemlos gelernt werden:
router rip
version 2
passive-interface default
no validate-update-source
network 10.0.0.0
no auto-summary
Router#sh ip route rip
1.0.0.0/32 is subnetted, 1 subnets
R 1.1.1.1 [120/1] via 10.10.2.3, 00:00:21
Wird das für irgendetwas benötigt? Vermutlich nicht, aber interessant ist dieses Verhalten trotzdem …
Generieren von Crypto-Keys
Ein Artikel in Cisco IOS Hints and Tricks beschreibt einen Fehler, den vermutlich viele Leute schon begangen haben (ja, ich natürlich auch): Bei Problemen mit der SSH-Verbindung wurde zu schnell ein “crypto key generate rsa” eingegeben, um neue RSA-Keys zu erzeugen. Leider hat man vergessen, daran zu denken, daß die zertifikatbasierten VPNs von den Schlüsseln abhängen.
Glücklicherweise kennt das IOS seit Version 12.2(8)T die Möglichkeit, jedem Key-Paar ein Label mitzugeben und diese damit für verschiedene Einsatzzwecke zu unterscheiden.
Dabei wird der Befehl crypto key generate rsa mit dem Parameter label versehen:
crypto key generate rsa modulus 2048 label MYLABEL
Dieses Key-Paar kann dann in einem PKI-Trustpoint benutzt werden:
crypto pki trustpoint MYCA
enrollment ...
rsakeypair MYLABEL
Wenn später ein unvorsichtiges “crypto key generate” eingegeben wird, kann das den für die VPN-Zertifikate verwendeten Keys nichts anhaben.
Ein weiterer Vorteil ist, daß beim nächsten Wechsel der Zertifikate auch die Keys neu generiert werden können, ohne daß sich der SSH-Fingerprint ändert.
Update: Mit ISRs hat das bisher immer gut funktioniert. Heute ging die Methode mit 1700er Routern und einem 12.4(15)T8 allerdings schief. Also aufpassen!
Small-Site Multihoming
Ivan Pepelnjak hat in seinen sehr lesenswerten Artikeln Small Site Multi-homing, Redundant Small Site Multi-homing und Servers in Small Site Multi-homing sehr schön beschrieben, wie man sich als kleiner Kunde mit mehreren Providern verbinden kann. Eine sehr wichtige Topologie fehlt allerdings: Wie implementiert man Server, wenn man mit zwei Routern an unterschiedlichen ISPs angeschlossen ist:
![]() |
Dort ist das Problem des asymmetrischen Traffics etwas aufwendiger zu lösen.
Wie in dem Dokument Servers in Small Site Multi-homing beschrieben, hat der Server zwei zusätzliche IP-Adressen, für die auf den zwei Routern jeweils ein statischer NAT-Eintrag vorhanden ist.
Wenn man für den Server annimmt, daß dieser für das Mail-Handling zuständig ist, dann muss man annehmen, daß über beide ISPs Mails eingeliefert werden, egal ob der MX mit der höheren Priorität erreichbar ist oder nicht.
Die Grundkonfig der Router könnte folgendermaßen aussehen (anstelle des Intrerface-Trakings könnte man besser auch “ip sla” verwenden):
hostname R1
!
interface FastEthernet0/0
ip address 10.10.10.1 255.255.255.0
ip nat inside
standby 0 ip 10.10.10.3
standby 0 priority 105
standby 0 preempt
standby 0 track FastEthernet0/1
!
interface FastEthernet0/1
ip address 192.168.1.1 255.255.255.0
ip nat outside
!
ip nat pool ISP-A-POOL 192.168.1.11 192.168.1.11 prefix-length 24
ip nat inside source list INSIDE-HOSTS pool ISP-A-POOL overload
ip nat inside source static 10.10.10.101 192.168.1.101 extendable
!
ip access-list standard INSIDE-HOSTS
permit 10.10.10.0 0.0.0.255
hostname R2
!
interface FastEthernet0/0
ip address 10.10.10.2 255.255.255.0
ip nat inside
standby 0 ip 10.10.10.3
standby 0 preempt
!
interface FastEthernet0/1
ip address 192.168.2.1 255.255.255.0
ip nat outside
!
ip nat pool ISP-B-POOL 192.168.2.12 192.168.2.12 prefix-length 24
ip nat inside source list INSIDE-HOSTS pool ISP-B-POOL overload
ip nat inside source static 10.10.10.102 192.168.2.102 extendable
!
ip access-list standard INSIDE-HOSTS
permit 10.10.10.0 0.0.0.255
Der Traffic fließt hier folgendermaßen:
![]() |
- Vom Server ausgehender Traffic (schwarz) fließt zum aktiven HSRP-Router und bekommt eine Adresse aus dem ISP-A-POOL.
- Von außen initiierter Traffic auf die 192.168.1.101 (grün) fließt über den aktiven Router zurück und NAT läuft wie erwartet.
- Von aussen initiierter Traffic auf die 192.168.2.102 (rot) fließt ebenfalls über den aktiven Router zurück. NAT behandelt diesen Traffic wie vom Server ausgehenden Traffic und das Antwort-Paket bekommt ebenfalls eine Absender-Adresse aus dem ISP-A-POOL, mit der der Client nichts anfangen kann.
Auf dem Switch PBR zu konfigurieren ist aufgrund der PBR-Implementierung vermutlich keine Option (3750: nur auf routed Interface oder SVI, IP Services Image, kein PBR bei gemeinsamen IPv4 und IPv6).
Auf dem Server die Konfiguration vorzunehmen ist evtl. auch nicht möglich oder gewollt.
Auf dem Router R1 ist es allerdings relativ einfach umzusetzen:
ip access-list extended TRAFFIC-FROM-102
permit ip host 10.10.10.102 any
!
route-map POLICY-INSIDE-IN permit 10
match ip address TRAFFIC-FROM-102
set ip next-hop 10.10.10.2
!
interface FastEthernet0/0
ip policy route-map POLICY-INSIDE-IN
Jetzt ergibt sich der Traffic-Fluß wie es gewünscht ist:
![]() |
Jetzt kommt natürlich noch die IOS-Firewall und eingehende ACLs auf beiden Interfaces hinzu.
Dafür muss die Konfiguration noch etwas erweitert werden. Zum einen müssen sowohl eingehende, als auch ausgehende Antwortpakete per Inspection erlaubt werden, da die ACLs ein abschließendes deny any haben sollten. Zum anderen muss der Traffic, der per PBR umgeroutet wird, auch in der ACL erlaubt werden, da die ACL vor dem Policy-Based Routing abgearbeitet wird (hier könnte man natürlich zwischen einer aus- und eingehenden FW-Policy unterscheiden):
ip inspect name FW tcp router-traffic
ip inspect name FW udp router-traffic
ip inspect name FW icmp router-traffic
!
interface FastEthernet0/0
ip access-group INSIDE-IN in
ip inspect FW out
!
interface FastEthernet0/1
ip access-group OUTSIDE-IN in
ip inspect FW out
!
ip access-list extended INSIDE-IN
permit ip host 10.10.10.102 any
!permit whatever you want
ip access-list extended OUTSIDE-IN
permit tcp any host 192.168.1.101 eq smtp
Abschließend natürlich noch der Hinweis, daß dieser Server sinnvollerweise als Mail-Relay in der DMZ implementiert sein sollte. Der “richtige” Mail-Server steht dann intern und bekommt seine Mails von dem Relay.
IPv6 SeND im Cisco IOS 12.4(24)T
Und noch eine neue IOS-Version auf dem langen Weg zum 12.5: Die IOS-Version 12.4(24)T bringt nicht so viele Neuerungen, wie etliche der Vorgänger-Versionen. Das Interessanteste in dieser Version ist IMHO die Implementierung von Secure Neighbor Discovery für IPv6 (RFC 3971). Auf der letzten (oder war es die vorletzte?) Networkers wurde darüber schon in der “IPv6 Security”-Session gesprochen, ließ damals aber noch viele Fragen offen. Jetzt ist es also soweit, daß man sich damit mal praktisch beschäftigen kann (sofern meine verwendeten Betriebssysteme mitspielen):
Good Bye AppleTalk
Cisco hat bekannt gegeben, daß die IOS-Version 12.4(24)T die letzte sein wird, die AppleTalk unterstützt. Danach wird der Support für AppleTalk aus dem IOS entfernt:
Die Adressvergabe des IOS DHCP-Server
Wenn man im IOS einen DHCP-Server konfiguriert, kann man Adressen von der Vergabe ausschließen. Manche Adressen muss man aber nicht ausschließen, da der Router sie selbständig erkennt.
Dazu das folgende Beispiel:
![]() |
R1 ist der DHCP-Server mit einigen Optionen und zwei Loopback-Interfaces, die im Zielnetz liegen:
ip dhcp pool test
network 10.0.35.0 255.255.255.0
dns-server 10.0.35.2
default-router 10.0.35.3
netbios-name-server 10.0.35.4
option 72 ip 10.0.35.5
option 150 ip 10.0.35.6
!
interface Loopback35
ip address 10.0.35.1 255.255.255.255
!
interface Loopback36
ip address 10.0.35.7 255.255.255.255
R5 ist der DHCP-Client:
interface FastEthernet2/0
ip address dhcp
In diesem Scenario gibt der DHCP-Server dem Client IP-Adressen in der folgenden Reihenfolge: 10.0.35.2, .4, .5, .6, .8.
Der DHCP-Server vergibt also keine Adressen, die er eigenen Router-Interfaces zuordnen kann. Für weitere Adressen, auch wenn man sie als Option im DHCP-Pool verwendet, muß man Ausnahmen definieren. Die Adresse des Default-Routers wurde durch einen Ping-Test herausgefunden und deshalb auch nicht verwendet. Ähnlich verhält sich der DHCP-Server mit HSRP. Sowohl die virtuelle IP (wenn sie nicht auf dem DHCP-Server aktiv ist), als auch die Adressen der HSRP-Nachbarn werden nicht automatisch ausgeschlossen.
In diesem Beispiel habe ich 12.4(15)T8 AdvEnterprise-Images verwendet.







