OpenWrt搭建PPPOE Server

一、前言

本文选择的路由器为小米R1C(官网型号:xiaomi_miwifi-mini),以OpenWrt为基础平台,使用rp-pppoe-server搭建IPv4 + IPv6双栈PPPOE Server环境。

二、前期准备

  1. 将R1C刷入Breed

    方法自行百度。

  2. 下载R1C OpenWrt固件

    本文以OpenWrt 21.02.1版本为例,下载地址链接:openwrt-21.02.1-ramips-mt7620-xiaomi_miwifi-mini-squashfs-sysupgrade.bin

  3. 固件刷入

    将下载好的固件通过Breed刷入R1C路由器,刷写完成后,确保路由器能够连接外网。

  4. SSH登录

    通过SSH软件(比如MobaXterm或者SecureCRT),登录路由器控制台,登录地址一般为192.168.1.1,账号为root,密码为空。

三、相关软件包安装

  1. 更新软件包列表
    软件源更换(此处替换为清华源,非必要替换):

    sed -i 's_downloads.openwrt.org_mirrors.tuna.tsinghua.edu.cn/openwrt_' /etc/opkg/distfeeds.conf
    

    更新软件包(此步骤必须执行,无论是否更换软件源):

    opkg update
    
  2. 安装中文包

    输入以下命令:

    opkg install luci-i18n-base-zh-cn
    

    安装完成后,通过浏览器登录OpenWrt控制页面(浏览器输入192.168.1.1),语言会自动转换为中文。

  3. 安装pppoe server相关组件

    安装前先删除旧的配置文件,输入以下命令:

    rm -rf /etc/ppp/options
    

    安装pppoe相关组件,输入以下命令:

    opkg install rp-pppoe-common rp-pppoe-server
    

四、环境搭建

  1. 搭建IPv4 PPPOE Server环境

    a. 修改/etc/ppp/pppoe-server-options
    打开此文件vi /etc/ppp/pppoe-server-options,将配置按如下方式修改:

    # PPP options for the PPPoE server
    # LIC: GPL
    require-chap
    login
    lcp-echo-interval 10
    lcp-echo-failure 2
    mru 1492
    mtu 1492
    ms-dns 8.8.8.8
    ms-dns 114.114.114.114

    b. 修改/etc/ppp/chap-secrets

    这一步修改客户端连接PPPOE Server时的账号密码,IPv4/IPv6使用的是同一个,并且可以配置多个账号密码,vi /etc/ppp/chap-secrets,修改如下:

    #USERNAME  PROVIDER  PASSWORD  IPADDRESS
    "test" * "123" *
    "test1" * "1234" *
    

    c. 修改防火墙规则

    输入以下命令:

    iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADEiptables -I FORWARD -i ppp0 -j ACCEPTiptables -I FORWARD -o ppp0 -j ACCEPT
    

    d. 启动PPPOE Server

    输入以下命令:

    pppoe-server -k -T 60 -I br-lan -N 100 -C Myp -L 10.0.0.1 -R 10.0.0.2
    

    此时,路由器下挂设备可以通过PPPOE拨号获取IPv4地址。

  2. 搭建IPv6 PPPOE Server环境

    IPv4 PPPOE Server环境基础上做以下修改。

    重启路由器后,按以下步骤搭建IPv6 PPPOE Server环境。

    a. 修改/etc/ppp/pppoe-server-options
    打开此文件vi /etc/ppp/pppoe-server-options,将配置按如下方式修改:

    # PPP options for the PPPoE server
    # LIC: GPL
    require-chap
    login
    lcp-echo-interval 10
    lcp-echo-failure 2
    mru 1492
    mtu 1492
    ms-dns 8.8.8.8
    ms-dns 114.114.114.114
    +ipv6
    ipv6 ::1,::2

    b. 拷贝插件

    输入以下命令:

    cp /usr/lib/pppd/2.4.8/rp-pppoe.so /etc/ppp/plugins/
    

    c. 修改/etc/config/network

    添加ppp0节点,然后绑定到odhcpd,用于向下级分配ipv6地址,vi /etc/config/network,最后面添加:

    config interface 'ppp0'option proto 'static'option device 'ppp0'

    d. 修改/etc/config/dhcp

    添加ppp0节点,然后绑定/etc/config/network中的ppp0节点,vi /etc/config/dhcp,最后面添加:

    config dhcp 'ppp0'option interface 'ppp0'option start '100'option limit '150'option leasetime '12h'option force '1'option ra_management '1'option dhcpv6 'server'option ra 'server'option ra_default '1'list dns '2400:3200:baba::1'list dns '2400:3200::1'

    其中,list dns的意思是ipv6 dns server,根据实际情况填写。这里填的是阿里的DNS。

    e. 重启network、dhcp、odhcpd

    输入以下命令:

    /etc/init.d/network restart/etc/init.d/dnsmasq restart/etc/init.d/odhcpd restart
    

    f. 启动PPPOE Server

    输入以下命令:

    killall pppoe-serverpppoe-server -k -T 60 -I br-lan -N 100 -C Myp -L 10.0.0.1 -R 10.0.0.2 -S ppp0
    

    其中 -S ppp0 表示绑定ppp0接口。

    g. 节点绑定

    给ppp0添加ipv6并将ppp0绑定到/etc/config/network中的ppp0节点:

    ip -6 addr add `uci get network.globals.ula_prefix | sed 's/\/48//g'`5/64 dev ppp0
    ubus call network.interface.ppp0 add_device "{\"name\":\"ppp0\"}"
    

    此时,路由器下挂设备可以通过PPPOE拨号获取IPv6地址。

  3. 设置开机启动

    a. 创建/etc/ppp/ipv6-up脚本
    pppoe拨号成功或会执行这个脚本, vi /etc/ppp/ipv6-up 输入以下代码:

    #!/bin/sh
    # 配置ipv4路由规则,$1为pppoe生成的设备名,一般为ppp0
    iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE
    iptables -I FORWARD -i $1 -j ACCEPT
    iptables -I FORWARD -o $1 -j ACCEPT#给ppp0设置ipv6地址,使用的是network.globals.ula_prefix作为前缀
    ip -6 addr add `uci get network.globals.ula_prefix | sed 's/\/48//g'`5/64 dev $1
    #将ppp0绑定到network与dhcp中的ppp0,用于向下级分配ip
    ubus call network.interface.ppp0 add_device "{\"name\":\"$1\"}"
    

    注意给此脚本添加权限:chmod +x /etc/ppp/ipv6-up

    b. 创建开机自启动脚本

    开机自启动,vi /etc/init.d/runPppoe 输入以下代码:

    #!/bin/sh /etc/rc.common
    START=99start() {killall pppoe-serverpppoe-server -k -T 60 -I br-lan -N 100 -C Myp -L 10.0.0.1 -R 10.0.0.2 -S ppp0echo "pppoe-server start"
    }

    添加可执行权限:

    chmod +x /etc/init.d/runPppoe
    

    输入以下命令设置开机自启动:

    service runPppoe enable
    

五、环境验证

重启路由器,下挂设备通过PPPOE拨号连接,通过ifconfig查看,如果有ppp0节点且已经分配IPv4/IPv6地址则代表成功。
注意某些老设备不支持IPv6可能无法获取IPv6的地址。

六、参考信息

Welcome to the OpenWrt Project
openwrt使用rp-pppoe-server搭建ipv4+ipv6双栈PPPOE server


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部