怎样在Linux下建立PPPOE服务器

怎样在Linux下建立PPPOE服务器,第1张

步骤/方法

编译内核

要建立PPPOE服务器,除了内核要支持PPP以外还需要内核支持PPPOE,不过在2.4.18里需要打开内核的不成熟代码才可以选择,内核的配置如下:编辑/etc/modules.conf(redhat好象是conf.modules),如果没有就加入以下几行:完成以后就可以下一步,建立PPP拨号服务器了

在建立拨号服务器之前,应确保你在内核中打开了IP转发功能:

echo“1”>/proc/sys/net/ipv4/ip_forward

编译PPP服务器很容易,就是按以下几步就可以了:

•使用configure

•使用make编译PPPD,这里有几个参数比较重要,要支持windows的客户端,应该在编译时加上选项USE_MS_DNS=1,如果你的系统shadow的话,你应该使用makeHAS—SHADOW=1表示支持shadow密码

•编译完成后,将生成pppd、pppdump、chat和pppstats这几个文件,使用makeinstall安装这些文件

•修改pppd的访问权限,允许由root启动服务进程

chmodu+s/usr/sbin/pppd

建立PPPOE服务器

cd/rp-pppoe-3.4/src

./configure

make

makeinstall

启动PPPOE进程:

pppoe-server–L10.0.0.1–R10.0.0.2–N64–k-u

-L:指定PPPOE服务器的IP地址

-R:指定PPPOE拨入服务器分配给客户端的IP地址段

-N:允许客户端同时拨入的数量(默认是64最大是65534)

-k:使用内核方式(不过好象无法使用)

修改/etc/ppp/options,查看有没有以下几行,没有就加进去:修改/etc/ppp/pppoe-server-options,将所有的行都注释掉

添加用户到/etc/ppp/pap-secrets中,例如添加用户luo,密码为123456,允许从任何位置拨入:

#clientserversecretipaddresses

luo*“123456”*

设置windows的用户名:luo密码:123456,如果连接成功就可以进行下一步

建立RADIUS认证服务器

cd/freeradius-0.81

./configure

make

makeinstall

编辑/usr/local/etc/raddb/clients,输入你的NAS(网络认证服务器)的IP地址和serect,本例中NAS为本机,serect为linux,看上去如下:

localhostlinux

编辑/usr/local/etc/raddb/clients.conf,加入以下几行:编辑/usr/local/etc/raddb/naslist,加入:

localhostlocal

编辑/usr/local/etc/raddb/users,加入用户:luo、密码:123456,显示如下:

luoAuth-Type:=local,User-Password==“123456”

Service-Type:=Framed-User,

Framed-Protocol=PPP

Framed-IP-Address:=10.0.0.2

Framed-IP-Netmask:=255.255.255.0

启动RADIUS服务、测试帐号

启动调试模式

RADIUS–X

进行帐号测试

Radtestluo123456localhost0linux

如果能看到应答,说明RADIUS设置成功了

要使PPPD进程能够使用RADIUS进行认证,需要加入RADIUS认证的插件

cpradius.so/usr/lib

编辑/etc/ppp/options,加入以下到文件:

plugin/usr/lib/radius.so

radius-serverslocalhost:1812/1813

radius-auth-keylinux

radius-ip-pool10.0.0.2:10.0.0.255

运行客户端进行登陆,如果能通过认证则成功了

建立MYSQL服务器

tarzxvfmysql-3.23.56.tar.gz

cdmysql-3.23.56

./configure

make

makeinstall

cdscript

./mysql_install_db

/usr/local/bin/safe_mysqld&

安装RADIUS数据库

cdfreeradius-0.81/src/modules/rlm_sql/drivers/rlm_sql_mysql

mysql–uroot–p密码radius<db_mysql.sql

编辑/usr/local/etc/raddb/radius.conf使其支持SQL,修改后如下:修改sql.conf,如下所示:

server="loclahost"login="root"password="mysql的root的密码"

加入组帐号

mysql–uroot–p密码radius

insertintoradgroupreply(groupname,attribute,op,value)values(‘user’,’Auth-Tyep’,’:=’,’local’)

insertintoradgroupreply(groupname,attribute,op,value)values(‘user’,’Service-Type’,’:=’,’Framed-User’)

insertintoradgroupreply(groupname,attribute,op,value)values

(‘user’,’Framed-IP-Netmask’,’:=’,’255.255.255.0’)

#设定拨入用户的掩码,本例只有PPPOE服务,所以可以与options中设定相同

加入用户帐号:

insertintoradcheck(username,attribute,op,value)values

(‘luo’,’User-Password’,’:=’,’123456’)

将用户帐号加入组帐号

insertintousergroup(username,groupname)values(‘luo’,’user’)

如果提示无法找到rlm_sql_mysql文件,则:

cp/usr/local/lib/usr/lib

测试:

radtestluo123456localhost0linux

见到应答就OK了!

我按下面这个配置成功了,你可以试下:

一、安装的前提条件

1.确保安装了网卡并工作正常

使用命令

#ifconfig eth0

查看网卡状态,然后关闭ifdown eth0,注意一定要关闭ifdown eth0

2.在系统中不要设置默认路由(网关),让ADSL拨号后自动获得

如果已经设置了默认路由,使用以下方法删除:

在文件 /etc/sysconfig/network 中删除 GATEWAY= 这一行,然后以root执行:

#/etc/rc.d/init.d/network restart

3.已经安装了pppd软件包

