Tuesday, September 4, 2012

PPPoE with Zyxel Q1000Z and Cisco 2600 router with CenturyLink DSL

Comcast's service broke and their customer support was rude one too many times, so I switched to CenturyLink. Being that I am not a "normal" customer by any stretch of the imagination, I wanted to set up something a bit more advanced than a simple NATted connection. Specifically, I wanted to get an IPv6 tunnel to Hurricane Electric while also keeping my corporate VPN connection up and running. (Ideally, get my VPN running on the same box as the tunnel and other services.) I have an old Cisco 2621 kicking around that seems it should be up to the task.

Getting this going was surprisingly difficult. Initially, I had the 2600 plugged in behind Q1000Z with the 2600 running in NAT mode providing access to the networks in my house. I was double NATted because the Q1000Z didn't seem to want to set up static routes in any sane way. Obviously, not an ideal setup.

There are numerous configurations around the net on how to do PPPoE from a Cisco device to a possible non-Cisco remote end. (I say "possible" because CenturyLink doesn't advertise what their back-end network looks like. Not surprising since most people wouldn't understand it anyway.) Most of these configurations look very similar to each other.

The configuration that finally worked for me is this (some important information replaced with Xs, you will have to fill in your own values. Also, the configuration has been edited to remove irrelevant settings.) :

!
version 12.3
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption
!
hostname frontdoor-with-v6
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
ip subnet-zero
!
!
ip name-server X.X.X.X
ip name-server X.X.X.X
ip name-server X.X.X.X
!
ip cef
vpdn enable
!
vpdn-group 1
request-dialin
protocol pppoe
!
interface FastEthernet0/0
ip address 192.168.0.1 255.255.255.0
ip nat inside
no ip mroute-cache
duplex auto
speed auto
!
interface FastEthernet0/1
no ip address
speed 100
half-duplex
pppoe enable
pppoe-client dial-pool-number 1
!
interface Dialer1
ip address negotiated
ip mtu 1492
ip nat outside
encapsulation ppp
ip tcp adjust-mss 1450
no ip mroute-cache
dialer pool 1
dialer-group 1
ppp authentication pap chap callin optional
ppp chap hostname XXXXXXX@qwest.net
ppp chap password 0 XXXXXXXXX
ppp pap sent-username XXXXXXXXXX password 0 XXXXXXXXXXXX
!
ip nat inside source list 1 interface Dialer1 overload
ip classless
ip route 0.0.0.0 0.0.0.0 Dialer1
ip route 10.1.0.0 255.255.0.0 192.168.0.2
!
access-list 1 permit 10.1.0.0 0.0.255.255
dialer-list 1 protocol ip permit
!
end

Most of this is taken almost verbatim from the numerous example sites. However, when I originally set this up, FastEthernet0/1 was set to auto for both speed and duplex. When the 2600 was set up in NAT mode behind the Q1000Z, the auto mode worked fine. But, once I got the PPPoE session up, I got lots of random drop-outs in my connectivity. Some things worked fine, others would load slowly, and still others just plain wouldn't work. After digging around forever, I found a site that suggested setting the speed and duplex to 100-half instead of auto. There were no obvious signs on a duplex mismatch on the Cisco side of the link, and the Zyxel didn't have any obvious way to look for errors. So, I decided to give it a shot and see what happened.

Strangely enough, it worked. My connectivity was nice and speedy again, and all sites are coming up correctly.

Hopefully this helps someone else that might be struggling to get a similar setup going. Next, for the v6 tunnel and the VPN.