1
jun9100 OP |
2
jun9100 OP 求各位大哥帮忙的说
|
3
mind3x 2014-09-03 14:09:19 +08:00
|
6
zro 2014-09-03 16:01:10 +08:00
楼主是用mwan3叠加,还是nwan呢?貌似是有指定出口的功能啊。。。
|
7
manhere 2014-09-03 16:03:53 +08:00
https://support.dnspod.cn/Support/api
参考下面的第三方项目 根据自己的环境 稍微改改就能使用 |
10
mhycy 2014-09-03 16:34:55 +08:00
没试过多线叠加,但按思路来说不是直接IFCONFIG电信的那个端口就能抓到电信的外网IP了么?
然后用那个IP提交就好了 |
11
FanError 2014-09-03 16:40:23 +08:00
楼主,你的wndr4300刷的openwrt是哪个版本?稳定吗?
|
12
FanError 2014-09-03 16:41:05 +08:00
主要想问下ddns,pptp server,端口转发稳定不。
俺现在用的是dd-wrt,想试下openwrt |
13
jun9100 OP |
14
jun9100 OP |
15
mind3x 2014-09-03 18:36:40 +08:00
@jun9100 看起来是从官网安装的curl需要的libpolarssl和我的编译版本里libpolarssl的版本不一致。你先暂时这样fix一下
cd /usr/lib ln -s libpolarssl.so.7 libpolarssl.so.6 因为上面的命令不会用到SSL,只要curl能跑起来就行。 |
16
mind3x 2014-09-03 18:40:26 +08:00
@jun9100 这条命令的意思是走pppoe-wan2的出口去访问ifconfig.me这个网站,而这个网站送回的页面内容就是你的公网IP。
|
17
jun9100 OP @mind3x 修复后测试curl已经可以用了,但是我有5个地址,其中4个获取了电信正确的地址,还有一个却还是华数的地址,无语了。
|
19
mind3x 2014-09-03 22:46:19 +08:00
@jun9100 我知道是为什么了,因为mwan3无视curl指定interface,还是强行做负载均衡,把连接分到不同的wan口上了。最简单的办法,是在你更新DDNS的脚本最前和最后分别mwan3 stop和mwan3 start
|
21
mind3x 2014-09-03 23:01:25 +08:00
@jun9100 如我上面所说,在你这个更新DDNS的脚本最前面加上
/usr/sbin/mwan3 stop (或 /etc/init.d/mwan3 stop 一个效果) 在最后面加上 /usr/sbin/mwan3 start (或 /etc/init.d/mwan3 start 一个效果) 大约就是这样。行不行就看你的人品了。 |
22
jun9100 OP mwan3 stop
sleep 5 INTERFACE=pppoe-wan2 MYIP=`curl --interface pppoe-wan2 http://ifconfig.me/ip` nonceIP=`ifconfig -a|grep -A 1 $INTERFACE|grep inet|awk '{print $2}' |awk -F: '{print $2}'` usedIP=`cat /tmp/usedIP.txt` if [ "$nonceIP" == "$usedIP" ]; then echo $nonceIP > /tmp/nonceIP.txt else wget -q -O- 'http://nic.ChangeIP.com/nic/update?hostname=******&${MYIP}&u=******&p=******&cmd=update&offline=0' wget -q -O- 'http://nic.ChangeIP.com/nic/update?hostname=******&${MYIP}&u=******&p=******&cmd=update&offline=0' wget -q -O- 'http://nic.ChangeIP.com/nic/update?hostname=******&${MYIP}&u=******&p=******&cmd=update&offline=0' wget -q -O- 'http://nic.ChangeIP.com/nic/update?hostname=******&${MYIP}&u=******&p=******&cmd=update&offline=0' wget -q -O- 'http://nic.ChangeIP.com/nic/update?hostname=******&${MYIP}&u=******&p=******&cmd=update&offline=0' echo $nonceIP > /tmp/usedIP.txt fi sleep 5 mwan3 start |
23
jun9100 OP @mind3x 果然可以,真的是非常感谢。
最终的脚本如下: 脚本1:wget更新changeip免费ddns的主脚本 ####################updatedns.sh########################### #/root/updatedns.sh /usr/sbin/mwan3 stop #由于mwan3强大的功能会无视我们指定的端口,所以先暂时停止mwan3 sleep 5 INTERFACE=pppoe-wan2 #填入自己需要强制通行的端口 MYIP=`curl --interface pppoe-wan2 http://ifconfig.me/ip`#通过curl命令抓取我们所指定端口的网址,如果没有安装curl,记得先去安装 nonceIP=`ifconfig -a|grep -A 1 $INTERFACE|grep inet|awk '{print $2}' |awk -F: '{print $2}'` usedIP=`cat /tmp/usedIP.txt`#通过grep搜索curl获取到的myip地址,并且写入到/tmp/usedIP.txt,如果没有安装curl,记得先去安装 if [ "$nonceIP" == "$usedIP" ]; then echo $nonceIP > /tmp/nonceIP.txt #判断nonceIP是否和usedIP一致,如果一致就停止更新ddns,如果不同则执行下面的wget命令 else wget -q -O- 'http://nic.ChangeIP.com/nic/update?hostname=******&${MYIP}&u=******&p=******&cmd=update&offline=0' #根据自己ddns服务商不能,wget的命令也会不一样。 fi sleep 5 /usr/sbin/mwan3 start #重新启动mwan3任务 ######################updatedns.sh############################ 这个脚本我是放在/root/updatedns.sh下,记得修改权限为0777 脚本2:这个脚本是让/root/updatedns.sh能按计划执行的 ######################crontab############################ #/etc/crontabs/crontab */30 * * * * root /root/updatedns.sh > /dev/null 2>&1 #最前面的30是代表更新的时间间隔,30是代表30分钟。可以根据自己的需求修改。位置是放在/etc/crontabs/crontab,记得修改权限为0777 ######################crontab############################ 最后再次感谢@mind3x给予我的帮助,也十分感谢@mind3x分享的wndr4300的openwrt固件。南无阿弥陀佛。 用的时候记得把#后面的文字删除,这句是写给和我一样的小白的。 |
24
mind3x 2014-09-04 00:33:37 +08:00
@jun9100 补充一点,因为你已经定义了
INTERFACE=pppoe-wan2 #填入自己需要强制通行的端口 所以用curl取IP的时候就用这个变量,不要再写pppoe-wan2了 MYIP=`curl --interface $INTERFACE http://ifconfig.me/ip` |
26
jun9100 OP @mind3x 大大,这个脚本能否在做优化,因为停止mwan3毕竟会导致下载速度变慢,如果脚本没10分钟执行一次的话,感觉会很不爽,所以能不能把最前面的写成如下:
if [ "$nonceIP" == "$usedIP" ]; then echo $nonceIP > /tmp/nonceIP.txt else /usr/sbin/mwan3 stop fi 但是最后是/usr/sbin/mwan3 start要怎么写,我想这个也是要暂停mwan3的吧。 |
29
mind3x 2014-09-04 12:00:37 +08:00
@jun9100 有很多种办法。最简单的一种是不stop mwan3,先curl个10次,取回来的IP如果次次都和以前存的不一样,再确实的stop mwan3去取确定的wan2 IP。
|
30
mind3x 2014-09-04 12:02:17 +08:00
@jun9100 另外其实没必要10分钟检查,可以在系统通知wan2 down了又重新up的时候再去检查,不过这个三两句话说不清楚,你有兴趣的话可以自行研究...
|
31
jun9100 OP @mind3x 是不是可以把ddns的脚本放到/etc/ppp/ip-down.d下面,我看这个帖子说只要拨号掉线就会执行/ip-down.d下面的脚本的。
求证。http://www.openwrt.org.cn/bbs/thread-1947-1-1.html |
32
mind3x 2014-09-04 12:42:12 +08:00
@jun9100 放到 /etc/ppp/ip-up.d/ 里。你是需要在wan连接成功后检查,不是在wan连接断掉后检查。 官方文档在
http://wiki.openwrt.org/doc/howto/vpn.client.pptp#etcpppip-up.and.etcpppip-down |