Ubuntu搭建pppoe-server

Ubuntu搭建pppoe-server

目录Ubuntu搭建pppoe-server环境安装软件包修改配置启用转发规则启动程序配置转发规则检查脚本执行

环境

ubuntu 14.04 32bit
ubuntu 16.04 64bit

安装软件包

sudo apt-get install pppoe-server
sudo apt-get install pppoe

修改配置

options

sudo vim /etc/ppp/options

示例如下:

ms-dns 10.0.0.1
ms-dns 192.168.0.8
asyncmap 0
noauth
crtscts
local
lock
hide-password
modem
-pap
+chap
passive
lcp-echo-interval 30
lcp-echo-failure 4
noipx

主要修改:

ms-dns:有效的dns服务器,可以配置多个
-pap:禁用pap认证方式
+chap:启用chap认证方式

pppoe-server-options

sudo vim /etc/ppp/pppoe-server-options

如果文件不存在则创建,内容为:

auth  
require-chap     
logfile /var/log/pppd.log 
+ipv6

chap-secrets

sudo vim /etc/ppp/chap-secrets

内容:

# Secrets for authentication using CHAP
# client	server	secret			IP addresses
pppoe   *   12345678   *

client为拨号用户名,这里为pppoe,server可任意,secret为拨号密码,这里为12345678,IP地址任意。

启用转发规则

直接配置forward:

echo 1 > /proc/sys/net/ipv4/ip_forward

检查看下是否成功:

cat /proc/sys/net/ipv4/ip_forward

启动程序

先停止先前的程序pppoe-server(如果有的话):

sudo killall pppoe-server

启动pppoe-server,可视情况判断是否需要sudo:

sudo pppoe-server -I enp2s0 -L 192.168.8.1 -R 192.168.8.10 -N 5

参数说明:

-I:接口名称,即实际的物理网卡,可用ifconfig查看实际接口名称,也可能是eth0这样
-L:一个PPP连接中,PPPoE服务器的IP地址
-R:地址池的起始IP,这里是网段内的10
-N:地址池的大小,即有几个

配置转发规则

启用NAT转发:

sudo iptables -t nat -A POSTROUTING -s 192.168.8.0/24 -o enp2s0 -j MASQUERADE

注意接口名称、子网网段保持一致。
查看规则是否配置OK:

sudo iptables -t nat -S 

成功配置的话,有以下条目的输出:

-A POSTROUTING -s 192.168.66.0/24 -o enp2s0 -j MASQUERADE

检查

服务器端成功启动:

ppp0      Link encap:Point-to-Point Protocol  
          inet addr:192.168.8.1  P-t-P:192.168.8.10  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1480  Metric:1
          RX packets:370 errors:0 dropped:0 overruns:0 frame:0
          TX packets:256 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:73316 (73.3 KB)  TX bytes:24830 (24.8 KB)

客户端拨号成功,注意,接口名称不一定是pppoe-internet:

pppoe-internet Link encap:Point-to-Point Protocol  
          inet addr:192.168.8.10  P-t-P:192.168.8.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1480  Metric:1
          RX packets:1307 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1742 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:287250 (280.5 KiB)  TX bytes:298883 (291.8 KiB)

脚本执行

执行脚本后,需手动调整配置。
调整配置文件完成后,再执行一次脚本即可。
后续每次开启可运行一次(或者配置开机自动运行)。

#!/bin/sh
main() {
    echo "Setup PPPoE Server"
    if [ ! -f /etc/ppp/chap-secrets ]; then
        sudo apt-get install pppoe-server
        sudo apt-get install pppoe
    fi

    # modify your configuration here
    local interface=enp2s0
    local lan=192.168.8
    local mask=24
    local ip_pool_count=5

    local exist=`pgrep pppoe-server`
    [ ! -z "$exist" ] && sudo killall pppoe-server
    sudo pppoe-server -I $interface -L $lan.1 -R $lan.10 -N $ip_pool_count
    local ipt_rule=`sudo iptables -t nat -S|grep "$lan.10"`
    if [ -z "$ipt_rule" ]; then
        echo "add iptables rule"
        sudo iptables -t nat -A POSTROUTING -s $lan.0/$mask -o $interface -j MASQUERADE
    else
        echo "iptables rule seems already added"
        echo $ipt_rule
    fi

    echo "pppoe info:"
    sudo cat /etc/ppp/chap-secrets |tail -n 2
}

main
© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...