Ubuntu搭建pppoe-server

Ubuntu搭建pppoe-server

环境

  1. ubuntu 14.04 32bit
  2. ubuntu 16.04 64bit

安装软件包

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

修改配置

  1. 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认证方式
  1. pppoe-server-options
sudo vim /etc/ppp/pppoe-server-options

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

auth  
require-chap     
logfile /var/log/pppd.log 
+ipv6
  1. 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

检查

  1. 服务器端成功启动:

    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)
    
    
  2. 客户端拨号成功,注意,接口名称不一定是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
posted @ 2023-10-18 19:00  付时凡  阅读(1005)  评论(0编辑  收藏  举报