海运的博客

PPP自定义INTERFACE接口PATCH

发布时间:May 15, 2015 // 分类: // No Comments

wget http://pkgs.fedoraproject.org/repo/pkgs/ppp/ppp-2.4.7.tar.gz/78818f40e6d33a1d1de68a1551f6595a/ppp-2.4.7.tar.gz
tar zxvf ppp-2.4.7.tar.gz 
cd ppp-2.4.7
wget https://dev.openwrt.org/export/42525/trunk/package/network/services/ppp/patches/320-custom_iface_names.patch
patch -p 1 < 320-custom_iface_names.patch 
./configure 
make
make install

使用参数:

ifname pppoe1

通过OpenWRT连接ROS重新PPPoe拨号

发布时间:May 27, 2013 // 分类:ROS // No Comments

OpenWRT安装PPPoe服务器,当客户端连接或断开时通过ip-down.d/ip-up.d执行ROS命令,ROS需配置使用SSH Key验证
当系统拨号断开时停止PPPoe:

mkdir /etc/ppp/ip-down.d
cat >/etc/ppp/ip-down.d/pppoe-down.sh << EOF
#!/bin/sh
ssh admin@192.168.1.21 "/interface pppoe-client disable pppoe-out1"
EOF
chmod +x /etc/ppp/ip-down.d/pppoe-down.sh 

当连接系统拨号连接时开启PPPoe:

mkdir /etc/ppp/ip-up.d
cat >/etc/ppp/ip-up.d/pppoe-up.sh << EOF
#!/bin/sh
ssh admin@192.168.1.21 "/interface pppoe-client enable pppoe-out1"
EOF
chmod +x /etc/ppp/ip-up.d/pppoe-up.sh 

2015.03.17更新:
ros重新拨号只需enable就行,无需先disable:

ssh admin@192.168.1.21 "/interface pppoe-client enable pppoe-out1"

OpenWRT更新到14.07安装的pppoe不执行ip-down.d或up目录下脚本,需添加相应脚本,PPPD连接时会执行此脚本:

