ubnt解决方案
查看: 3703|回复: 2

在Linux下建立PPPOE服务器的步骤

[复制链接]

5

回帖

38

积分

1 小时

在线时间

新兵上阵

注册时间
2011-10-8
金币
28 个
威望
0 个
荣誉
0 个

尚未签到

发表于 2011-11-7 15:08 |显示全部楼层

在Linux下建立PPPOE服务器的步骤
- j; ?6 P( m$ H; `建立环境:' E' J3 S3 b" ^2 ?( v1 T
操作系统:DEBIAN 2.2 升级到3.0" z( ?  `% t" ~5 P1 `( b- S% Z
内 核:2.4.18
# t$ V( l) K8 o3 p硬件环境:赛扬3 1.1G ,内存 128M ,硬盘 40G ,主板芯片组
694T
7 c6 s5 w$ M2 X; ~0 }显 卡:ATI RAGE IIC(4M)

7 P7 I- E0 t8 q, g# n5 i+ APPPOE服务器RP-PPPOE 3.4.14 U8 q) E1 o1 I1 M
RADIUS服务器:
FREERADIUS 0.8
; k, p' J! j; Z数 据 库:
MYSQL 3.23.56
  ?) E% q0 Q6 I/ n& k" W3 M
PPPOE服务器认证的建立分三种认证方式,第一种方式为用RP-PPPOE自带的基于文本认证方式,第二种方式为建立在RADIUS认证服务器上的文本认证方式,第三种方式是基于MYSQL的数据库认证方式* s4 d2 c, j# v7 s8 K% a8 G7 W
一、编译内核
- |3 x6 T# }) G0 G. |9 }: w/ L0 X要建立PPPOE服务器,除了内核要支持PPP以外还需要内核支持PPPOE,不过在2.4.18里需要打开内核的不成熟代码才可以选择,内核的配置如下:
/ k9 c* I, v" D# n3 Kcode maturity level options——>

  • prompt for development and/or incomplete code/drivers9 t: a: o4 i1 m- V8 z- n( M
    networking options——>
  • packet socket
  • packet socket:mmapped io
    2 r8 [  {+ k: ~5 P1 lnetwork device support——>
  • ppp (point-to-point protocol) support
  • ppp multilink support (experimental)
  • ppp filtering
  • ppp support for async serial ports
  • ppp support for sync tty ports
  • ppp deflate compression
  • ppp bsd-compress compression
  • ppp over Ethernet (experimental)
    . C* O# Q7 Z8 ccharacter devices——>
  • non-standard serial port support
  • hdlc line discipline support/ W) r/ i8 B- _. j8 P
    编辑/etc/modules.conf(redhat好象是conf.modules),如果没有就加入以下几行:& o/ G. J* N1 X& J
    • alias char-major-108 ppp_generic
    & q% o, v0 x6 v7 l1 p• alias /dev/ppp ppp_generic
    " p1 V( J: `! i' o• alias tty-ldisc-3 ppp_async; M9 t% Z* z; t" P/ i& P2 [
    • alias tty-ldisc-13 n_hdlc( S3 Q: i% G$ c# v4 ^( L/ x
    • alias tty-ldisc-14 ppp_synctty
    $ d* @* F# y* `* M. H# d$ [• alias ppp-compress-21 bsd_comp
    $ |$ f7 J( S$ p$ p" [% w• alias ppp-compress-24 ppp_deflate
    7 l# D+ G& I) Y5 ]7 G! D: g: ?8 c1 O• alias ppp-compress-26 ppp_deflate
    9 m" M2 g1 t  l! h- S
    完成以后就可以下一步,建立PPPOE拨号服务器了
    ( B9 P. w1 i8 a二、建立PPPOE服务器
    ' q- g$ Y* b3 y( K在建立拨号服务器之前,应确保你在内核中打开了IP转发功能:/ e2 N, x" W9 I- m, N1 N7 E: f. |
    echo “1”>/proc/sys/net/ipv4/ip_forward! W  U* V- i/ B0 A: b
    编译PPPOE服务器很容易,就是按以下几步就可以了:
    ; K! z# J# A5 T6 L•使用configure
    ; r1 p0 B% ]' Q& m% T•使用make编译PPPD,这里有几个参数比较重要,要支持windows的客户端,应该在编译时加上选项USE_MS_DNS=1,如果你的系统shadow的话,你应该使用make HAS—SHADOW=1表示支持shadow密码

    9 w! J+ e" y' D•编译完成后,将生成pppd、pppdump、chat和pppstats这几个文件,使用make install安装这些文件
    " G/ ~& Z, i3 k5 o& v" y/ U•修改pppd的访问权限,允许由root启动服务进程 8 B' r  c% q: c4 }! i7 y3 s
    chmod u+s /usr/sbin/pppd+ ~4 K3 u4 f: h2 u  B( [) S; A" |
    三、建立PPPOE服务器

    8 w- B# z! V' D1 a4 ^) qcd /rp-pppoe-3.4/src# T2 k% A) i' s7 j1 |. g
    ./configure
    $ L8 o. o& L- \, f+ t8 j. rmake$ d; [: j: h- s# @" K
    make install
    0 v% s/ ?' ?( Z- x
    启动PPPOE进程:# T# \) Q2 @* {" f) H
    pppoe-server –L 10.0.0.1 –R 10.0.0.2 –N 64 –k -u# O9 D' ^) n! k' Y. F! u, r
    -L:
    指定PPPOE服务器的IP地址
    9 A" A! I. G. Y$ F; U9 \4 z-R: 指定PPPOE拨入服务器分配给客户端的IP地址段
    # T# c* n: Y5 C: z# o5 z( ]-N: 允许客户端同时拨入的数量(默认是64 最大是65534)6 p2 ^2 Q8 H1 _9 D* o
    -k: 使用内核方式(不过好象无法使用)' h' @7 j3 I3 L& T3 Z; D
    修改/etc/ppp/options,查看有没有以下几行,没有就加进去:
      }, c9 s* O( K+ u; s. F8 V2 llocal
    - n% a0 G; m+ ?. g/ T) n# Trepaire-pap 4 o; ]' ~" R& Z8 i: }1 D2 h, b
    login- w& u, ?* {  j. M$ z4 Y
    auth
    - b( d' J9 t+ J: O; jdefaultroute
    $ d' \/ Z! N3 x1 \hide-password7 F' |2 H( b- n  t& y
    ipcp-accept-local 5 U: u( B2 o2 j* n
    ipcp-accept-remote - D& W, x% T. t; M' O4 G/ R/ e
    10.0.0.1:10.0.0.255 / L3 t: M8 v& D; l7 ]
    netmask 255.255.255.0
    ; \" H1 a" x' x2 B# [ms-dns 10.0.0.1
    , ~9 U4 u6 L7 l) _9 x修改/etc/ppp/pppoe-server-options,将所有的行都注释掉
    ! {! f4 b2 }3 a
    添加用户到/etc/ppp/pap-secrets中,例如添加用户luo,密码为123456,允许从任何位置拨入:
      e% G6 w1 A5 K#client server secret ip addresses  t; I5 m$ T7 Q
    luo * “123456” */ g! R' `3 Q, \+ s$ w: ?) U/ c
    设置windows的用户名:luo 密码: 123456,如果连接成功就可以进行下一步
    . m) _9 ]) N2 z0 h, `  T
    四、建立RADIUS认证服务器! A/ k$ Y$ K/ C: E8 I8 \
    cd /freeradius-0.81
    , k, I9 T3 m, g) u; j) b2 w! F./configure
    # ~! I& l" L& \  m/ [& Y. V, T' \make$ A( _/ A6 O$ ^) l
    make install
    7 y  X* r  z# @  B2 I+ P2 Y" `
    编辑/usr/local/etc/raddb/clients,输入你的NAS(网络认证服务器)的IP地址和serect,本例中NAS为本机,serect为linux,看上去如下:
    ( d: Z2 r* ?  B" j/ Q+ C" @localhost linux& K1 _: g3 Z2 l3 G
    编辑/usr/local/etc/raddb/clients.conf,加入以下几行:
    : y% p% E2 R5 j) Mclient 127.0.0.1{ ' X' W, m6 q6 F- C" h5 J
    secret = linux
    0 L2 ~# G# y5 G' H0 K6 G6 \shortname = localhost / L2 }2 W& n" Z! z$ Q  s
    }) T/ c2 d/ c. _$ F
    nastype = other 5 f* F: T0 L2 H
    编辑/usr/local/etc/raddb/naslist,加入:% @1 _6 u- ^4 P
    localhost local
    / u  B/ R( \; O& F1 {0 t  f
    编辑/usr/local/etc/raddb/users,加入用户:luo、密码:123456,显示如下:
    ' W, A( t* Z  o& aluo Auth-Type:=local, User-Password==“123456”- D7 i  ~2 J! `* e6 Q
    Service-Type:= Framed-User,
    4 N: {9 }+ z0 q& lFramed-Protocol = PPP
    & U) r$ x( A9 w6 l% T4 a& t6 |Framed-IP-Address := 10.0.0.2
    % P* Y3 k2 @+ e1 E4 ?' l0 m, VFramed-IP-Netmask := 255.255.255.0

    启动RADIUS服务、测试帐号' l# w/ F' J. f$ B) L- r
    启动调试模式
    & ^+ `' |6 \/ H# @  L, K; DRADIUS –X 6 A7 ?; E7 _& d- I; P# S( g6 W. B
    进行帐号测试
    5 A6 h& S7 k, k4 A+ JRadtest luo 123456 localhost 0 linux
    ; R& m$ O2 d: r, {
    如果能看到应答,说明RADIUS设置成功了6 U* f6 P5 v7 B& x) |1 H2 c# n
    要使PPPD进程能够使用RADIUS进行认证,需要加入RADIUS认证的插件
    ; G( `: i' c# E" l9 @cp radius.so /usr/lib
    : @/ I/ V2 i+ ~* J
    编辑/etc/ppp/options,加入以下到文件:
    ' b  B; R# m. Q; @8 p0 F& Aplugin /usr/lib/radius.so: e2 e5 T- y( D+ m8 r7 z* z( [  U
    radius-servers localhost:1812/1813 ; ], ^6 |; _/ D3 H" j, K/ M
    radius-auth-key linux ( i2 ~/ t3 k  \" X# {1 A
    radius-ip-pool 10.0.0.2:10.0.0.255 # |* ~, o5 l& i, Z5 o
    运行客户端进行登陆,如果能通过认证则成功了2 x" u) j4 z& U6 a) ?
    五、建立MYSQL服务器, G  O) a" P0 ^2 P1 E( i
    tar zxvf mysql-3.23.56.tar.gz+ ~6 h& A* c, l5 Y. T: ^$ i
    cd mysql-3.23.56$ w0 n9 V5 ]- ^( M; G1 U8 H1 r; O
    ./configure9 R6 R& j( C! L. |' o/ i
    make" c5 d' X0 i+ w9 a: x
    make install0 w" _- k; \7 s1 n' ?. ?
    cd script
    0 O  M% q# W' O2 y8 O1 ~, y" w& R3 L./mysql_install_db
    3 ?$ t$ }  t; w7 {/usr/local/bin/safe_mysqld&
    : Z& ?$ ]$ M5 K
    安装RADIUS数据库
    % [9 I' G# X7 B; v# l: z4 Scd freeradius-0.81/src/modules/rlm_sql/drivers/rlm_sql_mysql
    & D" I$ K5 M+ X% Z. \4 p% X7 d& wmysql –u root –p
    密码 radius<db_mysql.sql3 ~8 y6 S3 j9 M+ H
    编辑/usr/local/etc/raddb/radius.conf使其支持SQL,修改后如下:

    " Q# |% B1 J- R! L, v: bauthorize{
    : U4 E2 I0 b! s) }preprocess  s2 L# S% o9 i) ^
    chap; L+ t0 G  l2 I) g* Q
    mschap
    2 ~% w6 \0 }, X1 B2 }2 i0 E6 _suffix
    & j7 S- y  X) K' S; E7 Fsql6 g5 \/ q/ p# G0 o( ]. q# v( {) X; J
    }
    9 M; _, C" Y5 x" s2 a! `* c% O; Gaccounting{
    6 I( V" j! B6 R: D……1 h: Y7 L# P# m% P; j8 p
    sql
    6 O. Y! z( \. j6 S" ]! n3 E……3 p+ m! t! O7 O
    }4 m' j4 F. {1 n
    修改sql.conf,如下所示:
    ( u. L2 e: a8 ~0 S  Hserver="loclahost" login="root" password="mysql的root的密码"" }% f- T4 ~, q* N2 a
      C+ P" k7 j# q2 \. E+ e! g
    加入组帐号

    1 |8 n. n0 N5 j3 f, N  k6 fmysql –u root –p 密码 radius
    + a6 P3 t1 X+ X% r% n) o: sinsert into radgroupreply (groupname,attribute,op,value) values (‘user’,’Auth-Tyep’,’:=’,’local’);: q8 W+ F* z5 t+ e# f* {
    insert into radgroupreply (groupname,attribute,op,value) values (‘user’,’Service-Type’,’:=’,’Framed-User’);
    * q) f) x7 e7 \& o" E% R  Ninsert into radgroupreply (groupname,attribute,op,value) values# |+ ?# L! _1 x* Q
    (‘user’,’Framed-IP-Netmask’,’:=’,’255.255.255.0’);
    8 C+ J- w3 H0 r1 E4 ]#设定拨入用户的掩码,本例只有PPPOE服务,所以可以与options中设定相同
    8 U3 r  B8 I& {" L3 a9 @; E
    加入用户帐号:
    / ~; o, |  T% e% V1 M9 d: Q7 vinsert into radcheck (username,attribute,op,value) values- \% K: H/ B! D) [
    (‘luo’,’User-Password’,’:=’,’123456’);, g6 g! n0 b8 U$ W
    将用户帐号加入组帐号  B) f& l' `& ?: ?8 B" l; k
    insert into usergroup(username,groupname) values(‘luo’,’user’);
    , M; u4 v( x# F, W: E6 J
    如果提示无法找到rlm_sql_mysql文件,则:; H0 J9 q% }# q3 i. d8 J! e
    cp /usr/local/lib /usr/lib$ H2 {+ l) j( _5 ~- p/ Z# q
    测试:
    2 `; w; G2 ?+ l* T
    radtest luo 123456 localhost 0 linux
    ; D: n* k5 T" d" Z* \5 V! P
    见到应答就OK了!

  • 21

    回帖

    56

    积分

    7 小时

    在线时间

    上等兵

    注册时间
    2011-11-7
    金币
    34 个
    威望
    0 个
    荣誉
    0 个

    尚未签到

    发表于 2011-11-7 16:12 |显示全部楼层
    回复 1# 七锦十年
    1 Q/ b* j- x0 @/ B/ ^' y. W+ @0 H( i: s0 [% [- G
    0 M* N- |# S- _" \: G/ G9 s; ^
        不错~  好东西  楼主辛苦了
    回复

    使用道具 举报

    5

    回帖

    38

    积分

    1 小时

    在线时间

    新兵上阵

    注册时间
    2011-10-8
    金币
    28 个
    威望
    0 个
    荣誉
    0 个

    尚未签到

    发表于 2012-1-13 14:52 |显示全部楼层
    蓝海卓越官网:www.natshell.com
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册 微信登录

    本版积分规则

    关闭

    站长推荐 上一条 /1 下一条

    Archiver | 手机版 | 无线门户 ( 粤ICP备11076993号|粤公网安备44010602008359号 ) |网站地图

    GMT+8, 2025-6-9 21:41

    返回顶部 返回列表