您的位置:首页 > 其它

Ubuntu IPv6 pppoe服务器搭建(基于Kea DHCP Server V1.2.0)

2017-08-17 10:12 1056 查看
1、安装pppoe服务器
sudo apt-get install pppoe

2、配置pppoe服务器
(1) 修改/etc/ppp/chap-secrets,增加拨号用户名,密码:
增加一行:"chap"   *   "chap"    *

(2) 新增/etc/ppp/pppoe-server-options
增加一行:+ipv6(加号不能省略,否则拨号失败)

3、启动pppoe服务器
pppoe-server -I eth0 -L 10.10.10.49  -R 10.10.10.50  -N 50

注:

chap认证方式这样配置即可,pap还没有验证。
按此配置客户端获取的只是link local地址。


4、启动RADVD和重启kea

将/usr/share/doc/ppp/examples/scripts/ipv6-up.sample 拷贝为/etc/ppp/ipv6-up.d/ipv6-up,并修改如下:

#!/bin/sh
#
# This script is called with the following parameters:
# interface tty speed local-address remote-address ipparam
#

# Start router advertisements on this link.
# Based on radvd 0.5.0 behaviour

DEVICE="$1"

CFGFILE="/etc/radvd.conf-$DEVICE"
PIDFILE="/var/run/radvd/radvd-$DEVICE.pid"
EXEFILE="/usr/sbin/radvd"
LOGFILE="/var/log/pppoe-server"

GenerateRadvdConfig()
{
    echo  "[`date +%H`:`date +%M`:`date +%S`][$0] generate radvd config for $DEVICE" >> "$LOGFILE"

    cp /etc/radvd.conf "$CFGFILE"
    if [ $? -eq 0 ];then
        sed -i "s/eno1/$DEVICE/g"  "$CFGFILE"
    else
        echo  "[`date +%H`:`date +%M`:`date +%S`][$0] cp /etc/radvd.conf failed" >>  "$LOGFILE"
    fi
}

RunRadvd()
{
    if [ -x "$EXEFILE" -a -f "$CFGFILE" ]; then
        echo  "[`date +%H`:`date +%M`:`date +%S`][$0] $EXEFILE -u radvd -C $CFGFILE -p $PIDFILE " >>  "$LOGFILE"
        "$EXEFILE" -u radvd -C "$CFGFILE" -p "$PIDFILE"
    else
        echo  "[`date +%H`:`date +%M`:`date +%S`][$0] $EXEFILE is not executable, or $CFGFILE is not existed " >> 
9702
"$LOGFILE"
    fi
}

ModifyKeaConfig()
{
    local configPath="/usr/local/etc/kea/kea.conf"
    local lineNum=`grep \"interface\":\"eno1\" "$configPath"  -n |cut -d : -f 1`
    local samplePath="/etc/ppp/ipv6-up.d/kea_pool.sample"

    #配置地址池
    sed -i "s/eno1/$DEVICE/g" "$samplePath"
    sed -i "$lineNum r $samplePath" "$configPath"
    sed -i "s/$DEVICE/eno1/g" "$samplePath"
}

##################################################### main #####################################
echo  "[`date +%H`:`date +%M`:`date +%S`][$0] $DEVICE up" >>  "$LOGFILE"

#1.生成radvd配置,并启动radvd进程
GenerateRadvdConfig
RunRadvd

#2.修改kea-dhcp6的配置,并重启服务
ModifyKeaConfig
keactrl stop
keactrl start


在/etc/ppp/ipv6-up.d/下新建文件kea_pool.sample,并修改为:
    },
    {
      "subnet": "2001:10:10:10::/64",
      "pools": [ { "pool": "2001:10:10:10::1-2001:10:10:10::ffff" } ],
      "pd-pools":
      [
        {
          "prefix": "3000:6666:6666:6666::",
          "prefix-len": 48,
          "delegated-len": 64
        }
      ],
      "interface":"eno1"


将/usr/share/doc/ppp/examples/scripts/ipv6-down.sample拷贝为/etc/ppp/ipv6-down.d/ipv6-down,并修改为:
#!/bin/sh
#
# This script is called with the following parameters:
# interface tty speed local-address remote-address ipparam
#

# Kill the router advertisement daemon on this interface.
# The killing procedure is copied from RedHat 6.0 initscripts.

DEVICE="$1"

PIDFILE="/var/run/radvd/radvd-$DEVICE.pid"
CFGFILE="/etc/radvd.conf-$DEVICE"
LOGFILE="/var/log/pppoe-server"

StopRadvd()
{
    local PID="$(cat "$PIDFILE")"
    if [ "$PID" != "" ]; then
        echo  "[`date +%H`:`date +%M`:`date +%S`][$0] kill -TERM $PID" >> "$LOGFILE"
        kill -TERM "$PID"
    fi

    rm -f "$PIDFILE"
    rm -f "$CFGFILE"
}

ModifyKeaConfig()
{
    local configPath="/usr/local/etc/kea/kea.conf"
    local endLineNum=`grep \"interface\":\""$DEVICE"\" "$configPath"  -n |cut -d : -f 1`
    local startLineNum=`expr $endLineNum - 12`

    # 删除地址池
    sed -i "${startLineNum},${endLineNum}d" "$configPath"
}

##################################################### main #####################################
echo  "[`date +%H`:`date +%M`:`date +%S`][$0] $DEVICE down" >> "$LOGFILE"

StopRadvd

ModifyKeaConfig
keactrl stop
keactrl start
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: