PPPoE Server 搭建
安装PPPoE
sudo apt-get install ppp
从https://www.roaringpenguin.com/products/pppoe/下载最新版本的rp-pppoe程序,我下的是3.12版本的。解压到/opt目录下,然后
sudo chown -R root:root rp-pppoe-3.12
cd rp-pppoe-3.12
sudo ./configure
sudo make
sudo make install
sudo apt-get install libc6-dev
配置
修改 /etc/ppp/options
ms-dns 8.8.8.8
ms-dns 8.8.4.4
-pap
+chap
其中ms-dns指的是dns服务器的地址,填实际的dns地址
-pap去除pap,因为pap是明文,Windows不支持
+chap,使用chap的方式
PAP是简单二次握手身份验证协议,用户名和密码明文传送,安全性低.PAP全称为:Password Authentication Protocol CHAP是一种挑战响应式协议,三次握手身份验证,口令信息加密传送,安全性高.
添加用户 修改/etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
"fan" * "12345678" *
添加用户,例如这里添加测试账户名fan,密码12345678
修改/etc/ppp/pppoe-server-options
auth
require-chap
logfile /var/log/pppd.log
删除require-pap,改为require-chap
/var/log/pppd.log中放的是log信息
启动和关闭服务器
sudo pppoe-server -I eth0 -L 192.168.5.1 -R 192.168.5.5 -N 10
意思就是,获得pppoe地址信息如下
-I eth0 指定pppoe服务器在那个网卡接口监听连接请求(我们在虚拟机中设置的eth0为有线网卡);
-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);
启动服务器转发数据
通过前面的配置,pppoe拨号客户端应该已经可以正常拨号并获取地址,但是如果不启用服务器的数据转发,client即使拿到IP地址,流量也只能到达server而无法转发出去,可通过以下步骤启用服务器的数据转发。
在虚拟机中使用iptabes进行端口转发规则定义
丢弃在eth0上的pppoe数据(这一步我没做也是可以的)
sudo iptables-A INPUT -i eth0 -s 192.168.5.0/24 -j DROP
转发pppoe上的数据到可以联网的wlan0无线网卡上:
sudo iptables -t nat -A POSTROUTING -s192.168.5.0/24 -o wlan0 -j MASQUERADE
保存路由规则
sudo iptables-save
重启iptables服务(这里需要注意的是ubuntu没有将iptables注册为服务,所以serviceiptables restart stop 等命令使用不了)
sudo modprobe ip_tables
开启ip转发功能
使用超级用户的身份,注意,必需是超级用户身份,sudo都没有这个权限,执行:
echo "1">/proc/sys/net/ipv4/ip_forward
如果单单是执行这个命令,只会暂时开启IP转发功能。重启后会自动关闭。如果想一直打开,则应该编辑 /etc/sysctl.conf 文件,取消 net.ipv4.ip_forward=1 的注释,再执行 sudo sysctl -p 就可以永久打开IP转发功能了。
查看服务是否起来
启动pppoe-server之后,查看该服务是否起来了
ps -aux
关闭PPPOE服务器
killall pppoe-server
或者sudo kill 进程ID
测试
用虚拟机搭建的PPPoE服务器,可以用PC机进行拨号连接,也可以用路由器进行拨号连接,我都试过,都是可以的。
遇到的问题说明
1、 虚拟机和电脑的连接方式应选择桥接模式,这样才可以暴露出虚拟机的PPPoE服务给盒子终端。
2、 Windows拨号连接显示错误651
说明拨号就不成功了。
可能的原因是没有正确打开服务器。
因此,可能是在 pppoe-server 打开时没有指定到正确的网卡。也可能是使用虚拟机上网时没有设置好上网模式,如果没有使用桥接模式上网而是使用了NAT模式,则也可能遇到此问题。
同时,如果没有pppoe-server-options 文件或者该文件没有 auth 和 require-chap 选项设置的话,也会出现这个问题。
同时,该问题也可能是因为在Windows拨号连接时在属性中指定了一个服务器,和linux下开启的PPPoE Server名称不同造成的。
pppoe-server中,-S参数用于指定服务器名称。
3、 拨号成功,但是网页打不开报DNS_PROBE_FINISHED_NO_INTERNET
需要启动服务器转发数据