Openwrt+pppoe-server+radius笔记

简介

最近项目接触到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

  1. 安装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中
  2. 设置/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
  1. 设置/etc/ppp/chap-secrets (用于拨号的用户名 密码)
#USERNAME  PROVIDER  PASSWORD  IPADDRESS
test * test *
  1. 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服务器以及设置一些参数

  1. openwrt上首先需要安装 radius
    opkg install ppp-mod-radius
  2. copy /usr/lib/pppd/2.4.7里面的radius.so文件到 /etc/ppp/plugins中
  3. etc/ppp/radius
    # SERVER SECRET
    (radius地址) (**secret**)
  1. etc/ppp/radius.conf 修改
    authserver (radius地址):1812
    acctserver (radius地址):1813
  1. etc/ppp/options 添加
plugin /etc/ppp/plugins/radius.so
radius-config-file /etc/ppp/radius.conf
  1. 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就行了。

你可能感兴趣的:(Openwrt+pppoe-server+radius笔记)