找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 16547|回复: 42

【解决】并发10拨可以拨上,却无法上网?有图,大侠看看什么原因,用的NWAN

[复制链接]
本帖最后由 wgedu 于 2014-6-2 14:44 编辑

已经解决了,谢谢各位的回复与支持,我说一下解决的过程,希望给有同样问题的同学有所帮助。先恢复初始设置,然后安装nwan,接下来安装修改的并发拨号ppp和ppp-mod-pppoe这两个软件包,然后修改ppp.sh,接着上传syncpppinit,然后用pppoe-my拨号,就可以了

我觉得我的问题产生的原因是先安装了ppp和ppp-mod-pppoe这两个软件包,又安装nwan,所以出现了问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
 楼主| | 显示全部楼层
WAN中没有上线时间,这是什么原因啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

是 3.10.36 内核吧?用 pppoe-my 脚本了吗?  新内核 要把 /lib/netifd/proto/ppp.sh 下面这些 拨号 语句去掉,用脚本拨号 就可以了。

        [ -n "$connect" ] || json_get_var connect connect
        [ -n "$disconnect" ] || json_get_var disconnect disconnect

#        proto_run_command "$config" /usr/sbin/pppd \
#                nodetach ipparam "$config" \
#                ifname "${proto:-ppp}-$config" \
#                ${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}} \
#                ${ipv6:++ipv6} \
#                nodefaultroute \
#                usepeerdns \
#                $demand maxfail 1 \
#                ${username:+user "$username" password "$password"} \
#                ${connect:+connect "$connect"} \
#                ${disconnect:+disconnect "$disconnect"} \
#                ip-up-script /lib/netifd/ppp-up \
#                ipv6-up-script /lib/netifd/ppp-up \
#                ip-down-script /lib/netifd/ppp-down \
#                ipv6-down-script /lib/netifd/ppp-down \
#                ${mtu:+mtu $mtu mru $mtu} \
#                "$@" $pppd_options
}


脚本贴出来吧
#!/bin/sh /etc/rc.common
# Copyright (C) 2008 OpenWrt.org
START=99

#判断当前是否有另一个脚本存在
state=`ps|grep -c pppoe-my`
[ "$state" -ge "4" ] && echo another pppoe-my is running
[ "$state" -ge "4" ] && exit


#number是重拔次数
#n是几拔
#ok是拔上几次后退出拔号

number=12
n=2
ok=2

start() {
   for q in $( seq 1 $number )
   do        
        echo
        echo ___________________________________________________
        echo [syncppp]start the $q dial ...........
        
        #取得wan口的账号和密码,用来多拨
        user=`uci get network.wan.username`
        pass=`uci get network.wan.password`
       
        echo [syncppp]kill process pppd ..........

        #结束并发公用程序
        killall -q -SIG syncpppinit

        #新的结束拨号进程的方法,正常退出,可立即重拨
        kill -INT `pidof pppd`

        #等待20s,可以自己调整
        sleep 20
        
        echo [syncppp]change mac ...........

        #开始更换随机mac地址
        for i in $( seq 0 $(($n-1)))
        do
          if [ "$i" == "0"  ] ;
          then
                ifname=eth0
          else
                ifname=vth$i
          fi
          ifconfig $ifname down
          u=`cat /proc/sys/kernel/random/uuid`
          uu=00:2b{u:0:2}{u:2:2}{u:4:2}{u:6:2}
          ifconfig $ifname hw ether $uu
          ifconfig $ifname up
        done
        
        #开始并发拨号
        syncpppinit $n &
        sleep 1
      
        echo [syncppp]sync dialing.............

        for i in $( seq 0 $(($n-1)))
        do
          if [ "$i" == "0"  ] ;
          then
               interface=wan
                ifname=eth0
          else
               interface=wan$i
                ifname=vth$i
          fi
         
          #拨号命令,linux2.6请用第一行,3.3.8以上请用第二行
#           /usr/sbin/pppd plugin rp-pppoe.so syncppp mtu 1492 mru 1492 nic-$ifname nopersist usepeerdns nodefaultroute user $user password $pass ipparam $interface ifname pppoe-$interface nodetach &
            /usr/sbin/pppd plugin rp-pppoe.so syncppp mtu 1492 mru 1492 nic-$ifname persist usepeerdns nodefaultroute user $user password $pass ipparam $interface ifname pppoe-$interface nodetach maxfail 1 ip-up-script /lib/netifd/ppp-up ipv6-up-script /lib/netifd/ppp-up ip-down-script /lib/netifd/ppp-down ipv6-down-script /lib/netifd/ppp-down &

        done

        echo [syncppp]sync dial complete.............
        echo [syncppp]waiting 20s .............
        sleep 20
        
        j=`ifconfig|grep -c inet.*P-t-P`
        echo [syncppp] [$n] dialed and [$j] dial succeed .....

        ! [ "$j" -ge "$ok" ] && echo [syncppp] [$j] dial succeed, less than the the set [$ok] dial, and will retry...
        [ "$j" -ge "$ok" ] && echo [syncppp]succeed [$j] dial, equal or more than the set [$ok] dial, and will exit...   
        [ "$j" -ge "$ok" ] && killall -q -SIG syncpppinit
        #等待系统拨号完成,linux2.6请保留以下行
#      [ "$j" -ge "$ok" ] && sleep 35
        #去掉rt_cache,linux3.10及以上版本请注释掉以下行
#        [ "$j" -ge "$ok" ] && echo -1 > /proc/sys/net/ipv4/rt_cache_rebuild_count
        #重启nwan,linux2.6请保留以下行
#      [ "$j" -ge "$ok" ] && /etc/init.d/nwan restart
        [ "$j" -ge "$ok" ] && exit
    done
}
回复

