Chinaunix首页 | 论坛 | 博客
  • 博客访问: 752196
  • 博文数量: 119
  • 博客积分: 137
  • 博客等级: 少校
  • 技术积分: 1582
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-28 16:39
文章分类

全部博文(119)

文章存档

2017年(3)

2016年(7)

2014年(1)

2013年(8)

2012年(20)

2011年(27)

2010年(53)

分类: LINUX

2010-08-16 15:06:03


由于公司使用了多个网段,而我的网段与PPPoE Server又不在同一个网段,大环境不好,经常造成pppoe server连不上,气不过,自己装了个虚拟机,装了个Ubuntu,再自己搭一个 PPPoE Server。终于可以作业了,Oh yeah!
 
 
 
一。安裝 PPPoE Server Software
1)sudo apt-get install ppp
2)rp-pppoe(非apt套件)
wget -c
sudo tar zxvf rp-pppoe-3.6.tar.gz -C /opt/
sudo chown -R root:root /opt/rp-pppoe-3.6/

3) 安裝軟體開發函示庫:
sudo apt-get install libc6-dev
4) 產生需要的pppoe server程式
sudo /opt/rp-pppoe-3.6/go
 
二。配置:
sudo gedit /etc/ppp/options
就是打开/etc/ppp/options中下面的几个功能(去掉前面的#就可以了)
ms-dns 172.16.100.2    
ms-dns 172.16.100.4   (这两个是设置 主DNS 和 附DNS 的)
-pap     (这个是禁用pap认证方式的)
+chap    (这个是启用chap认证方式的)
具体的不详述,根据文件的描述加上自己的sense配就是。
 
三。添加用户:
sudo gedit /etc/ppp/chap-secrets
就是编辑用户名和密码的如下。
##############################
# Secrets for authentication using CHAP
# client server secret   IP addresses
name  *         "passwd"       *    
##############################
 
四。启用forward:
echo "1">/proc/sys/net/ipv4/ip_forward
注意: 这条命令一定要用root身份执行,sudo都没用,否则会提示权限不够。
     如果不启用forward, client即使拿到IP, traffic也不能出去,只能到server而已。

或者这样改
修改/etc/sysctl.conf文件:net.ipv4.ip_forward = 1 启用转发功能
执行如下命令,让配置即时生效
[root@localhost root]# sysctl -p


 
Ubuntu是默认无法直接使用root的, 如果root没有设置过密码,只要用
sudo passwd root
给root设置密码,就可以以root身份登陆了。
 
五。启动PPPoE Server:
sudo pppoe-server -I eth0 -L 192.168.5.1 -R 192.168.5.5 -N 10
意思就是,获得pppoe地址信息如下
-I eth0 指定pppoe服务器在那个网卡接口监听连接请求
-L 192.168.5.1 指定pppoe服务器的ip地址。(注意:此IP地址不是网卡的IP地址,而是PPPOE服务器的虚拟IP)(此地址可以任意)
-R 192.168.5.5 pppoe服务器分配给客户端的IP地址,从192.168.5.5开始,递增
-N 10 指定最多可以连接pppoe服务器的客户端数量(默认是64 最大是65534)
-C: 用于指定您的PPPoE服务器主机名(此参数可以不要)
-S: 该选项用于标记特定的服务器,以帮助客户端系统对pppoe服务器进行自我标定。-S选项经常用来保证一些特定客户始终连接到特定服务器,特别是当你的网络上有多个pppoe服务器时。 PPPoE协议的客户端软件可被配置为只登陆有"特殊服务名称"的pppoe服务器。如果客户端指定的服务器名称与-S选项服务名称中宣称的名字相符,就会连接到该服务器。
-T: 超时时间(设置为60秒)
六。关闭PPPOE服务器
killall pppoe-server
 
七。备注
1、如果使用pap验证方式,windowsxp以上系统自带的pppoe拨号,无法拨通。可能原因是pap使用明文密码验证,而windows保存的密码是加密的,而且是不可恢复的加密,所以windows无法提供密码明文。
2、/etc/ppp/pppoe-server-options和/etc/ppp/options,配置无论写在哪个文件中,都能够起到作用
 
八。测试
在xp上破号,用户名name, 密码passwd. 拿到192.168.5.6的IP , Oh, yeah!
 
九、但是xp连上pppoe以后不能上网,原来缺少了关键的一步,记得设置filter 和 postrouting
使用iptables规则
iptables -A INPUT -i eth0 -s 192.168.5.0/24 -j DROP
iptables -t nat -A POSTROUTING -s 192.168.5.0/24  -j SNAT --to-source 172.16.108.84

OK,经过测试 重新建立pppoe 连接。可以上网了
特此说明:
1. 执行ifconfig时可以看到eth0的ipv4地址的,我的那个地址就是172.16.108.84
另外注意了吧,我设置的pppoe的地址池是192.168.5.5 ~ 192.168.5.14
2. 所以 iptables 时-s 的参数时 192.168.5.0/24
注意了以上两点,就可以获得 pppoe的地址,并且可以上网了。
 

十 开机自动启用PPPoE Server
以上是整个配置过程,归纳所有步骤以及关键点
1. 把他们一并写入/etc/rc.local,实现开机后自启动PPPoE Server在原有文件中追加以下命令:
pppoe-server -I eth0 -L 192.168.5.1 -R 192.168.5.5 -N 10
iptables -A INPUT -i eth0 -s 192.168.5.0/24 -j DROP
iptables -t nat -A POSTROUTING -s 192.168.5.0/24  -j SNAT --to-source 172.16.108.84
2. 打开ip转发功能
echo "1">/proc/sys/net/ipv4/ip_forward


修改/etc/sysctl.conf 
重新启动系统,然后使用ps -A就可以看到pppoe-server已经起来了。哈哈


阅读(5023) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~