如果存在文件 /usr/sbin/pppd,则说明已经安装了pppd

如果未安装,从RedHatLinux 6.2安装光盘上安装ppp-2.3.11-

4.i386.rpm这个软件包

二、安装PPPOE客户端软件

Linux下的PPPOE客户端软件比较多,而且大多使用GNU License,我们推荐使用rp-pppoe 这个软件包。从http://www.roaringpenguin.com/pppoe/这个网站上,不仅可以下载

RedHat 62平台下的rp-pppoe的二进制软件包,而且可以下载源代码软件包。

1.二进制软件包的安装:

A.下载二进制软件包

http://www.roaringpenguin.com/pppoe/rp-pppoe-3.2-1.i386.rpm

B.进行安装

以root执行:

#rpm -Uvh rp-pppoe-3.2-1.i386.rpm

2.从源代码进行安装:

从源代码进行安装同样适用于其它平台的Linux,但必须在Linux系统中安装gcc编译器。

A.下载源代码软件包

http://www.roaringpenguin.com/pppoe/rp-pppoe-3.2.tar.gz

B.解压缩

#tar xvfz rp-pppoe-3.2.tar.gz

#cd rp-pppoe-3.2

C.进行编译和安装

运行脚本

#./go

将自动进行编译和安装,最后,调用/usr/sbin/adsl-setup进行配置,具体解释见三。

三、配置PPPOE客户端软件

安装完软件包后,必须配置pppoe的配置文件/etc/ppp/pppoe.conf,从而让ADSL拨号时使用配置文件中的用户名、密码等参数。我们不必手工改动这个文件,可以使用adsl-setup这个工具进行配置:

#/usr/sbin/adsl-setup

当出现

>>>Enter your PPPoE user name :

输入ADSL帐号的用户名

当出现

>>>Enter the Ethernet interface connected to the ADSL modem

For Solaris, this is likely to be something like /dev/hme0.

For Linux, it will be ethn, where 'n' is a number.

(default eth0):

输入 eth0 ,这是ADSL相连的网卡的名字

当出现

>>>Enter the demand value (default no):

输入 no

当出现

>>>Enter the DNS information here:

输入 server ,这表示使用ADSL拨号自动获得的DNS服务器IP地址

当出现

>>>Please enter your PPPoE password:

输入ADSL帐号的密码

当出现

>>>Choose a type of firewall (0-2):

输入 0 ,不使用防火墙

当出现

>>>Accept these settings and adjust configuration files (y/n)?

如果输入的信息正确,输入 y ,完成配置,否则,输入 n 重新输入。

四、启动PPPOE客户端软件

使用命令

/usr/sbin/adsl-start 启动PPPOE客户端软件,进行连接,如果成功,将出现

Connected

如果不成功,请检查网线、ADSL MODEM等物理设备,并查看 /var/log/messages中的信息

/usr/sbin/adsl-stop 关闭和ISP的连接

/usr/sbin/adsl-status 查看当前连接的状态

如果想在Linux系统启动时自动启动ADSL连接,输入以下命令

#chkconfig --add adsl

将在当前的运行级下加入ADSL的自启动脚本

五、测试

当连接成功后,使用命令

#ifconfig -a

在输出中应该含有关于 ppp0 的一堆信息,其中还绑定了 IP 地址,说明已经从拨号中获得了IP地址。

使用命令

#netstat -nr

查看路由表信息,这时的默认路由应该是上面获得的IP地址。

如果没有默认路由,我们可以手动增加:

#route add default gw 上面获得的IP地址

使用命令

#nslookup www.sina.com.cn

如果解析出新浪的IP,说明已经从拨号中正确获得了DNS服务器

最后,使用命令ping某个域名或IP,如果有响应,表示你已经大功告成了。

六、其它说明

1、RedHat Linux 7.1已经集成了rp-pppoe这个软件包,只不过版本有些低,如果你不在意版本高低,可以直接进行三后面的步骤。

2、以后要拔号上网时,只要:

ifdown eth0

ifup ppp0

/usr/sbin/adsl-start

192.168.1.10 那种方式是局域网的ip地址。只适用于局域网内

你使用路由的话,应该是路由与外网相连,你的局域网内的红帽主机是没有公网IP的

但是如果你的路由拥有公网IP地址的话,还是能够连接的

一个方式是如果你的路由比较高级,有ssh服务器的话,那么你先ssh登录路由,然后在上面再使用ssh登录你的服务器。

另外还有一种方式是端口映射,把路由上的端口映射到局域网的服务器主机上的服务端口上。我没操作过,如果你需要的话就自己查方法吧。

如果没有公网ip的话,上面两种方式都是不可行的。

另外还有种方式,是通过中介来操作。比如即时聊天工具。 你在局域网内部的服务器上运行一个即时聊天的消息处理程序,获取来自管理员聊天帐号的消息,然后作为指令执行,再把输出结果通过即时聊天软件发送出去。这种方式不需要公网ip,但是借助了即时聊天的工具,而且发送的是明文,有安全风险,如果你的服务器只是用来玩的,倒还可以试试,不然就不推荐使用了。

要实现这种方式,只需要有一个能处理即时聊天服务的程序,据我所知,借助 IRC作为中介的即时聊天平台很简单,编程实现不复杂,另外使用Gtalk,飞信等等的开放协议的即时聊天工具也可以。 中介操作的方式还有邮件方式等,但是都不安全。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/502634.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-16
下一篇2023-06-16

发表评论

登录后才能评论

评论列表(0条)

    保存