使用道具 举报

从图来看,好象没获取到网关IP
回复

使用道具 举报

 楼主| | 显示全部楼层
iorip2 发表于 2014-6-1 00:08
是 3.10.36 内核吧?用 pppoe-my 脚本了吗?  新内核 要把 /lib/netifd/proto/ppp.sh 下面这些 拨号 语句去 ...

ppp.sh代码
  1. #!/bin/sh

  2. [ -x /usr/sbin/pppd ] || exit 0

  3. [ -n "$INCLUDE_ONLY" ] || {
  4.         . /lib/functions.sh
  5.         . ../netifd-proto.sh
  6.         init_proto "$@"
  7. }

  8. ppp_generic_init_config() {
  9.         proto_config_add_string "username"
  10.         proto_config_add_string "password"
  11.         proto_config_add_string "keepalive"
  12.         proto_config_add_int "demand"
  13.         proto_config_add_string "pppd_options"
  14.         proto_config_add_string "connect"
  15.         proto_config_add_string "disconnect"
  16.         proto_config_add_boolean "ipv6"
  17.         proto_config_add_boolean "authfail"
  18.         proto_config_add_int "mtu"
  19. }

  20. ppp_generic_setup() {
  21.         local config="$1"; shift

  22.         json_get_vars ipv6 demand keepalive username password pppd_options
  23.         [ "$ipv6" = 1 ] || ipv6=""
  24.         if [ "${demand:-0}" -gt 0 ]; then
  25.                 demand="precompiled-active-filter /etc/ppp/filter demand idle $demand"
  26.         else
  27.                 demand="persist"
  28.         fi

  29.         [ -n "$mtu" ] || json_get_var mtu mtu

  30.         local interval="${keepalive##*[, ]}"
  31.         [ "$interval" != "$keepalive" ] || interval=5
  32.         [ -n "$connect" ] || json_get_var connect connect
  33.         [ -n "$disconnect" ] || json_get_var disconnect disconnect
  34.        
  35.         /root/pppoe-my start


  36. #        proto_run_command "$config" /usr/sbin/pppd syncppp \
  37. #                nodetach ipparam "$config" \
  38. #                ifname "${proto:-ppp}-$config" \
  39. #                ${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}} \
  40. #                ${ipv6:++ipv6} \
  41. #                nodefaultroute \
  42. #                usepeerdns \
  43. #                $demand maxfail 1 \
  44. #                ${username:+user "$username" password "$password"} \
  45. #                ${connect:+connect "$connect"} \
  46. #                ${disconnect:+disconnect "$disconnect"} \
  47. #                ip-up-script /lib/netifd/ppp-up \
  48. #                ipv6-up-script /lib/netifd/ppp-up \
  49. #                ip-down-script /lib/netifd/ppp-down \
  50. #                ipv6-down-script /lib/netifd/ppp-down \
  51. #                ${mtu:+mtu $mtu mru $mtu} \
  52. #                $pppd_options "$@"
  53. }

  54. ppp_generic_teardown() {
  55.         local interface="$1"

  56.         case "$ERROR" in
  57.                 11|19)
  58.                         proto_notify_error "$interface" AUTH_FAILED
  59.                         json_get_var authfail authfail
  60.                         if [ "${authfail:-0}" -gt 0 ]; then
  61.                                 proto_block_restart "$interface"
  62.                         fi
  63.                 ;;
  64.                 2)
  65.                         proto_notify_error "$interface" INVALID_OPTIONS
  66.                         proto_block_restart "$interface"
  67.                 ;;
  68.         esac
  69.         proto_kill_command "$interface"
  70. }

  71. # PPP on serial device

  72. proto_ppp_init_config() {
  73.         proto_config_add_string "device"
  74.         ppp_generic_init_config
  75.         no_device=1
  76.         available=1
  77. }

  78. proto_ppp_setup() {
  79.         local config="$1"

  80.         json_get_var device device
  81.         ppp_generic_setup "$config" "$device"
  82. }

  83. proto_ppp_teardown() {
  84.         ppp_generic_teardown "$@"
  85. }

  86. proto_pppoe_init_config() {
  87.         ppp_generic_init_config
  88.         proto_config_add_string "ac"
  89.         proto_config_add_string "service"
  90. }

  91. proto_pppoe_setup() {
  92.         local config="$1"
  93.         local iface="$2"

  94.         for module in slhc ppp_generic pppox pppoe; do
  95.                 /sbin/insmod $module 2>&- >&-
  96.         done

  97.         json_get_var mtu mtu
  98.         mtu="${mtu:-1492}"

  99.         json_get_var ac ac
  100.         json_get_var service service

  101.         ppp_generic_setup "$config" \
  102.                 plugin rp-pppoe.so \
  103.                 ${ac:+rp_pppoe_ac "$ac"} \
  104.                 ${service:+rp_pppoe_service "$service"} \
  105.                 "nic-$iface"
  106. }

  107. proto_pppoe_teardown() {
  108.         ppp_generic_teardown "$@"
  109. }

  110. proto_pppoa_init_config() {
  111.         ppp_generic_init_config
  112.         proto_config_add_int "atmdev"
  113.         proto_config_add_int "vci"
  114.         proto_config_add_int "vpi"
  115.         proto_config_add_string "encaps"
  116.         no_device=1
  117.         available=1
  118. }

  119. proto_pppoa_setup() {
  120.         local config="$1"
  121.         local iface="$2"

  122.         for module in slhc ppp_generic pppox pppoatm; do
  123.                 /sbin/insmod $module 2>&- >&-
  124.         done

  125.         json_get_vars atmdev vci vpi encaps

  126.         case "$encaps" in
  127.                 1|vc) encaps="vc-encaps" ;;
  128.                 *) encaps="llc-encaps" ;;
  129.         esac

  130.         ppp_generic_setup "$config" \
  131.                 plugin pppoatm.so \
  132.                 ${atmdev:+$atmdev.}${vpi:-8}.${vci:-35} \
  133.                 ${encaps}
  134. }

  135. proto_pppoa_teardown() {
  136.         ppp_generic_teardown "$@"
  137. }

  138. proto_pptp_init_config() {
  139.         ppp_generic_init_config
  140.         proto_config_add_string "server"
  141.         available=1
  142.         no_device=1
  143. }

  144. proto_pptp_setup() {
  145.         local config="$1"
  146.         local iface="$2"

  147.         local ip serv_addr server
  148.         json_get_var server server && {
  149.                 for ip in $(resolveip -t 5 "$server"); do
  150.                         ( proto_add_host_dependency "$config" "$ip" )
  151.                         serv_addr=1
  152.                 done
  153.         }
  154.         [ -n "$serv_addr" ] || {
  155.                 echo "Could not resolve server address"
  156.                 sleep 5
  157.                 proto_setup_failed "$config"
  158.                 exit 1
  159.         }

  160.         local load
  161.         for module in slhc ppp_generic ppp_async ppp_mppe ip_gre gre pptp; do
  162.                 grep -q "$module" /proc/modules && continue
  163.                 /sbin/insmod $module 2>&- >&-
  164.                 load=1
  165.         done
  166.         [ "$load" = "1" ] && sleep 1

  167.         ppp_generic_setup "$config" \
  168.                 plugin pptp.so \
  169.                 pptp_server $server \
  170.                 file /etc/ppp/options.pptp
  171. }

  172. proto_pptp_teardown() {
  173.         ppp_generic_teardown "$@"
  174. }

  175. [ -n "$INCLUDE_ONLY" ] || {
  176.         add_protocol ppp
  177.         [ -f /usr/lib/pppd/*/rp-pppoe.so ] && add_protocol pppoe
  178.         [ -f /usr/lib/pppd/*/pppoatm.so ] && add_protocol pppoa
  179.         [ -f /usr/lib/pppd/*/pptp.so ] && add_protocol pptp
  180. }

复制代码
回复

使用道具 举报

 楼主| | 显示全部楼层
iorip2 发表于 2014-6-1 00:08
是 3.10.36 内核吧?用 pppoe-my 脚本了吗?  新内核 要把 /lib/netifd/proto/ppp.sh 下面这些 拨号 语句去 ...

pppoe-my代码
  1. #!/bin/sh /etc/rc.common
  2. # Copyright (C) 2008 OpenWrt.org
  3. START=99

  4. #判断当前是否有另一个脚本存在
  5. state=`ps|grep -c pppoe-my`
  6. [ "$state" -ge "4" ] && echo another pppoe-my is running
  7. [ "$state" -ge "4" ] && exit


  8. #number是重拔次数
  9. #n是几拔
  10. #ok是拔上几次后退出拔号

  11. number=100
  12. n=10
  13. ok=10

  14. start() {
  15.    for q in $( seq 1 $number )
  16.    do        
  17.         echo
  18.         echo ___________________________________________________
  19.         echo [syncppp]start the $q dial ...........
  20.         
  21.         #取得wan口的账号和密码,用来多拨
  22.         user=`uci get network.wan.username`
  23.         pass=`uci get network.wan.password`
  24.        
  25.         echo [syncppp]kill process pppd ..........

  26.         #结束并发公用程序
  27.         killall -q -SIG syncpppinit

  28.         #新的结束拨号进程的方法,正常退出,可立即重拨
  29.         kill -INT `pidof pppd`

  30.         #等待20s,可以自己调整
  31.         sleep 20
  32.         
  33.         echo [syncppp]change mac ...........

  34.         #开始更换随机mac地址
  35.         for i in $( seq 0 $(($n-1)))
  36.         do
  37.           if [ "$i" == "0"  ] ;
  38.           then
  39.                 ifname=eth0.2
  40.           else
  41.                 ifname=vth$i
  42.           fi
  43.           ifconfig $ifname down
  44.           u=`cat /proc/sys/kernel/random/uuid`
  45.           uu=00:2b:${u:0:2}:${u:2:2}:${u:4:2}:${u:6:2}
  46.           ifconfig $ifname hw ether $uu
  47.           ifconfig $ifname up
  48.         done
  49.         
  50.         #开始并发拨号
  51.         syncpppinit $n &
  52.         sleep 1
  53.       
  54.         echo [syncppp]sync dialing.............

  55.         for i in $( seq 0 $(($n-1)))
  56.         do
  57.           if [ "$i" == "0"  ] ;
  58.           then
  59.                interface=wan
  60.                 ifname=eth0.2
  61.           else
  62.                interface=wan$i
  63.                 ifname=vth$i
  64.           fi
  65.          
  66.           #拨号命令,linux2.6请用第一行,3.3.8以上请用第二行
  67. #           /usr/sbin/pppd plugin rp-pppoe.so syncppp mtu 1492 mru 1492 nic-$ifname nopersist usepeerdns nodefaultroute user $user password $pass ipparam $interface ifname pppoe-$interface nodetach &
  68.             /usr/sbin/pppd plugin rp-pppoe.so syncppp mtu 1492 mru 1492 nic-$ifname persist usepeerdns nodefaultroute user $user password $pass ipparam $interface ifname pppoe-$interface nodetach maxfail 1 ip-up-script /lib/netifd/ppp-up ipv6-up-script /lib/netifd/ppp-up ip-down-script /lib/netifd/ppp-down ipv6-down-script /lib/netifd/ppp-down &

  69.         done

  70.         echo [syncppp]sync dial complete.............
  71.         echo [syncppp]waiting 20s .............
  72.         sleep 20
  73.         
  74.         j=`ifconfig|grep -c inet.*P-t-P`
  75.         echo [syncppp] [$n] dialed and [$j] dial succeed .....

  76.         ! [ "$j" -ge "$ok" ] && echo [syncppp] [$j] dial succeed, less than the the set [$ok] dial, and will retry...
  77.         [ "$j" -ge "$ok" ] && echo [syncppp]succeed [$j] dial, equal or more than the set [$ok] dial, and will exit...   
  78.         [ "$j" -ge "$ok" ] && killall -q -SIG syncpppinit
  79.         #等待系统拨号完成,linux2.6请保留以下行
  80. #        [ "$j" -ge "$ok" ] && sleep 35
  81.         #去掉rt_cache,linux3.10及以上版本请注释掉以下行
  82. #        [ "$j" -ge "$ok" ] && echo -1 > /proc/sys/net/ipv4/rt_cache_rebuild_count
  83.         #重启nwan,linux2.6请保留以下行
  84. #        [ "$j" -ge "$ok" ] && /etc/init.d/nwan restart
  85.         [ "$j" -ge "$ok" ] && exit
  86.     done
  87. }
复制代码
回复

使用道具 举报

 楼主| | 显示全部楼层
iorip2 发表于 2014-6-1 00:08
是 3.10.36 内核吧?用 pppoe-my 脚本了吗?  新内核 要把 /lib/netifd/proto/ppp.sh 下面这些 拨号 语句去 ...

都按照并发拨号的要求修改了,也拨上了,就是无法上网
回复

使用道具 举报

 楼主| | 显示全部楼层
bigsun 发表于 2014-6-1 10:15
从图来看,好象没获取到网关IP

是的,不知道什么原因,完全按照并发拨号的教程操作的
回复

使用道具 举报

同网关用不了Nwan的,改一下/lib/netifd/ppp-up的内容

  1. #!/bin/sh
  2. PPP_IPPARAM="$6"

  3. . /lib/netifd/netifd-proto.sh
  4. proto_init_update "$IFNAME" 1 1
  5. proto_set_keep 1
  6. [ -n "$PPP_IPPARAM" ] && {
  7.     [ -n "$IPLOCAL" ] && proto_add_ipv4_address "$IPLOCAL" 32 "" "${IPREMOTE:-2.2.2.2}"
  8.     [ -n "$IPREMOTE" ] && proto_add_ipv4_route 0.0.0.0 0 "$IPLOCAL"
  9.     [ -n "$LLLOCAL" ] && proto_add_ipv6_address "$LLLOCAL" 128
  10.     [ -n "$DNS1" ] && proto_add_dns_server "$DNS1"
  11.     [ -n "$DNS2" -a "$DNS1" != "$DNS2" ] && proto_add_dns_server "$DNS2"
  12. }
  13. proto_send_update "$PPP_IPPARAM"

  14. [ -d /etc/ppp/ip-up.d ] && {
  15.     for SCRIPT in /etc/ppp/ip-up.d/*
  16.     do
  17.         [ -x "$SCRIPT" ] && "$SCRIPT" "$@"
  18.     done
  19. }
复制代码


第八行

  1. [ -n "$IPLOCAL" ] && proto_add_ipv4_address "$IPLOCAL" 32 "" "${IPREMOTE:-2.2.2.2}"
复制代码


对比一下,替换掉,然后试试看,不保证成功
回复

使用道具 举报

万恶的表情,万恶的TX,看看看着变成红脸,
回复

使用道具 举报

 楼主| | 显示全部楼层
kgkggl 发表于 2014-6-1 16:20
同网关用不了Nwan的,改一下/lib/netifd/ppp-up的内容

NWAN现在可以支持相同网关的,我在RG100A上完全可以使用,下图就是我在RG100A上的截图,但是用AR7XXX系列的却总是无法获取网关

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

 楼主| | 显示全部楼层
kgkggl 发表于 2014-6-1 16:20
同网关用不了Nwan的,改一下/lib/netifd/ppp-up的内容

RG100A的图片

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

这是nexthop负载策略啊,可以直接用脚本来
回复

使用道具 举报

来自手机 | 显示全部楼层
先mark,手机看着不舒服
回复

使用道具 举报

mwan3多好用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-5-18 00:39

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表