Schlagwort-Archive: MAC

Cisco: ATM-Interface mit mehreren PPPOE Sessions zum DSL Provider

Wer in der glücklichen Lage ist mehr als einen DSL-Zugang zu haben wird auf den Cisco Seiten schnell fündig wie er einen Cisco Router einrichten muss damit er ins Netz kommt. Das wollte ich auch gleich mal ausprobieren und parallel zu meinem T-DSL Zugang einen weiteren Provider benutzen, über den ich eine feste IP-Adresse bekomme. Seit dem IOS Release 12.4(15) gibt es dazu die Möglichkeit mehr als eine dialer-group am ATM-Interface zu definieren. Also schnell mal eingestellt und probiert.

<p>!<br />
interface ATM0/0/0<br />
no ip address<br />
no ip redirects<br />
no ip unreachables<br />
no ip proxy-arp<br />
no atm ilmi-keepalive<br />
pvc 1/32<br />
pppoe-client dial-pool-number 2<br />
pppoe-client dial-pool-number 1<br />
!<br />

<br />
!<br />
interface Dialer1<br />
description # DSL Telekom<br />
ip address negotiated<br />
no ip redirects<br />
no ip unreachables<br />
no ip proxy-arp<br />
ip mtu 1492<br />
ip nat outside<br />
ip virtual-reassembly<br />
encapsulation ppp<br />
dialer pool 1<br />
no cdp enable<br />
ppp authentication pap chap callin<br />
ppp chap hostname 00XXXXX0001@t-online.de<br />
ppp chap password 7 XXXXX<br />
ppp pap sent-username 00XXXXX0001@t-online.de password 7 XXXXX<br />
ppp ipcp dns request accept<br />
ppp ipcp route default<br />
ppp ipcp address accept<br />
!<br />

<br />
!<br />
interface Dialer2<br />
description # DSL VIADSL<br />
ip address negotiated<br />
no ip redirects<br />
no ip unreachables<br />
no ip proxy-arp<br />
ip mtu 1492<br />
ip nat outside<br />
ip virtual-reassembly<br />
encapsulation ppp<br />
dialer pool 2<br />
no cdp enable<br />
ppp authentication pap chap callin<br />
ppp chap hostname XXXXX@viadsl.de<br />
ppp chap password 7 XXXXX<br />
ppp pap sent-username XXXXX@viadsl.de password 7 XXXXX<br />
ppp ipcp dns request accept<br />
ppp ipcp route default<br />
ppp ipcp address accept<br />
!<br />

Nach ein paar Versuchen stellte sich sehr schnell Frustration ein, da der Router immer nur zu einem der beiden Provider eine Verbindung aufgebaut hat. Ein Blick in „show pppoe sesions“ bestätigte das:

<br />
2 client sessions</p>
<p>Uniq ID  PPPoE  RemMAC          Port                  Source   VA         State<br />
SID  LocMAC                                         VA-st<br />
N/A    580  0090.1a41.650c  ATM0/0/0              Di2      Vi2        UP</p>
<p>001b.d51b.eb56  VC:  1/32                      UP<br />
N/A    0     0000.0000.0000  ATM0/0/0              Di1      N/A        PADISN</p>
<p>0000.0000.0000  VC:  1/32</p>
<p>

Nach längerer Suche wird dann auch klar warum das Verhalten so ist. Das ATM-Interface baut jede PPPOE-Session mit der selben MAC-Adresse auf. Da beide Verbindungen aber auf dem selben DSLAM enden kann das nicht klappen. Es muss also eine Lösung her wie man für jede PPPOE-Session eine eigene MAC-Adresse einstellen kann. Das mag nur leider Cisco überhaupt nicht und es ist auch so nicht vorgesehen. Man kann zwar an einem ATM-Interface eine andere MAC-Adresse vergeben, man kann das aber nicht in einer PVC pro Dialer-group machen.

Die einzige Lösung ist sich ein EEM-Script zu basteln das die MAC-Adresse bei Bedarf am ATM-Interface setzt, damit jede PPPOE-Session ihre eigene MAC-Adresse benutzen kann. Falls hier jemand vom Hersteller mit liest, darf das gerne als Feature Wunsch aufgenommen werden (ATM-Interface with random mac-address per pppoe session).

