Router:Linux

From AAISP Support Site
Revision as of 13:37, 22 Ocak 2013 by RogerBW (talk | contribs) (Incorporated text from AA-Asterisk wiki)

The Basics

You can use a Linux box in place of a PPPoE-capable router. Why would you want to do this?

  • You're already running a Linux box, and you don't see any point in powering a router as well
  • You want fine control over packets
  • You have a PPPoE router but it doesn't do everything you want

Debian/squeeze

This is what RogerBW is using. It'll probably be much the same on other Linuxen. The basic recipe came from [1].

You will have two ethernet interfaces - one for your internal network (let's assume that's eth1), one for connection to the BT modem (eth0). You will be running PPPoE over the external interface, creating a new interface that actually passes packets.

Setup

  • Install ppp, pppoe and iproute.
  • Edit /etc/ppp/peers/aaisp to include:
user mylogin@a.1      <----- your AAISP login
plugin rp-pppoe.so
eth0             <----- The ethernet interface to run PPPoE on
noipdefault
defaultroute
#usepeerdns      <----- uncomment this if you want resolv.conf to be set up automatically
hide-password
lcp-echo-interval 1      <---- this is how often the LCP echo packets get sent to AAISP, in seconds.
lcp-echo-failure 10      <---- this is how many LCP echo failures before the ppp daemon quits
connect /bin/true
noauth
persist
maxfail 0      <---- redial forever until your modem regains sync else default is 10x or N times if you enter N
#holdoff 120      <---- this will cause pppd to dial once every 2 mins else default is 0 sec
mtu 1492
noaccomp
default-asyncmap
+ipv6
ipv6cp-use-ipaddr
  • Edit /etc/ppp/chap-secrets to include this line, consisting of three tab-separated words. The first entry is your AAISP router login, the second is an asterisk, and the third is your AAISP router password. For example:
mylogin@a.1   *    pa$$w0rd
  • Create /etc/ppp/ipv6-up.d/0000defaultroute. In it place the following shell script:
#!/bin/bash
/sbin/ip -6 route add default dev $1
  • chmod it 755.

Testing

Run as root: pppoe -A

This should show something like this:

Access-Concentrator: BT_ADSL
Got a cookie: 6e c5 4a dd 1e c0 d6 b6 fe b4 4b 23 38 8f 63 58
AC-Ethernet-Address: 00:90:1a:40:f2:9f
--------------------------------------------------

To start your PPPoE session just type

pon aaisp

and to stop it running

poff aaisp

You can check connectivity with a cron job, and add a stanza to /etc/network/interfaces to connect at boot.

PPP

  • There's a bug in 2.6.36, 2.6.36.1, 2.6.36.2 that can cause a kernel panic when the link goes down (55c95e73, fixed in 2a27a03d)

PPPoE

  • Linux is capable of supporting RFC 4638 for an MTU of 1500 (or greater) over PPPoE
    • This is supported on BT FTTC
    • Kernel 2.6.34 is required to fix bugs with certain network cards and non-linear SKBs (ea8420e9, 19937d04)
    • pppd 2.4.6 is required for RFC 4638 support (this is in git but not yet released)

PPP Not coming back after a blip:

This was reported in IRC on Feb 6th 2011. If you get people saying their line didn't come back or their linux box crashed (as in kernel oopsed) after a blip, turns out there's a bug in the kernel pppoe code for 2.6.36 which has been hitting me. some kind of double free in the disconnect code causes a kernel panic. there's a patch here: http://kerneltrap.org/mailarchive/linux-kernel/2010/12/3/4654538 which seems to work for me

Also see:

Ebtables