cat >/etc/ppp/ip-up << EOF
#!/bin/sh
[ -d /etc/ppp/ip-up.d ] && {
        for SCRIPT in /etc/ppp/ip-up.d/*
        do
                [ -x "$SCRIPT" ] && "$SCRIPT" "$@"
        done
}
EOF
chmod +x /etc/ppp/ip-up

OpenWRT安装配置PPPoe服务器

发布时间:May 26, 2013 // 分类:OpenWrt // 1 Comment

OpenWRT安装PPPoe:

opkg update
opkg install rp-pppoe-server

配置PPPoe:

cat > pppoe-server-options << EOF
# 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
EOF

设置PPPoe账号、密码:

cat >/etc/ppp/chap-secrets << EOF
#USERNAME  PROVIDER  PASSWORD  IPADDRESS
www.haiyun.me * www.haiyun.me *
EOF

启动PPPoe服务脚本:

cat >/etc/init.d/pppoe-server << EOF
#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
START=50

start() {
        echo 1 > /proc/sys/net/ipv4/ip_forward
        iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -j MASQUERADE
        /usr/sbin/pppoe-server -k -T 60 -I eth1.1 -N 100 -L 10.0.1.1 -R 10.0.1.2
}

stop() {
        iptables -t nat -D POSTROUTING -s 10.0.1.0/24 -j MASQUERADE
    killall pppoe-server
}
EOF
chmod +x /etc/init.d/pppoe-server

遇到的问题1,客户端连接错误代码619,使用tcpdump监听数据包:

Generic-Error "RP-PPPoE: Child pppd process terminated"

查看pppoe错误日志:

May 26 13:31:07 OpenWrt daemon.notice pppd[4972]: Connect: ppp0 <--> /dev/pts/1
May 26 13:31:07 OpenWrt daemon.notice pppd[4972]: Modem hangup
May 26 13:31:07 OpenWrt daemon.notice pppd[4972]: Connection terminated.

解决方法:启动参数加-k,加载内核pppoe模块启动。
遇到的问题2,客户端连接错误代码691,原因:

用户名或密码填写错误
require-chap账号密码文件确认为chap-secrets

PPPOE服务器CHAP连接验证流程

发布时间:August 28, 2012 // 分类:ROS // No Comments

ROS配置PPPOE服务器,连接 PPPOE服务器监听数据包如下:

07:50:52.398419 PPPoE PADI [Service-Name] [Host-Uniq 0x12150000]
07:50:52.398461 PPPoE PADO [Host-Uniq 0x12150000] [Service-Name] [AC-Name "MikroTik"] [Service-Name "pppoe"]
07:50:52.400079 PPPoE PADR [Service-Name] [Host-Uniq 0x12150000]
07:50:52.400120 PPPoE PADS [ses 0x12] [Host-Uniq 0x12150000] [Service-Name]
07:50:52.402604 PPPoE  [ses 0x12] LCP, Conf-Request (0x01), id 1, length 16
07:50:52.402611 PPPoE  [ses 0x12] LCP, Conf-Request (0x01), id 1, length 21
07:50:52.402611 PPPoE  [ses 0x12] LCP, Conf-Ack (0x02), id 1, length 16
07:50:52.403494 PPPoE  [ses 0x12] LCP, Conf-Ack (0x02), id 1, length 21
07:50:52.403502 PPPoE  [ses 0x12] CHAP, Challenge (0x01), id 1, Value 3cca193423b93a6e8b13609aa4209bf1, Name MikroTik
07:50:52.406462 PPPoE  [ses 0x12] LCP, Echo-Request (0x09), id 0, length 10
07:50:52.406467 PPPoE  [ses 0x12] LCP, Echo-Reply (0x0a), id 0, length 10
07:50:52.408030 PPPoE  [ses 0x12] CHAP, Response (0x02), id 1, Value 8fbdbac8f438f0c540fc21f801d0e6fe, Name user
07:50:52.408050 PPPoE  [ses 0x12] CHAP, Success (0x03), id 1, Msg Welcome.

PPPOE连接验证流程如下:

#https://www.haiyun.me
客户端开始连接发送广播包PADI寻找PPPOE服务器
PPPOE服务器接受到PADI广播包后,回复PADO注明主机名、服务类型。
客户端选择PPPOE服务器。
PPPOE服务器收到客户端发送的PADR消息后,给客户端分配会话ID并进行会话确认。
PPPOE服务器主动向客户端主动发起连接,发送一些随机字符串、id和PPPOE服务器的主机名作为连接信息。
客户端根据PPPOE服务器连接信息中字符串、id、主机名、账号密码计算出md5值发送给PPPOE服务器,同时明文发送账号。
PPPOE服务器确认验证信息是否正确,若正确定进行网络配置阶段,错误则断开链路。

修改PPPOE配置解决ADSL频繁掉线问题

发布时间:May 5, 2012 // 分类:OpenWrt // No Comments

使用迅雷下载的时候openwrt老是掉线,查看ppp日志:

May  5 07:02:05 OpenWrt daemon.info pppd[23813]: No response to 5 echo-requests
May  5 07:02:05 OpenWrt daemon.notice pppd[23813]: Serial link appears to be disconnected.
May  5 07:02:05 OpenWrt daemon.info pppd[23813]: Connect time 1089.9 minutes.
May  5 07:02:05 OpenWrt daemon.info pppd[23813]: Sent 335012468 bytes, received 1671352386 bytes.
May  5 07:02:06 OpenWrt user.notice root: stopping ntpclient
May  5 07:02:12 OpenWrt daemon.notice pppd[23813]: Connection terminated.
May  5 07:02:12 OpenWrt daemon.notice pppd[23813]: Modem hangup

PPPOE客户端会每隔10秒向服务器发送echo request确认在线,5次请求未回应就认为连线有问题并断开连接。
修改配置增加和ADSL服务器交互间隔:

vim /etc/ppp/options
lcp-echo-interval 30 #发送间隔秒
lcp-echo-failure 15 #15次未响应断开
分类
最新文章
最近回复
  • crowjin: 你确定这能过滤??不是所有请求都返回空地址::?
  • : linux系统上单个网卡多条宽带拨号获取公网IP,外网可以访问这些IP,有偿! Q:25299...
  • 硅谷少年: 非常有用,感谢分享
  • spartan2: https://dashboard.hcaptcha.com/welcome_accessib...
  • 海运: 应该能,在购买页面先手工跳过cf机器验证,后续一定时间内不更换ip应该不会再次验证。
  • spartan: 大佬斯巴达开启了CF的机器识别验证,请问插件能自动跳过吗? 另外这个脚本有没有简单使用说明,新...
  • vincent: 膜拜大佬
  • 海运: proxy-header或proxy_protocol
  • liangjw: 如果是 内部调用 或者 中间存在 代理 而上一个代理又在内网 ,那怎么处理来自代理私有IP?
  • chainofhonor: 感谢,用dnsmasq设置自动判断BIOS和UEFI成功了