简介
最近项目接触到Openwrt的编译和使用,op本身是一个定制的linux系统,兼容的包和语言也有很多,随着物联网的发展,相信在路由器方面的应用会越来越多。
目的
项目需要涉及到网关控制,之前加入了coova-chilli,现在需要使用pppoe-server来执行登录验证上网,类似路由器设置一个拨号服务器,然后员工pc通过用户名密码进行拨号上网。
测试环境和ipk
X86网关,自己编译的openwrt15.05,rp-pppoe-server3.10 rp-pppoe-server下载地址
注意:openwrt 好像在14.07后就没有把rp-pppoe-server放入packages了,只找到了12.09的rp-pppoe-server
OpenWrt上使用pppoe-server
- 安装pppoe-server:
opkg install rp-pppoe-server_3.10-2_x86.ipk
copy /usr/lib/pppd/2.4.7里面的rp-pppoe.so文件到 /etc/ppp/plugins中 - 设置/etc/ppp/pppoe-server-options
# PPP options for the PPPoE server
# LIC: GPL
require-chap
login
lcp-echo-interval 10
lcp-echo-failure 2
ms-dns 8.8.8.8
- 设置/etc/ppp/chap-secrets (用于拨号的用户名 密码)
#USERNAME PROVIDER PASSWORD IPADDRESS
test * test *
- pppoe server 具体设置
1.设置ip 10.0.0.0段的地址经过的时候全部转换成上层网络动态获取的IP出去具体语法介绍查看
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE
2.带参数值启动pppoe-server,参数说明直接输入 pppoe-server -h 查看,这里的10.0.0.1和上面iptables 对应好就行,成功拨号后的PC端获取的就是这个网段的IP地址
pppoe-server -k -T 60 -I br-lan -N 100 -C Myp -L 10.0.0.1 -R 10.0.0.2
3.设置ppp0端口数据接收流入流出,拨号后可以可以通过ifconfig查看到有个虚拟网口ppp0
iptables -I FORWARD -i ppp0 -j ACCEPT
iptables -I FORWARD -o ppp0 -j ACCEPT
4.通过在chap-secrets里面设置的用户名密码 就能拨号成功
pppoe-server+radius认证
参考地址linux配置radius
radius是一个认证授权的开源服务器,当你架好之后,pppoe-server 能连接radius进行用户密码验证,其实和上面的chap验证一样。只是需要指向radius服务器以及设置一些参数
- openwrt上首先需要安装 radius
opkg install ppp-mod-radius - copy /usr/lib/pppd/2.4.7里面的radius.so文件到 /etc/ppp/plugins中
- etc/ppp/radius
# SERVER SECRET
(radius地址) (**secret**)
- etc/ppp/radius.conf 修改
authserver (radius地址):1812
acctserver (radius地址):1813
- etc/ppp/options 添加
plugin /etc/ppp/plugins/radius.so
radius-config-file /etc/ppp/radius.conf
- radattr.so 不存在的问题,在编译openwrt的时候 进入package network service 找到ppp的makefile
在这一行 define Package/ppp-mod-radius/install
下面修改成:
$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/radattr.so \
$(1)/usr/lib/pppd/$(PKG_VERSION)/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/radius.so \
$(1)/usr/lib/pppd/$(PKG_VERSION)/
再编译文件,得到的ipk就有 radattr.so
这样就设置成功了,和前面的chap验证一样进行拨号就行了。
注意
我使用的是带了6个网口的X86机子
可能连接lan口后没拨号的情况也能上网,如果需要限制在没有拨号之前不能上网,直接在firewall里面关掉4.2步骤里面br-lan这个对应的wan forwading就行了。