<br />
!<br />
event manager applet MAC-DIAL1<br />
event syslog pattern "Line protocol on Interface Virtual-Access3, changed state to up"<br />
action 1.0 cli command "enable"<br />
action 1.1 cli command "conf t"<br />
action 1.2 cli command "interface atm0/0/0"<br />
action 1.3 cli command "mac-address 101b.d51b.eb56"<br />
action 1.4 cli command "end"<br />
action 1.5 cli command "exit"<br />
!<br />
event manager applet MAC-DIAL2<br />
event syslog pattern "Line protocol on Interface Virtual-Access2, changed state to up"<br />
action 1.0 cli command "enable"<br />
action 1.1 cli command "conf t"<br />
action 1.2 cli command "interface atm0/0/0"<br />
action 1.3 cli command "mac-address 201b.d51b.eb56"<br />
action 1.4 cli command "end"<br />
action 1.5 cli command "exit"<br />
event manager applet MAC-DIAL3<br />
!<br />
event syslog pattern "Interface Virtual-Access2, changed state to down"<br />
action 1.0 cli command "enable"<br />
action 1.1 cli command "conf t"<br />
action 1.2 cli command "interface atm0/0/0"<br />
action 1.3 cli command "mac-address 301b.d51b.eb56"<br />
action 1.4 cli command "end"<br />
action 1.5 cli command "exit"<br />
!<br />
event manager applet MAC-DIAL4<br />
event syslog pattern "Interface Virtual-Access3, changed state to down"<br />
action 1.0 cli command "enable"<br />
action 1.1 cli command "conf t"<br />
action 1.2 cli command "interface atm0/0/0"<br />
action 1.3 cli command "mac-address 401b.d51b.eb56"<br />
action 1.4 cli command "end"<br />
action 1.5 cli command "exit"<br />
!<br />

Damit wird nach einem Verbindungsaufbau oder Abbau einer PPPOE-Session sofort die MAC-Adresse geändert und die nächste Verbindung kann aufgebaut werden.

<br />
Router#show pppoe session<br />
2 client sessions</p>
<p>Uniq ID  PPPoE  RemMAC          Port                  Source   VA         State<br />
SID  LocMAC                                         VA-st<br />
N/A   1466  0090.1a41.650c  ATM0/0/0              Di2      Vi2        UP</p>
<p>301b.d51b.eb56  VC:  1/32                      UP<br />
N/A   1476  0090.1a41.650c  ATM0/0/0              Di1      Vi3        UP</p>
<p>201b.d51b.eb56  VC:  1/32                      UP<br />

Hier kann man die beiden aufgebauten PPPOE-Sessions sehen, da sie jetzt unterschiedliche MAC-Adressen haben. Für das DSLAM ist das unerheblich, solange die MAC-Adresse nicht von jemand anderem verwendet wird.

Ein kleiner Nachteil ergibt sich daraus noch: Der ATM-Adapter im Router muss jetzt im Promiscuous Modus arbeiten was zu einer etwas höheren Prozessor Last führt, da jedes einzelne Datenpaket vom Adapter gelesen werden muss um zu überprüfen ob das Datenpaket verarbeitet werden soll oder nicht.

<br />
Router#show ip interface brief<br />
Interface                  IP-Address      OK? Method Status                Prot<br />
ocol<br />
FastEthernet0/0            192.168.10.1   YES NVRAM  up                    up</p>
<p>FastEthernet0/1            unassigned      YES NVRAM  administratively down down</p>
<p>ATM0/0/0                   unassigned      YES NVRAM  up                    up</p>
<p>NVI0                       192.168.10.1    YES unset  up                    up</p>
<p>Virtual-Access1            unassigned      YES unset  up                    up</p>
<p>Virtual-Access2            unassigned      YES unset  up                    up</p>
<p>Virtual-Access3            unassigned      YES unset  up                    up</p>
<p>Dialer1                    84.135.89.184   YES IPCP   up                    up</p>
<p>Dialer2                    194.231.187.196 YES IPCP   up                    up<br />

Hier haben beide Dialer ihre IP-Adresse zugewiesen bekommen und die Routen werden aufgebaut.

<br />
Router#show ip route<br />
[ ... ]<br />
Gateway of last resort is 217.0.116.114 to network 0.0.0.0</p>
<p>84.0.0.0/32 is subnetted, 1 subnets<br />
C       84.135.89.184 is directly connected, Dialer1<br />
C    192.168.10.0/24 is directly connected, FastEthernet0/0<br />
217.0.116.0/32 is subnetted, 1 subnets<br />
C       217.0.116.114 is directly connected, Dialer1<br />
194.231.190.0/32 is subnetted, 1 subnets<br />
C       194.231.190.1 is directly connected, Dialer2<br />
194.231.187.0/32 is subnetted, 1 subnets<br />
C       194.231.187.196 is directly connected, Dialer2<br />
S*   0.0.0.0/0 [1/0] via 217.0.116.114<br />
[1/0] via 194.231.190.1<br />
is directly connected, Dialer2<br />
is directly connected, Dialer1<br />

Was jetzt noch fehlt ist Network Adress Translation (NAT), aber das ist ein anderes Thema was bei mehr als einer Verbindung nicht so ganz trivial ist.