LINUX下配PPPOE服务器

本文介绍如何在Linux环境下搭建PPPoE服务器,包括网络配置、PPPoE服务设置及NAT转发配置等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    从图1看出,使用LINUX作PPPOE服务器与使用routeros作PPPOE服务器在网络拓扑上是没有区别的,我们本次是使用Eth1网卡连接外网(为其设置IP地址、子网掩码、网关:10.70.10.15/255.255.0.0 10.70.0.1),Eth0网卡连接内网(为了安全起见,不设置IP地址等信息)。   LINUX自身的网络设置   虽然也可以在图形界面中是为网卡设置IP地址,但是真正实现网卡IP地址等信息的准确可靠,还是要在相应的文件中作设置,我们本次要设置两块网卡,编辑好的文件内容如下:   [root@localhost network-scripts]# pwd   /etc/sysconfig/network-scripts   [root@localhost network-scripts]# more ifcfg-eth0   TYPE="Ethernet"   BOOTPROTO="static"   IPADDR="0.0.0.0"   DEVICE="lan"   HWADDR="00:0C:29:33:69:86"   ONBOOT="yes"   NETMASK="0.0.0.0"   [root@localhost network-scripts]# more ifcfg-eth1   TYPE="Ethernet"   BOOTPROTO="static"   IPADDR="10.70.10.11"   DEVICE="wan"   HWADDR="00:0C:29:33:69:90"   ONBOOT="yes"   NETMASK="255.255.0.0"   GATEWAY="10.70.0.1"   我们重点看一下ifcfg-eth1的配置文件,其中ONBOOT="yes"是必须的,可以保证系统启动网卡自动连接到网络上,网关的信息是我们手工添加进出去,保证有网关可以正常的访问外部网络,ifcfg-eth0文件中只要保证ONBOOT="yes"就可以了,当然象在routeros中一样,我们将外网口的名字定义为wan,将内网口的名字定义为lan。   PPPOE服务的设置   (一)检查本机有没有安装PPPOE服务   [root@localhost network-scripts]# rpm -q rp-pppoe   rp-pppoe-3.5-35   以上信息说明安装了   (二)配置必要的参数   为了使LINUX中的配置过程比较好理解,我们以routeros下的配置过程作为参考。   1、了解pppoe-server-options 这个文件有点类似于ROUTERS下的profile文件,在这个文件中定义了使用哪种验证方式:require-chap, 为用户分配的DNS服务器地址是多少:   ms-dns 202.99.160.68   ms-dns 219.150.32.132   完整的pppoe-server-options文件如下所示 [root@localhost ppp]# more pppoe-server-options   # PPP options for the PPPoE server   # LIC: GPL   require-chap   login   lcp-echo-interval 10   lcp-echo-failure 2 ms-dns 202.99.160.68 ms-dns 219.150.32.132   2、添加用户名和密码   在相同的目录下有一个chap-secrets文件,在这里面可以添加用户名和密码   [root@localhost ppp]# more chap-secrets   # Secrets for authentication using CHAP   # client server secret IP addresses    chen * chen *   3、允许本地验证   也就是修改options文件,将而来默认的lock改为local即可。   [root@localhost ppp]# more options   #lock   local   4、开启PPPOE服务   [root@localhost ppp]# more pppstart   pppoe-server -I eth1 -L 192.168.0.1 -R 192.168.0.5 -N 10   像以前一样,我将这条命令做成了一个脚本,这样操作测试其中的参数比较方便,我简单介绍一下这条命令中的各个参数的意思。   I:指定响应PPPOE请求的端口,本例中是在lan口上。   L:PPPOE服务器的IP地址,这是客户端所填的PPPOE服务器的地址。   R:这是分配给客户端的地址池起始地址,本例中从192.168.0.5开始   N:地址池的IP地址递增几个,本例中添增10,也就是从192.168.0.5开始,到192.168.0.14结束。   做完以上的设置,我们再梳理一下routeros下建立PPPOE服务的步骤   1、添加一个地址池   2、添加一个profile文件   3、添加拨号用户   4、启动pppoe服务   对照一下,可以看出我们在LINUX中将以上步骤都完成了,也就是说PPPOE服务准备好了,客户端PPPOE拨号,顺利的话就可以拨号成功了。   当然现在客户端还不能上网,因为PPPOE服务器还没有启用NAT,我们用IPTABLES软件来实现,写一个这样的脚本即可:      echo "1" >> /proc/sys/net/ipv4/ip_forward   iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to 192.168.30.130   第一行的作用是启用IP转发,第二行是启动IPTABLES进行NAT转换,下面是对各个参数的解释   -t nat表示进行NAT转化   -s 192.168.0.0/24表示源地址为192.168.0.0/24这个网段   -j SNAT --to 192.168.30.130表示将源地址都转化成192.168.30.130这个外网地址   同样的,我们可以对照routeros系统里NAT的设置来理解这条命令。启动NAT以后,这台PPPOE服务器就功能完整了,客户端不仅可以拨通服务器,拨通后还可以上网。 以上就是利用LINUX服务器来架设PPPOE服务器的过程,功能一点不差,而且还是免费的,大家有兴趣可以试一下 利用linux网关中的iptables 对网络内的用户做简单的限速。可以通过以下的脚本实现。 . #!/bin/bash for ((i = 1; i < 253; i++)) # 这里给一个变量,是对于网内一个IP地址段做限速 do /sbin/iptables -A FORWARD -s 192.168.2.$i -m limit –limit 60/s -j ACCEPT /sbin/iptables -A FORWARD -s 192.168.2.$i -j DROP done 当流量小于60/s的时候,iptables 接受并转发。当流量大于60/s 的时候,iptables丢弃数据包。 for((i=2;i<255;i++));do iptables -A FORWARD -s 192.168.0.$i -m limit --limit 20/s -j ACCEPT iptables -A FORWARD -s 192.168.0.$i DROP done 添加: iptables -A FORWARD -s 192.168.0.11 -m limit --limit 20/s -j ACCEPT iptables -A FORWARD -s 192.168.0.11 -j DROP 删除: iptables -D FORWARD -s 192.168.0.11 -m limit --limit 20/s -j ACCEPT iptables -D FORWARD -s 192.168.0.11 -j DROP 在RH9下搭建PPPOE-Server 因为在安装的时候会对安装的软件包进行选择,所以首先要查看原有系统是否已经安装了rp-pppoe。   新建终端输入以下命令:   # rpm –q rp-pppoe   如果已经安装了该软件,将返回:   ro-pppoe-3.5-2   如果返回的不是上面或相关的内容,就需要重新安装了。Red Hat Linux 9系统安装盘上有自带该软件,只要插入相关的光盘,输入以下命令:   # mount –t iso 9660 /dev/hdc/mnt/cdrom(找到光驱这个设备,其中hdb或是hdc视安装的具体情况而定)   # cd /mnt/cdrom/RedHat/RPMS(找到软件包所在的位置)   # rpm –Uvh rp-pppoe*(开始安装)   等待系统安装。   值得注意的是,网上很多资料指出在安装rp-pppoe之前需要对linux的内核进行编译,除非对linux内核十分熟悉,一般不推荐这种做法。在RH9下,系统已经提供了一个成熟完善的内核。   配置   检查配置文件/etc/ppp/pppoe-server-options内容应该如下(如果不是,则需要修改):   require-pap   require-chap   login   lcp-echo-interval 10   lcp-echo-failure 2   下一步就是最关键的,设置用户和密码对:   设置的用户名和密码分别是:用户cpe,密码:cpe;用户user密码:user。注意server和IP addresses分别用*号代替(不能为空)。   在文件/etc/ppp/chap-secrets中写入:   # Secrets for authentication using CHAP   # client server secret IP addresses   "cpe" * "cpe" *   "user" * "user" *    .    .    .   修改pppd的访问权限,允许由root启动服务进程,测试表明:每次修改、添加用户名和密码后,都需要重新键入下面的命令。   # chmod u+s /usr/sbin/pppd   测试验证   1 网络连接   说明:eth0、eth1分别是PPPoE Server的两块网卡,其中:   eth0:连接公司局域网,地址设为自动获取;   eth1:连接DSLAM,地址设为静态:   IP:172.21.161.2   Netmask:255.255.255.0   GW:172.21.161.1   2 开启服务   命令行:   pppoe-server –I eth1 –L 172.21.161.2 –R 172.21.161.3   具体含义:eth1为提供PPPoE服务的网卡,本地地址172.21.161.2,为远程拨号分配的地址从172.21.161.3开始(默认数量:64)。   打开IP转发功能:   echo “1”>/proc/sys/net/ipv4/ip_forward   这样就可以进行拨号了!   3 验证   当PPPoE Server服务开启后,在客户端进行拨号(Win2000下使用EnterNet300,XP用系统自带拨号工具),观察拨号进程,拨号成功后,在Windows下用ipconfig查看是否获得指定IP(从172.21.161.3开始的地址段)。   在服务器端可用命令:sniff-pppoe –I eth1查看PPPoE服务是否启动正常,或者是用less /var/log/messages查看系统启动日志中关于pppoe的进程,连接成功的话,将会看到PPPoE的几个阶段即PADI、PADO、PADR、PADS、PADT几个报文的传输情况。   至此,PPPoE服务器已经配置成功,能够顺利的进行拨号了。但拨号连接正常后,客户端还是不能上网,所以下一步就是对Linux上两块网卡之间的数据转发进行配置。   4 Iptables&路由配置   Linux下两块网卡路由配置的基本原则就是:外网网关为默认网关,在内网中添加一条路由。   具体操作:结合上面的组网环境,eth0为外网网卡,eth1为内网网卡。   首先,查看linux上的路由设置:   在终端敲入命令#route   查看default是不是指向eth0,gw:10.5.3.250,如果不是就要删除现有的default路由,添加:route add –net default netmask 0.0.0.0 gw 10.5.3.250 dev eth0   为内网添加一条路由:   route add –net 171.21.161.0 netmask 255.255.255.0 gw 172.21.161.1 dev eth1   添加完后就可用iptables进行nat配置了。具体操作:   查看是否已经加载iptables模块:   lsmod | grep ip_tables   如果没有则执行:   modprobe ip_tables   然后执行:   iptables –t nat –A POSTROUTING –o eth0 –s 172.21.161.2/24 –j MASQUERADE   这一条命令的大概意思就是:对从源端172.21.161.2发来的数据包进行伪装,并从eth0出口送出。   现在就可以实现两块网卡之间的数据转发了。   如果需要进行ftp服务,还需在服务器端加载ftp模块,具体如下:   modprobe ip_nat_ftp   modprobe ip_conntrack_ftp   至此,整个PPPoE Server就配置完成,可以模拟整个拨号上网的过程!   5 开机自动启用PPPoE Server   以上是整个配置过程,归纳所有步骤,把他们一并写入/etc/rc.local,实现开机后自动打开PPPoE Server的功能,在原有文件中追加以下命令:   route del –net default netmask 0.0.0.0 gw 172.21.161.1 dev eth1   route add –net default netmask 0.0.0.0 gw 10.5.3.250 dev eth0   route del –net 172.21.161.0 netmask 255.255.255.0 gw 172.21.161.1 dev eth1   pppoe-server –I eth1 –L 172.21.161.2 –R172.21.161.3   echo “1”>/proc/sys/net/ipv4/ip_forward   iptables –t nat –A POSTROUTING –o eth0 –s 172.21.161.2/24 –j MASQUERATE   modprobe ip_nat_ftp   modprobe ip_conntrack_ftp   6 浏览网页时IE的设置   由于整个局域网采用代理上网的方式,在客户端通过拨号建立连接后,需要在IE中进行代理设置,确保能正常浏览网页,具体方法如下:   1、 打开IE,选择“工具”→“Internet选项”→“连接”,在“拨号和虚拟专用网络设置”下选择通过modem所建立的当前连接的名称(如“PPPoE”),点击“设置”,填入代理服务器的地址、端口以及拨号的用户名和密码。   2、 打开IE,选择“工具”→“Internet选项”→“连接”,在“局域网(LAN)设置”下点击“局域网设置”
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值