Archiv für den Monat: Januar 2013

Access-Listen und DHCPOFFER

Vorgestern hatte ich ein interessantes Thema, bei dem ein Access-Point mit einer input-address-list und output-address-list auf dem Dot11Radio-Interface bei dem ein Windows Server mit DHCP-Rolle keine IP Adressen an Clients im WLAN verteilt hat.

Der Grund war, dass auf dem Dot11Radio-Interface die identische Access-Liste gebunden, welche keine Broadcasts durchließ. Warum? Der Grund liegt hinter der Idee von den entsprechenden ACL’s. Diese stellen nicht die Richtung dar sondern ob source (input) oder destination (output) Address.

Die Lösung letztendlich war denkbar übersichtlich, zwei verschiedene Access-Listen zu erstellen.

interface Dot11Radio0
! […]
bridge-group 1 input-address-list 700
bridge-group 1 output-address-list 701
! […]
access-list 700 permit 6067.20aa.1234 0000.0000.0000
access-list 700 deny 0000.0000.0000 ffff.ffff.ffff
access-list 701 permit 6067.20aa.1234 0000.0000.0000
access-list 701 permit 0000.0000.0000 0000.0000.0000
access-list 701 permit ffff.ffff.ffff 0000.0000.0000
access-list 701 deny 0000.0000.0000 ffff.ffff.ffff

Übrigens in einer Laborumgebung habe ich das nochmal mit einem Cisco Router als DHCP-Server getestet. Hier hat es auch ohne Broadcastadresse in der zweiten ACL Funktioniert.

Der Grund liegt in der Verteilung des DHCPOFFERS vom DHCP-Server. Windows Server nutzen hier abhängig vom Broadcast Bit im DHCPDISCOBVER Broadcast zur Verteilung, siehe KB169289 (http://support.microsoft.com/kb/169289/en-us).

Da obiges Beispiel im Layer 2 spielt ist die Broadcast- oder Unicast-Implementierung abhängig vom Hersteller.

Weiterführende Infos: http://www.ietf.org/rfc/rfc2131.txt

IPSec VPN mit dynamischen IPs

Es ist nicht das Gelbe vom Ei aber auch mit zwei ADSL Anschlüssen und dynamischen IPs kann man ein nutzbares und verfügbares IPSec VPN aufbauen.

Ich habe es mit einer Mischung aus DynDNS, crypto dynamic-map und event manager applet’s gelöst.

Bei zwei Standorten sieht das wie folgt aus. Beide Router nutzen DynDNS. Der Router am ersten Standort bekommt eine ganz normale crypto map und einen Eintrag im event manager. Über einen Cronjob möchte ich die Tunnel nach einer eventuellen Trennung wieder vom Standort 1 aus zum Leben erwecken. Die folgende Konfig zeigt nur die relevanten Ausschnitte:

! Router 1
ip ddns update method dyndns
HTTP
add http://username:kennwort@<s>/nic/update?system=dyndns&hostname=&myip=<a>
interval maximum 0 1 0 0
!
! […]
crypto isakmp policy 10
encr 3des
authentication pre-share
group 2
crypto isakmp key !geheimgeheimgeheim! address 0.0.0.0 0.0.0.0 no-xauth
crypto isakmp identity hostname
crypto isakmp keepalive 20
!
!
crypto ipsec transform-set TRANSSECUR esp-3des esp-sha-hmac
!
crypto map Foo 20 ipsec-isakmp
set peer standort2.dyndns.org dynamic
set security-association lifetime seconds 28800
set transform-set TRANSSECUR
set pfs group2
match address 130
! […]
interface Dialer1
! […]
ip ddns update hostname standort1.dyndns.org
ip ddns update dyndns host members.dyndns.org
crypto map Foo
![…]
!
access-list 130 permit ip 192.168.0.0 0.0.0.255 192.168.1.0 0.0.0.255
! […]
event manager applet pingpeers
event timer cron name „pingpeers-schedule“ cron-entry „*/1 * * * *“
action 01.0 cli command „ping 192.168.1.1 source vlan 1“
![…]

Der zweite Standort bekommt die Dynamic Map.

! Router 2
ip ddns update method dyndns
HTTP
add http://username:kennwort@<s>/nic/update?system=dyndns&hostname=&myip=<a>
interval maximum 0 1 0 0
!
! […]
crypto isakmp policy 10
encr 3des
authentication pre-share
group 2
crypto isakmp key !geheimgeheimgeheim! address 0.0.0.0 0.0.0.0 no-xauth
crypto isakmp identity hostname
crypto isakmp keepalive 20
!
!
crypto ipsec transform-set TRANSSECUR esp-3des esp-sha-hmac
!
crypto dynamic-map Foo-dynamic 10
set security-association lifetime seconds 28800
set transform-set TRANSSECUR
set pfs group2
match address 130
!
crypto map Foo 30 ipsec-isakmp dynamic Foo-dynamic
! […]
interface Dialer1
! […]
ip ddns update hostname standort2.dyndns.org
ip ddns update dyndns host members.dyndns.org
crypto map Foo
!
![…]
access-list 130 permit ip 192.168.1.0 0.0.0.255 192.168.0.0 0.0.0.255
![…]